CN116860469A - 模型服务系统和方法、服务器、计算设备和存储介质 - Google Patents
模型服务系统和方法、服务器、计算设备和存储介质 Download PDFInfo
- Publication number
- CN116860469A CN116860469A CN202310561418.9A CN202310561418A CN116860469A CN 116860469 A CN116860469 A CN 116860469A CN 202310561418 A CN202310561418 A CN 202310561418A CN 116860469 A CN116860469 A CN 116860469A
- Authority
- CN
- China
- Prior art keywords
- model
- server
- machine learning
- parameters
- servers
- Prior art date
- Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
- Pending
Links
- 238000000034 method Methods 0.000 title claims abstract description 29
- 230000015654 memory Effects 0.000 claims abstract description 170
- 238000010801 machine learning Methods 0.000 claims abstract description 57
- 230000005540 biological transmission Effects 0.000 claims description 19
- 238000004590 computer program Methods 0.000 claims description 6
- 239000010410 layer Substances 0.000 description 29
- 238000010586 diagram Methods 0.000 description 11
- 230000002085 persistent effect Effects 0.000 description 6
- 230000008569 process Effects 0.000 description 5
- 238000012545 processing Methods 0.000 description 5
- 238000013135 deep learning Methods 0.000 description 4
- 238000013136 deep learning model Methods 0.000 description 4
- 238000005516 engineering process Methods 0.000 description 4
- 230000006870 function Effects 0.000 description 4
- 238000003780 insertion Methods 0.000 description 4
- 230000037431 insertion Effects 0.000 description 4
- 238000000638 solvent extraction Methods 0.000 description 4
- 238000003491 array Methods 0.000 description 3
- 238000012986 modification Methods 0.000 description 3
- 230000004048 modification Effects 0.000 description 3
- 230000003287 optical effect Effects 0.000 description 3
- 238000012546 transfer Methods 0.000 description 3
- 239000002699 waste material Substances 0.000 description 3
- 238000004458 analytical method Methods 0.000 description 2
- 238000013473 artificial intelligence Methods 0.000 description 2
- 239000000872 buffer Substances 0.000 description 2
- 238000004364 calculation method Methods 0.000 description 2
- 230000007246 mechanism Effects 0.000 description 2
- 238000003062 neural network model Methods 0.000 description 2
- 230000011218 segmentation Effects 0.000 description 2
- 238000012360 testing method Methods 0.000 description 2
- 238000012549 training Methods 0.000 description 2
- 238000013528 artificial neural network Methods 0.000 description 1
- 238000013475 authorization Methods 0.000 description 1
- 230000006399 behavior Effects 0.000 description 1
- 230000009286 beneficial effect Effects 0.000 description 1
- 238000004422 calculation algorithm Methods 0.000 description 1
- 230000008859 change Effects 0.000 description 1
- 238000004891 communication Methods 0.000 description 1
- 238000013527 convolutional neural network Methods 0.000 description 1
- 230000003111 delayed effect Effects 0.000 description 1
- 239000002355 dual-layer Substances 0.000 description 1
- 230000000694 effects Effects 0.000 description 1
- 238000011156 evaluation Methods 0.000 description 1
- 239000012634 fragment Substances 0.000 description 1
- 230000006872 improvement Effects 0.000 description 1
- 238000012544 monitoring process Methods 0.000 description 1
- 238000003058 natural language processing Methods 0.000 description 1
- 230000000135 prohibitive effect Effects 0.000 description 1
- 230000010076 replication Effects 0.000 description 1
- 230000002441 reversible effect Effects 0.000 description 1
- 239000004065 semiconductor Substances 0.000 description 1
- 230000003068 static effect Effects 0.000 description 1
- 229920002803 thermoplastic polyurethane Polymers 0.000 description 1
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
- G06F9/46—Multiprogramming arrangements
- G06F9/54—Interprogram communication
- G06F9/544—Buffers; Shared memory; Pipes
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06N—COMPUTING ARRANGEMENTS BASED ON SPECIFIC COMPUTATIONAL MODELS
- G06N20/00—Machine learning
- G06N20/20—Ensemble learning
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06N—COMPUTING ARRANGEMENTS BASED ON SPECIFIC COMPUTATIONAL MODELS
- G06N3/00—Computing arrangements based on biological models
- G06N3/02—Neural networks
- G06N3/06—Physical realisation, i.e. hardware implementation of neural networks, neurons or parts of neurons
- G06N3/063—Physical realisation, i.e. hardware implementation of neural networks, neurons or parts of neurons using electronic means
Landscapes
- Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- Software Systems (AREA)
- Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Biomedical Technology (AREA)
- Biophysics (AREA)
- Data Mining & Analysis (AREA)
- Evolutionary Computation (AREA)
- Artificial Intelligence (AREA)
- Computing Systems (AREA)
- Mathematical Physics (AREA)
- Health & Medical Sciences (AREA)
- Life Sciences & Earth Sciences (AREA)
- Medical Informatics (AREA)
- Computer Vision & Pattern Recognition (AREA)
- Neurology (AREA)
- Computational Linguistics (AREA)
- General Health & Medical Sciences (AREA)
- Molecular Biology (AREA)
- Information Retrieval, Db Structures And Fs Structures Therefor (AREA)
Abstract
本公开涉及模型服务系统和方法、服务器、计算设备和存储介质等。一种模型服务系统包括:多个服务器,被配置为分别部署至少一个机器学习模型来提供服务;以及内存池设备,被配置为存储多个服务器上部署的机器学习模型的至少部分参数;其中,多个服务器被配置为在分别执行其上部署的机器学习模型之前或者在分别执行其上部署的机器学习模型期间,从内存池设备获取执行的机器学习模型的至少部分参数。利用本公开的方案,多个服务器能共用一个内存池来存储模型参数,从而能按需从内存池快速获取模型参数,在一些情况下能避免服务器内部的内存容量限制或节约内存开销。另外,在一些特定实施例中,本公开还能减少模型服务化时的内存使用量。
Description
技术领域
本公开涉及机器学习领域,特别涉及模型服务化(modelserving)。
背景技术
模型服务化通常指的是部署机器学习模型(例如深度学习模型)并且为用户或应用提供预测服务(推理(inference)服务)的方式。在一些情况下,当使用模型进行服务时,通常要使用例如图形处理器(GPU,Graphics Processing Unit)之类的加速器(accelerator)来加速计算过程。当前的加速器通常使用高带宽内存(high bandwidthmemory,HBM),其为昂贵的高性能内存。在计算过程中,该内存通常被用来存储参数和中间结果。然而,当前随着模型尺寸的增大,模型参数的数量急剧增多,导致内存耗费巨大。
另外,在一些情况下,为了允许每秒钟处理更多的请求(request),可以在模型服务系统中的多个机器上部署单个模型的多个相同副本(copy)来同时提供服务。然而,当前,每个机器都要下载并存储模型参数的相同副本,这浪费了巨大的设备内存资源,特别是在大尺寸模型的情况下,内存浪费问题更为突出。
由此需要一种改进的模型服务化方案。
发明内容
本公开要解决的一个技术问题是提供一种改进的模型服务化方案。
根据本公开的第一个方面,提供了一种模型服务系统,包括:多个服务器,被配置为分别部署至少一个机器学习模型来提供服务;以及内存池设备,被配置为存储所述多个服务器上部署的机器学习模型的至少部分参数;其中,所述多个服务器被配置为在分别执行其上部署的机器学习模型之前或者在分别执行其上部署的机器学习模型期间,从所述内存池设备获取执行的所述机器学习模型的至少部分参数。
可选地,所述多个服务器中的至少一个服务器被配置为分阶段地执行其上部署的机器学习模型,并且所述至少一个服务器包括预取器;其中,所述预取器被配置为在所述至少一个服务器要对机器学习模型执行的各阶段开始之前从所述内存池设备预先获取各阶段所需的参数。
可选地,所述预取器被配置为:确定所述至少一个服务器要对所述机器学习模型执行的各阶段的执行时间、以及各阶段所需的参数从所述内存池设备到所述至少一个服务器的传输时间,以及根据所述执行时间和所述传输时间,确定从所述内存池设备预先获取各阶段所需的参数的开始时间点。
可选地,所述预取器是通过使所述至少一个服务器试运行所述机器学习模型或者通过对所述机器学习模型的各阶段所需的参数量和/或计算量进行评估,来获得针对各阶段的所述执行时间和/或所述传输时间的。
可选地,所述预取器还被配置为:根据所确定的预先获取各阶段所需的参数的所述开始时间点,在所述机器学习模型中插入用于从所述内存池设备预先获取各阶段所需的参数的预取指令。
可选地,所述多个服务器中的至少两个服务器被配置为部署相同的机器学习模型,并且共享所述内存池设备中存储的所述相同的机器学习模型的参数。
可选地,所述多个服务器中的至少一个服务器包括控制器以及由所述控制器控制的加速器;以及所述模型服务系统还包括互连装置,其连接所述内存池设备与所述至少一个服务器中的所述控制器和/或所述加速器,并且用于从所述内存池设备向所述控制器和/或所述加速器传输参数。
可选地,所述内存池设备包括对于所述多个服务器为只读的内存池;其中所述多个服务器上部署的机器学习模型的所述至少部分参数是存储在所述只读的内存池中的。
根据本公开的第二个方面,提供了一种用于提供模型服务的服务器,被配置为部署并且分阶段地执行至少一个机器学习模型来提供服务,所述服务器包括:内存模块,被配置为存储所述至少一个机器学习模型的部分参数;以及预取器,被配置为在所述服务器要对所述至少一个机器学习模型执行的各阶段开始之前从位于所述服务器外部的内存池设备预先获取各阶段所需的参数到所述内存模块中。
根据本公开的第三个方面,提供了一种使用服务器提供模型服务的方法,所述服务器是根据本公开的第一个方面所述的模型服务系统中的服务器或者是根据本公开的第二个方面所述的服务器,所述方法包括:接收模型服务请求;以及执行所述模型服务请求所要求的机器学习模型来提供相应的服务;其中,在执行所述机器学习模型之前或者在执行所述机器学习模型期间,由所述服务器从所述内存池设备获取执行的所述机器学习模型的至少部分参数。
根据本公开的第四个方面,提供了一种计算设备,包括:处理器;以及存储器,其上存储有可执行代码,当可执行代码被处理器执行时,使处理器执行如上述第三方面所述的方法。
根据本公开的第五个方面,提供了一种计算机程序产品,包括可执行代码,当所述可执行代码被电子设备的处理器执行时,使所述处理器执行如上述第三方面所述的方法。
根据本公开的第六个方面,提供了一种非暂时性机器可读存储介质,其上存储有可执行代码,当可执行代码被电子设备的处理器执行时,使处理器执行如上述第三方面所述的方法。
由此,利用本公开的方案,多个服务器能够共用一个内存池来存储模型参数,从而能够按需从内存池快速获取模型参数,并且在一些情况下能够避免服务器内部的内存容量限制或节约内存开销。另外,在一些特定实施例中,本公开还能够减少模型服务化时整个系统和/或各服务器的内存使用量。
附图说明
通过结合附图对本公开示例性实施方式进行更详细的描述,本公开的上述以及其它目的、特征和优势将变得更加明显,其中,在本公开示例性实施方式中,相同的参考标号通常代表相同部件。
图1和图2分别示出了现有技术的模型服务系统的示意性框图。
图3示出了根据本公开一个实施例的模型服务系统的示意性框图。
图4示出了根据本公开一个实施例的提供模型服务的方法的示意性流程图。
图5示出了根据本公开一个实施例的模型修改的示意图。
图6示出了根据本公开一个实施例的计算设备的结构示意图。
具体实施方式
下面将参照附图更详细地描述本公开的示例性实施方式。虽然附图中显示了本公开的示例性实施方式,然而应该理解,可以以各种形式实现本公开而不应被这里阐述的实施方式所限制。相反,提供这些实施方式是为了使本公开更加透彻和完整,并且能够将本公开的范围完整地传达给本领域的技术人员。
如前所述,随着技术的发展,机器学习模型(后文中可简称为“模型”)的规模越来越大,模型参数也越来越多;而随着模型尺寸的快速增长,在模型服务化时加速器对内存的需求也显著增大,这导致需要更昂贵的硬件。例如,很多人工智能(AI,Artificialintelligence)应用需要较大的AI模型(例如生成式预训练变换器(GPT,Generative Pre-trained Transformer)之类的大语言模型(LLM,Large Language Model)),这是因为更大的模型能更准确地捕获底层数据(underlying data)的复杂性,从而得到更好的预测。例如,现有的超大规模神经网络模型可以具有上亿甚至上千亿个参数。最新研究表明模型尺寸在指数级增大。
当前主要有如下几个策略来提供大尺寸模型服务:
1.增加硬件资源:
增加硬件资源允许在单个实例(instance)中部署更大且更复杂的模型。然而,这个策略具有非常有限的可缩放性和弹性。首先,增加资源的成本可能过高。其次,系统资源有上限。随着增加越来越多的资源,系统将达到其上限。另外,有时,在负载(例如用户请求)突然增大时现有基础架构再增大也不够防止出现瓶颈。
2.分布式服务:
可以将模型部署在多个服务器,形成集群。例如,如图1所示,可以在N个服务器111-11N上均分别部署单个模型的至少一个相同副本,并且在各个服务器内的加速器的设备内存(如图1所示的内存1411和/或1412等)中均存储该单个模型的参数。图1为了简洁清楚起见仅示出了各个服务器中的2个加速器,然而本领域技术人员均理解,实际服务器中的加速器的数量可大于2。
如图1所示,负载平衡装置150可以根据各种策略将当前接收到的多个模型服务请求(例如来自用户或其他设备的调用)尽量均匀地分配给这N个服务器来处理,以便允许每秒钟处理更多的请求。这种策略允许随着需求(例如用户请求)增大而增加资源(例如增加所用服务器个数)。然而,这个策略要求所有服务器在其内存中均保存模型参数的一份相同副本,这浪费了巨大的设备内存资源,特别是在大尺寸模型的情况下,内存浪费问题更为突出。
3.模型分割(split):
可以把模型分割成多个部分并分布在多个不同服务器(可并行处理)上,例如,将一个模型分割成两部分并分别部署在图2所示的服务器111-1和111-2上。每个服务器实例可以运行其特定的模型片段,然后在需要时将结果集合。
与上述第2个策略(分布式服务策略)相比,这个策略允许部署无法放入单个服务器的超大模型。另外,它能使用更多的临时缓冲区(scratch buffer),因此能提供更大的吞吐量,但代价是增大的延迟。
另外,如图2所示,本模型分割策略还可以与上述第2个分布式服务策略结合来处理高请求量。例如,在N行服务器上均分别部署单个模型的相同副本,其中每个副本采用模型分割策略部署在每1行的各个服务器(例如第1行的服务器111-1和111-2、或第2行的服务器112-1和112-2等)上。然而,与上述第2个策略一样,这个策略仍然具有参数冗余导致内存资源浪费等的问题。
也就是说,现有模型服务系统简单地在多个服务器上复制模型实例。即使在模型分割的情况下,模型的每一片段仍然需要被复制以便实现高吞吐量。这种简单复制导致显著的设备内存浪费。随着AI模型参数的指数级增长,这个问题变得愈发严重并且急需解决方案。
本公开提出了一种新型的模型服务化方案,其允许多个服务器共用一个内存池设备来存储模型参数,从而能够按需从内存池快速获取模型参数,并且在一些情况下能够避免服务器内部的内存容量限制或节约内存开销。另外,在一些特定实施例中,本公开还能够减少模型服务化时整个系统和/或各服务器的内存使用量。
本领域技术人员应理解,虽然前面讨论的是在大尺寸模型服务化情况下出现的问题,但是本公开的方案并不仅限于大尺寸模型服务化,而是可适用于各种模型的服务化,只是在大尺寸模型服务化的情况下能带来更显著的效果。例如,在一些实施例中,本公开提出了一种用于数据中心的内存有效的大尺寸模型服务化方案,其旨在解决数据中心在提供大尺寸模型的服务时由于系统中存在大量冗余数据而带来的资源浪费和性能瓶颈等问题。通过如下面将详述的本公开的方案,能够实现模型参数共享,从而可以有效地解决这一问题,降低大尺寸模型的部署成本。
在本公开中,机器学习模型可包括深度学习(Deep Learning)模型,其通常使用多层神经网络来执行各种任务(例如目标监测、语音识别、自然语言处理、图像识别等),由此可包括各种神经网络模型,例如各种CNN模型等。
模型的参数也可称为模型权重(model weight),其为在机器学习中用来帮助模型准确进行预测/推理的参数。在一些情况下,可以通过训练等方式来获得模型的参数。
内存池通常指的是内存的集合,其能由多个计算机/多个服务器共用。
加速器可以包括各种适用于模型运行(例如训练或推理)的通用硬件,或者被专门设计用来加速模型运行的硬件,例如GPU、深度学习处理器(DPU,Deep-learningProcessing Unit)、张量处理器(TPU,Tensor Processing Unit)、特定用途集成电路(ASIC,Application Specific Integrated Circuit)、现场可编程逻辑门阵列(FPGA,Field Programmable Gate Arrays)等。
本公开中的服务器内的用于控制加速器的控制器可以包括各种通用的处理器,例如CPU(CentralProcessingUnit)等。
在本公开中提及的大尺寸模型可以包括参数量为一百万以上、甚至为千万、上亿等级别的模型。
下面将以在多个服务器上分别部署单个模型的相同副本为例来详细描述本发明的技术方案,但是本领域技术人员应理解本发明并不仅限于此。
例如,在一些实施例中,模型服务系统中的各个服务器可以分别部署各不相同的模型,从而提供各种相应的服务。即使在这种各服务器无法共享相同模型参数的情况下,根据本公开的方案也仍然能带来有益效果,例如,能够避免服务器内部的内存容量限制超过模型参数量而无法部署模型,或者能够降低服务器内部设置的内存容量以节约内存开销。各服务器能够在执行模型之前或执行模型期间按需从内存池快速获取模型参数,而不用在部署模型时就将全部参数均下载到内存中。
例如,在另一些实施例中,模型服务系统中的多个服务器中的至少两个可以部署相同的机器学习模型,并且共享内存池设备中存储的该相同的机器学习模型的参数。由此,能够在部署该模型时将其参数存储到内存池而非各服务器的内存,并且在需要时才从内存池取回到服务器的内存中,因此能减少内存使用量。
例如,在一些实施例中,服务器可以更有效地使用其内部的内存空间,比如,在执行模型时只需在内存中保存当前计算所需的参数以及可选的下一阶段(例如人工或机器划分的执行阶段或预定的时间段等)所需的参数,这些模型参数都可以按需从内存池中随时获取。可以根据实际需要来权衡考虑服务器内部的内存使用量与模型执行速度,从而确定从内存池获取参数的方案,例如何时获取及获取哪些参数。
本领域技术人员应理解,在本公开的方案中,部署模型指的是加载模型的程序指令等运行文件,而并不必要加载该模型的参数。例如,在一些实施例中,服务器可以在部署模型时不加载任何模型参数或仅加载一部分参数。
下面将结合图3到图5来详细描述本公开的方案的至少部分实施例。
图3示出了根据本公开一个实施例的模型服务系统的示意性框图。
如图3所示,模型服务系统可以包括多个(如N个)服务器311-31N,其可以被配置为分别部署至少一个机器学习模型来提供服务。
在图3所示的实施例中,该N个服务器可以部署有相同的模型,从而能同时处理针对该模型的多个服务请求。可以利用负载平衡装置350将该多个服务请求分配到各个服务器。但是如前所述本公开的方案不限于此,这多个服务器可以分别部署一个或更多个模型,并且可以部署相同或不同的模型,例如包括与其他服务器完全相同或部分相同的模型。
另外,尽管图3未示出,但是在一些实施例中,也可以与图2类似地采用模型分割方案将一个模型部署在多个服务器上,从而由这多个服务器联合执行该模型。在这种情况下,这多个服务器可以全部或部分连接到内存池设备360以便从其获取模型参数。
在图3所示的实施例中,服务器311-31N具有类似的结构,即分别包括一个控制器(例如CPU)以及由该控制器控制的多个加速器(例如GPU)。虽然图3示出了各个服务器包括2个加速器,但是本领域技术人员均理解,各服务器中的加速器的数量不受限制,可为1个或大于2个。另外,本领域技术人员均理解,服务器311-31N可具有各自完全相同、部分相同或完全不同的结构,并且各服务器的结构也不限于图3中所示的结构,而是只要其能执行模型服务任务即可。另外,虽然图3中未示出,但是在一些实施例中,服务器内的各个加速器之间也可以彼此直接互连,例如通过各种已知的互连链路等。
在一些实施例中,本公开中的加速器(例如加速器3311)可以包括计算核(computational core)(未示出)和高带宽内存(例如内存3411)。在一些情况中,服务器中的加速器3311和3312可以支持单地址空间(single address space),即,所有加速器使用与控制器321(即主机(host))相同的地址。例如,各加速器可以具有统一内存(UnifiedMemory)功能。
另外,如图3所示,该模型服务系统还可以包括内存池设备360,其可以被配置为存储前述N个服务器311-31N上部署的机器学习模型的至少部分参数。
由此,前述N个服务器311-31N可以在分别执行其上部署的机器学习模型之前或者在分别执行其上部署的机器学习模型期间,从内存池设备360获取执行的机器学习模型的至少部分参数。
在一些实施例中,内存池设备360可以为中心化的内存池系统,其存储服务器所部署的所有模型的部分或全部参数。这个内存池系统可以以按需(on-demand)的方式向各服务器提供数据。
在一些实施方式中,各服务器可以通过向内存池设备360发送偏移值(offset)和长度等信息来对所需的参数数据进行寻址。
由于模型的参数均为常量(constants),因此根据本公开的内存池设备不需要采用例如分布式共享内存机制(distributed shared memory mechanism)等各种类似的内存池技术,由此能够支持在更低系统复杂度和更少延迟(latency)的情况下将模型参数从内存池下载到各个服务器。
传统的内存池技术通常比较复杂,这是因为其要支持多个客户端的同时读写,需要解决冲突等问题。然而,由于在本公开的方案中内存池用于向服务器提供模型参数,而模型参数在部署好模型之后基本不会改变,因此基本不用考虑服务器向内存池写入数据的情况。因此,在一些实施方式中,内存池设备360可以采用简化的内存池来实现,例如可以包括对于多个服务器为只读的内存池380来存储部署的各模型的至少部分参数。例如,所述只读的内存池可以为类似常量内存的内存池,其可以对服务器的直接访问而言是只读的,但对内存池设备的主机(控制器)是既可读又可写的。也就是说,在本公开的方案中,“对于多个服务器为只读的内存池”指的是多个服务器不能对内存池直接进行写操作,但是在一些情况下可以通过内存池设备的主机间接地对内存池进行写操作。在一些情况下,可以在服务器上部署模型的时候,由服务器或其他设备经由内存池设备360的主机将模型参数写入内存池中,而在后续执行该模型的期间,服务器直接读取内存池设备360中存储的参数。
在一些实施方式中,如图3所示,为了实现参数的快速获取,模型服务系统还可以包括互连装置(例如图中的互连链路391-39N),其连接内存池设备360与各服务器中的控制器321-32N,并且用于从内存池设备360向控制器321-32N传输参数。本公开的互连装置的连接方式不限于图3所示的方式,其在一些实施方式中可以连接内存池设备360与各服务器中的控制器321-32N以及各个加速器3311、3312等,或者仅连接内存池设备360与各服务器中的各个加速器3311、3312等,而不连接控制器321-32N。根据互连装置的连接方式,可以将参数直接传输到各加速器中的内存或经由控制器再传输到各加速器中的内存。
在一些实施方式中,本公开的互连装置可以包括具有多个CXL(Compute ExpressLink,计算机快速链路)内存扩展器(memory expanders)的CXL交换机,或者各服务器内的多个CXL内存扩展器。在一些使用CXL交换机的实施方式中,互连装置可以提供与各加速器的直接互连,其具有PCIe Gen5 x 16的带宽。另外,在这种情况下,数据移动符合内存语义(memory semantics),因此能支持前述的简化的内存池的实现方式。这种实现方式对于数据密集的工作负载(data-intensive workload)是理想的。本领域技术人员均理解本公开的互连装置不限于此,例如还可以使用其他可能的高速互连链路(包括Infiniband(无限带宽技术,可缩写为IB)、NVLink等)来实现。
下面将结合图4和图3来详细描述根据本公开的一些示例性方案如何提供模型服务。
图4示出了根据本公开一个实施例的提供模型服务的方法的示意性流程图。
如图4所示,在步骤S410中,接收模型服务请求。
在一些实施方式中,可以由例如图3中的各服务器直接接收相应的模型服务请求,或者例如图3所示的那样由各服务器接收从负载平衡装置350分发的模型服务请求。负载平衡装置350可以采用各种已有的分发方案来分发模型服务请求,以使得各服务器的工作负载尽量平衡。
然后,在步骤S420中,执行该模型服务请求所要求的机器学习模型来提供相应的服务,其中,在执行该机器学习模型之前或者在执行该机器学习模型期间,由服务器从位于其外部的内存池设备获取执行的该机器学习模型的至少部分参数。
在一些实施方式中,可以由例如图3中的接收到请求的服务器来执行模型。由于根据本公开的方案,该服务器中并未存储其上部署的模型的所有参数,因此,在模型执行前或执行期间,该服务器可以根据需要从外部的内存池设备360来获取所需的参数。
例如,在一些实施方式中,在服务器初始下载每个模型时,不下载参数。在执行模型期间,当服务器尝试读取特定参数(例如整个模型参数中的一个子集)时,会发生页面错误。此时,服务器能够处理该中断并且将所需的数据从内存池设备360传输到相应的设备内存中。然而,这个过程是耗时的并且会降低执行速度。因此,为了避免页面错误,本公开进一步提出了预取(prefetching)方案。
如图3的实施例所示,可以在各服务器的控制器中增加一个预取器,以便在模型执行期间需要读取特定参数之前将其提前从内存池设备360取回到服务器的内存模块(例如包括加速器或控制器的内存)中。本领域技术人员均理解,在本公开的其他实施例中,模型服务系统所包括的多个服务器中的部分或全部也可以没有预取器,可以根据实际需要在任意一个或更多个服务器中增加该预取器。另外,尽管图3示出的是在各服务器的控制器中增加预取器,但是在本公开的其他实施例中,可以在一个或更多个加速器中增加预取器。在一些实施方式中,预取器可以在控制器或加速器中的运行时系统(runtimesystem)中运行,该运行时系统可以为任意合适软件的运行时系统。可以通过调用等方式来运行预取器。
在一些实施方式中,服务器要执行的模型通常至少包括一些需要进行多步顺序计算的操作,其中每步计算中所用的参数可能不同,由此服务器要分阶段地执行模型。例如,深度学习模型通常包括依次进行各种处理的若干层,由此服务器通常要分层地依次执行该模型。因此,可以用各种合适的方式来人工或机器自动地将模型划分成顺序执行的几个阶段,并且将各执行阶段所需的参数分别归为一个子集来一起获取。例如,可以将深度学习模型中的一个或更多个层划分为一个执行阶段,并且相应地将该一个或更多个层所需的参数作为一个子集来从内存池设备360一起预取。
也就是说,在一些实施方式中,服务器可以分阶段地执行其上部署的机器学习模型,并且该服务器中的预取器可以在该服务器要对该模型执行的各阶段开始之前从内存池设备360预先获取各阶段所需的参数到该服务器的内存模块中。服务器的内存模块(包括服务器内的各控制器和加速器中的各种内存)可以仅存储其要执行的模型的部分参数,例如,当前执行阶段所需的参数以及可选的后续一个或更多个阶段所需的参数,而无需存储模型的全部参数。
在一些实施方式中,预取器可以确定何时以及哪个/哪些参数要被下载到当前服务器中。预取器可以取回接下来要执行的一个或更多个层所需的参数,以便使得数据移动的时间与当前层计算的时间有重叠,从而不影响执行速度或尽量减少对执行速度的影响。
如前所述,可以将模型划分成若干个阶段来执行。由此,在一些实施方式中,各服务器中的预取器可以执行如下操作:
确定服务器要对模型执行的各阶段的执行时间、以及各阶段所需的参数从内存池设备到服务器的传输时间,以及
根据所确定的执行时间和传输时间,确定从内存池设备预先获取各阶段所需的参数的开始时间点。
前述的各阶段的执行时间可以包括各阶段的执行开始时间、执行结束时间、和/或执行持续时长等各种信息。前述的参数的传输时间可以包括单次传输的时间、多次传输的平均时间等各种信息。在一些实施方式中,根据所确定的执行时间和传输时间,可以将一个执行阶段的执行开始时间减去该阶段所需参数的传输时间得到的时间点作为从内存池设备预先获取各阶段所需的参数的最晚的开始时间点,从而保证该阶段执行时所需的参数均已在服务器的内存中。
下面以将深度学习模型中的一层划分为一个阶段为例来具体描述如何进行前述的预取操作。
对于大多数AI模型,层执行的顺序是固定的,因此以相同的顺序使用对应的参数。对于模型的第一次执行和后续的各次执行,运行的代码基本是不变的。因此,在一些实施方式中,预取器可以通过让服务器试运行(预热)模型(此时不预取参数)来获得模型执行的各阶段的执行时间、和/或各阶段所需的参数从内存池设备到服务器的传输时间。在一些情况下,还可以通过试运行收集到模型参数的被访问的顺序和时间间隔等执行信息。本领域技术人员应理解,“试运行”通常指的是在正式提供服务之前的测试运行操作等。例如,按照无预取操作的普通方式执行一遍模型,在执行过程中分析其行为,从而确定该在哪里提前载入哪个/哪些参数。
另外,在其他实施方式中,也可以不采用试运行的方式而是采用评估的方式来预测前述的针对各阶段的执行时间和/或传输时间。可以通过人工或机器分析模型来预测各阶段的执行时间和/或各阶段参数的传输时间。例如,可以检查模型中的各层并且考虑其维度、通道数以及计算复杂度等,从而预测各层执行所需的时间。另外,例如,可以检查各层所用的参数的数量和数据大小,获得各层所需传输的数据量,并且根据例如统计等方式获得的互连传输速度来计算得到各层参数所需的传输时间。
在确定了预先获取各阶段所需的参数的开始时间点之后,预取器可以通过各种方式执行取参数操作。
例如,可以采用主动预取的方式,如根据所确定的开始时间点在模型中插入用于从内存池设备预先获取各阶段所需的参数的预取指令。然后将修改后的模型部署在服务器上。可以通过人工或机器自动的方式来修改模型。
图5示出了根据本公开一个实施例的模型修改的示意图。例如,给定图5所示的原模型500,可以首先通过前述各种方法收集各层的执行开始时间t(i)和每一层所需的参数集C(i)。然后,计算预取的插入时间点I(i)=(t(i)-c(i)/S),其中S是互连传输速度而c(i)是参数集C(i)的总数据量。然后,确定预取指令最后的插入位置为max({j|t(j)<I(i)}),其中获得的j值表示预取指令至少要插入在第j层之前。
如图5所示,根据前述确定的插入位置,将左边的原模型500修改得到右边的模型500’。例如,在第一层L1之前插入了调用预取程序的语句,以预取第二层L2所需的参数集C2。由于预取C2涉及的通信操作与第一层L1执行的计算操作基本互不干扰,因此二者可以如图5所示地并行进行,从而保证在第二层L2的执行开始时间t2之前,第二层L2所需的参数集C2已被取回到服务器的相应内存中,避免耽误第二层L2的执行。在图5所示的实施例中,预取参数的操作不会影响模型执行速度,因此在修改后的模型500’中的各层的执行开始时间t(i)仍然与原模型500中的一样。另外,在图5中,尽管未示出,但是预取第一层L1所需的参数集C1的操作也可以与执行第一层L1之前的某个或某些操作并行执行,从而也不会耽误第一层L1的执行。上述的主动预取的优势包括能够准确计算预取的插入点。
在其他一些实施方式中,可以不修改模型,而是可以采用其他计时或触发的方式来在所确定的开始时间点当时或之前启动从内存池设备取参数的操作。例如可以设定在执行各层的某个操作时同时调用/启动预取程序,以便并行地进行后续一个或更多个层的参数预取操作。
上文中已经参考附图详细描述了根据本公开的模型服务化的一些示例性方案。利用这些方案,能够允许多个服务器共用一个内存池设备来存储模型参数,从而能够按需从内存池快速获取模型参数,并且在一些情况下能够避免服务器内部的内存容量限制或节约内存开销。
另外,在一些特定实施例中,本公开还能够减少模型服务化时整个系统和/或各服务器的内存使用量。例如,本公开引入了内存池,其允许所有服务器共享单个模型参数副本。另外,在一些特定实施例中,为了减少对性能的影响,本公开还进一步提出了预取方案。本公开通过结合内存池和预取方案,能够实现模型参数共享,在不损害性能的情况下最少化服务器内的设备内存的使用。由此,特别在提供大尺寸模型服务的情况下,能显著降低服务器内的设备内存的使用,并且因此允许部署更多模型或使用更加成本有效的(cost-efficient)加速器等,从而降低大尺寸模型的部署成本。
图6示出了根据本公开一实施例可用于实现上述提供模型服务的方法的计算设备的结构示意图。
参见图6,计算设备600包括存储器610和处理器620。
处理器620可以是一个多核的处理器,也可以包含多个处理器。在一些实施例中,处理器620可以包含一个通用的主处理器以及一个或多个特殊的协处理器,例如图形处理器(GPU)、数字信号处理器(DSP)等等。在一些实施例中,处理器620可以使用定制的电路实现,例如特定用途集成电路(ASIC,Application Specific Integrated Circuit)或者现场可编程逻辑门阵列(FPGA,Field Programmable Gate Arrays)。
存储器610可以包括各种类型的存储单元,例如系统内存、只读存储器(ROM),和永久存储装置。其中,ROM可以存储处理器620或者计算机的其他模块需要的静态数据或者指令。永久存储装置可以是可读写的存储装置。永久存储装置可以是即使计算机断电后也不会失去存储的指令和数据的非易失性存储设备。在一些实施方式中,永久性存储装置采用大容量存储装置(例如磁或光盘、闪存)作为永久存储装置。另外一些实施方式中,永久性存储装置可以是可移除的存储设备(例如软盘、光驱)。系统内存可以是可读写存储设备或者易失性可读写存储设备,例如动态随机访问内存。系统内存可以存储一些或者所有处理器在运行时需要的指令和数据。此外,存储器610可以包括任意计算机可读存储媒介的组合,包括各种类型的半导体存储芯片(DRAM,SRAM,SDRAM,闪存,可编程只读存储器),磁盘和/或光盘也可以采用。在一些实施方式中,存储器610可以包括可读和/或写的可移除的存储设备,例如激光唱片(CD)、只读数字多功能光盘(例如DVD-ROM,双层DVD-ROM)、只读蓝光光盘、超密度光盘、闪存卡(例如SD卡、min SD卡、Micro-SD卡等等)、磁性软盘等等。计算机可读存储媒介不包含载波和通过无线或有线传输的瞬间电子信号。
存储器610上存储有可执行代码,当可执行代码被处理器620处理时,可以使处理器620执行上文述及的提供模型服务的方法。
上文中已经参考附图详细描述了根据本公开的提供模型服务的方法以及相应的系统或设备。
需要说明的是,本申请所涉及的用户信息(包括但不限于用户设备信息、用户个人信息等)和数据(包括但不限于用于分析的数据、存储的数据、展示的数据等),均为经用户授权或者经过各方充分授权的信息和数据,并且相关数据的收集、使用和处理需要遵守相关国家和地区的相关法律法规和标准,并提供有相应的操作入口,供用户选择授权或者拒绝。
此外,根据本公开的方法还可以实现为一种计算机程序或计算机程序产品,该计算机程序或计算机程序产品包括用于执行本公开的上述方法中限定的上述各步骤的计算机程序代码指令。
或者,本公开还可以实施为一种非暂时性机器可读存储介质(或计算机可读存储介质、或机器可读存储介质),其上存储有可执行代码(或计算机程序、或计算机指令代码),当所述可执行代码(或计算机程序、或计算机指令代码)被电子设备(或计算设备、服务器等)的处理器执行时,使所述处理器执行根据本公开的上述方法的各个步骤。
本领域技术人员还将明白的是,结合这里的公开所描述的各种示例性逻辑块、模块、电路和算法步骤可以被实现为电子硬件、计算机软件或两者的组合。
附图中的流程图和框图显示了根据本公开的多个实施例的系统和方法的可能实现的体系架构、功能和操作。在这点上,流程图或框图中的每个方框可以代表一个模块、程序段或代码的一部分,所述模块、程序段或代码的一部分包含一个或多个用于实现规定的逻辑功能的可执行指令。也应当注意,在有些作为替换的实现中,方框中所标记的功能也可以以不同于附图中所标记的顺序发生。例如,两个连续的方框实际上可以基本并行地执行,它们有时也可以按相反的顺序执行,这依所涉及的功能而定。也要注意的是,框图和/或流程图中的每个方框、以及框图和/或流程图中的方框的组合,可以用执行规定的功能或操作的专用的基于硬件的系统来实现,或者可以用专用硬件与计算机指令的组合来实现。
以上已经描述了本公开的各实施例,上述说明是示例性的,并非穷尽性的,并且也不限于所披露的各实施例。在不偏离所说明的各实施例的范围和精神的情况下,对于本技术领域的普通技术人员来说许多修改和变更都是显而易见的。本文中所用术语的选择,旨在最好地解释各实施例的原理、实际应用或对市场中的技术的改进,或者使本技术领域的其它普通技术人员能理解本文披露的各实施例。
Claims (13)
1.一种模型服务系统,包括:
多个服务器,被配置为分别部署至少一个机器学习模型来提供服务;以及
内存池设备,被配置为存储所述多个服务器上部署的机器学习模型的至少部分参数;
其中,所述多个服务器被配置为在分别执行其上部署的机器学习模型之前或者在分别执行其上部署的机器学习模型期间,从所述内存池设备获取执行的所述机器学习模型的至少部分参数。
2.根据权利要求1所述的模型服务系统,其中,
所述多个服务器中的至少一个服务器被配置为分阶段地执行其上部署的机器学习模型,并且所述至少一个服务器包括预取器;
其中,所述预取器被配置为在所述至少一个服务器要对机器学习模型执行的各阶段开始之前从所述内存池设备预先获取各阶段所需的参数。
3.根据权利要求2所述的模型服务系统,其中,
所述预取器被配置为:
确定所述至少一个服务器要对所述机器学习模型执行的各阶段的执行时间、以及各阶段所需的参数从所述内存池设备到所述至少一个服务器的传输时间,以及
根据所述执行时间和所述传输时间,确定从所述内存池设备预先获取各阶段所需的参数的开始时间点。
4.根据权利要求3所述的模型服务系统,其中,
所述预取器是通过使所述至少一个服务器试运行所述机器学习模型或者通过对所述机器学习模型的各阶段所需的参数量和/或计算量进行评估,来获得针对各阶段的所述执行时间和/或所述传输时间的。
5.根据权利要求3所述的模型服务系统,其中,
所述预取器还被配置为:根据所确定的预先获取各阶段所需的参数的所述开始时间点,在所述机器学习模型中插入用于从所述内存池设备预先获取各阶段所需的参数的预取指令。
6.根据权利要求1所述的模型服务系统,其中,
所述多个服务器中的至少两个服务器被配置为部署相同的机器学习模型,并且共享所述内存池设备中存储的所述相同的机器学习模型的参数。
7.根据权利要求1所述的模型服务系统,其中,
所述多个服务器中的至少一个服务器包括控制器以及由所述控制器控制的加速器;以及
所述模型服务系统还包括互连装置,其连接所述内存池设备与所述至少一个服务器中的所述控制器和/或所述加速器,并且用于从所述内存池设备向所述控制器和/或所述加速器传输参数。
8.根据权利要求1所述的模型服务系统,其中,
所述内存池设备包括对于所述多个服务器为只读的内存池;
其中所述多个服务器上部署的机器学习模型的所述至少部分参数是存储在所述只读的内存池中的。
9.一种用于提供模型服务的服务器,被配置为部署并且分阶段地执行至少一个机器学习模型来提供服务,所述服务器包括:
内存模块,被配置为存储所述至少一个机器学习模型的部分参数;以及
预取器,被配置为在所述服务器要对所述至少一个机器学习模型执行的各阶段开始之前从位于所述服务器外部的内存池设备预先获取各阶段所需的参数到所述内存模块中。
10.一种使用服务器提供模型服务的方法,所述服务器是根据权利要求1至8中任何一项所述的模型服务系统中的服务器或者是根据权利要求9所述的服务器,所述方法包括:
接收模型服务请求;以及
执行所述模型服务请求所要求的机器学习模型来提供相应的服务;
其中,在执行所述机器学习模型之前或者在执行所述机器学习模型期间,由所述服务器从所述内存池设备获取执行的所述机器学习模型的至少部分参数。
11.一种计算设备,包括:
处理器;以及
存储器,其上存储有可执行代码,当所述可执行代码被所述处理器执行时,使所述处理器执行如权利要求10所述的方法。
12.一种计算机程序产品,包括可执行代码,当所述可执行代码被电子设备的处理器执行时,使所述处理器执行如权利要求10所述的方法。
13.一种非暂时性机器可读存储介质,其上存储有可执行代码,当所述可执行代码被电子设备的处理器执行时,使所述处理器执行如权利要求10所述的方法。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202310561418.9A CN116860469A (zh) | 2023-05-16 | 2023-05-16 | 模型服务系统和方法、服务器、计算设备和存储介质 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202310561418.9A CN116860469A (zh) | 2023-05-16 | 2023-05-16 | 模型服务系统和方法、服务器、计算设备和存储介质 |
Publications (1)
Publication Number | Publication Date |
---|---|
CN116860469A true CN116860469A (zh) | 2023-10-10 |
Family
ID=88232920
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202310561418.9A Pending CN116860469A (zh) | 2023-05-16 | 2023-05-16 | 模型服务系统和方法、服务器、计算设备和存储介质 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN116860469A (zh) |
Cited By (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN117349034A (zh) * | 2023-12-05 | 2024-01-05 | 创意信息技术股份有限公司 | 一种大语言模型分层加载方法及装置 |
-
2023
- 2023-05-16 CN CN202310561418.9A patent/CN116860469A/zh active Pending
Cited By (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN117349034A (zh) * | 2023-12-05 | 2024-01-05 | 创意信息技术股份有限公司 | 一种大语言模型分层加载方法及装置 |
CN117349034B (zh) * | 2023-12-05 | 2024-02-23 | 创意信息技术股份有限公司 | 一种大语言模型分层加载方法及装置 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CA3101214C (en) | Modifying machine learning models to improve locality | |
GB2561941B (en) | Data processing | |
US8285930B2 (en) | Methods for adapting performance sensitive operations to various levels of machine loads | |
US7206902B2 (en) | System, apparatus and method for predicting accesses to a memory | |
JP7451614B2 (ja) | オンチップの計算ネットワーク | |
CN113590508B (zh) | 动态可重构的内存地址映射方法及装置 | |
US8285931B2 (en) | Methods for reducing cache memory pollution during parity calculations of RAID data | |
CN110795226B (zh) | 利用计算机系统处理任务的方法、电子设备和存储介质 | |
CN116860469A (zh) | 模型服务系统和方法、服务器、计算设备和存储介质 | |
CN117215973B (zh) | 一种缓存数据的处理方法、深度学习训练方法和系统 | |
US10719441B1 (en) | Using predictions of outcomes of cache memory access requests for controlling whether a request generator sends memory access requests to a memory in parallel with cache memory access requests | |
US8219751B2 (en) | Methods for optimizing performance of transient data calculations | |
US7461211B2 (en) | System, apparatus and method for generating nonsequential predictions to access a memory | |
CN118312102A (zh) | Io请求处理方法、装置、存储设备及存储介质 | |
EP4372563A1 (en) | Systems, methods, and apparatus for operating computational devices | |
Chen et al. | Data prefetching and eviction mechanisms of in-memory storage systems based on scheduling for big data processing | |
CN115203076B (zh) | 数据结构优化的专用存储器缓存 | |
WO2023173995A1 (en) | Cache line compression prediction and adaptive compression | |
US8201173B2 (en) | Intelligent pre-started job affinity for non-uniform memory access computer systems | |
Liu et al. | Towards adaptive replication for hot/cold blocks in hdfs using memcached | |
US20230315627A1 (en) | Cache line compression prediction and adaptive compression | |
US20220374348A1 (en) | Hardware Acceleration | |
Cheng et al. | Alleviating bottlenecks for dnn execution on gpus via opportunistic computing | |
US20230004855A1 (en) | Co-operative and adaptive machine learning execution engines | |
KR102649076B1 (ko) | Gpu 기반 질의 처리 가속 방법 및 컴퓨팅 시스템 |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
PB01 | Publication | ||
PB01 | Publication | ||
SE01 | Entry into force of request for substantive examination | ||
SE01 | Entry into force of request for substantive examination |