CN116880928B - 模型部署方法、装置、设备及存储介质 - Google Patents

模型部署方法、装置、设备及存储介质 Download PDF

Info

Publication number
CN116880928B
CN116880928B CN202311140533.5A CN202311140533A CN116880928B CN 116880928 B CN116880928 B CN 116880928B CN 202311140533 A CN202311140533 A CN 202311140533A CN 116880928 B CN116880928 B CN 116880928B
Authority
CN
China
Prior art keywords
model
reverse proxy
deployment
service
reasoning
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.)
Active
Application number
CN202311140533.5A
Other languages
English (en)
Other versions
CN116880928A (zh
Inventor
黄金
曹彬
胡江洪
田楷
陈立名
晏文仲
朱光旭
陈运泽
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Fitow Tianjin Detection Technology Co Ltd
Original Assignee
Fitow Tianjin Detection Technology Co Ltd
Priority date (The priority date 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 date listed.)
Filing date
Publication date
Application filed by Fitow Tianjin Detection Technology Co Ltd filed Critical Fitow Tianjin Detection Technology Co Ltd
Priority to CN202311140533.5A priority Critical patent/CN116880928B/zh
Publication of CN116880928A publication Critical patent/CN116880928A/zh
Application granted granted Critical
Publication of CN116880928B publication Critical patent/CN116880928B/zh
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements 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/44Arrangements for executing specific programs
    • G06F9/445Program loading or initiating
    • G06F9/44505Configuring for program initiating, e.g. using registry, configuration files
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06NCOMPUTING ARRANGEMENTS BASED ON SPECIFIC COMPUTATIONAL MODELS
    • G06N5/00Computing arrangements using knowledge-based models
    • G06N5/04Inference or reasoning models
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L67/00Network arrangements or protocols for supporting network services or applications
    • H04L67/50Network services
    • H04L67/56Provisioning of proxy services
    • YGENERAL TAGGING OF NEW TECHNOLOGICAL DEVELOPMENTS; GENERAL TAGGING OF CROSS-SECTIONAL TECHNOLOGIES SPANNING OVER SEVERAL SECTIONS OF THE IPC; TECHNICAL SUBJECTS COVERED BY FORMER USPC CROSS-REFERENCE ART COLLECTIONS [XRACs] AND DIGESTS
    • Y02TECHNOLOGIES OR APPLICATIONS FOR MITIGATION OR ADAPTATION AGAINST CLIMATE CHANGE
    • Y02DCLIMATE CHANGE MITIGATION TECHNOLOGIES IN INFORMATION AND COMMUNICATION TECHNOLOGIES [ICT], I.E. INFORMATION AND COMMUNICATION TECHNOLOGIES AIMING AT THE REDUCTION OF THEIR OWN ENERGY USE
    • Y02D10/00Energy efficient computing, e.g. low power processors, power management or thermal management

Landscapes

  • Engineering & Computer Science (AREA)
  • Software Systems (AREA)
  • Theoretical Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Computer Networks & Wireless Communication (AREA)
  • Signal Processing (AREA)
  • Artificial Intelligence (AREA)
  • Computational Linguistics (AREA)
  • Data Mining & Analysis (AREA)
  • Evolutionary Computation (AREA)
  • Computing Systems (AREA)
  • Mathematical Physics (AREA)
  • Information Retrieval, Db Structures And Fs Structures Therefor (AREA)

Abstract

本申请提供一种模型部署方法、装置、设备及存储介质,涉及计算机技术领域,该方法包括:在多台物理机上搭建基础环境,并根据显存资源配置部署模型;对部署模型的推理服务配置模型仓库,并启动推理服务;对推理服务配置反向代理匹配规则,并基于反向代理匹配规则对部署模型进行反向代理。通过使用反向代理实现部署模型在多个物理机多个显卡基础环境中的推理服务,并根据显存资源对部署模型占用的内存进行部署分配,实现了基于反向代理机制对多个物理机上模型部署的推理服务进行管理,避免了Ensemble模式下模型跨机不能通讯的问题,使得推理服务端的扩展、变动等操作对客户端影响几乎没有影响,提升了推理服务性能。

Description

模型部署方法、装置、设备及存储介质
技术领域
本申请涉及计算机技术领域,具体而言,涉及一种模型部署方法、装置、设备及存储介质。
背景技术
随着用户需求的增加和技术的持续发展,支持单一框架的TFs、Fs已经不能满足实际任务需求,而Triton Infer Server(开源推理服务软件)作为一个能够兼容多框架的推理部署服务方式进入人们的视野并成为了当前推理部署的主流方案,广受开发人员和工程师的喜爱。它除了同时支持Torch、Tensorflow外,还支持TensorRT、ONNX等模型优化技术,极大提高了推理服务性能。Ensemble模式是Triton中的一种模型组合技术,它允许将多个独立的深度学习模型组合在一起,以实现更强大的预测能力。
目前,在Triton Ensemble模式下会存在Triton服务相互通讯的情况,由于Triton内部原因,跨物理机的Ensemble模型并不支持。如果开发该功能会非常耗时耗力,且与Triton的设计机制不符合。在进行模型串行推理时,后面的模型输入来源于前面模型的结果,Triton将整个Ensemble看作为一个模型任务,其中只开放输入和输出,隐藏中间各模型之间的交互。为此,Triton做了优化,各模型通信的数据直接在GPU上进行高速传输,这就导致Ensemble中的各个模型必须部署在同一物理机上。
发明内容
有鉴于此,本申请实施例的目的在于提供一种模型部署方法、装置、设备及存储介质,通过使用反向代理实现部署模型在多个物理机多个显卡基础环境中的推理服务,并使用0-1背包问题对部署模型占用的显存资源分配进行优化;基于反向代理机制对各个物理机上模型部署的推理服务进行管理,由于该反向代理机制被配置了一套定制的反向代理匹配规则,能够隐藏部署在各个物理机上的推理服务,对客户端发来的请求进行统一地映射转发,避免了Ensemble模式下模型跨机不能通讯的问题,从而解决上述技术问题。
第一方面,本申请实施例提供一种模型部署方法,所述方法包括:在多台物理机上搭建基础环境,并根据显存资源配置部署模型;对所述部署模型的推理服务配置模型仓库,并启动所述推理服务;对所述推理服务配置反向代理匹配规则,并基于所述反向代理匹配规则对所述部署模型进行反向代理。
在上述实现过程中,通过使用反向代理实现部署模型在多个物理机多个显卡基础环境中的推理服务,并根据显存资源对部署模型占用的内存进行部署分配。实现了基于反向代理机制对多个物理机上模型部署的推理服务进行管理,能够在多机多卡的分布式下部署高性能推理服务,由于通过代理只会暴露代理服务,其它的推理服务都是不可见、透明的,因此该反向代理机制能够隐藏部署在各个物理机上的推理服务,对客户端发来的请求进行统一地映射转发,避免了Ensemble模式下模型跨机不能通讯的问题,使得推理服务端的扩展、变动等操作对客户端影响几乎没有影响,提升了推理服务性能。
可选地,所述在多台物理机上搭建基础环境,并根据显存资源配置部署模型,包括:在多台物理机上配置容器环境,并拉取服务镜像到本地;采用0-1背包组合分配原则,根据所述多台物理机的可用显存、部署模型的所需显存,对所述部署模型进行整体部署。
在上述实现过程中,通过使用0-1背包组合规则求解模型分配,使得尽可能地在不超过可用显存的条件下部署更多的模型,减少了资源浪费,提高了推理服务的性能。
可选地,所述采用0-1背包组合分配原则,根据所述多台物理机的可用显存、部署模型的所需显存,对所述部署模型进行整体部署,包括:按照所述部署模型的所需显存大小进行排序;根据排序结果,将所述部署模型依次部署至所述多台物理机的显卡中;对所述多台物理机中显卡的剩余可用显存和所述部署模型的所需内存遍历寻找最优的配置组合。
在上述实现过程中,通过把模型分配当作0-1背包问题进行求解,能够得到更优的分配方案,使显存利用率更高、推理服务性能更强;对在多机多卡场景下模型分配进行优化,避免将Ensemble模式下的多个模型部署在不同的物理机上,能更优效率地利用显存资源,在额定的显存下部署更多的模型,支持更多请求并行,提升了吞吐量。
可选地,所述对所述部署模型的推理服务配置模型仓库,并启动所述推理服务,包括:基于树形文件目录形式存储所述部署模型;在树形文件中配置每一个所述部署模型的模型实例数量、显卡启动位置;启动所述部署模型的推理服务。
在上述实现过程中,通过以树形文件的形式对模型文件进行存储管理,能够为以显存作为分配资源的模型部署方式提供模型实例数量、显卡启动位置等参数。这种存储管理方式,不仅符合人类使用电脑的习惯,更能方便、高效地分配利用显存资源,使其在额定的显存下部署更多的模型,支持更多请求并行,提升了吞吐量,提升了推理服务的性能。可选地,所述启动所述部署模型的推理服务之后,还包括:通过多台物理机的开放接口地址向推理服务平台发送推理请求,并进行部署推理计算;其中,所述开放接口地址的确定方式包括:根据对应物理机的IP地址与固定端口号确定。
在上述实现过程中,通过物理机的IP地址与固定端口号确定物理机的开放接口地址,可以快速确定客户端向哪台物理机发送推理请求,方便后续反向代理服务器进行对应物理机的转发,提高了推理服务效率。
可选地,所述对所述推理服务配置反向代理匹配规则,并基于所述反向代理匹配规则对所述部署模型进行反向代理,包括:对所述推理服务配置反向代理匹配规则;通过反向代理服务器接收客户端发送的推理请求,并根据所述反向代理匹配规则选择后端服务器;通过反向代理服务器将所述后端服务器对所述推理请求的响应返回至所述客户端。
在上述实现过程中,通过在多机多卡的生产环境中,对多机部署的推理服务进行反向代理,实现可在多机多卡的分布式下部署的高性能推理服务,多个推理服务使用一个通讯服务地址,使得推理服务端的扩展、变动等操作对客户端影响几乎没有影响,避免了将多个模型的能力进行组合导致需要将该模式下的所有模型设置在同一物理机GPU上的限制问题,能够适应更多的场景,提升了推理服务性能。
可选地,所述对所述推理服务配置反向代理匹配规则,并基于所述反向代理匹配规则对所述部署模型进行反向代理,包括:使用Upstream指令对每一个所述部署模型定义一组服务器组;其中,所述服务器组包括配置同一部署模型的所有物理机的IP地址;使用Location指令匹配推理请求转发至后端服务器的资源地址,完成所述部署模型的反向代理匹配规则配置;基于所述反向代理匹配规则对所述部署模型进行反向代理。
在上述实现过程中,通过使用Location指令和Upstream指令配合定义反向代理匹配规则,实现了对每个模型创建一个服务器组,这个组包含所有部署该模型的物理机IP,从而方便了多台物理机上的反向代理服务,提升了推理服务性能。
第二方面,本申请实施例提供了一种模型部署装置,所述装置包括:部署模型模块,用于在多台物理机上搭建基础环境,并根据显存资源配置部署模型;配置推理服务模块,用于对所述部署模型的推理服务配置模型仓库,并启动所述推理服务;反向代理模块,用于对所述推理服务配置反向代理匹配规则,并基于所述反向代理匹配规则对所述部署模型进行反向代理。
第三方面,本申请实施例还提供一种电子设备,包括:处理器、存储器,所述存储器存储有所述处理器可执行的机器可读指令,当电子设备运行时,所述机器可读指令被所述处理器执行时执行上述的方法的步骤。
第四方面,本申请实施例提供一种存储介质,所述存储介质上存储有计算机程序,所述计算机程序被处理器运行时执行上述的方法的步骤。
附图说明
图1为本申请实施例提供的一种模型部署方法的流程图;
图2为本申请实施例提供的一种多物理机模型部署示例图;
图3为本申请实施例提供的模型部署装置的功能模块示意图;
图4为本申请实施例提供模型部署装置的电子设备的方框示意图。
图标:210-部署模型模块;220-配置推理服务模块;230-反向代理模块;300-电子设备;311-存储器;312-存储控制器;313-处理器;314-外设接口;315-输入输出单元;316-显示单元。
具体实施方式
在介绍本申请实施例前,首先对本申请涉及的技术概念作简要介绍。
Triton Infer Server:一款来自NVIDIA的开源推理服务软件,前身是TensorRTInference Server,支持从所有流行框架中部署模型,例如TensorFlow、PyTorch、ONNX、TensorRT、Python和自定义C++等backend(后端)。Triton模型部署过程:1、首先要准备好一个model repository:保持需要server的所有模型。2、load 所有模型:triton会根据模型的backend,把它运行在server端的硬件设备上,比如CPU/GPU,这样server端就准备好了。3、client端(应用端)发送请求:client端使用python/c++实现一个client,把请求发送到server端,发送可以通过网络HTTP/gRPC协议,也可以通过CAPI直接发送,不通过网络协议。4、请求发回到服务端:triton把请求调度到相应的backend的instance上执行,执行之后的结果会通过同样的路径返回到client端。
Nginx (engine x):一款自由的、开源的、高性能的HTTP服务器和反向代理服务器。同时也是一个IMAP、POP3、SMTP代理服务器,Nginx作为一个HTTP服务器进行网络的发布处理,另外Nginx可以作为反向代理进行负载均衡的实现。
Uniform Resource Locator:统一资源定位符,统一资源定位符是对可以从互联网上得到的资源的位置和访问方法的一种简洁的表示,是互联网上标准资源的地址。
本申请发明人注意到,在深度学习应用项目落地的初始阶段,人们常用的主流框架有由Facebook开发的Pytorch框架、Google开发的TensorFlow框架。而TensorFlowServing(TFs)和TorchServer(Ts)分别是TensorFlow、Pytorch训练框架对应的推理部署服务方式。作为推理部署方法,TFs(TensorFlow Serving)和Ts(TorchServer)都专注于简化其对应的训练框架模型在生成环境中的部署过程。它们都提供了方便的工具和接口,使得将模型转换为可用于推理的服务端点变得更加容易和高效,并且两者都有多模型的支持、动态模型加载和热更新、可扩展性和负载均衡以及监控和指标收集。Triton Infer Server使用Docker容器化技术,将模型打包成独立的容器,并在容器环境中运行,这个属性使Triton非常适合云、边缘等可以利用Kubernetes、Kubeflow等集群技术的生产环境。但在实际使用中,存在需要在不支持搭建集群本地部署的情况,在这种情况下,如果要使用Triton作为部署方式的话,就只能对每个物理机各部署一套Triton服务。这种方法首先会导致需要开放多个服务地址供客户使用,违背了推理部署方法中服务接口统一的原则。其次,在Triton Ensemble模式下会存在Triton服务相互通讯的情况,由于Triton内部原因,跨物理机的Ensemble模型并不支持。如果开发该功能会非常耗时耗力,且与Triton的设计机制不符合。
因此,在面对上述情况,需要通过设置一套反向代理机制对各个Triton服务进行管理,这个反向代理机制有一套定制的规则,能够隐藏部署在各个物理机上的Triton服务,对客户端发来的请求进行映射转发。反向代理位于众多客户端和众多服务器之间,客户端都向地址唯一的代理服务进行请求发送,代理服务根据其规则将客户端的请求整体转发给服务端,待服务端计算处理完后,结果也是返回给代理服务,由代理服务转发给对应的客户端。
同时,要根据模型、算力资源进行全局分配,优先将同一个的Ensemble模式下的所有模型放在一个物理机上,避免Ensemble跨机通讯。Ensemble模式是Triton中的一种模型组合技术,它允许将多个独立的深度学习模型组合在一起,以实现更强大的预测能力。Ensemble 在 Triton 中的应用方式如下:首先,可以定义一个包含多个模型的集合,每个模型都可以是不同的架构或任务。然后,当进行推理时,Triton 将串行、并行地在这些模型上执行计算,并将它们的预测结果进行组合,以生成最终的集成预测结果;在进行模型串行推理时,后面的模型输入来源于前面模型的结果,Triton将整个Ensemble看作为一个模型任务,其中只开放输入和输出,隐藏中间各模型之间的交互。为此,Triton做了优化,各模型通信的数据直接在GPU上进行高速传输。这就导致Ensemble中的各个模型必须部署在同一物理机上。
有鉴于此,本申请实施例提供了一种如下介绍的一种模型部署方法、装置、设备及存储介质。
请参阅图1,图1为本申请实施例提供的一种模型部署方法的流程图。下面对本申请实施例作详细阐释。该方法包括:步骤100、步骤120和步骤140。
步骤100:在多台物理机上搭建基础环境,并根据显存资源配置部署模型;
步骤120:对部署模型的推理服务配置模型仓库,并启动推理服务;
步骤140:对推理服务配置反向代理匹配规则,并基于反向代理匹配规则对部署模型进行反向代理。
示例性地,搭建基础环境可以是:使用Docker容器化技术,将需要部署的模型打包成独立的容器,并在容器环境中运行,最后放在利用Kubernetes、Kubeflow等集群技术搭建多机多卡的生产环境中。本申请实施例中由于在实际使用中存在需要适配不支持搭建集群本地部署的情况,在这种情况下,可对每个物理机各部署一套推理服务;其中,部署模型可以是TensorFlow、PyTorch、ONNX、TensorRT、Python和自定义C++等多种框架模型中的一种或多种。模型仓库(Model Repository)可以是:用于部署上述各类模型,在服务端启动推理服务后,模型管理模块(Model Management)可以轮询挂载的模型仓库,进行各类模型的更新、删除、加载或者部署等,模型仓库中可具体记录挂载的模型的配置信息,例如:模型名称以及模型的输入和输出名称等参数。反向代理可以是:位于众多客户端和众多物理机服务器之间的一种转发机制,客户端都向地址唯一的代理服务进行请求发送,代理服务根据其配置的反向代理匹配规则将客户端的请求整体转发给服务端,待服务端计算处理完后,结果也是返回给代理服务,由代理服务转发给对应的客户端。
可选地,如图2所示的一种实施例。首先,在物理机1、物理机2、物理机3…物理机N等多个物理机上搭建推理服务平台,该推理服务平台为搭建基础环境后提供给客户使用的软件平台;Triton提供了docker容器的方式部署,可在各个物理机上配置相应的docker环境后,拉取Triton infer server 的镜像到本地,完成基础环境的布置,后续再进行模型分配和代理映射。其次,根据显存资源对模型进行配置,确定各物理机显卡需要部署的模型,显存资源是指用于存储深度学习模型及其相关数据的显卡(GPU)上的内存,可以具体包括:物理机GPU的可用显存资源、部署模型需要的显存资源。可用显存可以是:物理机上GPU的内存,例如:一台有4张24G显存A10显卡的2U刀片服务器,其可用显存为24G×4=96G;模型需要的显存可以是:该模型存放到显卡中需要占用多少显卡内存,例如:一个Pytorch框架训练完成的目标检测模型Faster Rcnn放到显卡中需要占用6G显卡内存,6G显卡内存则是Pytorch框架模型需要的显存。完成基础环境的Triton服务搭建和各个显卡需要启动模型的配置后,根据模型配置结果,对各个物理机上的Triton服务的模型仓库进行设置,设置每一个部署模型的参数。配置模型仓库后,启动推理服务,并基于反向代理匹配规则对部署模型进行反向代理;完成上述模型、模型仓库、反向代理的设置后,可重启Nginx代理服务。在所有物理机的Triton服务正常启动的情况下,客户端向Nginx开放的地址发送请求,Nginx转发请求到对应的Triton服务然后计算出结果,然后Nginx把结果返回给对应的客户端。其中,反向代理的过程可以是:基于Nginx对部署在多台物理机的Triton服务进行反向代理,首先,客户端发送请求到Nginx反向代理服务器;然后,Nginx反向代理服务器接收到请求,并根据配置的代理规则(如域名、路径等)选择后端服务器;接着,Nginx将请求转发到选定的后端服务器,后端服务器处理请求并生成响应;最后,Nginx将后端服务器的响应返回给客户端。
通过使用反向代理实现部署模型在多个物理机多个显卡基础环境中的推理服务,并根据显存资源对部署模型占用的内存进行部署分配。实现了基于反向代理机制对多个物理机上模型部署的推理服务进行管理,能够在多机多卡的分布式下部署高性能推理服务,由于通过代理只会暴露代理服务,其它的推理服务都是不可见、透明的,因此该反向代理机制能够隐藏部署在各个物理机上的推理服务,对客户端发来的请求进行统一地映射转发,避免了Ensemble模式下模型跨机不能通讯的问题,使得推理服务端的扩展、变动等操作对客户端影响几乎没有影响,提升了推理服务性能。
在一个实施例中,步骤100可以包括:步骤101和步骤102。
步骤101:在多台物理机上配置容器环境,并拉取服务镜像到本地;
步骤102:采用0-1背包组合分配原则,根据多台物理机的可用显存、部署模型的所需显存,对部署模型进行整体部署。
示例性地,0-1背包组合分配原则可以是:0-1背包问题可表示在给定容量的背包和一组物品的情况下,如何选择物品放入背包中,使得放入的物品总价值最大化,同时保持总重量不超过背包的容量限制;原则是在0-1背包问题中,每个物品全放入背包,或者完全不放入背包,不能选择部分物品放入。基于0-1背包问题,背包的容量可表示可用显存,物品可表示模型,物品重量可表示部署模型需要的显存,然后根据实际需求设定各个模型的价值,模型作为整体不能分开,要么部署,要么不部署,不存在单模型划分部署的情况。
可选地,如图2所示,在在物理机1、物理机2、物理机3…物理机N等多个物理机上搭建Triton服务平台,配置相应的docker环境后,拉取Triton infer server的镜像到本地,在配置部署模型的归属时,以显存作为竞争资源,根据多台物理机的可用显存、部署模型的所需显存,将其看作0-1背包组合优化问题进行求解。在这种属性下,无论处于什么模式的模型,都以整体进行部署,可完美避免Ensemble模式下跨机通讯的情况。通过使用0-1背包组合规则求解模型分配,使得尽可能地在不超过可用显存的条件下部署更多的模型,减少了资源浪费,提高了推理服务的性能。
在一个实施例中,步骤102可以包括:步骤1021、步骤1022和步骤1023。
步骤1021:按照部署模型的所需显存大小进行排序;
步骤1022:根据排序结果,将部署模型依次部署至多台物理机的显卡中;
步骤1023:对多台物理机中显卡的剩余可用显存和部署模型的所需内存遍历寻找最优的配置组合。
示例性地,在配置部署模型的归属时,以显存作为竞争资源,将其看作0-1背包组合优化问题进行求解,求解该问题可经过两个过程:第一个过程,使用贪心算法求解,不考虑全局,按照模型需要的显存大小对模型进行排序。排序的方式可以是升序或降序两种形式之一,例如降序形式排列从大到小依次放入GPU当中进行部署,如遇到单张显卡可用显存不足的情况则自动选取下一张空余显卡,直至所有模型都放入显卡中一次,这样可以保证推理任务的完整性。第二个过程,经过上一步的配置,会存在有GPU显存未用完的情况,针对这种情况,可使用动态规划算法求解。以单张显卡为单位,将剩余未使用完的显存作为背包容量,可使用嵌套循环进行寻优计算,外层循环遍历模型部署的所需内存,内层循环遍历剩余可用显存。当遍历模型的使用显存i大于当前背包容量j时,则无法选择第i个模型,反之选择第j个模型,在每次判断后都需要对当前状态进行更新,即重新计算当前选择模型的总价值,重复这个过程直至遍历完所有部署模型得出最优解。
通过把模型分配当作0-1背包问题进行求解,能够得到更优的分配方案,使显存利用率更高、推理服务性能更强;对在多机多卡场景下模型分配进行优化,避免将Ensemble模式下的多个模型部署在不同的物理机上,能更优效率地利用显存资源,在额定的显存下部署更多的模型,支持更多请求并行,提升了吞吐量。
在一个实施例中,步骤120可以包括:步骤121、步骤122和步骤123。
步骤121:基于树形文件目录形式存储部署模型;
步骤122:在树形文件中配置每一个部署模型的模型实例数量、显卡启动位置;
步骤123:启动部署模型的推理服务。
示例性地,模型仓库可以是:Triton管理模型的组织方式,一般以树形文件目录的方式存储部署模型,并配合config.pbtxt(配置文件)设定每个模型需要部署的数量、位置等相关参数。可选地:假设GPU-0需要配置模型A、B、C三种模型,并分别部署3、3、1个模型实例,则在A、B、C模型对应的config.pbtxt中的instance_group进行属性设置。instance_group作为一个列表,其中count字段可表示启动的模型实例数量;gpus字段可表示启动的GPU位置;kind字段可默认设置为KIND_GPU表示放在GPU上。以模型A为例,其instance_group.count可设置为3,instance_group.gpus可设置为[0],instance_group.kind可设置为KIND_GPU,这表示,模型A在GPU-0上部署3个模型实例。在Triton模型仓库配置完成后,就可以启动A、B、C模型的推理服务。
通过以树形文件的形式对模型文件进行存储管理,能够为以显存作为分配资源的模型部署方式提供模型实例数量、显卡启动位置等参数。这种存储管理方式,不仅符合人类使用电脑的习惯,更能方便、高效地分配利用显存资源,使其在额定的显存下部署更多的模型,支持更多请求并行,提升了吞吐量,提升了推理服务的性能。
在一个实施例中,步骤123之后,还可以包括:步骤124。
步骤124:通过多台物理机的开放接口地址向推理服务平台发送推理请求,并进行部署推理计算;其中,该开放接口地址的确定方式包括:根据对应物理机的IP地址与固定端口号确定。
示例性地,在Triton模型仓库配置完成后,可以启动所有部署模型的推理服务,启动后,会共用对应物理机的IP地址并加上固定端口号的方式作为开放地址,供接收请求和发送响应使用。具体的:当一台物理机IP地址为192.168.1.100,在其部署的Triton开放的接口地址为192.168.1.100:8001。如果多台物理机分别部署了Triton,就会有多个Triton推理服务地址分别对应这些物理机的IP地址,因而可以通过这些地址向Triton推理服务平台发送推理请求进行推理计算。
通过物理机的IP地址与固定端口号确定物理机的开放接口地址,可以快速确定客户端向哪台物理机发送推理请求,方便后续反向代理服务器进行对应物理机的转发,提高了推理服务效率。
在一个实施例中,步骤140可以包括:步骤141、步骤142和步骤143。
步骤141:对推理服务配置反向代理匹配规则;
步骤142:通过反向代理服务器接收客户端发送的推理请求,并根据反向代理匹配规则选择后端服务器;
步骤143:通过反向代理服务器将后端服务器对推理请求的响应返回至客户端。
示例性地,反向代理是一种网络代理服务的部署模式,它代表服务器接收客户端请求,并将请求转发到后端服务器,并将响应返回给客户端;与正向代理不同,客户端不需要知道实际提供服务的服务器,而只与反向代理服务器通信。由于Triton推理服务提供的通讯地址是:物理机IP+端口号,当部署Triton推理服务的物理机IP地址是192.168.1.100时,则Triton推理服务提供的通讯地址是:192.168.1.100:8001,作为HTTP的通讯地址供客户端使用。然而在多台物理机上进行部署时,开放的通讯地址则会有多个,例如:物理机1_IP+端口号、物理机2_IP+端口号…物理机3_IP+端口号,这就会导致客户端无法确定该请求应向哪个物理机上的Triton推理服务发送。因此,可使用Nginx对该推理服务进行反向代理后,客户端只需向Nginx开放的通讯地址发送请求,由Nginx根据配置的规则进行相应的转发并返回结果。通过统一推理服务通讯地址,从客户端角度看,推理请求只需向一个地址发送,实现推理服务透明化,无需关心服务推理过程。
可选地,使用Nginx对部署在多台物理机的Triton服务进行反向代理:客户端A向Nginx发送了一个推理请求,Nginx作为代理服务软件只会根据规则做转发的工作,根据匹配结果将请求内容发送到对应的Triton服务,Triton收到请求后进行推理计算,并且把匹配结果返回给Nginx代理服务,最后由Nginx把匹配结果转发给客户端A。在整个通讯过程中,客户端与Triton服务端所有的通讯都需要经过Nginx反向代理服务。
通过在多机多卡的生产环境中,对多机部署的推理服务进行反向代理,实现可在多机多卡的分布式下部署的高性能推理服务,多个推理服务使用一个通讯服务地址,使得推理服务端的扩展、变动等操作对客户端影响几乎没有影响,避免了将多个模型的能力进行组合导致需要将该模式下的所有模型设置在同一物理机GPU上的限制问题,能够适应更多的场景,提升了推理服务性能。
在一个实施例中,步骤140还可以包括:步骤144、步骤145和步骤146。
步骤144:使用Upstream指令对每一个部署模型定义一组服务器组;其中,该服务器组包括配置同一部署模型的所有物理机的IP地址;
步骤145:使用Location指令匹配推理请求转发至后端服务器的资源地址,完成部署模型的反向代理匹配规则配置;
步骤146:基于反向代理匹配规则对部署模型进行反向代理。
示例性地,对推理服务配置反向代理匹配规则时,可利用Nginx中的nginx.conf作为配置文件,在文件中进行代理规则的设定。在nginx.conf中,使用Location指令和Upstream指令配合定义代理匹配规则。Location指令主要用于匹配请求的URL,可以通过精确匹配、前缀匹配、正则表达式匹配等方式确定该请求应该转发到哪个后端服务器。Upstream主要用于定义一组后端服务器的指令,Nginx可以根据指定的负载均衡算法将请求分发到这些后端服务器上,实现负载均衡和高可用性。在实际配置多机部署Triton服务的Nginx反向代理匹配规则时,首先,可使用Upstream指令对每个模型定义一组服务器组。由于多机部署的Triton服务,会存在同一个模型分别在多台物理机上部署了不同数量模型实例的情况,因此需要使用Upstream指令对每个模型创建一个服务器组,这个组包含所有部署该模型的物理机IP地址。例如,假设Resnet50模型在物理机1、物理机2、物理机4上分别部署了3、2、3个模型实例,那么在配置Resnet50服务器组时,就需要加上物理机1_IP、物理机2_IP、物理机4_IP,然后在Location匹配Resnet50模型的字段中使用proxy_pass指令设定Resnet50服务器组,通过这样的设定,当Nginx匹配到Resnet50模型的推理请求时,会自动根据负载均衡算法将请求分发到Resnet50后端服务器组中的服务器上。其次,使用模型算法名字作为匹配规则进行请求转发。在设置Location匹配规则时使用精准匹配,可根据请求的URI依次匹配所有的Location块。例如,假设有Location /Resnet101、Location /Resnet50、Location /faster-Rcnn三个Location块,在Nginx收到一个请求,其URL为/Resnet50时,Nginx会依次与三个块进行正则化匹配,在第二个Location块匹配成功后,Nginx立即根据定义的服务器组转发该请求,而后续块将不再匹配。依照上述方法,完成所有部署模型Upstream和Location 匹配规则的设定,至此,对Nginx反向代理服务的nginx.conf中的代理规则配置完成。最后,对nginx.conf的server字段进行设置,该字段指定一个Nginx代理服务监听的IP地址和固定端口,即客户端发送的地址。所有客户端向这个地址发送请求,从这个地址接收响应。
通过使用Location指令和Upstream指令配合定义反向代理匹配规则,实现了对每个模型创建一个服务器组,这个组配置了所有部署该模型的物理机IP地址,从而方便了多台物理机上的反向代理服务,提升了推理服务性能。
请参阅图3,图3为本申请实施例提供的一种模型部署装置的模块功能示意图。该装置包括:部署模型模块210、配置推理服务模块220和反向代理模块230。
部署模型模块210,用于在多台物理机上搭建基础环境,并根据显存资源配置部署模型;
配置推理服务模块220,用于对部署模型的推理服务配置模型仓库,并启动推理服务;
反向代理模块230,用于对推理服务配置反向代理匹配规则,并基于反向代理匹配规则对部署模型进行反向代理。
可选地,部署模型模块210可以用于:
在多台物理机上配置容器环境,并拉取服务镜像到本地;
采用0-1背包组合分配原则,根据所述多台物理机的可用显存、部署模型的所需显存,对所述部署模型进行整体部署。
可选地,部署模型模块210可以用于:
按照所述部署模型的所需显存大小进行排序;
根据排序结果,将所述部署模型依次部署至所述多台物理机的显卡中;
对所述多台物理机中显卡的剩余可用显存和所述部署模型的所需内存遍历寻找最优的配置组合。
可选地,配置推理服务模块220可以用于:
基于树形文件目录形式存储所述部署模型;
在树形文件中配置每一个所述部署模型的模型实例数量、显卡启动位置;
启动所述部署模型的推理服务。
可选地,配置推理服务模块220可以用于:
通过多台物理机的开放接口地址向推理服务平台发送推理请求,并进行部署推理计算;其中,所述开放接口地址的确定方式包括:根据对应物理机的IP地址与固定端口号确定。
可选地,反向代理模块230可以用于:
对所述推理服务配置反向代理匹配规则;
通过反向代理服务器接收客户端发送的推理请求,并根据所述反向代理匹配规则选择后端服务器;
通过反向代理服务器将所述后端服务器对所述推理请求的响应返回至所述客户端。
可选地,反向代理模块230可以用于:
使用Upstream指令对每一个所述部署模型定义一组服务器组;其中,所述服务器组包括配置同一部署模型的所有物理机的IP地址;
使用Location指令匹配推理请求转发至后端服务器的资源地址,完成所述部署模型的反向代理匹配规则配置;
基于所述反向代理匹配规则对所述部署模型进行反向代理。
请参阅图4,图4是电子设备的方框示意图。电子设备300可以包括存储器311、存储控制器312、处理器313、外设接口314、输入输出单元315、显示单元316。本领域普通技术人员可以理解,图4所示的结构仅为示意,其并不对电子设备300的结构造成限定。例如,电子设备300还可包括比图4中所示更多或者更少的组件,或者具有与图4所示不同的配置。
上述的存储器311、存储控制器312、处理器313、外设接口314、输入输出单元315、显示单元316各元件相互之间直接或间接地电性连接,以实现数据的传输或交互。例如,这些元件相互之间可通过一条或多条通讯总线或信号线实现电性连接。上述的处理器313用于执行存储器中存储的可执行模块。
其中,存储器311可以是,但不限于,随机存取存储器(Random Access Memory,简称RAM),只读存储器(Read Only Memory,简称ROM),可编程只读存储器(ProgrammableRead-Only Memory,简称PROM),可擦除只读存储器(Erasable Programmable Read-OnlyMemory,简称EPROM),电可擦除只读存储器(Electric Erasable Programmable Read-OnlyMemory,简称EEPROM)等。其中,存储器311用于存储程序,所述处理器313在接收到执行指令后,执行所述程序,本申请实施例任一实施例揭示的过程定义的电子设备300所执行的方法可以应用于处理器313中,或者由处理器313实现。
上述的处理器313可能是一种集成电路芯片,具有信号的处理能力。上述的处理器313可以是通用处理器,包括中央处理器(Central Processing Unit,简称CPU)、网络处理器(Network Processor,简称NP)等;还可以是数字信号处理器(digital signalprocessor,简称DSP)、专用集成电路(Application Specific Integrated Circuit,简称ASIC)、现场可编程门阵列(FPGA)或者其他可编程逻辑器件、分立门或者晶体管逻辑器件、分立硬件组件。可以实现或者执行本申请实施例中的公开的各方法、步骤及逻辑框图。通用处理器可以是微处理器或者该处理器也可以是任何常规的处理器等。
上述的外设接口314将各种输入/输出装置耦合至处理器313以及存储器311。在一些实施例中,外设接口314,处理器313以及存储控制器312可以在单个芯片中实现。在其他一些实例中,他们可以分别由独立的芯片实现。
上述的输入输出单元315用于提供给用户输入数据。所述输入输出单元315可以是,但不限于,鼠标和键盘等。
上述的显示单元316在电子设备300与用户之间提供一个交互界面(例如用户操作界面)给用户参考。在本实施例中,所述显示单元316可以是液晶显示器或触控显示器。液晶显示器或触控显示器可以对处理器执行所述程序的过程进行显示。
本实施例中的电子设备300可以用于执行本申请实施例提供的各个方法中的各个步骤。
此外,本申请实施例还提供一种存储介质,该存储介质上存储有计算机程序,该计算机程序被处理器运行时执行上述方法实施例中的步骤。
本申请实施例所提供的上述方法的计算机程序产品,包括存储了程序代码的存储介质,所述程序代码包括的指令可用于执行上述方法实施例中的步骤,具体可参见上述方法实施例,在此不再赘述。
在本申请所提供的实施例中,应该理解到,所揭露装置和方法,可以通过其它的方式实现。以上所描述的装置实施例仅仅是示意性的,例如,所述模块的划分,仅仅为一种逻辑功能划分,实际实现时可以有另外的划分方式,又例如,多个单元或组件可以结合或者可以集成到另一个系统,或一些特征可以忽略,或不执行。另一点,所显示或讨论的相互之间的耦合或直接耦合或通信连接可以是通过一些通信接口,装置或单元的间接耦合或通信连接,可以是电性,机械或其它的形式。在本申请实施例中的各功能模块可以集成在一起形成一个独立的部分,也可以是各个模块单独存在,也可以两个或两个以上模块集成形成一个独立的部分。
需要说明的是,功能如果以软件功能模块的形式实现并作为独立的产品销售或使用时,可以存储在一个计算机可读取存储介质中。基于这样的理解,本申请的技术方案本质上或者说对现有技术做出贡献的部分或者该技术方案的部分可以以软件产品的形式体现出来,该计算机软件产品存储在一个存储介质中,包括若干指令用以使得一台计算机设备(可以是个人计算机,服务器,或者网络设备等)执行本申请各个实施例所述方法的全部或部分步骤。而前述的存储介质包括:U盘、移动硬盘、只读存储器(Read-Only Memory,ROM)随机存取存储器(Random Access Memory,RAM)、磁碟或者光盘等各种可以存储程序代码的介质。
在本文中,诸如第一和第二等之类的关系术语仅仅用来将一个实体或者操作与另一个实体或操作区分开来,而不一定要求或者暗示这些实体或操作之间存在任何这种实际的关系或者顺序。
以上所述仅为本申请的实施例而已,并不用于限制本申请的保护范围,对于本领域的技术人员来说,本申请可以有各种更改和变化。凡在本申请的精神和原则之内,所作的任何修改、等同替换、改进等,均应包含在本申请的保护范围之内。

Claims (9)

1.一种模型部署方法,其特征在于,所述方法包括:
在多台物理机上搭建基础环境,并根据显存资源配置部署模型;
对所述部署模型的推理服务配置模型仓库,并启动所述推理服务;
对所述推理服务配置反向代理匹配规则,并基于所述反向代理匹配规则对所述部署模型进行反向代理;
其中,所述对所述推理服务配置反向代理匹配规则,并基于所述反向代理匹配规则对所述部署模型进行反向代理,包括:对所述推理服务配置反向代理匹配规则;通过反向代理服务器接收客户端发送的推理请求,并根据所述反向代理匹配规则选择后端服务器;通过反向代理服务器将所述后端服务器对所述推理请求的响应返回至所述客户端。
2.根据权利要求1所述的方法,其特征在于,所述在多台物理机上搭建基础环境,并根据显存资源配置部署模型,包括:
在多台物理机上配置容器环境,并拉取服务镜像到本地;
采用0-1背包组合分配原则,根据所述多台物理机的可用显存、部署模型的所需显存,对所述部署模型进行整体部署。
3.根据权利要求2所述的方法,其特征在于,所述采用0-1背包组合分配原则,根据所述多台物理机的可用显存、部署模型的所需显存,对所述部署模型进行整体部署,包括:
按照所述部署模型的所需显存大小进行排序;
根据排序结果,将所述部署模型依次部署至所述多台物理机的显卡中;
对所述多台物理机中显卡的剩余可用显存和所述部署模型的所需内存遍历寻找最优的配置组合。
4.根据权利要求1所述的方法,其特征在于,所述对所述部署模型的推理服务配置模型仓库,并启动所述推理服务,包括:
基于树形文件目录形式存储所述部署模型;
在树形文件中配置每一个所述部署模型的模型实例数量、显卡启动位置;
启动所述部署模型的推理服务。
5.根据权利要求4所述的方法,其特征在于,所述启动所述部署模型的推理服务之后,还包括:
通过多台物理机的开放接口地址向推理服务平台发送推理请求,并进行部署推理计算;其中,所述开放接口地址的确定方式包括:根据对应物理机的IP地址与固定端口号确定。
6.根据权利要求1所述的方法,其特征在于,所述对所述推理服务配置反向代理匹配规则,并基于所述反向代理匹配规则对所述部署模型进行反向代理,包括:
使用Upstream指令对每一个所述部署模型定义一组服务器组;其中,所述服务器组包括配置同一部署模型的所有物理机的IP地址;
使用Location指令匹配推理请求转发至后端服务器的资源地址,完成所述部署模型的反向代理匹配规则配置;
基于所述反向代理匹配规则对所述部署模型进行反向代理。
7.一种模型部署装置,其特征在于,所述装置包括:
部署模型模块,用于在多台物理机上搭建基础环境,并根据显存资源配置部署模型;
配置推理服务模块,用于对所述部署模型的推理服务配置模型仓库,并启动所述推理服务;
反向代理模块,用于对所述推理服务配置反向代理匹配规则,并基于所述反向代理匹配规则对所述部署模型进行反向代理;所述反向代理模块具体用于:对所述推理服务配置反向代理匹配规则;通过反向代理服务器接收客户端发送的推理请求,并根据所述反向代理匹配规则选择后端服务器;通过反向代理服务器将所述后端服务器对所述推理请求的响应返回至所述客户端。
8.一种电子设备,其特征在于,包括:处理器、存储器,所述存储器存储有所述处理器可执行的机器可读指令,当电子设备运行时,所述机器可读指令被所述处理器执行时执行如权利要求1至6任一所述的方法的步骤。
9.一种存储介质,其特征在于,所述存储介质上存储有计算机程序,所述计算机程序被处理器运行时执行如权利要求1至6任一所述的方法的步骤。
CN202311140533.5A 2023-09-06 2023-09-06 模型部署方法、装置、设备及存储介质 Active CN116880928B (zh)

Priority Applications (1)

Application Number Priority Date Filing Date Title
CN202311140533.5A CN116880928B (zh) 2023-09-06 2023-09-06 模型部署方法、装置、设备及存储介质

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
CN202311140533.5A CN116880928B (zh) 2023-09-06 2023-09-06 模型部署方法、装置、设备及存储介质

Publications (2)

Publication Number Publication Date
CN116880928A CN116880928A (zh) 2023-10-13
CN116880928B true CN116880928B (zh) 2023-11-21

Family

ID=88271873

Family Applications (1)

Application Number Title Priority Date Filing Date
CN202311140533.5A Active CN116880928B (zh) 2023-09-06 2023-09-06 模型部署方法、装置、设备及存储介质

Country Status (1)

Country Link
CN (1) CN116880928B (zh)

Families Citing this family (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN117349032B (zh) * 2023-12-05 2024-02-20 城云科技(中国)有限公司 一种提高大语言模型吞吐量的方法及装置

Citations (6)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN111464661A (zh) * 2020-06-17 2020-07-28 北京金迅瑞博网络技术有限公司 负载均衡方法、装置、代理设备、缓存设备及服务节点
CN111488254A (zh) * 2019-01-25 2020-08-04 顺丰科技有限公司 一种机器学习模型的部署与监控装置和方法
CN113420076A (zh) * 2021-06-02 2021-09-21 浪潮软件股份有限公司 一种政务服务平台的服务调度方法及调度模型系统
CN113608880A (zh) * 2021-09-29 2021-11-05 深圳市信润富联数字科技有限公司 算法模型部署系统
CN115001692A (zh) * 2022-05-26 2022-09-02 Oppo广东移动通信有限公司 模型更新方法及装置、计算机可读存储介质和电子设备
CN115248692A (zh) * 2022-09-21 2022-10-28 之江实验室 一种支持多种深度学习框架模型云端部署的装置及方法

Family Cites Families (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20030154306A1 (en) * 2002-02-11 2003-08-14 Perry Stephen Hastings System and method to proxy inbound connections to privately addressed hosts

Patent Citations (6)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN111488254A (zh) * 2019-01-25 2020-08-04 顺丰科技有限公司 一种机器学习模型的部署与监控装置和方法
CN111464661A (zh) * 2020-06-17 2020-07-28 北京金迅瑞博网络技术有限公司 负载均衡方法、装置、代理设备、缓存设备及服务节点
CN113420076A (zh) * 2021-06-02 2021-09-21 浪潮软件股份有限公司 一种政务服务平台的服务调度方法及调度模型系统
CN113608880A (zh) * 2021-09-29 2021-11-05 深圳市信润富联数字科技有限公司 算法模型部署系统
CN115001692A (zh) * 2022-05-26 2022-09-02 Oppo广东移动通信有限公司 模型更新方法及装置、计算机可读存储介质和电子设备
CN115248692A (zh) * 2022-09-21 2022-10-28 之江实验室 一种支持多种深度学习框架模型云端部署的装置及方法

Also Published As

Publication number Publication date
CN116880928A (zh) 2023-10-13

Similar Documents

Publication Publication Date Title
US20180276215A1 (en) Sharing container images between mulitple hosts through container orchestration
US20190347121A1 (en) Distributed container image repository service
JP6678930B2 (ja) 分類モデルを学習する方法、コンピュータ・システムおよびコンピュータ・プログラム
US8930541B2 (en) System, method and program product for cost-aware selection of templates for provisioning shared resources
US11861405B2 (en) Multi-cluster container orchestration
CN105531688B (zh) 提供作为其它服务的资源的服务
CN110580197A (zh) 大型模型深度学习的分布式计算架构
US11157318B2 (en) Optimizing timeouts and polling intervals
CN116880928B (zh) 模型部署方法、装置、设备及存储介质
US20140324917A1 (en) Reclamation of empty pages in database tables
US10623470B2 (en) Optimizing internet data transfers using an intelligent router agent
US9348855B2 (en) Supporting big data in enterprise content management systems
US20200125926A1 (en) Dynamic Batch Sizing for Inferencing of Deep Neural Networks in Resource-Constrained Environments
WO2020215752A1 (zh) 图计算方法及装置
CN108171528A (zh) 一种归因方法及归因系统
WO2023279869A1 (en) Continuous liveness and integrity of applications during migration
CN113535385A (zh) 虚拟网络功能部署方法、装置、设备及存储介质
Dash et al. Management of resource usage in mobile cloud computing
CN108875035A (zh) 分布式文件系统的数据存储方法及相关设备
Czarnul A model, design, and implementation of an efficient multithreaded workflow execution engine with data streaming, caching, and storage constraints
US10956378B2 (en) Hierarchical file transfer using KDE-optimized filesize probability densities
US20230123399A1 (en) Service provider selection
US11263130B2 (en) Data processing for allocating memory to application containers
JP7355403B2 (ja) 大規模エンティティ解決のための2段階計算メモイング
US10997214B2 (en) User interaction during ground truth curation in a cognitive system

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
GR01 Patent grant
GR01 Patent grant