CN117331626A - 一种Python模型的交付及部署方法、电子设备、介质 - Google Patents
一种Python模型的交付及部署方法、电子设备、介质 Download PDFInfo
- Publication number
- CN117331626A CN117331626A CN202311181193.0A CN202311181193A CN117331626A CN 117331626 A CN117331626 A CN 117331626A CN 202311181193 A CN202311181193 A CN 202311181193A CN 117331626 A CN117331626 A CN 117331626A
- Authority
- CN
- China
- Prior art keywords
- algorithm
- task
- model
- python
- deploying
- 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 107
- 238000012384 transportation and delivery Methods 0.000 title abstract description 12
- 238000004422 calculation algorithm Methods 0.000 claims abstract description 91
- 230000006870 function Effects 0.000 claims abstract description 51
- 238000012544 monitoring process Methods 0.000 claims abstract description 13
- 230000001360 synchronised effect Effects 0.000 claims abstract description 8
- 230000008569 process Effects 0.000 claims description 38
- 238000012545 processing Methods 0.000 claims description 16
- 238000003860 storage Methods 0.000 claims description 16
- 238000004590 computer program Methods 0.000 claims description 14
- 230000004044 response Effects 0.000 claims description 13
- 230000002441 reversible effect Effects 0.000 claims description 8
- 238000012986 modification Methods 0.000 claims description 5
- 230000004048 modification Effects 0.000 claims description 5
- 230000006835 compression Effects 0.000 claims description 4
- 238000007906 compression Methods 0.000 claims description 4
- 230000007246 mechanism Effects 0.000 abstract description 5
- 238000007726 management method Methods 0.000 abstract description 3
- 238000011161 development Methods 0.000 description 11
- 238000010586 diagram Methods 0.000 description 11
- 230000006872 improvement Effects 0.000 description 7
- 238000005516 engineering process Methods 0.000 description 4
- 238000010801 machine learning Methods 0.000 description 4
- 230000005540 biological transmission Effects 0.000 description 3
- 238000013461 design Methods 0.000 description 3
- 238000004519 manufacturing process Methods 0.000 description 3
- 230000003287 optical effect Effects 0.000 description 3
- 238000012360 testing method Methods 0.000 description 3
- 230000008859 change Effects 0.000 description 2
- 238000010276 construction Methods 0.000 description 2
- 238000013135 deep learning Methods 0.000 description 2
- 238000012423 maintenance Methods 0.000 description 2
- 238000013515 script Methods 0.000 description 2
- 238000012549 training Methods 0.000 description 2
- 208000025174 PANDAS Diseases 0.000 description 1
- 208000021155 Paediatric autoimmune neuropsychiatric disorders associated with streptococcal infection Diseases 0.000 description 1
- 240000000220 Panda oleosa Species 0.000 description 1
- 235000016496 Panda oleosa Nutrition 0.000 description 1
- 238000009825 accumulation Methods 0.000 description 1
- 238000007792 addition Methods 0.000 description 1
- 238000013473 artificial intelligence Methods 0.000 description 1
- 230000009286 beneficial effect Effects 0.000 description 1
- 230000001413 cellular effect Effects 0.000 description 1
- 238000004891 communication Methods 0.000 description 1
- 238000007405 data analysis Methods 0.000 description 1
- 238000013480 data collection Methods 0.000 description 1
- 238000013499 data model Methods 0.000 description 1
- 230000007547 defect Effects 0.000 description 1
- 230000001419 dependent effect Effects 0.000 description 1
- 230000008676 import Effects 0.000 description 1
- 238000011423 initialization method Methods 0.000 description 1
- 229910052500 inorganic mineral Inorganic materials 0.000 description 1
- 230000005055 memory storage Effects 0.000 description 1
- 239000011707 mineral Substances 0.000 description 1
- 238000012806 monitoring device Methods 0.000 description 1
- 238000003058 natural language processing Methods 0.000 description 1
- 238000012856 packing Methods 0.000 description 1
- 238000013439 planning Methods 0.000 description 1
- 229920001296 polysiloxane Polymers 0.000 description 1
- 230000000750 progressive effect Effects 0.000 description 1
- 238000012216 screening Methods 0.000 description 1
- 238000004904 shortening Methods 0.000 description 1
- 230000003068 static effect Effects 0.000 description 1
- 238000006467 substitution reaction Methods 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/44—Arrangements for executing specific programs
- G06F9/448—Execution paradigms, e.g. implementations of programming paradigms
- G06F9/4488—Object-oriented
- G06F9/449—Object-oriented method invocation or resolution
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F8/00—Arrangements for software engineering
- G06F8/60—Software deployment
- G06F8/61—Installation
- G06F8/63—Image based installation; Cloning; Build to order
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F8/00—Arrangements for software engineering
- G06F8/70—Software maintenance or management
- G06F8/71—Version control; Configuration management
-
- 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/44—Arrangements for executing specific programs
- G06F9/445—Program loading or initiating
- G06F9/44521—Dynamic linking or loading; Link editing at or after load time, e.g. Java class loading
- G06F9/44526—Plug-ins; Add-ons
-
- 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/44—Arrangements for executing specific programs
- G06F9/455—Emulation; Interpretation; Software simulation, e.g. virtualisation or emulation of application or operating system execution engines
- G06F9/45504—Abstract machines for programme code execution, e.g. Java virtual machine [JVM], interpreters, emulators
-
- Y—GENERAL 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
- Y02—TECHNOLOGIES OR APPLICATIONS FOR MITIGATION OR ADAPTATION AGAINST CLIMATE CHANGE
- Y02D—CLIMATE 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/00—Energy efficient computing, e.g. low power processors, power management or thermal management
Landscapes
- Engineering & Computer Science (AREA)
- Software Systems (AREA)
- Theoretical Computer Science (AREA)
- General Engineering & Computer Science (AREA)
- Physics & Mathematics (AREA)
- General Physics & Mathematics (AREA)
- Computer Security & Cryptography (AREA)
- Stored Programmes (AREA)
Abstract
本发明公开了一种Python模型的交付及部署方法、电子设备、介质,包括:基于装饰器注册算法函数,支持同步/异步任务调用,采用Gunicorn和Flask相结合的方式响应网络服务,插件机制进行扩展并支持Prometheus监控等功能。可使用框架create命令自动创建新的应用,进行本地调试后通过build命令打包包含框架环境的模型应用Docker镜像,并进行部署。本发明方法具有高性能、高效的算法管理、广泛的适用性和高灵活性等优点。
Description
技术领域
本发明涉及模型交付及部署技术领域,具体涉及一种Python模型的交付及部署方法、电子设备、介质。
背景技术
随着海量数据的不断积累和人工智能的不断发展,机器学习、深度学习等人工智能模型已经被广泛应用到电商平台、新闻资讯、网络社交、交通规划、矿物筛选等各种场景。Python作为当下数据分析和模型训练最常用的计算机编程语言,已经被广泛应用到各种领域模型的开发。Python模型开发完成后,需要通过在线部署的方式将模型应用起来。算法工程师往往需要搭建web服务来加载模型,对外服务。如果每个模型都重头开始搭建的话,中间往往涉及大量重复工作,效率不高,搭建的服务也因为工程师的搭建方法不同而不便于运维管理,费时费力。
为了满足云计算背景下需要快速一致性地交付模型,方便模型服务的部署和运维,因此,构建一种Python模型快速交付及部署的软件开发框架及实现方法,成为本领域亟需解决的技术问题。
CN111488254A公开了一种机器学习模型的部署与监控装置的发明,包括:一个或多个容器应用模块,所述容器应用模块里部署有WEB应用服务接口、机器学习模型代码、Python运行环境,配置用于将Python应用程序的运行环境部署到容器应用中,通过基于flask的web应用框架向用户端提供WEB接口服务,以Restful API的方式向用户端提供WEB访问服务。该发明缺少高性能的HTTP Server,高并发情况下的访问效率难以保证。
CN115718603A公开了一种Python模型分布式在线部署方法及系统,本发明设计的数据处理和特征工程代码转换器,将Python模型训练前置的离线数据处理和特征工程的逻辑转换为在线Python代码;本发明设计的模型引擎,可以快速加载机器学习、深度学习、自然语言处理等各种不同种类的Python模型。该发明缺乏对多算法引擎的支持,以及同步、异步任务的处理方法。
发明内容
针对现有技术不足,本发明提供了一种Python模型的交付及部署方法、电子设备、介质。
第一方面,本发明实施例提出了一种Python模型的交付及部署方法,所述方法包括:
获取算法名及算法运行的引擎类型,通过算法装饰器注册算法入口函数;
响应于算法名及算法运行的引擎类型,调用对应的注册算法函数;
设置任务类型;任务执行时首先初始化参数、算法运行的引擎和算法对象,然后执行模型对应的算法应用,更新对应的task表记录,最后关闭数据库连接和算法引擎;
在执行模型对应的算法应用的过程中,将模型的预测过程封装成HTTP请求,通过算法装饰器拦截并运行调试,包括:响应于HTTP请求,通过反向代理服务器Nginx接收并转发至WSGI服务器网关接口Gunicorn;所述WSGI服务器网关接口Gunicorn接收并解析HTTP请求,再按照WSGI协议转发至WSGI应用Flask;所述WSGI应用Flask处理HTTP请求得到HTTP响应,并经WSGI服务器网关接口Gunicorn和反向代理服务器Nginx转发;
将调试好的模型应用Docker镜像进行部署,包括:当HTTP请求分发到模型Docker容器时,该容器内的算法应用可以接收到数据,然后运行调试好的模型,并返回HTTP响应,得到模型预测结果。
进一步地,获取算法名及算法运行的引擎类型,通过算法装饰器注册算法入口函数包括:
获取算法名name及算法运行的引擎类型engine;其中,所述算法运行的引擎类型engine包括python和spark;
所述算法装饰器还配置有register_func函数,用于注册函数并返回原函数;
响应于算法名name及算法运行的引擎类型engine的字段,调用对应的注册的算法函数,得到唯一标志算法入口函数。
进一步地,所述任务类型包括同步任务类型和异步任务类型,所述异步任务包括异步进程池和异步新进程执行;
进一步地,所述同步任务类型用于执行实时的任务。
进一步地,所述异步任务类型用于执行非实时的任务;
设置任务数阈值;当任务数小于任务数阈值时,采用异步新进程执行模式;当任务数大于任务数阈值时,采用异步进程池模式。
进一步地,更新对应的task表记录包括:
将所有任务执行情况记录在sqlite数据库的task表中,task表包括标识符id、任务标识符task_id、应用名称app_name、算法名称algorithm_name、代码code、参数args、状态status、数据data、Spark应用标识spark_app_id、日志log、创建时间gmt_create、修改时间gmt_modified在内的字段。
进一步地,所述方法还包括:配置插件;
所述插件包括:
数据处理插件,用于处理包括redis、hive、mysql在内的数据;
安全插件,用于加密Python代码、加密数据文件、限制API调用次数;
和/或,
性能插件,用于http压缩、模型预热。
进一步地,所述方法还包括:采集监控数据,所述监控数据包括HTTP请求次数、请求方式、返回码和请求地址。
第二方面,本发明实施例提出了一种电子设备,包括存储器和处理器,所述存储器与所述处理器耦接;其中,所述存储器用于存储程序数据,所述处理器用于执行所述程序数据以实现上述的Python模型的交付及部署方法。
第三方面,本发明实施例提出了一种计算机可读存储介质,其上存储有计算机程序,所述程序被处理器执行时实现上述的Python模型的交付及部署方法。
与现有技术相比,本发明的有益效果为:
(1)本发明方法采用Gunicorn和Flask相结合方式和多进程管理机制,能够实现高并发请求的快速响应,简化模型部署流程,节约开发运维成本,提高了交付效率,促进模型交付的标准化和自动化,从而提高模型开发效率,缩短了模型迭代周期。
(2)本发明方法通过算法注册装饰器和自动调用的方式,大幅度加速算法的开发、调试和部署过程。
(3)本发明方法支持多种算法类型和引擎类,适用于多种不同的运行环境。
(4)本发明方法支持多种输入输出格式,可以根据业务需要选择不同的表格数据结构,提供更大的灵活性,同时支持多种插件类型,进一步扩展了在不同场景下的可用性。
附图说明
为了更清楚地说明本发明实施例中的技术方案,下面将对实施例描述中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图仅仅是本发明的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动性的前提下,还可以根据这些附图获得其他的附图。
图1是本发明实施例提供的一种Python模型的交付及部署方法的示意图;
图2是本发明实施例提供的请求处理的流程示意图;
图3是本发明实施例提供的Python模型的交付及部署的示意图;
图4是本发明实施例提供的部署服务镜像的示意图;
图5是本发明实施例提供的一种电子设备的示意图。
具体实施方式
这里将详细地对示例性实施例进行说明,其示例表示在附图中。下面的描述涉及附图时,除非另有表示,不同附图中的相同数字表示相同或相似的要素。以下示例性实施例中所描述的实施方式并不代表与本发明相一致的所有实施方式。相反,它们仅是与如所附权利要求书中所详述的、本发明的一些方面相一致的装置和方法的例子。
在本发明使用的术语是仅仅出于描述特定实施例的目的,而非旨在限制本发明。在本发明和所附权利要求书中所使用的单数形式的“一种”、“所述”和“该”也旨在包括多数形式,除非上下文清楚地表示其他含义。还应当理解,本文中使用的术语“和/或”是指并包含一个或多个相关联的列出项目的任何或所有可能组合。
应当理解,尽管在本发明可能采用术语第一、第二、第三等来描述各种信息,但这些信息不应限于这些术语。这些术语仅用来将同一类型的信息彼此区分开。例如,在不脱离本发明范围的情况下,第一信息也可以被称为第二信息,类似地,第二信息也可以被称为第一信息。取决于语境,如在此所使用的词语“如果”可以被解释成为“在……时”或“当……时”或“响应于确定”。
下面结合附图,对本发明进行详细说明。在不冲突的情况下,下述的实施例及实施方式中的特征可以相互组合。
如图1所示,本发明公开了一种Python模型的交付及部署方法,包括基于装饰器注册算法函数,支持同步/异步任务调用,采用Gunicorn和Flask相结合的方式响应网络服务,插件机制进行扩展并支持Prometheus监控等功能。可使用框架create命令自动创建新的应用,进行本地调试后通过build命令打包包含框架环境的模型应用Docker镜像,并进行部署。本发明方法具有高性能、高效的算法管理、广泛的适用性和高灵活性等优点。所述方法包括:
步骤S1,注册装饰器;procedure装饰器包括两个参数:name和engine。name代表算法名,不填则默认使用函数名作为算法名。engine代表算法运行的引擎类型,包括python和spark两种,默认使用python。
进一步地,装饰器还嵌套了一个名为register_func的函数,用于注册函数并返回原函数。使用@procedure(name='算法名',engine='算法运行的引擎类型')调用装饰器注册算法入口函数。
需要说明的是,装饰器本质上是一个Python函数或类,它可以让其他函数或类在不需要做任何代码修改的前提下增加额外功能,装饰器的返回值也是一个函数/类对象。
根据请求的name(算法名)和engine(引擎)字段自动调用对应的注册的算法函数,合起来唯一标志一个算法入口函数。
在本实例中,自动生成的main函数的参数有以下几个:
task_id:当前任务的通用唯一识别码(Universally Unique Identifier,uuid),每次进入main函数生成一个不重复的uuid。
data source id:数据源id。
table_name:表名。
data:表中数据的DataFrame(根据engine不同,分别是pandas或spark)。
table_info:输入表的建表语句和表数据量大小、表内容行数等信息。
recorder:异步算法需要的记录算法执行状态的handler。
cache_client:缓存客户端。
dfs_client:分布式文件系统客户端,可直接调用open读写文件。
spark:SparkSession实例。
步骤S3、获取任务类型。所述任务类型包括sync(同步)、async_pool(异步进程池)和async_unlimited(异步新进程执行)。
通过restful接口访问时,在报文中通过mode参数给出算法任务的类型,默认为sync(同步)。同步请求还包括:在同步请求发出后会一直阻塞等待返回结果,用于请求耗时较短的请求。
其中,异步请求包括:异步请求发出后,会立刻返回任务标识符(task_id),随后根据task_id查询请求状态,最终获得请求返回值。用于请求耗时长,非实时的任务。其中,异步新进程执行async_unlimited类型任务每次请求都新建一个进程执行,异步进程池async_pool会开启固定数量的进程,然后将任务放到一个池子里,系统来调度多进程执行进程池里的任务。
当任务数较小时,可以使用异步新进程执行async_unlimited;当任务数较大时,我们可以使用异步进程池async_pool。
所有的任务执行情况都会记录在sqlite数据库的task表中,该表由标识符id、任务标识符task_id、应用名称app_name、算法名称algorithm_name、代码code、参数args、状态status、数据data、Spark应用标识spark_app_id、日志log、创建时间gmt_create、修改时间gmt_modified这些字段组成。支持同步任务和异步任务,方便开发者对任务进行管理和查询。
步骤S4、任务执行时首先运行init()方法初始化参数、引擎和算法对象,然后调用run_algorithm()执行模型对应的算法应用,执行完之后调用recorder()方法更新对应的task表记录。最后调用after_run()方法关闭数据库连接和算法引擎,释放资源。
其中,创建新的应用的过程包括:设置新应用的目录,包括:algorithms算法入口目录;config目录放项目配置;tests放置测试用例;docker放docker打包脚本;setup放项目依赖相关脚本;.config文件是工程部署的配置文件;build.sh文件是工程部署的脚本程序。完成算法应用程序开发后,配置好config项目配置文件,可以在本地启动算法应用进行调试。
步骤S5、采用Gunicorn和Flask相结合的方式处理网络请求。在执行模型对应的算法应用的过程中,将模型的预测过程封装成HTTP请求,通过算法装饰器拦截并运行调试,包括:响应于HTTP请求,通过反向代理服务器Nginx接收并转发至WSGI服务器网关接口Gunicorn;所述WSGI服务器网关接口Gunicorn接收并解析HTTP请求,再按照WSGI协议转发至WSGI应用Flask;所述WSGI应用Flask处理HTTP请求得到HTTP响应,并经WSGI服务器网关接口Gunicorn和反向代理服务器Nginx转发。
进一步地,Gunicorn是基于unix系统,被广泛应用的高性能的Python WSGI HTTPServer,用来解析HTTP请求的网关服务。它采用的是pre-fork worker模式,Gunicorn在启动时,会在主进程中预先fork出指定数量的worker进程来处理请求,即一个master进程管理多个worker进程,所有请求和响应均由worker处理。
进一步地,Flask是一个轻量级的可定制框架,使用Python语言编写,较其他同类型框架更为灵活、轻便、安全且容易上手。
用户访问算法应用时,首先到达Nginx,Nginx作为反向代理服务器,可以接收来自前端的网络HTTP请求,将请求网络HTTP转发到WSGI服务器网关接口Gunicorn。Nginx可以监控并维护多个Gunicorn实例,并实现负载平衡和故障转移,从而提高网络服务的健壮性和可靠性。同时,反向代理服务器Nginx还可以实现HTTPS、gzip压缩等功能,以确保网络传输的安全性和效率。其次,Gunicorn作为WSGI服务器,可以与Flask应用程序接口配合使用,将网络请求传递到Flask应用程序中。WSGI服务器Gunicorn具有高效、高并发、低内存占用等优点,可以支持海量的请求并提供快速响应。同时,WSGI服务器Gunicorn还可以通过调整多个进程的数量和工作模式,来支持复杂的场景和应用程序。最后,WSGI应用Flask作为轻量级Web框架,可以快速实现模型的预测逻辑,并提供简单、灵活、可定制的界面。通过使用WSGI应用Flask,可以将模型的预测过程封装成HTTP服务接口,由算法装饰器拦截并运行对应的算法程序,如图2所示。
所述方法还包括:
步骤S6、采用插件机制配置插件进行扩展。
所述插件包括:
数据处理插件,可以处理操作redis/hive/mysql等多种数据;
安全插件,可以加密Python代码,加密数据文件,限制API调用次数等;
性能插件,包括http压缩,模型预热等。
具体地,插件包括:首先初始化一个Platform类实例,并提供一个load_plugins函数来加载所有插件。对于每个找到的子目录,会检查是否需要在该子目录中找到插件。找到插件后,使用run_plugin函数运行插件。该函数首先检查是否存在配置中的插件别名,并且在配置中有通过插件别名来启用此插件。一旦开始运行插件,实例将使用get_plugin函数找到并导入插件模块。这个函数会检查模块是否符合插件规范,并返回该插件实例。最后,运行相应的插件模块中的start函数。插件类的实现需要包括init初始化方法、set_platform插件注册方法、start开发方法和stop结束方法。通过以上设计,插件机制可以根据需要轻松更改插件模块的位置和配置。
所述方法还包括:
步骤S7、采用Prometheus监控采集监控数据。
需要说明的是,如图3所示,所述Prometheus监控是新一代的云原生监控系统,通过访问服务的监控链接可以看到算法、方法级的统计信息。在本实例中,使用了prometheus_client库进行监控数据采集,其中,Counter和Gauge分别用于计数和保留数值。在app函数中,定义了要监控的指标,包括HTTP请求次数、请求方式、返回码和请求地址等信息,使用Counter对其进行计数。在Multiprocess模式下,需要使用MultiProcessCollector对采集器进行实例化,然后调用generate_latest函数生成最新的监控数据,并返回给请求方。
步骤S8、在算法应用开发调试完成后可以进入打包部署环节,包括:在工程部署的配置文件中填写镜像的名称、镜像的版本、镜像仓库的地址、镜像仓库的命名空间、镜像仓库中日志的路径等信息,通过build命令可以快速打包包含框架环境的模型应用Docker镜像。
然后将该模型应用Docker镜像进行部署。当请求数据分发到模型Docker容器时,该容器内的算法应用可以接收到数据,然后运行调试好的算法模型,并返回模型预测结果,如图4所示。
综上所述,本发明方法设计了全局配置,简化开发者的开发,用户可以根据项目需要编写项目配置,项目配置的优先级高于默认的全局配置。项目配置文件包括多种配置选项,如开发配置、测试配置、生产配置等,开发者可以根据不同的需求和环境进行灵活的配置。
本说明书还提供了一种计算机可读存储介质,该存储介质存储有计算机程序,计算机程序可用于执行上述数据同步的方法。
本说明书还提供了图5所示的电子设备的示意结构图。如图5所述,在硬件层面,该电子设备包括处理器、内部总线、网络接口、内存以及非易失性存储器,当然还可能包括其他业务所需要的硬件。处理器从非易失性存储器中读取对应的计算机程序到内存中然后运行,以实现上述数据同步的方法。
当然,除了软件实现方式之外,本说明书并不排除其他实现方式,比如逻辑器件抑或软硬件结合的方式等等,也就是说以下处理流程的执行主体并不限定于各个逻辑单元,也可以是硬件或逻辑器件。
在20世纪90年代,对于一个技术的改进可以很明显地区分是硬件上的改进(例如,对二极管、晶体管、开关等电路结构的改进)还是软件上的改进(对于方法流程的改进)。然而,随着技术的发展,当今的很多方法流程的改进已经可以视为硬件电路结构的直接改进。设计人员几乎都通过将改进的方法流程编程到硬件电路中来得到相应的硬件电路结构。因此,不能说一个方法流程的改进就不能用硬件实体模块来实现。例如,可编程逻辑器件(Programmable Logic Device,PLD)(例如现场可编程门阵列(Field ProgrammableGateArray,FPGA))就是这样一种集成电路,其逻辑功能由用户对器件编程来确定。由设计人员自行编程来把一个数字系统“集成”在一片PLD上,而不需要请芯片制造厂商来设计和制作专用的集成电路芯片。而且,如今,取代手工地制作集成电路芯片,这种编程也多半改用“逻辑编译器(logic compiler)”软件来实现,它与程序开发撰写时所用的软件编译器相类似,而要编译之前的原始代码也得用特定的编程语言来撰写,此称之为硬件描述语言(Hardware Description Language,HDL),而HDL也并非仅有一种,而是有许多种,如ABEL(Advanced Boolean Expression Language)、AHDL(Altera HardwareDescriptionLanguage)、Confluence、CUPL(Cornell University ProgrammingLanguage)、HDCal、JHDL(Java Hardware Description Language)、Lava、Lola、MyHDL、PALASM、RHDL(RubyHardware Description Language)等,目前最普遍使用的是VHDL(Very-High-SpeedIntegrated Circuit Hardware Description Language)与Verilog。本领域技术人员也应该清楚,只需要将方法流程用上述几种硬件描述语言稍作逻辑编程并编程到集成电路中,就可以很容易得到实现该逻辑方法流程的硬件电路。
控制器可以按任何适当的方式实现,例如,控制器可以采取例如微处理器或处理器以及存储可由该(微)处理器执行的计算机可读程序代码(例如软件或固件)的计算机可读介质、逻辑门、开关、专用集成电路(Application Specific Integrated Circuit,ASIC)、可编程逻辑控制器和嵌入微控制器的形式,控制器的例子包括但不限于以下微控制器:ARC 625D、Atmel AT91SAM、Microchip PIC18F26K20以及Silicone Labs C8051F320,存储器控制器还可以被实现为存储器的控制逻辑的一部分。本领域技术人员也知道,除了以纯计算机可读程序代码方式实现控制器以外,完全可以通过将方法步骤进行逻辑编程来使得控制器以逻辑门、开关、专用集成电路、可编程逻辑控制器和嵌入微控制器等的形式来实现相同功能。因此这种控制器可以被认为是一种硬件部件,而对其内包括的用于实现各种功能的装置也可以视为硬件部件内的结构。或者甚至,可以将用于实现各种功能的装置视为既可以是实现方法的软件模块又可以是硬件部件内的结构。
上述实施例阐明的系统、装置、模块或单元,具体可以由计算机芯片或实体实现,或者由具有某种功能的产品来实现。一种典型的实现设备为计算机。具体的,计算机例如可以为个人计算机、膝上型计算机、蜂窝电话、相机电话、智能电话、个人数字助理、媒体播放器、导航设备、电子邮件设备、游戏控制台、平板计算机、可穿戴设备或者这些设备中的任何设备的组合。
为了描述的方便,描述以上装置时以功能分为各种单元分别描述。当然,在实施本说明书时可以把各单元的功能在同一个或多个软件和/或硬件中实现。
本领域内的技术人员应明白,本说明书的实施例可提供为方法、系统、或计算机程序产品。因此,本说明书可采用完全硬件实施例、完全软件实施例、或结合软件和硬件方面的实施例的形式。而且,本说明书可采用在一个或多个其中包含有计算机可用程序代码的计算机可用存储介质(包括但不限于磁盘存储器、CD-ROM、光学存储器等)上实施的计算机程序产品的形式。
本说明书是参照根据本说明书实施例的方法、设备(系统)、和计算机程序产品的流程图和/或方框图来描述的。应理解可由计算机程序指令实现流程图和/或方框图中的每一流程和/或方框、以及流程图和/或方框图中的流程和/或方框的结合。可提供这些计算机程序指令到通用计算机、专用计算机、嵌入式处理机或其他可编程数据处理设备的处理器以产生一个机器,使得通过计算机或其他可编程数据处理设备的处理器执行的指令产生用于实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能的装置。
这些计算机程序指令也可存储在能引导计算机或其他可编程数据处理设备以特定方式工作的计算机可读存储器中,使得存储在该计算机可读存储器中的指令产生包括指令装置的制造品,该指令装置实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能。
这些计算机程序指令也可装载到计算机或其他可编程数据处理设备上,使得在计算机或其他可编程设备上执行一系列操作步骤以产生计算机实现的处理,从而在计算机或其他可编程设备上执行的指令提供用于实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能的步骤。
在一个典型的配置中,计算设备包括一个或多个处理器(CPU)、输入/输出接口、网络接口和内存。
内存可能包括计算机可读介质中的非永久性存储器,随机存取存储器(RAM)和/或非易失性内存等形式,如只读存储器(ROM)或闪存(flash RAM)。内存是计算机可读介质的示例。
计算机可读介质包括永久性和非永久性、可移动和非可移动媒体可以由任何方法或技术来实现信息存储。信息可以是计算机可读指令、数据结构、程序的模块或其他数据。计算机的存储介质的例子包括,但不限于相变内存(PRAM)、静态随机存取存储器(SRAM)、动态随机存取存储器(DRAM)、其他类型的随机存取存储器(RAM)、只读存储器(ROM)、电可擦除可编程只读存储器(EEPROM)、快闪记忆体或其他内存技术、只读光盘只读存储器(CD-ROM)、数字多功能光盘(DVD)或其他光学存储、磁盒式磁带,磁带磁磁盘存储或其他磁性存储设备或任何其他非传输介质,可用于存储可以被计算设备访问的信息。按照本文中的界定,计算机可读介质不包括暂存电脑可读媒体(transitory media),如调制的数据信号和载波。
还需要说明的是,术语“包括”、“包含”或者其任何其他变体意在涵盖非排他性的包含,从而使得包括一系列要素的过程、方法、商品或者设备不仅包括那些要素,而且还包括没有明确列出的其他要素,或者是还包括为这种过程、方法、商品或者设备所固有的要素。在没有更多限制的情况下,由语句“包括一个……”限定的要素,并不排除在包括所述要素的过程、方法、商品或者设备中还存在另外的相同要素。
本领域技术人员应明白,本说明书的实施例可提供为方法、系统或计算机程序产品。因此,本说明书可采用完全硬件实施例、完全软件实施例或结合软件和硬件方面的实施例的形式。而且,本说明书可采用在一个或多个其中包含有计算机可用程序代码的计算机可用存储介质(包括但不限于磁盘存储器、CD-ROM、光学存储器等)上实施的计算机程序产品的形式。
本说明书可以在由计算机执行的计算机可执行指令的一般上下文中描述,例如程序模块。一般地,程序模块包括执行特定任务或实现特定抽象数据类型的例程、程序、对象、组件、数据结构等等。也可以在分布式计算环境中实践本说明书,在这些分布式计算环境中,由通过通信网络而被连接的远程处理设备来执行任务。在分布式计算环境中,程序模块可以位于包括存储设备在内的本地和远程计算机存储介质中。
本说明书中的各个实施例均采用递进的方式描述,各个实施例之间相同相似的部分互相参见即可,每个实施例重点说明的都是与其他实施例的不同之处。尤其,对于系统实施例而言,由于其基本相似于方法实施例,所以描述的比较简单,相关之处参见方法实施例的部分说明即可。
以上内容仅仅是对本发明结构所作的举例和说明,所属本技术领域的技术人员对所描述的具体实施例做各种各样的修改或补充或采用类似的方式替代,只要不偏离发明的结构或者超越本权利要求书所定义的范围,均应属于本发明的保护范围。
Claims (10)
1.一种Python模型的交付及部署方法,其特征在于,所述方法包括:
获取算法名及算法运行的引擎类型,通过算法装饰器注册算法入口函数;
响应于算法名及算法运行的引擎类型,调用对应的注册算法函数;
设置任务类型;任务执行时首先初始化参数、算法运行的引擎和算法对象,然后执行模型对应的算法应用,更新对应的task表记录,最后关闭数据库连接和算法引擎;
在执行模型对应的算法应用的过程中,将模型的预测过程封装成HTTP请求,通过算法装饰器拦截并运行调试,包括:响应于HTTP请求,通过反向代理服务器Nginx接收并转发至WSGI服务器网关接口Gunicorn;所述WSGI服务器网关接口Gunicorn接收并解析HTTP请求,再按照WSGI协议转发至WSGI应用Flask;所述WSGI应用Flask处理HTTP请求得到HTTP响应,并经WSGI服务器网关接口Gunicorn和反向代理服务器Nginx转发;
将调试好的模型应用Docker镜像进行部署,包括:当HTTP请求分发到模型Docker容器时,该容器内的算法应用可以接收到数据,然后运行调试好的模型,并返回HTTP响应,得到模型预测结果。
2.根据权利要求1所述的一种Python模型的交付及部署方法,其特征在于,获取算法名及算法运行的引擎类型,通过算法装饰器注册算法入口函数包括:
获取算法名name及算法运行的引擎类型engine;其中,所述算法运行的引擎类型engine包括python和spark;
所述算法装饰器还配置有register_func函数,用于注册函数并返回原函数;
响应于算法名name及算法运行的引擎类型engine的字段,调用对应的注册算法函数,得到唯一标志算法入口函数。
3.根据权利要求1所述的一种Python模型的交付及部署方法,其特征在于,所述任务类型包括同步任务类型和异步任务类型,所述异步任务包括异步进程池和异步新进程执行。
4.根据权利要求3所述的一种Python模型的交付及部署方法,其特征在于,所述同步任务类型用于执行实时的任务。
5.根据权利要求3所述的一种Python模型的交付及部署方法,其特征在于,所述异步任务类型用于执行非实时的任务;
设置任务数阈值;当任务数小于任务数阈值时,采用异步新进程执行模式;当任务数大于任务数阈值时,采用异步进程池模式。
6.根据权利要求1所述的一种Python模型的交付及部署方法,其特征在于,更新对应的task表记录包括:
将所有任务执行情况记录在sqlite数据库的task表中,task表包括标识符id、任务标识符task_id、应用名称app_name、算法名称algorithm_name、代码code、参数args、状态status、数据data、Spark应用标识spark_app_id、日志log、创建时间gmt_create、修改时间gmt_modified在内的字段。
7.根据权利要求1所述的一种Python模型的交付及部署方法,其特征在于,所述方法还包括:配置插件;
所述插件包括:
数据处理插件,用于处理包括redis、hive、mysql在内的数据;
安全插件,用于加密Python代码、加密数据文件、限制API调用次数;
和/或,
性能插件,用于http压缩、模型预热。
8.根据权利要求1所述的一种Python模型的交付及部署方法,其特征在于,所述方法还包括:采集监控数据,所述监控数据包括HTTP请求次数、请求方式、返回码和请求地址。
9.一种电子设备,包括存储器和处理器,其特征在于,所述存储器与所述处理器耦接;其中,所述存储器用于存储程序数据,所述处理器用于执行所述程序数据以实现上述权利要求1-8任一项所述的Python模型的交付及部署方法。
10.一种计算机可读存储介质,其上存储有计算机程序,其特征在于,所述程序被处理器执行时实现如权利要求1-8中任一所述的Python模型的交付及部署方法。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202311181193.0A CN117331626A (zh) | 2023-09-11 | 2023-09-11 | 一种Python模型的交付及部署方法、电子设备、介质 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202311181193.0A CN117331626A (zh) | 2023-09-11 | 2023-09-11 | 一种Python模型的交付及部署方法、电子设备、介质 |
Publications (1)
Publication Number | Publication Date |
---|---|
CN117331626A true CN117331626A (zh) | 2024-01-02 |
Family
ID=89282044
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202311181193.0A Pending CN117331626A (zh) | 2023-09-11 | 2023-09-11 | 一种Python模型的交付及部署方法、电子设备、介质 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN117331626A (zh) |
-
2023
- 2023-09-11 CN CN202311181193.0A patent/CN117331626A/zh active Pending
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN107896162B (zh) | 监控系统的部署方法、装置、计算机设备及存储介质 | |
CN107451147B (zh) | 一种kafka集群动态切换的方法和装置 | |
CN110401700B (zh) | 模型加载方法及系统、控制节点及执行节点 | |
CN108628688B (zh) | 一种消息处理方法、装置及设备 | |
CN112162915B (zh) | 一种测试数据生成方法、装置、设备及存储介质 | |
CN107357726A (zh) | 一种应用程序兼容性测试方法和装置 | |
CN117075930B (zh) | 一种计算框架管理系统 | |
CN108595234A (zh) | 应用页面切换方法、装置及设备 | |
CN114327759B (zh) | 区块链数据的处理方法及装置 | |
WO2021164368A1 (zh) | 一种容器应用启动方法、系统、装置及电子设备 | |
CN113536174A (zh) | 一种界面加载方法、装置及设备 | |
CN111338655B (zh) | 一种安装包分发方法和系统 | |
CN110427237B (zh) | 一种跨应用访问目标页面的方法、装置及电子设备 | |
CN116048977B (zh) | 一种基于数据还原的测试方法及装置 | |
CN111796864A (zh) | 一种数据校验的方法及装置 | |
CN117331626A (zh) | 一种Python模型的交付及部署方法、电子设备、介质 | |
CN116382713A (zh) | 构建应用镜像的方法、系统、设备和存储介质 | |
CN117311856A (zh) | 一种接口调用代码的生成方法及装置 | |
CN112579938B (zh) | 一种页面加载方法、装置、存储介质及电子设备 | |
CN115391185A (zh) | 一种小程序的压力测试方法、装置以及设备 | |
CN107301089B (zh) | 一种app部署及调用方法和终端 | |
CN117573359B (zh) | 一种基于异构集群的计算框架管理系统及方法 | |
CN117873535B (zh) | 一种服务路由更新方法、装置、存储介质及电子设备 | |
CN110704742A (zh) | 一种特征提取方法及装置 | |
CN117369784B (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 |