调度机器学习任务的方法及装置与流程

文档序号:26718688发布日期:2021-09-22 20:17阅读:324来源:国知局
调度机器学习任务的方法及装置与流程

1.本公开涉及任务调度领域,具体涉及一种调度机器学习任务的方法及装置。


背景技术:

2.随着人工智能的兴起,机器学习模型作为人工智能的核心技术应用也越来越广泛。为了给机器学习模型提供充足的计算资源及存储资源,机器学习模型一般由集群加载并运行,这样用户可以通过向集群提交机器学习任务,以请求机器学习模型处理机器学习任务。
3.目前,用户对集群处理机器学习任务的可靠性要求越来越高。然而,现有的任务调度机制主要致力于降低任务的处理时延,这种任务调度机制会降低集群处理机器学习任务的可靠性。


技术实现要素:

4.有鉴于此,本公开提供一种调度机器学习任务的方法及装置,以提高集群处理机器学习任务的可靠性。
5.第一方面,提供一种调度机器学习任务的方法,所述方法包括:接收用户向集群提交的机器学习任务,所述集群配置有能够执行所述机器学习任务的多种机器学习模型;根据所述多种机器学习模型的模型统计信息,从所述多种机器学习模型中选择目标机器学习模型;将所述机器学习任务调度至所述集群的目标工作节点,并指示所述目标工作节点采用所述目标机器学习模型处理所述机器学习任务。
6.第二方面,提供一种调度机器学习任务的装置,所述装置包括:接收单元,被配置为接收用户向集群提交的机器学习任务,所述集群配置有能够执行所述机器学习任务的多种机器学习模型;第一处理单元,被配置为根据所述多种机器学习模型的模型统计信息,从所述多种机器学习模型中选择目标机器学习模型;第二处理单元,被配置为将所述机器学习任务调度至所述集群的目标工作节点,并指示所述目标工作节点采用所述目标机器学习模型处理所述机器学习任务。
7.第三方面,提供一种调度机器学习任务的装置,包括存储器和处理器,所述存储器中存储有可执行代码,所述处理器被配置为执行所述可执行代码,以实现如第一方面所述的方法。
8.第四方面,提供一种计算机可读存储介质,其上存储有可执行代码,当所述可执行代码被执行时,能够实现如第一方面所述的方法。
9.第五方面,提供一种计算机程序产品,包括可执行代码,当所述可执行代码被执行时,能够实现如第一方面所述的方法。
10.本公开提供了一种机器学习任务的调度方案,能够基于集群中多种机器学习任务模型的模型统计信息,从多种机器学习模型中选择合适的目标机器学习模型,以处理用户提交的机器学习任务,这样有利于提高集群处理机器学习任务的可靠性。
附图说明
11.图1为本公开实施例适用的集群的示意图。
12.图2为本公开实施例的调度机器学习任务的方法的流程图。
13.图3为本公开另一实施例的调度机器学习任务的方法的流程图。
14.图4为本公开另一实施例的调度机器学习任务的方法的流程图。
15.图5是本公开一实施例的调度机器学习任务的装置的结构示意图。
16.图6是本公开另一实施例的调度机器学习任务的装置的结构示意图。
具体实施方式
17.下面将结合本公开实施例中的附图,对本公开实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例仅是本公开一部分实施例,而不是全部的实施例。
18.随着机器学习的广泛应用,用户对机器学习任务可靠性的要求越来越高,其中影响可靠性的因素较多,例如,机器学习模型的成功率、机器学习模型所需的内存大小等。然而,传统的任务调度机制主要致力于降低任务的处理时延,一旦接收到任务,会立刻将该任务分配到某个工作节点。这种任务调度机制会导致集群处理机器学习任务的可靠性较低。
19.为了提高集群处理机器学习任务的可靠性,本公开提供了一种调度机器学习任务的方案,基于集群支持的机器学习模型的模型统计信息,从集群支持的机器学习模型中选择合适的目标机器学习模型,并采用目标机器学习模型来处理用户提交的机器学习任务。
20.为了便于理解,下文先结合图1介绍本公开实施例适用的集群。图1所示的集群包括调度装置110、多个工作节点120以及数据库130。
21.调度装置110可以包括模型统计单元111、队列统计单元112以及工作节点统计单元113。在一些实施例中,调度装置110可以包括模型统计单元111、队列统计单元112以及工作节点统计单元113中的一种或多种单元。
22.上述模型统计单元111可用于统计集群支持的机器学习模型的模型统计信息。其中,模型统计信息可以包括机器学习模型的以下信息中的一种或多种:模型大小、内存占用量、模型的数量、预设时间段内的调用次数、执行机器学习任务所需的时间以及执行机器学习任务的成功率。
23.上述模型统计信息可以由工作节点120向调度装置110反馈(或上报),具体地反馈方式,本公开实施例并不做具体限定。例如,工作节点120可以周期性地向调度装置110反馈工作节点统计信息。又例如,工作节点120可以基于调度装置110的指示向调度装置110反馈工作节点120的统计信息。
24.上述队列统计单元112可用于统计集群中的任务队列的队列统计信息。其中,队列统计信息可以包括集群的待处理任务的以下信息中的一种或多种:提交时间、已等待时间以及还需等待时间;和/或集群的任务队列的队列统计信息可以包括集群的正在处理任务或已处理任务的以下信息中的一种或多种:执行任务的工作节点,执行任务所消耗的资源量以及执行任务所消耗的时间。
25.上述执行任务所消耗的资源量可以包括执行任务所消耗的中央处理器(central processing unit,cpu)资源的资源量、执行任务所消耗的图形处理器(graphics processing unit,gpu)资源的资源量以及执行任务所消耗的工作节点的内存资源的资源
量、执行任务所消耗的网络资源的资源量等中的一种或多种。
26.在一些实施例中,上述待处理任务的还需等待时间可以参考同类型任务的等待时间得到的。例如,可以将集群中同类型任务的等待时间均值作为上述待处理任务的还需等待时间。又例如,还可以将集群中同类型任务的等待时间的最大值作为上述待处理任务的还需等待时间。当然,上述还需等待时间还可以是通过其他机器学习模型预测得到的结果。
27.上述队列统计信息的获取方式可以分为由调度装置自己获取,以及工作节点上报两种方式。例如,上述待处理任务的队列统计信息、执行正在处理任务的工作节点以及执行已处理任务的工作节点,可以由调度装置自己统计。上述执行正在处理任务所消耗的资源量、执行已处理任务所消耗的资源量、执行正在处理任务所消耗的时间、执行已处理任务所消耗的时间可以由工作节点反馈,其具体地反馈方式可以参见上文关于模型统计信息的反馈方式的介绍。
28.上述工作节点统计单元113可用于统计集群中工作节点的工作节点统计信息。其中,工作节点统计信息包括工作节点的以下信息中的一种或多种:处理能力、空闲资源以及内存容量。
29.上述工作节点统计信息可以由工作节点反馈,其具体地反馈方式可以参见上文关于模型统计信息的反馈方式的介绍。当然,工作节点统计信息中的处理能力和/或内存容量也可以在搭建集群时由运维人员输入。
30.如上文介绍,上述调度装置110可以统计整个集群中的模型统计信息,队列统计信息以及工作节点统计信息中的一种或多种,因此,上述调度装置也可以称为这个集群的中央式控制装置。
31.多个工作节点120可用于执行用户向集群提交的任务。例如,可以采用机器学习模型处理机器学习任务。
32.数据库130可用于存储集群中机器学习模型的模型信息、集群中任务处理情况、集群中工作节点处理能力及负载情况等,以便调度装置110进行统计,得到上述模型统计信息、队列统计信息以及工作节点统计信息。
33.在一些实施例中,上述数据库130可以存储在独立于调度装置110的存储设备中。例如,存储在存储服务器中。在另一些实施例中,上述数据库130还可以存储在调度装置110的内部存储设备中,例如,可以存储在调度装置110的内存中等。
34.下面以图1所示的集群为基础,结合图2介绍本公开实施例的方法。图2是本公开实施例的调度机器学习任务的方法的流程图。应理解,图2所示的方法可以由图1所示的调度装置110执行,还可以由集群中其他具有控制功能的装置执行。图2所示的方法包括步骤s210至步骤s230。
35.在步骤s210,接收用户向集群提交的机器学习任务。
36.集群可以配置有能够执行机器学习任务的多种机器学习模型,其中,机器学习模型可以是指普通的机器学习模型,如线性回归模型,也可以指神经网络模型,如卷积神经网络(convolutional neural network,cnn)或循环神经网络(recurrent neural network,rnn)。
37.不同种类的机器学习模型,可以指不同原理和/或架构的机器学习模型,也可以指同一原理和/或架构下的不同版本的机器学习模型。例如,卷积神经网络和循环神经网络属
于不同种类的机器学习模型。同一卷积神经网络下的不同版本的模型也可以理解为不同种类的机器学习模型。
38.本公开实施例对上述机器学习任务的类型以及机器学习模型的类型不做具体限定。例如,上述机器学习任务可以是预测任务,相应地,上述机器学习模型可以是具有预测功能的神经网络模型。又例如,上述机器学习任务可以是分类任务,相应地,上述机器学习模型可以是具有数据分类功能的机器学习模型。又例如,上述机器学习任务可以是图像降维任务,相应地,上述机器学习模型可以是具有图像降维功能的机器学习模型。
39.在步骤s220,根据多种机器学习模型的模型统计信息,从多种机器学习模型中选择目标机器学习模型。
40.下面基于上文的介绍的模型统计信息,结合具体的信息内容介绍目标机器学习模型的选择方式。需要说明的是,下文仅仅示例性地列出几种常用的选择方式,本公开实施例可以基于模型统计信息中的任一种信息,或任意多种信息选择目标机器学习模型,为了简洁,下文不再一一赘述。
41.作为一个实例,上述目标模型统计信息包括多种机器学习模型的模型大小和多种机器学习模型执行机器学习任务的成功率时,通过上述步骤220选择的目标机器学习模型,可以是多种机器学习模型中上述成功率最高的情况下,模型大小最小的。这样,有利于在保证目标机器学习模型的成功率的情况下,选择合理模型大小的机器学习模型,以合理利用集群的资源。
42.作为一个实例,上述目标模型统计信息包括多种机器学习模型的内存占用量和多种机器学习模型执行机器学习任务的成功率,通过上述步骤220选择的目标机器学习模型,可以是多种机器学习模型中上述成功率最高的情况下,内存占用量最小的。这样,有利于在保证目标机器学习模型的成功率的情况下,合理利用集群的资源。
43.作为一个实例,上述目标模型统计信息包括多种机器学习模型在所述预设时间段内的调用次数,通过上述步骤220选择的目标机器学习模型,可以是多种机器学习模型在预设时间段内的调用次数最高的。
44.通常,在预设时间段内的调用次数可以反映用户使用机器学习模型的用户体验,例如,执行机器学习任务的成功率较高,或者执行机器学习任务所需时间较短的机器学习模型的用户体验通常较好,调用次数也比较高。因此,基于预设时间段内的调用次数选择目标机器学习模型,有利于提高集群为用户执行机器学习任务的用户体验。
45.上述选择目标机器学习模型的过程可以是由如图1所述的调度装置110基于上述模型统计信息直接选择的,也可以是由调度装置110基于上述模型统计信息以及用户的反馈确定的,具体流程可以参见下文图3所示的方法。
46.在步骤s230,将机器学习任务调度至集群的目标工作节点,并指示目标工作节点采用目标机器学习模型处理机器学习任务。
47.如上文所述,选择目标机器学习模型的过程可以是调度装置结合模型统计信息以及用户的反馈进行的,即上述步骤s220包括步骤s310至步骤s320,具体地方法流程可以参见图3。
48.在步骤s310,根据多种机器学习模型的模型统计信息,向用户推荐适于处理机器学习任务的机器学习模型。
49.在步骤s320,根据用户针对推荐的反馈,从多种机器学习模型中选择目标机器学习模型。
50.在一些实施例中,调度装置在用户提交机器学习任务后,可以直接向用户推荐适于处理机器学习任务的机器学习模型,以供用户参考。在另一些实施例中,调度装置可以在用户已经选择了机器学习模型之后,且存在其他更优的机器学习模型的情况下,向用户推荐。
51.例如,用户基于任务需求选择的机器学习模型为卷积神经网络版本1,而调度装置基于模型统计信息发现卷积神经网络版本2的成功率较高,此时,调度装置可以向用户推荐卷积神经网络版本2,相应地,用户反馈接受调度装置的推荐后,调度装置可以选择卷积神经网络版本2作为目标机器学习模型。
52.当然,在本公开实施例中,上述调度装置也可以仅将模型统计信息反馈给用户,并不向用户推荐机器学习模型,而是由用户基于模型统计信息自主选择目标机器学习模型。
53.在一些实施例中,假设用户勾选同意自动选择机器学习模型的功能,当用户选择的机器学习模型的性能较差时,或者说,调度装置基于模型统计信息找到更加适于处理机器学习任务的目标机器学习模型时,调度装置可以自动将用户选择的机器学习模型调整为目标机器学习模型,以进一步提高机器学习任务的可靠性。如果用户未勾选同意自动选择机器学习模型的功能,调度装置不会再调整用户已选择的机器学习模型。
54.如前文所述,由于用户对机器学习任务(尤其是预测任务)的时延要求较高,在传统的机器学习任务调度机制中,当用户向集群提交机器学习任务请求后,集群会基于工作节点的负载情况,粗略选择负载较低的工作节点作为目标工作节点,并尽快将机器学习任务发送至目标工作节点进行处理,以减少在工作节点的选择过程所消耗的时间。然而,如果选择的目标工作节点虽然负载相对其他工作节点较低,但是仍然没有空闲的资源处理机器学习任务,那么该机器学习任务还需要继续等待,机器学习任务的时延较长的问题还是无法得到改善。
55.因此,为了减小集群处理机器学习任务的等待时间,在本公开实施例中,可以在将机器学习任务调度至目标工作节点(即步骤s230)之前,基于集群的多个工作节点的工作节点的统计信息,从多个工作节点中选择目标工作节点,以满足用户对集群处理机器学习任务的时延的较高要求。
56.在一些实施例中,为了提高用户体验,如果多个工作节点的工作节点统计信息指示集群不具有能够按照用户的需求执行机器学习任务的工作节点,还可以向用户发送拒绝执行机器学习任务的信息。如此,用户在收到上述信息之后,可以选择将该机器学习任务重新提交至其他集群的调度装置继续上述图2或图3所示的调度流程,有利于降低用户等待集群处理机器学习任务的时间。当然用户在收到上述信息之后,也可以选择继续等待。
57.需要说明的是,如果集群不具有能够按照用户的需求执行机器学习任务的工作节点,也可以不向用户反馈上述信息,本公开实施例对此不做限定。
58.用户通常为了自己提交的机器学习任务被较快的执行,即使提交的机器学习任务不需要占用太大资源的情况下,也会向集群请求较大的资源以执行机器学习任务。这样,在机器学习任务被发送至工作节点后,如果工作节点没有足够的资源时,用户提交的机器学习任务就需要继续等待。
59.为了解决上述问题,在本公开实施例中,可以在机器学习任务被调度至集群的目标工作节点之前,向用户发送集群的任务队列的队列统计信息,这样,用户可以基于队列统计信息判断是否需要调整为执行机器学习任务所请求的资源。
60.例如,用户在向集群提交的机器学习任务后,且在该机器学习任务被转发至目标工作节点之前,用户可以获得集群的队列统计信息,此时,若队列统计信息指示同类型的机器学习任务的还需等待时间较长,且另一种请求资源较少且功能类似的机器学习任务对应的还需等待时间较短,用户可以调整机器学习任务所请求的资源,以便缩短机器学习任务的等待时间。
61.在另一些实施例中,调度装置可以基于用户提交的机器学习任务类型和队列统计信息,自动调整为执行机器学习任务所请求的资源。例如,用户在向集群提交的机器学习任务后,调度装置基于集群的队列统计信息,确定该类型的机器学习任务的还需等待时间较长,且另一种请求资源较少且功能类似的机器学习任务对应的还需等待时间较短,调度装置可以自动调整机器学习任务所请求的资源,以便缩短机器学习任务的等待时间。
62.为了便于理解本公开实施例的方案,下文以图1所示的集群为基础,结合图4介绍本公开实施例的调度机器学习任务的具体流程。图4所示的方法包括步骤s410至步骤s420。
63.应理解,图4所示的流程中综合考虑了上述模型统计信息、队列统计信息以及工作节点统计信息三种,当然,本公开实施例也可以仅考虑其中一种信息,或者任意两种的组合。
64.在步骤s410,用户向调度装置提交机器学习任务。
65.在步骤s411,调度装置向用户反馈队列统计信息。
66.在步骤s412,用户基于队列统计信息调整为执行机器学习任务所请求的资源,并重新提交机器学习任务。
67.在步骤s413,调度装置将模型统计信息反馈给用户。
68.在步骤s414,用户基于模型统计信息选择第一机器学习模型。
69.在步骤s415,用户向调度装置发送模型选择结果,该模型选择结果指示选择第一机器学习模型。
70.在步骤s416,调度装置基于模型统计信息判断是否存在第二机器学习模型,其中第二机器学习模型的性能高于第一机器学习模型。若存在第二机器学习模型,则执行步骤s417和步骤s418;若不存在第二机器学习模型,则直接执行步骤s419。
71.在步骤s417,调度装置向用户推荐第二机器学习模型。
72.在步骤s418,调度装置接收用户反馈同意将第一机器学习模型调整为第二机器学模型。
73.在步骤s419,调度装置基于工作节点统计信息选择目标工作节点。
74.在步骤s420,调度装置将机器学习任务调度至目标工作节点,并指示目标工作节点采用已选择的机器学习模型执行机器学习任务。
75.具体地,在存在第二机器学习模型的情况下,上述已选择的机器学习模型可以为第二机器学习模型,在不存在第二机器学习模型的情况下,上述已选择的机器学习模型可以为第一机器学习模型。
76.上文结合图1至图4,详细描述了本公开的方法实施例,下面结合图5至图6,详细描
述本公开的装置实施例。应理解,方法实施例的描述与装置实施例的描述相互对应,因此,未详细描述的部分可以参见前面方法实施例。
77.图5是本公开一实施例的调度机器学习任务的装置的结构示意图。图5所示的装置500可以是调度装置100。该装置500可以包括接收单元510,第一处理单元520以及第二处理单元530。下面对这些单元进行详细介绍。
78.接收单元510,被配置为接收用户向集群提交的机器学习任务,所述集群配置有能够执行所述机器学习任务的多种机器学习模型。
79.第一处理单元520,被配置为根据所述多种机器学习模型的模型统计信息,从所述多种机器学习模型中选择目标机器学习模型。
80.第二处理单元530,被配置为将所述机器学习任务调度至所述集群的目标工作节点,并指示所述目标工作节点采用所述目标机器学习模型处理所述机器学习任务。
81.可选地,所述装置还包括:推荐单元,被配置为根据所述多种机器学习模型的模型统计信息,向所述用户推荐适于处理所述机器学习任务的机器学习模型;第三处理单元,被配置为根据所述用户针对所述推荐的反馈,从所述多种机器学习模型中选择目标机器学习模型。
82.可选地,所述模型统计信息包括机器学习模型的以下信息中的一种或多种:模型大小、内存占用量、模型的数量、预设时间段内的调用次数、执行所述机器学习任务所需的时间以及执行所述机器学习任务的成功率。
83.可选地,所述装置还包括:第四处理单元,被配置为根据所述集群的多个工作节点的工作节点统计信息,从所述多个工作节点中选择所述目标工作节点,所述工作节点统计信息包括工作节点的以下信息中的一种或多种:处理能力、空闲资源以及内存容量。
84.可选地,所述装置还包括:第五处理单元,被配置为若所述多个工作节点的工作节点统计信息指示所述集群不具有能够按照所述用户的需求执行所述机器学习任务的工作节点,向所述用户发送拒绝执行所述机器学习任务的信息。
85.可选地,所述装置还包括:发送单元,被配置为向所述用户发送所述集群的任务队列的队列统计信息,所述集群的任务队列的队列统计信息包括所述集群的待处理任务的以下信息中的一种或多种:提交时间、已等待时间以及还需等待时间;和/或所述集群的任务队列的队列统计信息包括所述集群的正在处理任务或已处理任务的以下信息中的一种或多种:执行任务的工作节点,执行任务所消耗的资源量以及执行任务所消耗的时间。
86.图6是本公开另一实施例的调度机器学习任务的装置的结构示意图。图6所示的装置600可以是集群中具有控制功能的任意节点。比如,装置600可以是调度装置或者其他控制服务器。装置600可以包括存储器610和处理器620。存储器610可用于存储可执行代码。处理器620可用于执行所述存储器610中存储的可执行代码,以实现前文描述的各个方法中的步骤。在一些实施例中,该装置600还可以包括网络接口630,处理器620与外部设备的数据交换可以通过该网络接口630实现。
87.在本公开实施例中,上述处理器620可以采用通用的cpu,微处理器,应用专用集成电路(application specific integrated circuit,asic),或者一个或多个集成电路,用于执行相关程序,以实现本公开实施例所提供的技术方案。
88.上述的存储器610可以包括只读存储器和随机存取存储器,并向处理器620提供指
令和数据。处理器620的一部分还可以包括非易失性随机存取存储器。例如,处理器620还可以存储设备类型的信息。
89.在上述实施例中,可以全部或部分地通过软件、硬件、固件或者其他任意组合来实现。当使用软件实现时,可以全部或部分地以计算机程序产品的形式实现。所述计算机程序产品包括一个或多个计算机指令。在计算机上加载和执行所述计算机程序指令时,全部或部分地产生按照本公开实施例所述的流程或功能。所述计算机可以是通用计算机、专用计算机、计算机网络、或者其他可编程装置。所述计算机指令可以存储在计算机可读存储介质中,或者从一个计算机可读存储介质向另一个计算机可读存储介质传输,例如,所述计算机指令可以从一个网站站点、计算机、服务器或数据中心通过有线(例如同轴电缆、光纤、数字用户线(digital subscriber line,dsl))或无线(例如红外、无线、微波等)方式向另一个网站站点、计算机、服务器或数据中心进行传输。所述计算机可读存储介质可以是计算机能够存取的任何可用介质或者是包含一个或多个可用介质集成的服务器、数据中心等数据存储设备。所述可用介质可以是磁性介质(例如,软盘、硬盘、磁带)、光介质(例如数字视频光盘(digital video disc,dvd))、或者半导体介质(例如固态硬盘(solid state disk,ssd))等。
90.在上述实施例中,本文中术语“和/或”,仅仅是一种描述关联对象的关联关系,表示可以存在三种关系,例如,a和/或b,可以表示:单独存在a,同时存在a和b,单独存在b这三种情况。另外,本文中字符“/”,一般表示前后关联对象是一种“或”的关系。
91.在上述实施例中,在本公开的各种实施例中,上述各过程的序号的大小并不意味着执行顺序的先后,各过程的执行顺序应以其功能和内在逻辑确定,而不应对本公开实施例的实施过程构成任何限定。
92.本领域普通技术人员可以意识到,结合本公开实施例描述的各示例的单元及算法步骤,能够以电子硬件、或者计算机软件和电子硬件的结合来实现。这些功能究竟以硬件还是软件方式来执行,取决于技术方案的特定应用和设计约束条件。专业技术人员可以对每个特定的应用来使用不同方法来实现所描述的功能,但是这种实现不应认为超出本公开的范围。
93.在本公开所提供的几个实施例中,应该理解到,所揭露的系统、装置和方法,可以通过其它的方式实现。例如,以上所描述的装置实施例仅仅是示意性的,例如,所述单元的划分,仅仅为一种逻辑功能划分,实际实现时可以有另外的划分方式,例如多个单元或组件可以结合或者可以集成到另一个系统,或一些特征可以忽略,或不执行。另一点,所显示或讨论的相互之间的耦合或直接耦合或通信连接可以是通过一些接口,装置或单元的间接耦合或通信连接,可以是电性,机械或其它的形式。
94.所述作为分离部件说明的单元可以是或者也可以不是物理上分开的,作为单元显示的部件可以是或者也可以不是物理单元,即可以位于一个地方,或者也可以分布到多个网络单元上。可以根据实际的需要选择其中的部分或者全部单元来实现本实施例方案的目的。
95.另外,在本公开各个实施例中的各功能单元可以集成在一个处理单元中,也可以是各个单元单独物理存在,也可以两个或两个以上单元集成在一个单元中。
96.以上所述,仅为本公开的具体实施方式,但本公开的保护范围并不局限于此,任何
熟悉本技术领域的技术人员在本公开揭露的技术范围内,可轻易想到变化或替换,都应涵盖在本公开的保护范围之内。因此,本公开的保护范围应以所述权利要求的保护范围为准。
当前第1页1 2 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1