CN112329945A - 一种模型部署及推理的方法和装置 - Google Patents

一种模型部署及推理的方法和装置 Download PDF

Info

Publication number
CN112329945A
CN112329945A CN202011330926.9A CN202011330926A CN112329945A CN 112329945 A CN112329945 A CN 112329945A CN 202011330926 A CN202011330926 A CN 202011330926A CN 112329945 A CN112329945 A CN 112329945A
Authority
CN
China
Prior art keywords
deployment
model
container
mirror image
framework
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.)
Withdrawn
Application number
CN202011330926.9A
Other languages
English (en)
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.)
Guangzhou Wangxing Information Technology Co Ltd
Original Assignee
Guangzhou Wangxing Information 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 Guangzhou Wangxing Information Technology Co Ltd filed Critical Guangzhou Wangxing Information Technology Co Ltd
Priority to CN202011330926.9A priority Critical patent/CN112329945A/zh
Publication of CN112329945A publication Critical patent/CN112329945A/zh
Withdrawn legal-status Critical Current

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06NCOMPUTING ARRANGEMENTS BASED ON SPECIFIC COMPUTATIONAL MODELS
    • G06N20/00Machine learning
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06NCOMPUTING ARRANGEMENTS BASED ON SPECIFIC COMPUTATIONAL MODELS
    • G06N5/00Computing arrangements using knowledge-based models
    • G06N5/04Inference or reasoning models
    • G06N5/046Forward inferencing; Production systems

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Software Systems (AREA)
  • Data Mining & Analysis (AREA)
  • Evolutionary Computation (AREA)
  • Physics & Mathematics (AREA)
  • Computing Systems (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Mathematical Physics (AREA)
  • Artificial Intelligence (AREA)
  • Medical Informatics (AREA)
  • Computer Vision & Pattern Recognition (AREA)
  • Computational Linguistics (AREA)
  • Stored Programmes (AREA)

Abstract

本申请公开了一种模型部署及推理的方法和装置,其中所述模型部署方法包括:接收目标代码数据,所述目标代码数据包括预先构建的通用部署框架,以及基于所述通用部署框架配置的、针对目标机器学习模型的配置参数和调用代码;根据所述配置参数生成部署脚本;根据所述调用代码生成第一容器镜像;获取所述目标机器学习模型的第二容器镜像;采用所述部署脚本将所述第一容器镜像与所述第二容器镜像部署到指定集群中,以此实现模型的快速上线部署,开发人员仅仅需要在通用部署框架的基础上进行开发,编写少量的代码就可以完成模型的上线部署,简化了原有流程,降低了开发人员部署的难度,提高了开发人员对模型上线部署的效率和降低了部署成本。

Description

一种模型部署及推理的方法和装置
技术领域
本申请实施例涉及自动化部署技术,尤其涉及一种模型部署及推理的方法和装置。
背景技术
随着近年来深度学习的飞速发展,基于神经网络的各类算法在处理包括语音、文本、图像等数据上展现了十分优异的性能,其相较于传统的算法能大幅提升模型预测的准确性。
在相关技术中,一个基于神经网络的深度学习模型落地的常规流程包括:(1)收集业务相关数据,训练模型,开发业务逻辑代码;(2)定义http请求接口,开发http请求处理代码;(3)在物理机上配置环境,部署模型及相关业务代码;(4)接口调用,按需调整部署机器数量。这套传统的部署方案存在着开发周期长、人员成本高(需要不同背景的开发人员共同开发)、服务伸缩困难等缺点。
发明内容
本申请提供一种模型部署及推理的方法和装置,以解决现有技术中进行模型上线部署时遇到的开发周期长、人员成本高、服务伸缩困难等问题。
第一方面,本申请实施例提供了一种模型部署方法,所述方法包括:
接收目标代码数据,所述目标代码数据包括预先构建的通用部署框架,以及基于所述通用部署框架配置的、针对目标机器学习模型的配置参数和调用代码;
根据所述配置参数生成部署脚本;
根据所述调用代码生成第一容器镜像;
获取所述目标机器学习模型的第二容器镜像;
采用所述部署脚本将所述第一容器镜像与所述第二容器镜像部署到指定集群中,其中,在部署时,所述第一容器镜像对应的第一容器与所述第二容器镜像对应的第二容器被部署到所述指定集群的同一命名空间下。
第二方面,本申请实施例还提供了一种模型推理的方法,所述模型为根据上述的通用部署框架完成线上部署的模型,所述方法包括:
接收客户端发送的调用请求;
解析所述调用请求,以确定目标处理对象以及目标处理逻辑;
调用所述目标处理逻辑对所述目标处理对象进行处理,所述处理包括预处理、模型推理处理以及后处理。
第三方面,本申请实施例还提供了一种模型部署装置,所述装置包括:
代码接收模块,用于接收目标代码数据,所述目标代码数据包括预先构建的通用部署框架,以及基于所述通用部署框架配置的、针对目标机器学习模型的配置参数和调用代码;
部署脚本生成模块,用于根据所述配置参数生成部署脚本;
第一容器镜像生成模块,用于根据所述调用代码生成第一容器镜像;
第二容器镜像获取模块,用于获取所述目标机器学习模型的第二容器镜像;
部署模块,用于采用所述部署脚本将所述第一容器镜像与所述第二容器镜像部署到指定集群中,其中,在部署时,所述第一容器镜像对应的第一容器与所述第二容器镜像对应的第二容器被部署到所述指定集群的同一命名空间下。
第四方面,本申请实施例还提供了一种模型推理的装置,所述模型为根据上述的通用部署框架完成线上部署的模型,所述装置包括:
调用请求接收模块,用于接收客户端发送的调用请求;
目标数据确定模块,用于解析所述调用请求,以确定目标处理对象以及目标处理逻辑;
处理模块,用于调用所述目标处理逻辑对所述目标处理对象进行处理,所述处理包括预处理、模型推理处理以及后处理。
第五方面,本申请实施例还提供了一种电子设备,包括存储器、处理器及存储在存储器上并可在处理器上运行的计算机程序,所述处理器执行所述程序时实现上述的方法。
第六方面,本申请实施例还提供了一种计算机可读存储介质,其上存储有计算机程序,该程序被处理器执行时实现上述的方法。
本申请具有如下有益效果:
在本实施例中,通过通用模型部署框架来实现机器学习模型上线流程的标准化,在接收到开发人员push的目标代码数据以后,可以在编译阶段根据目标代码数据中的配置参数生成部署脚本,然后在构建阶段根据目标代码数据中的调用代码生成第一容器镜像,在部署时,可以获得目标机器学习模型的第二容器镜像,并采用部署脚本将第一容器镜像与第二容器镜像部署到指定集群中,使得第一容器镜像对应的第一容器与第二容器镜像对应的第二容器被部署到指定集群的同一命名空间下,以此实现模型的快速上线部署,开发人员仅仅需要在通用部署框架的基础上进行开发,编写少量的代码就可以完成模型的上线部署,简化了原有流程,降低了开发人员部署的难度,提高了开发人员对模型上线部署的效率和降低了部署成本。
附图说明
图1是本申请实施例一提供的一种模型部署方法实施例的流程图;
图2是本申请实施例一提供的通用部署框架的目录结构示意图;
图3是本申请实施例一提供的用于供开发人员进行参数配置的配置文件config.yaml的示意图;
图4是本申请实施例一提供的部署逻辑对应的分布阶段示意图;
图5是本申请实施例二提供的一种模型推理的方法实施例的流程图;
图6是本申请实施例二提供的服务调用逻辑结构示意图;
图7是本申请实施例三提供的一种模型部署装置实施例的结构框图;
图8是本申请实施例四提供的一种模型推理的装置实施例的结构框图;
图9是本申请实施例五提供的一种电子设备的结构示意图。
具体实施方式
下面结合附图和实施例对本申请作进一步的详细说明。可以理解的是,此处所描述的具体实施例仅仅用于解释本申请,而非对本申请的限定。另外还需要说明的是,为了便于描述,附图中仅示出了与本申请相关的部分而非全部结构。
实施例一
图1为本申请实施例一提供的一种模型部署方法实施例的流程图,本实施例可以适用于机器学习模型(例如深度神经网络模型)的快速部署上线,主要服务于机器学习业务的开发人员。模型训练完成后,开发人员通过简单的配置及少量的代码开发就可以使模型快速部署上线,从而可以大幅加快机器学习模型部署的速度,降低开发人员的开发难度。
本实施例可以包括如下步骤:
步骤110,接收目标代码数据,所述目标代码数据包括预先构建的通用部署框架,以及基于所述通用部署框架配置的、针对目标机器学习模型的配置参数和调用代码。
在本实施例中,开发人员可以根据通用部署框架进行机器学习模型的上线部署,从而降低模型部署的开发难度。则目标代码数据可以为开发人员拿到通用部署框架以后,在该通用部署框架的基础上进行配置和少量代码开发得到的代码数据。开发人员可以在通用部署框架的主分支(master)的基础上新建分支进行服务开发,新建分支可以命名为“deploy/<project_name>”。
示例性地,目标代码数据可以包括预先构建的通用部署框架,以及基于该通用部署框架配置的、针对目标机器学习模型的配置参数和调用代码。
通用部署框架是一种可以被不同类型的机器学习模型通用的模型部署框架。在一种示例中,通用部署框架可以使用python语言进行开发,使用python语言的好处有:一方面python语言开发快速便捷,有大量的库可以使用;另一方面开发人员通常使用python进行模型开发,这样也就不需要增加额外的学习成本。
在一种实施例中,通用部署框架的整体架构中至少可以包括:前端、后端、容器管理平台Rancher以及代码托管平台gitlab,其中,
前端可以采用flask框架,并使用gunicorn框架进行多进程并发,这两个框架都是比较轻量的框架,在满足需要的前提下,不会使本通用部署框架变得臃肿。
后端可以使用kubernetes框架进行部署,其中Kubernetes是一个分布式的容器编排框架,主要用于自动部署、扩展和管理容器化的应用程序。
Rancher作为UI界面,用于查看服务的状态及查询服务的日志。
通过gitlab的持续集成CI或持续交付CD功能完成前端与后端的交互。
在一种实现中,为了实现上述的通用部署框架的整体架构,该通用部署框架在搭建时可以包括如下搭建过程,搭建好的通用部署框架可以直接提供给开发人员使用:
首先安装kubernetes框架,然后创建一个集群,并添加一些CPU(CentralProcessing Unit,中央处理器)或GPU(Graphics Processing Unit,图形处理器)机器作为该集群的节点。然后安装Rancher管理该框架,并提供UI界面。然后在kubernetes上安装istio(大型微服务系统管理工具)作为服务代理,并提供监控功能。接下来可以在该框架上安装gitlab-runner(gitlab有相关安装配置文档),并链接到相应的gitlab仓库(或群组)上。如果在仓库->设置->CI/CD->runner页面看到激活的runner就代表链接成功。然后在运维->kubernetes页面添加上面新建的集群即可。接下来在仓库根目录下添加“.gitlab-ci.yml”文件,这样每次更新代码后都可以自动创建CI/CD。
在本实施例中,通用部署框架中可以定义服务或模型在部署过程中需要用到的文件或模块,根据该通用部署框架,开发人员可以配置针对目标机器学习模型的配置参数和调用代码。示例性地,通用部署框架中可以包括配置文件、脚本模板、生成器、接口文件、服务器文件、资源文件以及镜像文件等;调用代码可以包括接口代码和服务代码,接口代码用于实现接口设置,服务代码用于实现服务的具体逻辑。
示例性地,如图2的通用部署框架的目录结构示意图所示,该通用部署框架的目录结构如下:
config.yaml:配置文件,开发人员可以手动修改该文件中的参数,其作用是配置资源、指定打包的模型的镜像名等配置参数。
deploy:即部署目录,该目录下包括生成器generater.py和脚本模板template.yaml,其中,脚本模板template.yaml用于提供生成部署脚本的脚本模板;在gitlab CI/CD构建阶段,会运行生成器generater.py,generater.py用于根据template.yaml和config.yaml生成部署脚本。
需要说明的是,template.yaml中除了可以提供脚本模板以外,还可以提供项目所需的其他模块模板,例如,模板中可以包括项目独有的命名空间、前端的部署deployment和服务service,以及每个模型的deployment和service。
docker:容器目录,docker可以作为流量的入口容器,docker目录下包括镜像文件Dockerfile,Dockerfile文件用于提供代码打包的配置,代码上传至gitlab后,可以通过Dockerfile文件的配置将代码打包成容器镜像。
example:示例目录,该目录下包括接口文件interface.md,接口文件interface.md用于描述接口设置以及模型打包方法。
models:模型目录,用于接收用户传入的打包前的模型数据,并将该模型数据传到云端保存,在上传至云端时,如果模型数据太大,可以先对模型文件进行split(分割)操作,然后在打包镜像时进行merge(合并)操作。
README.md:自述文件,用于描述框架介绍及使用方法。
server.py:服务器文件,又称流量分发文件,用于实现处理请求的接口。在实现接口时,还可以在server.py中添加接口的告警功能,使得后续当线上服务出现问题时可以及时告警。
.gitlab-ci.yml:gitlab CI的部署脚本。
src:资源文件,用于描述服务的具体逻辑代码,在src目录下,“assets”是一些测试文件;“engine.py”是具体的逻辑处理模块;“libs”是本框架依赖的一些工具代码库,与具体的服务相关;“lib.py”是具体的逻辑代码文件;“models_info.py”是模型信息,主要用于本地测试;“requirements.txt”用于描述在代码打包时需要安装的库或者依赖的集合;“utils”是通用的依赖工具,与具体的服务无关。
参考图3示出了用于供开发人员进行参数配置的配置文件config.yaml的示意图,开发人员通过config.yaml可以进行参数配置,在该示例中,配置参数可以包括全局的项目名称project_name、CGI(Common Gateway Interface,通用网关接口)实例参数(即接口配置参数)以及模型实例参数(即模型配置参数)。
其中,
project_name作为kubernetes的命名空间名称,用于实现与其他项目的隔离,因此不同项目的project_name是不同的。
CGI实例参数中可以包括:
网络接口前缀inference_prefix,用于使得在同一个域名下的不同项目实现接口的隔离;
CGI实例replicas数量以及每个实例的进程数workers_per_replica,可以作为服务提供的最大并发数量,kubernetes可以根据该参数自动配置好相应的负载均衡。在实现时中,开发人员可以采用如下公式确定CGI实例replicas数量:
replicas=(rps/qps)×70%
其中,rps为预估的每秒钟的请求数的峰值,qps为测试出来的项目每秒钟能够处理的最大请求数(可使用scripts/benchmark.py进行测试),70%是在不影响机器性能的前提下机器可以提供最强处理能力的比例。
需要说明的是,在生产环境中CGI实例replicas数量可以设置为最少为2,防止服务不可用时(如宕机、服务更新等)导致服务请求失败。但为了防止机器资源浪费,灰度环境下可以设置所有的实例数量为1。
公共的缓存服务器的启动配置信息use_redis,开发人员可以根据项目需要设置是否开启该缓存服务器。
环境变量environments,用于对模型进行配置,保证服务代码可以访问到对应的模型,通过环境变量开发人员可以以键值对的方式配置模型的主机,该部分需要与推理客户端设置的名称一致,且与模型配置参数中的对应项一致。
除此以外,CGI实例参数还可以包括CPU数量和内存数量,其中,CPU数量可以通过每台机器的CPU核数量与CGI实例数量的比值确定;内存数量可以通过每台机器的内存大小与CGI实例数量的比值确定。
模型实例参数可以包括:模型名称name、模型实例数量replicas(其可以根据GPU的使用情况调整,最少为2)、容器镜像名称docker_image(即模型的docker镜像名称)、每个实例使用的GPU数量gpu_per_replica、端口号port,等等。
需要注意的是,在配置模型名称时,不同模型的模型名称不能相同,因为模型名称会作为kubernetes的服务service名称,相同的话会导致请求因为访问到错误的模型而失败。
步骤120,根据所述配置参数生成部署脚本。
在一种实施例中,如图4的部署逻辑对应的分布阶段示意图所示,在通用部署框架中将整个部署逻辑分成五个阶段,分别是编译Compile阶段、镜像构建Build阶段、灰度部署Grey阶段、停止灰度部署Stop_grey阶段和生产部署Production阶段。当目标代码数据上传以后,会自动触发gitlab CI,然后可以生成如图3所示的部署界面并展示出来。
步骤120属于Compile阶段,即,在gitlab CI的Compile阶段根据配置参数生成部署脚本,当生成部署脚本完成以后,则可以在部署界面的Compile阶段中标记,例如如图3所示的“打钩”,以告知开发人员当前的进展情况。
在一种实施方式中,步骤120进一步可以包括如下步骤:
采用所述生成器,基于所述脚本模板以及所述配置参数生成部署脚本。
在实现时,gitlab在CI/CD构建阶段会运行生成器generater.py,生成部署脚本,而generater.py执行时会读取脚本模板template.yaml和配置参数config.yaml文件,自动将配置参数填入脚本模板的相应字段,以生成部署脚本。
作为一种示例,部署脚本可以包括:CGI的deployment/service(本分支的代码,不分配GPU),每个模型的deployment/service,以及相应的命名空间namespace和资源对象ingress。
步骤130,根据所述调用代码生成第一容器镜像。
步骤130属于Build阶段,在该阶段可以将本分支的调用代码打包成第一容器镜像,即代码docker镜像。当代码docker镜像构建完成以后,则可以在部署界面的Build阶段中标记,例如如图4所示的“打钩”,以告知开发人员当前的进展情况。
示例性地,调用代码可以包括接口代码和服务代码,其中,接口代码为通过参考接口文件与接口调用方协商开发接口后,在服务器文件中实现的开发接口的代码,在实现时,开发人员可以参考图2中的“example/interface.md”,与接口调用方协商,定义项目的开发接口,然后在“server.py”中,实现该开发接口对应的接口代码。服务代码为在资源文件中开发的、用于描述服务的处理逻辑的代码,在实现时,开发人员可以在“src”目录下进行开发,实现对应的服务代码。
在一种实施方式中,步骤130可以包括如下步骤:
通过所述镜像文件将所述接口代码和所述服务代码打包成第一容器镜像。
在实现时,可以通过Dockerfile文件的配置,将src目录下的代码以及server.py中的代码按照指定的代码打包方法,使用commit id作为tag打包成第一容器镜像,第一容器镜像的名称可以为配置参数中的项目名称。
步骤140,获取所述目标机器学习模型的第二容器镜像。
在一种实施方式中,步骤140可以包括如下步骤:
根据所述模型镜像名称从云端的镜像仓库中拉取对应的第二容器镜像。
在该实施例中,可以在云端使用镜像仓库,如harbor这样的私有仓库,来存储docker镜像数据,并在kubernetes中配置镜像仓库的密钥。
第二容器镜像又可以称为模型docker镜像,各目标机器学习模型的模型docker镜像可以由开发人员对各目标机器学习模型进行打包并自动上传到云端的镜像仓库中。则在进行模型部署时,可以根据config.yaml配置的模型镜像名称从镜像仓库中拉取对应的模型docker镜像。
由于目前存在多个深度学习框架,训练出来的模型也具有不同的格式。以下对主流的几个深度学习框架的打包方式进行举例说明:
Tensorflow,Tensorflow是google开发的深度学习框架。该框架部署较为容易,可以使用google开发的推理工具tf-serving进行模型打包。首先可以将训练好的模型导出为saved model格式,然后构建相应的docker镜像,最后通过tensorflow_serving包进行调用,该框架同时支持gRPC和http接口调用。
Pytorch,Pytorch是facebook开发的深度学习框架。该框架主要用于学术研究,因此其模型部署较为麻烦。首先需要在模型的基础上添加前后处理,然后导出为onnx格式,然后使用英伟达开发的triton-inference-server推理工具,构建相应的docker镜像,最后使用对应版本的客户端包进行调用,该框架同样支持gRPC和http接口。
Mxnet,Mxnet是亚马逊开发的深度学习框架。可以使用亚马逊开发的multi-model-server推理工具进行模型部署。首先将模型保存为xxx.params和xxx.json文件,然后修改signature.json文件进行配置。然后修改mxnet_service_template/mxnet_vision_service.py文件中的前后处理。接着将模型导出为mar格式,然后构建相应的docker镜像,最后通过http接口进行调用。需要注意的是该工具使用python语言执行模型的前后处理,可能会带来性能的损耗。
为了确保在服务更新时可以重新拉取最新的模型docker镜像,可以在打包模型docker镜像时添加日期时间的标签。
需要说明的是,如果目标机器学习模型有多个,可以将小模型或者调用不高的模型ensemble(集成),以提高GPU的利用率,优化成本。
步骤150,采用所述部署脚本将所述第一容器镜像与所述第二容器镜像部署到指定集群中,其中,在部署时,所述第一容器镜像对应的第一容器与所述第二容器镜像对应的第二容器被部署到所述指定集群的同一命名空间下。
当Compile阶段和Build阶段完成以后,则表示部署的准备工作做完了,然后进入部署阶段,如图4所示,本实施例可以将部署阶段分为灰度部署Grey阶段、停止灰度部署Stop_grey阶段和生产部署Production阶段;对应地,部署脚本可以包括灰度部署脚本以及生产部署脚本;则步骤150可以包括如下步骤:
步骤150-1,当接收到灰度部署请求时,采用所述灰度部署脚本将所述第一容器镜像与所述第二容器镜像部署到指定集群中。
步骤150-2,当接收到停止灰度部署请求时,从所述指定集群中下线所述第一容器镜像与所述第二容器镜像。
步骤150-3,当接收到生产部署请求时,采用所述生产部署脚本将所述第一容器镜像与所述第二容器镜像部署到指定集群中。
在该实施例中,灰度部署阶段和停止灰度部署阶段都可以通过开发人员手动触发进行灰度环境测试,测试无误后,就可以停止灰度部署。生产部署阶段也可以通过开发人员手动触发来将模型部署到生产环境中。在实现时,如图4的部署界面示意图所示,该部署界面可以包括灰度部署按钮、停止灰度部署按钮以及生产部署按钮,开发人员可以通过点击对应的按钮来发起对应的部署请求。
具体的,灰度部署请求为灰度部署按钮被触发时生成的请求。在CI/CD构建阶段通过的前提下,开发人员可以手动上线灰度部署,通过点击灰度部署按钮来发起灰度部署请求。其中,该灰度部署请求可以采用配置参数中对灰度环境配置的网络接口前缀(如“/api/grey/content/”)来生成,例如,灰度部署请求可以表示为如下url:http://infer.ingress.ml.cc:8080/api/grey/content/auto-deploy/gen_image,其中,http://infer.ingress.ml.cc:8080为域名。灰度部署完成以后,在rancher灰度页面下可以找到部署在灰度环境中的服务。
停止灰度部署请求为停止灰度部署按钮被触发时生成的请求。在实现时,在确认灰度测试无误以后,则开发人员可以通过点击停止灰度部署按钮来发起停止灰度部署请求,以下线对应的灰度部署。
生产部署请求为生产部署按钮被触发时生成的请求,该生产部署请求可以采用配置参数中对生产环境配置的网络接口前缀(如“/api/content/”)来生成,例如,生产部署请求可以表示为如下url:http://infer.ingress.ml.cc:8080/api/content/auto-deploy/gen_image。生产部署完成以后,在rancher的生产页面下可以找到部署在生产环境中的服务。
在实现时,可以调用“kubectl apply-f deploy-<phase>.yaml”进行灰度部署和生产部署,调用“kubectl delete-f deploy-gray.yaml”停止灰度部署。
需要说明的是,为了避免数据误操作,可以创建一个公用的、仅有可读权限的rancher账号供开发人员查看已部署的服务。
在将模型部署到生产环境以后,可以将模型进行预热,以降低服务初始请求的延时。
在本实施例中,通过通用模型部署框架来实现机器学习模型上线流程的标准化,在接收到开发人员push的目标代码数据以后,可以在编译阶段根据目标代码数据中的配置参数生成部署脚本,然后在构建阶段根据目标代码数据中的调用代码生成第一容器镜像,在部署时,可以获得目标机器学习模型的第二容器镜像,并采用部署脚本将第一容器镜像与第二容器镜像部署到指定集群中,使得第一容器镜像对应的第一容器与第二容器镜像对应的第二容器被部署到指定集群的同一命名空间下,以此实现模型的快速上线部署,开发人员仅仅需要在通用部署框架的基础上进行开发,编写少量的代码就可以完成模型的上线部署,简化了原有流程,降低了开发人员部署的难度,提高了开发人员对模型上线部署的效率和降低了部署成本。
实施例二
图5为本申请实施例二提供的一种模型推理的方法实施例的流程图,本实施例应用于对完成上线部署的模型的模型推理场景,该模型为根据实施例一中的通用部署框架完成线上部署的模型,本实施例可以包括如下步骤:
步骤510,接收客户端发送的调用请求。
在一种例子中,客户端发起的调用请求可以为http请求,该请求可以为灰度环境下的请求,也可以是生产环境下的请求,本实施例对此不作限制。
调用请求中的请求参数可以根据业务的不同而不同,在一种示例中,请求参数可以包括:目标模型名称model_id;目标处理对象的下载链接,如图片的url(image_url),以及,模板url(template_url,该项为可选项)等。
步骤520,解析所述调用请求,以确定目标处理对象以及目标处理逻辑。
收到调用请求以后,可以对该调用请求中的请求参数进行解析,以获得具体的参数内容。
在一种实施方式中,步骤520可以包括如下步骤:
步骤520-1,采用所述通用部署框架中的服务器模块解析所述调用请求,获得所述调用请求中携带的目标模型名称以及目标处理对象的下载链接。
在实现时,参考图6所示的服务调用逻辑结构示意图,图6为src代码部分的调用逻辑结构,当通过接口收到客户端的请求以后,可以通过服务器模块server.py(即图6中的Server)解析调用请求中的参数,获得目标模型名称以及目标处理对象的下载链接。
步骤520-2,根据所述下载链接下载对应的目标处理对象。
在该步骤中,可以根据目标处理对象的下载链接从云端服务器中下载对应的目标处理对象,例如,在上例中,可以根据image_url从CDN服务器中下载对应的图片并解码。
步骤520-3,根据所述目标模型名称确定对应的目标逻辑处理引擎。
在该步骤中,可以根据目标模型名称model_id选择与该名称对应的目标逻辑处理引擎engine.py(即图6中的Engine1…EngineN)进行调用。
步骤530,调用所述目标处理逻辑对所述目标处理对象进行处理,所述处理包括预处理、模型推理处理以及后处理。
在一种实施方式中,目标逻辑处理引擎包括第一容器以及第二容器,其中,第一容器可以为代码容器,第二容器可以为模型容器,步骤530可以包括如下步骤:
步骤530-1,在第一容器中对所述目标处理对象进行预处理。
步骤530-2,将预处理后的目标处理对象调用第二容器中进行相应的模型推理操作,并将对应的模型推理结果返回;
步骤530-3,在第一容器中基于所述模型推理结果对目标处理对象进行后处理。
在该实施例中,预处理以及后处理过程在第一容器内执行,而模型推理过程则在对应的模型容器(即第二容器)中执行。
在实际中,由于使用场景的复杂,以及深度学习应用的不断深入,往往需要使用多个模型来完成一项任务,而这多个模型可能由不同的深度学习框架训练得到。因此可以通过结构化的设计来满足这些需求,可以根据自身的业务需求以及模型之间的依赖关系,设计模型调用流程,然后进行模块化的开发。在模型推理过程中,可以通过多线程或多进程的方式对不同的模型容器进行异步调用,对于没有依赖关系的模型可以使用多个线程进行异步调用,以降低服务整体的调用耗时。
对目标处理对象处理完毕以后,则可以将处理后的目标处理对象返回客户端。在一种实现中,可以将处理后的目标处理对象上传到云端服务器,并向客户端返回该处理后的目标处理对象对应的存储链接。
在本实施例中提供一套简单易用的接口,在接收到客户端发送的调用请求后,通过解析该调用请求来获得目标处理对象以及目标处理逻辑,然后调用该目标处理逻辑对所目标处理对象进行预处理、模型推理处理以及后处理等处理,可以将处理逻辑解耦,提高服务调用的效率。
实施例三
图7为本申请实施例三提供的一种模型部署装置实施例的结构框图,可以包括如下模块:
代码接收模块710,用于接收目标代码数据,所述目标代码数据包括预先构建的通用部署框架,以及基于所述通用部署框架配置的、针对目标机器学习模型的配置参数和调用代码;
部署脚本生成模块720,用于根据所述配置参数生成部署脚本;
第一容器镜像生成模块730,用于根据所述调用代码生成第一容器镜像;
第二容器镜像获取模块740,用于获取所述目标机器学习模型的第二容器镜像;
部署模块750,用于采用所述部署脚本将所述第一容器镜像与所述第二容器镜像部署到指定集群中,其中,在部署时,所述第一容器镜像对应的第一容器与所述第二容器镜像对应的第二容器被部署到所述指定集群的同一命名空间下。
在一种实施方式中,所述通用部署框架包括脚本模板以及生成器,所述部署脚本生成模块720具体用于:
采用所述生成器,基于所述脚本模板以及所述配置参数生成部署脚本。
在一种实施方式中,所述调用代码包括接口代码和服务代码;所述通用部署框架包括接口文件、服务器文件、资源文件以及镜像文件;所述接口代码为通过参考所述接口文件与接口调用方协商开发接口后,在所述服务器文件中实现的所述开发接口的代码;所述服务代码为在所述资源文件中开发的、用于描述服务的处理逻辑的代码;
所述第一容器镜像生成模块730具体用于:
通过所述镜像文件将所述接口代码和所述服务代码打包成第一容器镜像。
在一种实施方式中,所述配置参数包括所述目标机器学习模型的模型镜像名称,所述第二容器镜像获取模块740具体用于:
根据所述模型镜像名称从云端的镜像仓库中拉取对应的第二容器镜像。
在一种实施方式中,所述部署脚本包括灰度部署脚本以及生产部署脚本;
所述部署模块750包括:
灰度部署子模块,用于当接收到灰度部署请求时,采用所述灰度部署脚本将所述第一容器镜像与所述第二容器镜像部署到指定集群中;
停止灰度部署子模块,用于当接收到停止灰度部署请求时,从所述指定集群中下线所述第一容器镜像与所述第二容器镜像;
生产部署子模块,用于当接收到生产部署请求时,采用所述生产部署脚本将所述第一容器镜像与所述第二容器镜像部署到指定集群中。
在一种实施方式中,所述装置还包括:
部署界面展示模块,用于展示部署界面,所述部署界面包括灰度部署按钮、停止灰度部署按钮以及生产部署按钮,其中,所述灰度部署请求为所述灰度部署按钮被触发时生成的请求;所述停止灰度部署请求为所述停止灰度部署按钮被触发时生成的请求;所述生产部署请求为所述生产部署按钮被触发时生成的请求。
在一种实施方式中,所述通用部署框架的前端采用flask框架,并使用gunicorn框架进行多进程并发;
所述通用部署框架的后端使用kubernetes框架进行部署;
所述通用部署框架使用容器管理平台Rancher作为UI界面,用于查看服务的状态及查询服务的日志;
所述通用部署框架通过代码托管平台gitlab的持续集成CI或持续交付CD功能完成前端与后端的交互。
需要说明的是,本申请实施例所提供的上述模型部署装置可执行本申请实施例一所提供的模型部署方法,具备执行方法相应的功能模块和有益效果。
实施例四
图8为本申请实施例四提供的一种模型推理的装置实施例的结构框图,所述模型为根据实施例一中的通用部署框架完成线上部署的模型,所述装置可以包括如下模块:
调用请求接收模块810,用于接收客户端发送的调用请求;
目标数据确定模块820,用于解析所述调用请求,以确定目标处理对象以及目标处理逻辑;
处理模块830,用于调用所述目标处理逻辑对所述目标处理对象进行处理,所述处理包括预处理、模型推理处理以及后处理。
在一种实施方式中,所述目标数据确定模块820具体用于:
采用所述通用部署框架中的服务器模块解析所述调用请求,获得所述调用请求中携带的目标模型名称以及目标处理对象的下载链接;
根据所述下载链接下载对应的目标处理对象;
根据所述目标模型名称确定对应的目标逻辑处理引擎。
在一种实施方式中,所述目标逻辑处理引擎包括第一容器以及第二容器,所述处理模块830包括:
预处理子模块,用于在第一容器中对所述目标处理对象进行预处理;
推理子模块,用于将预处理后的目标处理对象传入第二容器中进行相应的模型推理操作,并将对应的模型推理结果返回第一容器;
后处理子模块,用于在第一容器中基于所述模型推理结果对目标处理对象进行后处理。
在一种实施方式中,所述装置还包括:
数据响应模块,用于将处理后的目标处理对象返回所述客户端。
需要说明的是,本申请实施例所提供的上述模型推理的装置可执行本申请实施例一所提供的模型推理的方法,具备执行方法相应的功能模块和有益效果。
实施例五
图9为本申请实施例五提供的一种电子设备的结构示意图,如图9所示,该电子设备包括处理器910、存储器920、输入装置930和输出装置940;电子设备中处理器910的数量可以是一个或多个,图9中以一个处理器910为例;电子设备中的处理器910、存储器920、输入装置930和输出装置940可以通过总线或其他方式连接,图9中以通过总线连接为例。
存储器920作为一种计算机可读存储介质,可用于存储软件程序、计算机可执行程序以及模块,如本申请实施例中的方法对应的程序指令/模块。处理器910通过运行存储在存储器920中的软件程序、指令以及模块,从而执行电子设备的各种功能应用以及数据处理,即实现上述的方法。
存储器920可主要包括存储程序区和存储数据区,其中,存储程序区
可存储操作系统、至少一个功能所需的应用程序;存储数据区可存储根据终端的使用所创建的数据等。此外,存储器920可以包括高速随机存取存储器,还可以包括非易失性存储器,例如至少一个磁盘存储器件、闪存器件、或其他非易失性固态存储器件。在一些实例中,存储器920可进一步包括相对于处理器910远程设置的存储器,这些远程存储器可以通过网络连接至电子设备。上述网络的实例包括但不限于互联网、企业内部网、局域网、移动通信网及其组合。
输入装置930可用于接收输入的数字或字符信息,以及产生与电子设备的用户设置以及功能控制有关的键信号输入。输出装置940可包括显示屏等显示设备。
实施例六
本申请实施例六还提供一种包含计算机可执行指令的存储介质,所述计算机可执行指令在由服务器的处理器执行时用于执行实施例一至实施例二中任一实施例中的方法。
通过以上关于实施方式的描述,所属领域的技术人员可以清楚地了解到,本申请可借助软件及必需的通用硬件来实现,当然也可以通过硬件实现,但很多情况下前者是更佳的实施方式。基于这样的理解,本申请的技术方案本质上或者说对现有技术做出贡献的部分可以以软件产品的形式体现出来,该计算机软件产品可以存储在计算机可读存储介质中,如计算机的软盘、只读存储器(Read-Only Memory,ROM)、随机存取存储器(RandomAccess Memory,RAM)、闪存(FLASH)、硬盘或光盘等,包括若干指令用以使得一台计算机设备(可以是个人计算机,服务器,或者网络设备等)执行本申请各个实施例所述的方法。
值得注意的是,上述装置的实施例中,所包括的各个单元和模块只是按照功能逻辑进行划分的,但并不局限于上述的划分,只要能够实现相应的功能即可;另外,各功能单元的具体名称也只是为了便于相互区分,并不用于限制本申请的保护范围。
注意,上述仅为本申请的较佳实施例及所运用技术原理。本领域技术人员会理解,本申请不限于这里所述的特定实施例,对本领域技术人员来说能够进行各种明显的变化、重新调整和替代而不会脱离本申请的保护范围。因此,虽然通过以上实施例对本申请进行了较为详细的说明,但是本申请不仅仅限于以上实施例,在不脱离本申请构思的情况下,还可以包括更多其他等效实施例,而本申请的范围由所附的权利要求范围决定。

Claims (15)

1.一种模型部署方法,其特征在于,所述方法包括:
接收目标代码数据,所述目标代码数据包括预先构建的通用部署框架,以及基于所述通用部署框架配置的、针对目标机器学习模型的配置参数和调用代码;
根据所述配置参数生成部署脚本;
根据所述调用代码生成第一容器镜像;
获取所述目标机器学习模型的第二容器镜像;
采用所述部署脚本将所述第一容器镜像与所述第二容器镜像部署到指定集群中,其中,在部署时,所述第一容器镜像对应的第一容器与所述第二容器镜像对应的第二容器被部署到所述指定集群的同一命名空间下。
2.根据权利要求1所述的方法,其特征在于,所述通用部署框架包括脚本模板以及生成器,所述根据所述配置参数生成部署脚本包括:
采用所述生成器,基于所述脚本模板以及所述配置参数生成部署脚本。
3.根据权利要求1或2所述的方法,其特征在于,所述调用代码包括接口代码和服务代码;所述通用部署框架包括接口文件、服务器文件、资源文件以及镜像文件;所述接口代码为通过参考所述接口文件与接口调用方协商开发接口后,在所述服务器文件中实现的所述开发接口的代码;所述服务代码为在所述资源文件中开发的、用于描述服务的处理逻辑的代码;
所述根据所述调用代码生成第一容器镜像包括:
通过所述镜像文件将所述接口代码和所述服务代码打包成第一容器镜像。
4.根据权利要求1或2所述的方法,其特征在于,所述配置参数包括所述目标机器学习模型的模型镜像名称,所述获取所述目标机器学习模型的第二容器镜像包括:
根据所述模型镜像名称从云端的镜像仓库中拉取对应的第二容器镜像。
5.根据权利要求1所述的方法,其特征在于,所述部署脚本包括灰度部署脚本以及生产部署脚本;
所述采用所述部署脚本将所述第一容器镜像与所述第二容器镜像部署到指定集群中包括:
当接收到灰度部署请求时,采用所述灰度部署脚本将所述第一容器镜像与所述第二容器镜像部署到指定集群中;
当接收到停止灰度部署请求时,从所述指定集群中下线所述第一容器镜像与所述第二容器镜像;
当接收到生产部署请求时,采用所述生产部署脚本将所述第一容器镜像与所述第二容器镜像部署到指定集群中。
6.根据权利要求5所述的方法,其特征在于,在所述采用所述部署脚本将所述第一容器镜像与所述第二容器镜像部署到指定集群中之前,所述方法还包括:
展示部署界面,所述部署界面包括灰度部署按钮、停止灰度部署按钮以及生产部署按钮,其中,所述灰度部署请求为所述灰度部署按钮被触发时生成的请求;所述停止灰度部署请求为所述停止灰度部署按钮被触发时生成的请求;所述生产部署请求为所述生产部署按钮被触发时生成的请求。
7.根据权利要求1所述的方法,其特征在于,所述通用部署框架的前端采用flask框架,并使用gunicorn框架进行多进程并发;
所述通用部署框架的后端使用kubernetes框架进行部署;
所述通用部署框架使用容器管理平台Rancher作为UI界面,用于查看服务的状态及查询服务的日志;
所述通用部署框架通过代码托管平台gitlab的持续集成CI或持续交付CD功能完成前端与后端的交互。
8.一种模型推理的方法,其特征在于,所述模型为根据权利要求1中的通用部署框架完成线上部署的模型,所述方法包括:
接收客户端发送的调用请求;
解析所述调用请求,以确定目标处理对象以及目标处理逻辑;
调用所述目标处理逻辑对所述目标处理对象进行处理,所述处理包括预处理、模型推理处理以及后处理。
9.根据权利要求1所述的方法,其特征在于,所述解析所述调用请求,以确定目标处理对象以及目标处理逻辑,包括:
采用所述通用部署框架中的服务器模块解析所述调用请求,获得所述调用请求中携带的目标模型名称以及目标处理对象的下载链接;
根据所述下载链接下载对应的目标处理对象;
根据所述目标模型名称确定对应的目标逻辑处理引擎。
10.根据权利要求9所述的方法,其特征在于,所述目标逻辑处理引擎包括第一容器以及第二容器,所述调用所述目标处理逻辑对所述目标处理对象进行处理包括:
在第一容器中对所述目标处理对象进行预处理;
将预处理后的目标处理对象传入第二容器中进行相应的模型推理操作,并将对应的模型推理结果返回第一容器;
在第一容器中基于所述模型推理结果对目标处理对象进行后处理。
11.根据权利要求8-10任一项所述的方法,其特征在于,所述方法还包括:
将处理后的目标处理对象返回所述客户端。
12.一种模型部署装置,其特征在于,所述装置包括:
代码接收模块,用于接收目标代码数据,所述目标代码数据包括预先构建的通用部署框架,以及基于所述通用部署框架配置的、针对目标机器学习模型的配置参数和调用代码;
部署脚本生成模块,用于根据所述配置参数生成部署脚本;
第一容器镜像生成模块,用于根据所述调用代码生成第一容器镜像;
第二容器镜像获取模块,用于获取所述目标机器学习模型的第二容器镜像;
部署模块,用于采用所述部署脚本将所述第一容器镜像与所述第二容器镜像部署到指定集群中,其中,在部署时,所述第一容器镜像对应的第一容器与所述第二容器镜像对应的第二容器被部署到所述指定集群的同一命名空间下。
13.一种模型推理的装置,其特征在于,所述模型为根据权利要求1中的通用部署框架完成线上部署的模型,所述装置包括:
调用请求接收模块,用于接收客户端发送的调用请求;
目标数据确定模块,用于解析所述调用请求,以确定目标处理对象以及目标处理逻辑;
处理模块,用于调用所述目标处理逻辑对所述目标处理对象进行处理,所述处理包括预处理、模型推理处理以及后处理。
14.一种电子设备,包括存储器、处理器及存储在存储器上并可在处理器上运行的计算机程序,其特征在于,所述处理器执行所述程序时实现如权利要求1-7任一项和/或权利要求8-11中任一所述的方法。
15.一种计算机可读存储介质,其上存储有计算机程序,其特征在于,该程序被处理器执行时实现如权利要求1-7任一项和/或权利要求8-11任一所述的方法。
CN202011330926.9A 2020-11-24 2020-11-24 一种模型部署及推理的方法和装置 Withdrawn CN112329945A (zh)

Priority Applications (1)

Application Number Priority Date Filing Date Title
CN202011330926.9A CN112329945A (zh) 2020-11-24 2020-11-24 一种模型部署及推理的方法和装置

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
CN202011330926.9A CN112329945A (zh) 2020-11-24 2020-11-24 一种模型部署及推理的方法和装置

Publications (1)

Publication Number Publication Date
CN112329945A true CN112329945A (zh) 2021-02-05

Family

ID=74307836

Family Applications (1)

Application Number Title Priority Date Filing Date
CN202011330926.9A Withdrawn CN112329945A (zh) 2020-11-24 2020-11-24 一种模型部署及推理的方法和装置

Country Status (1)

Country Link
CN (1) CN112329945A (zh)

Cited By (15)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN113190238A (zh) * 2021-03-26 2021-07-30 曙光信息产业(北京)有限公司 框架的部署方法、装置、计算机设备和存储介质
CN113342361A (zh) * 2021-05-25 2021-09-03 上海商汤智能科技有限公司 模型部署方法及装置、电子设备和存储介质
CN113377464A (zh) * 2021-08-12 2021-09-10 苏州浪潮智能科技有限公司 一种基于多推理引擎系统的应用部署方法、装置及设备
CN113805858A (zh) * 2021-02-10 2021-12-17 京东科技控股股份有限公司 持续部署脚本语言开发的软件的方法和装置
CN113961174A (zh) * 2021-10-25 2022-01-21 上海电器科学研究所(集团)有限公司 一种基于云原生微服务的模型开发与部署方法
CN114154644A (zh) * 2021-11-30 2022-03-08 北京航空航天大学 一种机器学习数据处理方法及装置
CN114281706A (zh) * 2021-12-30 2022-04-05 北京瑞莱智慧科技有限公司 一种模型测评方法、系统及存储介质
CN114371881A (zh) * 2021-12-20 2022-04-19 浪潮软件股份有限公司 基于gitlab-ci的灵活安全CI/CD服务部署系统及方法
CN114881233A (zh) * 2022-04-20 2022-08-09 深圳市魔数智擎人工智能有限公司 一种基于容器的分布式模型推理服务方法
CN114968271A (zh) * 2022-05-26 2022-08-30 北京金堤科技有限公司 模型部署方法、装置、电子设备及存储介质
CN115248692A (zh) * 2022-09-21 2022-10-28 之江实验室 一种支持多种深度学习框架模型云端部署的装置及方法
WO2023071075A1 (zh) * 2021-10-29 2023-05-04 北京邮电大学 机器学习模型自动化生产线构建方法及系统
CN116362336A (zh) * 2023-06-02 2023-06-30 之江实验室 一种模型推理交互方法、电子设备、可读存储介质
CN117075867A (zh) * 2023-08-17 2023-11-17 唐山启奥科技股份有限公司 一种计算机基础技术开发框架系统
CN117519912A (zh) * 2024-01-04 2024-02-06 之江实验室 一种镜像仓库部署的方法、装置、存储介质、设备

Cited By (20)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN113805858A (zh) * 2021-02-10 2021-12-17 京东科技控股股份有限公司 持续部署脚本语言开发的软件的方法和装置
CN113805858B (zh) * 2021-02-10 2024-04-05 京东科技控股股份有限公司 持续部署脚本语言开发的软件的方法和装置
CN113190238A (zh) * 2021-03-26 2021-07-30 曙光信息产业(北京)有限公司 框架的部署方法、装置、计算机设备和存储介质
CN113342361A (zh) * 2021-05-25 2021-09-03 上海商汤智能科技有限公司 模型部署方法及装置、电子设备和存储介质
CN113377464A (zh) * 2021-08-12 2021-09-10 苏州浪潮智能科技有限公司 一种基于多推理引擎系统的应用部署方法、装置及设备
CN113961174A (zh) * 2021-10-25 2022-01-21 上海电器科学研究所(集团)有限公司 一种基于云原生微服务的模型开发与部署方法
CN113961174B (zh) * 2021-10-25 2024-04-30 上海电器科学研究所(集团)有限公司 一种基于云原生微服务的模型开发与部署方法
WO2023071075A1 (zh) * 2021-10-29 2023-05-04 北京邮电大学 机器学习模型自动化生产线构建方法及系统
CN114154644A (zh) * 2021-11-30 2022-03-08 北京航空航天大学 一种机器学习数据处理方法及装置
CN114371881A (zh) * 2021-12-20 2022-04-19 浪潮软件股份有限公司 基于gitlab-ci的灵活安全CI/CD服务部署系统及方法
CN114281706A (zh) * 2021-12-30 2022-04-05 北京瑞莱智慧科技有限公司 一种模型测评方法、系统及存储介质
CN114281706B (zh) * 2021-12-30 2023-09-12 北京瑞莱智慧科技有限公司 一种模型测评方法、系统及存储介质
CN114881233A (zh) * 2022-04-20 2022-08-09 深圳市魔数智擎人工智能有限公司 一种基于容器的分布式模型推理服务方法
CN114968271A (zh) * 2022-05-26 2022-08-30 北京金堤科技有限公司 模型部署方法、装置、电子设备及存储介质
CN115248692A (zh) * 2022-09-21 2022-10-28 之江实验室 一种支持多种深度学习框架模型云端部署的装置及方法
CN116362336B (zh) * 2023-06-02 2023-08-22 之江实验室 一种模型推理交互方法、电子设备、可读存储介质
CN116362336A (zh) * 2023-06-02 2023-06-30 之江实验室 一种模型推理交互方法、电子设备、可读存储介质
CN117075867A (zh) * 2023-08-17 2023-11-17 唐山启奥科技股份有限公司 一种计算机基础技术开发框架系统
CN117519912A (zh) * 2024-01-04 2024-02-06 之江实验室 一种镜像仓库部署的方法、装置、存储介质、设备
CN117519912B (zh) * 2024-01-04 2024-04-05 之江实验室 一种镜像仓库部署的方法、装置、存储介质、设备

Similar Documents

Publication Publication Date Title
CN112329945A (zh) 一种模型部署及推理的方法和装置
CN111737032B (zh) 一种基于微内核系统的子程序运行方法、装置和电子设备
US6038590A (en) Object-oriented system, method and article of manufacture for a client-server state machine in an interprise computing framework system
US6052711A (en) Object-oriented system, method and article of manufacture for a client-server session web access in an interprise computing framework system.
US5768510A (en) Object-oriented system, method and article of manufacture for a client-server application enabler system
CN109067890B (zh) 一种基于docker容器的CDN节点边缘计算系统
US6424991B1 (en) Object-oriented system, method and article of manufacture for a client-server communication framework
US5999972A (en) System, method and article of manufacture for a distributed computer system framework
US6434598B1 (en) Object-oriented system, method and article of manufacture for a client-server graphical user interface (#9) framework in an interprise computing framework system
US6253282B1 (en) Object-oriented system, method and article of manufacture for a client-server with a client program cache
US5987245A (en) Object-oriented system, method and article of manufacture (#12) for a client-server state machine framework
KR102218995B1 (ko) 코드 가상화 및 원격 프로세스 호출 생성을 위한 방법 및 장치
US6272556B1 (en) Object-oriented system, method and article of manufacture for migrating a client-server application (#5)
US7607128B2 (en) Method and system for enabling a server application to be executed in the same virtual machine as a client application using direct object oriented programming method calls
US6266709B1 (en) Object-oriented system, method and article of manufacture for a client-server failure reporting process
US6272555B1 (en) Object-oriented system, method and article of manufacture for a client-server-centric interprise computing framework system
EP0844558A2 (en) Object-oriented system, method and article of manufature for a client-server event driver message framework in an interprise computing framework system
US20230036980A1 (en) Micro-frontend system, sub-application loading method, electronic device, computer program product, and computer-readable storage medium
CN110083455B (zh) 图计算处理方法、装置、介质及电子设备
KR20160061305A (ko) 커스터마이징된 소프트웨어 개발 키트(sdk) 생성을 위한 방법 및 장치
CN110659057B (zh) 应用程序热更新方法、装置、存储介质及计算机设备
US8694956B2 (en) PowerShell cmdlets code generating tool for communicating to the web services
KR20110030461A (ko) 클라이언트-서버 환경에서의 애플리케이션의 동적 분할 방법 및 시스템
US20130091491A1 (en) Self-Documentation of Development Systems
CN112579097A (zh) 软件项目构建方法、装置、存储介质及电子设备

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
WW01 Invention patent application withdrawn after publication

Application publication date: 20210205

WW01 Invention patent application withdrawn after publication