CN113791889B - 一种基于多级轮询队列控制器部署学习模型的方法 - Google Patents
一种基于多级轮询队列控制器部署学习模型的方法 Download PDFInfo
- Publication number
- CN113791889B CN113791889B CN202111366559.2A CN202111366559A CN113791889B CN 113791889 B CN113791889 B CN 113791889B CN 202111366559 A CN202111366559 A CN 202111366559A CN 113791889 B CN113791889 B CN 113791889B
- Authority
- CN
- China
- Prior art keywords
- task
- learning model
- queue
- polling
- queue controller
- 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
Links
Images
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/48—Program initiating; Program switching, e.g. by interrupt
- G06F9/4806—Task transfer initiation or dispatching
- G06F9/4843—Task transfer initiation or dispatching by program, e.g. task dispatcher, supervisor, operating system
- G06F9/4881—Scheduling strategies for dispatcher, e.g. round robin, multi-level priority queues
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F16/00—Information retrieval; Database structures therefor; File system structures therefor
- G06F16/20—Information retrieval; Database structures therefor; File system structures therefor of structured data, e.g. relational data
- G06F16/24—Querying
- G06F16/245—Query processing
- G06F16/2455—Query execution
- G06F16/24552—Database cache management
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F16/00—Information retrieval; Database structures therefor; File system structures therefor
- G06F16/20—Information retrieval; Database structures therefor; File system structures therefor of structured data, e.g. relational data
- G06F16/28—Databases characterised by their database models, e.g. relational or object models
- G06F16/284—Relational databases
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F16/00—Information retrieval; Database structures therefor; File system structures therefor
- G06F16/30—Information retrieval; Database structures therefor; File system structures therefor of unstructured textual data
- G06F16/33—Querying
- G06F16/3331—Query processing
-
- 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/50—Allocation of resources, e.g. of the central processing unit [CPU]
- G06F9/5005—Allocation of resources, e.g. of the central processing unit [CPU] to service a request
- G06F9/5027—Allocation of resources, e.g. of the central processing unit [CPU] to service a request the resource being a machine, e.g. CPUs, Servers, Terminals
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06N—COMPUTING ARRANGEMENTS BASED ON SPECIFIC COMPUTATIONAL MODELS
- G06N20/00—Machine learning
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F2209/00—Indexing scheme relating to G06F9/00
- G06F2209/50—Indexing scheme relating to G06F9/50
- G06F2209/5013—Request control
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F2209/00—Indexing scheme relating to G06F9/00
- G06F2209/50—Indexing scheme relating to G06F9/50
- G06F2209/5018—Thread allocation
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F2216/00—Indexing scheme relating to additional aspects of information retrieval not explicitly covered by G06F16/00 and subgroups
- G06F2216/03—Data mining
Landscapes
- Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- General Engineering & Computer Science (AREA)
- Databases & Information Systems (AREA)
- Software Systems (AREA)
- Physics & Mathematics (AREA)
- General Physics & Mathematics (AREA)
- Data Mining & Analysis (AREA)
- Computational Linguistics (AREA)
- Evolutionary Computation (AREA)
- Computing Systems (AREA)
- Mathematical Physics (AREA)
- Medical Informatics (AREA)
- Computer Vision & Pattern Recognition (AREA)
- Artificial Intelligence (AREA)
- Information Retrieval, Db Structures And Fs Structures Therefor (AREA)
Abstract
本发明提供一种基于多级轮询队列控制器部署学习模型的方法,包括:步骤1,系统接收用户提交的待挖掘文本,并进行任务预处理,得到任务请求信息;然后提交到多级轮询队列控制器;步骤2,多级轮询队列控制器接收任务请求信息,并采用Mysql关系型数据库和Redis缓存数据库进行存储;步骤3,多级轮询队列控制器基于任务请求信息通过多级轮询操作部署学习模型并进行数据挖掘;步骤4,对数据挖掘结果进行持久化存储和下载。本发明通过构建多级轮询队列控制器,采用轮询和多线程异步机制来限制任务执行的速度,能够解决机器学习和深度学习模型部署中广泛存在的执行速度慢和执行速度不统一的问题,最终达到用户进行较好数据挖掘体验的目的。
Description
技术领域
本发明涉及数据挖掘技术领域,具体而言,涉及一种基于多级轮询队列控制器部署学习模型的方法。
背景技术
机器学习和深度学习技术在数据挖掘中应用越来越频繁,通常我们开发的数据挖掘应用程序在后端需要多个机器学习和深度学习模型的支撑。在实际应用中,我们面临几个现状:一是模型预测的问题,机器学习和深度学习模型进行预测需要调用的硬件资源和所需的时间大不一样,有的需要GPU资源,有的需要CPU资源,有的预测时间长,有的预测时间短;二是对用户来说,由于数据挖掘任务包括实体识别和关系抽取等通常比较耗时,用户不需要实时等待程序的结束;三是高并发的问题,应用程序在被多人同时使用的时候,面临高并发的可能,这个时候需要对用户请求进行限流。为了解决模型、用户和并发三个方面的问题,在我们的数据挖掘应用程序研发中,需要构建一种有效的多级轮询队列控制器来部署这些机器学习和深度学习模型。
在人工智能时代,机器学习和深度学习技术在数据挖掘中的应用越来越普遍,通常面向每个任务都需要一个训练的专用模型,例如命名实体识别、关系抽取、事件抽取和序列标注等任务。下面简要介绍其中的一些任务和重要的模型。命名实体识别(Named EntityRecognition,NER)任务是从异构文本中抽取出地名、机构和人名等短语,其中比较有代表性的模型是BILSTM-CRF、LSTM-CNNs、LSTM-CNNs-CRF等;关系抽取(Entity RelationExtraction,RE)是从异构文本中抽取出预先定义的实体关系,其中比较有代表性的模型包括BLSTM+Attention和DenseCNN等。
随着移动互联网技术的发展,前端应用程序逐渐向轻量级化发展,传播越来越快,点击量越来越大。高并发是指系统能够同时处理非常多的请求,支持高并发的系统通常具备响应时间小、吞吐量达、延迟低等特点。限流机制是高并发系统开发中的重要手段之一,目前经常使用的限流机制有两种:漏桶机制和令牌桶机制。简单来说,漏桶(Leaky Bucket)机制是请求能以任意速度入桶,但只能匀速出桶,主要用途是保护下游应用;令牌桶(TokenBucket)机制是控制请求入桶速度,但是不管出桶速度,主要用途是保护应用自身。对机器学习和深度学习模型来说,这两种机制或多或少都有些不足:由于模型预测时间或长或短,漏桶机制下的匀速出通策略就不适合;同样在模型预测时间较长的情况下,令牌桶机制中的令牌消耗速度就小于产生的速度,桶中的令牌数量最后就会多到填满整个桶,新增的令牌也就会从桶中溢出,造成请求丢失的情况。
发明内容
本发明旨在提供一种基于多级轮询队列控制器部署学习模型的方法,以解决机器学习和深度学习模型部署中广泛存在的执行速度慢和执行速度不统一的问题。
本发明提供的一种基于多级轮询队列控制器部署学习模型的方法,包括如下步骤:
步骤1,系统接收用户提交的待挖掘文本,并对待挖掘文本进行任务预处理,得到任务请求信息;然后将得到的任务请求信息提交到多级轮询队列控制器;
步骤2,多级轮询队列控制器接收到任务请求信息,并采用Mysql关系型数据库和Redis缓存数据库对任务请求信息进行存储;
步骤3,多级轮询队列控制器基于Mysql关系型数据库和Redis缓存数据库中的任务请求信息通过多级轮询操作部署学习模型并进行数据挖掘;
步骤4,对数据挖掘结果进行持久化存储和下载。
进一步的,步骤1中所述任务预处理包括文本预处理和标识符预处理;其中:
所述文本预处理是将用户提交的待挖掘文本按照句子进行分拆,并形成待挖掘JSON字符串;
所述标识符预处理是将此次挖掘任务设置一个任务唯一标识符;
待任务预处理完成后,将包含待挖掘JSON字符串和任务唯一标识符的任务请求信息提交到多级轮询队列控制器。
进一步的,步骤2包括如下子步骤:
步骤2.1,多级轮询队列控制器将任务请求信息存储到Mysql数据库中,用于持久化存储;具体为:
在Mysql数据库设计了三个表,分别是:任务请求信息表、任务响应详情表和任务响应信息表;将任务请求信息存储到任务请求信息表中;
步骤2.2,多级轮询队列控制器将任务请求信息存储到Redis缓存数据库中,用于支持高并发;具体为:在Redis缓存数据库设计了两个队列,分别是:待执行队列和正执行队列;将任务请求信息存储到待执行队列中,待执行队列由任务组成,每个任务包含一个键-值字符串。
进一步的,步骤3包括如下子步骤:
步骤3.1,第一级轮询:轮询目标为待执行队列和正执行队列,将满足要求的任务从待执行队列转移到正执行队列;
步骤3.2,第二级轮询:轮询目标为正执行队列,调用学习模型API运行满足要求的任务;
步骤3.3,第三级轮询:轮询目标为正执行队列,将不满足要求的任务进行持久化存储和删除操作。
进一步的,步骤3.1中第一级轮询的具体操作包括:
步骤3.1.1,多级轮询队列控制器查询正执行队列,确定每个学习模型API被同时调用的任务数量现值CurrentTaskNum,如果某个学习模型API被同时调用的任务数量现值CurrentTaskNum小于任务数量最大值MaxTaskNum,则计算该学习模型API的任务数量剩余值RemainTaskNum,计算公式如下:
RemainTaskNum=MaxTaskNum-CurrentTaskNum;
多级轮询队列控制器将该学习模型API及任务数量剩余值RemainTaskNum记录下来;
步骤3.1.2,多级轮询队列控制器查询待执行队列,如果待执行队列中存在该学习模型API,则将包含该学习模型API的任务从待执行队列中转移至正执行队列,转移数量小于或等于任务数量剩余值RemainTaskNum。
进一步的,步骤3.2中第二次轮询的具体操作包括:
步骤3.2.1,正执行队列中任务状态有两种:Y和N,当任务状态为Y时表示任务正在执行,当任务状态为N时表示任务未执行或任务执行失败;多级轮询队列控制器查询出正执行队列中任务状态为N的任务,对任务状态为N的任务,先判断任务执行失败次数是否小于预设值,如果任务执行失败次数小于预设值,则多级轮询队列控制器调用学习模型API,并修改该任务的键-值字符串,包括将任务状态从N修改为Y;
步骤3.2.2,学习模型API从该任务的键-值字符串中解析,并对待挖掘JSON字符串进行处理;处理完成后,学习模型API生成已挖掘JSON字符串,返回给多级轮询队列控制器。
进一步的,步骤3.3中第三级轮询的具体操作包括:
首先,多级轮询队列控制器查询出任务状态为N的任务,对任务状态为N的任务,先判断任务执行失败次数是否等于预设值,如果任务执行失败次数等于预设值,则将这些任务的键-值字符串存储到Mysql数据库的任务响应信息表中,然后从正执行队列中删除这些任务。
进一步的,所述学习模型API由学习模型、Flask和Gunicorn组成,学习模型API的开发流程是:
步骤a,在Pytorch、Keras和/或TensorFlow框架上进行训练、验证和发布学习模型;
步骤b,将基于Flask框架开发的web应用程序集成学习模型中并提供可快速响应请求的API;
步骤c,通过部署Gunicorn容器实现学习模型的并发访问。
进一步的,所述数据挖掘结果包括学习模型API有返回结果和无返回结果两种情况,则步骤4包括如下子步骤:
步骤4.1,若学习模型API有返回结果;首先,多级轮询队列控制器收到学习模型API返回的已挖掘JSON字符串以后,将该已挖掘JSON字符串与任务的键-值字符串一并存储到Mysql数据库中的任务响应详情表和任务响应信息表中,并提供已挖掘JSON字符串的查看和下载;然后,多级轮询队列控制器修改正执行队列,将该已挖掘JSON字符串对应的任务从正执行队列中删除;
步骤4.2,若学习模型API无返回结果,则多级轮询队列控制器修改任务的键-值字符串,包括:将任务状态从Y修改为N,并将重试次数加一。
综上所述,由于采用了上述技术方案,本发明的有益效果是:
本发明通过构建多级轮询队列控制器,采用轮询和多线程异步机制来限制任务执行的速度,能够解决机器学习和深度学习模型部署中广泛存在的执行速度慢和执行速度不统一的问题,最终达到用户进行较好数据挖掘体验的目的。
附图说明
为了更清楚地说明本发明实施例的技术方案,下面将对实施例中的附图作简单地介绍,应当理解,以下附图仅示出了本发明的某些实施例,因此不应被看作是对范围的限定,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图获得其他相关的附图。
图1为本发明实施例中一种基于多级轮询队列控制器部署学习模型的方法的请求示意图;
图2为本发明实施例中一种基于多级轮询队列控制器部署学习模型的方法的总体流程图;
图3为本发明实施例中一种基于多级轮询队列控制器部署学习模型的方法的详细流程图;
图4为本发明实施例中多个学习模型API多线程异步调用的网络结构图;
图5为本发明实施例实现一种基于多级轮询队列控制器部署学习模型的方法后的平台效果图。
具体实施方式
为使本发明实施例的目的、技术方案和优点更加清楚,下面将结合本发明实施例中的附图,对本发明实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例是本发明一部分实施例,而不是全部的实施例。通常在此处附图中描述和示出的本发明实施例的组件可以以各种不同的配置来布置和设计。
因此,以下对在附图中提供的本发明的实施例的详细描述并非旨在限制要求保护的本发明的范围,而是仅仅表示本发明的选定实施例。基于本发明中的实施例,本领域普通技术人员在没有做出创造性劳动前提下所获得的所有其他实施例,都属于本发明保护的范围。
实施例
如图1所示,本发明主要解决机器学习和深度学习模型部署中广泛存在的执行速度慢和执行速度不统一的问题,通过构建多级轮询队列控制器,采用轮询和多线程异步机制来限制任务执行的速度,最终达到用户进行较好数据挖掘体验的目的。由此,如图2、图3所示,本实施例提出一种基于多级轮询队列控制器部署学习模型的方法,包括如下步骤:
步骤1,系统接收用户提交的待挖掘文本,并对待挖掘文本进行任务预处理,得到任务请求信息;然后将得到的任务请求信息提交到多级轮询队列控制器;
所述任务预处理包括文本预处理和标识符预处理;其中:
所述文本预处理是将用户提交的待挖掘文本按照句子进行分拆,并形成待挖掘JSON字符串;
所述标识符预处理是将此次挖掘任务设置一个任务唯一标识符;
待任务预处理完成后,将包含待挖掘JSON字符串和任务唯一标识符的任务请求信息提交到多级轮询队列控制器。在一些应用中,所述任务请求信息还可以包含任务类型、使用人员和挖掘时间等信息。
所述待挖掘JSON字符串示例:{"inputstring":[{"content":"The graphenecapacitor has high conductivity, high toughness, high strength, largespecific surface area, high transmission speed and high efficiency."},{"content":"The negative electrode has active material layer and the currentcollector layer having improved bonding strength, excellent conductivity, andreduced internal resistance, and improved supercapacitance"}]}。
步骤2,多级轮询队列控制器接收到任务请求信息,并采用Mysql关系型数据库和Redis缓存数据库对任务请求信息进行存储;
Mysql是使用最广泛的关系型数据库之一,主要用于数据的持久化存储,支持SQL查询语言,是Web应用程序开发最常见的中间件。
Redis是一种NoSQL数据库,支持内存运行、分布式和高并发等操作,用于解决关系型数据库常见的磁盘读写速度慢等缺陷,Redis支持常见的数据结构类型,包括string、list、set等。
步骤2包括如下子步骤:
步骤2.1,多级轮询队列控制器将任务请求信息存储到Mysql数据库中,用于持久化存储。具体为:
在Mysql数据库设计了三个表,分别是:任务请求信息表(ainno_request)、任务响应详情表(ainno_response)和任务响应信息表(ainno_detail);将任务请求信息存储到任务请求信息表(ainno_request)中,该任务请求信息表(ainno_request)的字段包括:任务类型(ai_code)、任务唯一标识符(res_code)、学习模型API(api_code)、待挖掘JSON字符串(request)、用户ID(user_id)、任务创建时间(create_time)。
步骤2.2,多级轮询队列控制器将任务请求信息存储到Redis缓存数据库中,用于支持高并发。具体地:
在Redis缓存数据库设计了两个队列,分别是:待执行队列和正执行队列;将任务请求信息存储到待执行队列中,待执行队列由任务组成,每个任务包含一个键-值(Key-Value)字符串,其中,键(Key)的字段包括:队列标识符(flag,分别为execution和wait)、学习模型API(api_code)、用户ID(user_id)、任务唯一标识符(res_code),其存储格式为:flag:api_code:user_id:res_code,存储格式示例:EXECUTE:Ai06:18:Ai0620210917102616181134d8dad8;Value的存储字段包括:待挖掘JSON字符串(request)、重试次数(retryCount)、状态(status)、学习模型API(api_code)、自定义任务名称(note),其存储格式为:request:retryCount:status:api_code:note,存储格式示例:{"inputstring":[{"content":"The graphene capacitor has high conductivity, hightoughness, high strength, large specific surface area, high transmissionspeed and high efficiency."},{"content":"The negative electrode has activematerial layer and the current collector layer having improved bondingstrength, excellent conductivity, and reduced internal resistance, andimproved supercapacitance"}]}:1:1: Ai0120210917141206ccdc02044882:技术功效1。
步骤3,多级轮询队列控制器基于Mysql关系型数据库和Redis缓存数据库中的任务请求信息通过多级轮询操作部署学习模型并进行数据挖掘;在实际应用中,学习模型通常分布在框架、软件和硬件都不统一的环境中,因此我们通过HTTP接口调用的方式进行学习模型的部署,并使用多线程异步机制实现多任务执行,能够高效率地利用不同模型框架中的硬件资源,例如CPU和GPU等,如图4所示,其中,使用了Gunicorn和Flask等中间件,Gunicorn是一个基于Python简易的HTTP服务器,可以通过创建多个gunicorn worker,实现并行处理请求;Flask是一个基于Python的微型web框架,可用于快速开发响应请求的Web服务。
步骤3包括如下子步骤:
步骤3.1,第一级轮询:轮询目标为待执行队列和正执行队列,将满足要求的任务从待执行队列转移到正执行队列。其中,队列标识符(flag)用于多级轮询队列控制器查询队列时识别队列为待执行队列或正执行队列。例如:当队列标识符(flag)为execution时表示该队列是正执行队列,当队列标识符(flag)为wait时表示该队列是待执行队列。待执行队列的任务数量不设限值,正执行队列的任务数量限值设置为CategoryNum×MaxTaskNum个,其中CategoryNum是学习模型API数量,MaxTaskNum为每个学习模型API支持被同时调用的任务数量最大值。第一级轮询的具体操作包括:
步骤3.1.1,多级轮询队列控制器查询正执行队列,确定每个学习模型API被同时调用的任务数量现值CurrentTaskNum,如果某个学习模型API被同时调用的任务数量现值CurrentTaskNum小于任务数量最大值MaxTaskNum,则计算该学习模型API的任务数量剩余值RemainTaskNum,计算公式如下:
RemainTaskNum=MaxTaskNum-CurrentTaskNum;
多级轮询队列控制器将该学习模型API及任务数量剩余值RemainTaskNum记录下来;
步骤3.1.2,多级轮询队列控制器查询待执行队列,如果待执行队列中存在该学习模型API,则将包含该学习模型API的任务从待执行队列中转移至正执行队列,转移数量小于或等于任务数量剩余值RemainTaskNum。
步骤3.2,第二级轮询:轮询目标为正执行队列,调用学习模型API运行满足要求的任务。其中,。第二次轮询的具体操作包括:
步骤3.2.1,正执行队列中任务状态(status)有两种:Y和N,当任务状态为Y时表示任务正在执行,当任务状态为N时表示任务未执行或任务执行失败;多级轮询队列控制器查询出正执行队列中任务状态为N的任务,对任务状态为N的任务,先判断任务执行失败次数是否小于预设值(例如3次),如果任务执行失败次数小于预设值,则多级轮询队列控制器调用学习模型API(api_code),并修改该任务的键-值(Key-Value)字符串修改,包括将任务状态(status)从N修改为Y;
步骤3.2.2,学习模型API(api_code)从该任务的键-值(Key-Value)字符串中解析,并对待挖掘JSON字符串(request)进行处理;处理完成后,学习模型API(api_code)生成已挖掘JSON字符串(response),返回给多级轮询队列控制器。其中,学习模型API(api_code)由学习模型、Flask和Gunicorn组成,学习模型API(api_code)的开发流程是:
步骤a,在Pytorch、Keras和/或TensorFlow框架上进行训练、验证和发布学习模型;
步骤b,将基于Flask框架开发的web应用程序集成学习模型中并提供可快速响应请求的API;
步骤c,通过部署Gunicorn容器实现学习模型的并发访问。需要说明的是所述Pytorch、Keras和/或TensorFlow框架只是本实施例例举的常用学习模型框架,不应以此为限定。
步骤3.3,第三级轮询:轮询目标为正执行队列,将不满足要求的任务进行持久化存储和删除操作。第三级轮询的具体操作包括:
首先,多级轮询队列控制器查询出任务状态为N的任务,对任务状态为N的任务,先判断任务执行失败次数是否等于预设值(例如3次),如果任务执行失败次数等于预设值,则将这些任务的键-值(key-value)字符串存储到Mysql数据库的任务响应信息表(ainno_detail)中,然后从正执行队列中删除这些任务。其中,任务响应信息表(ainno_detail)主要用于存储任务执行结果,设计的字段包括学习模型API(api_code)、用户ID(user_id)、任务唯一标识符(res_code)、重试次数(retryCount)、任务状态(status)、自定义任务名称(note)、创建时间(create_time)等。
步骤4,对数据挖掘结果进行持久化存储和下载。所述数据挖掘结果包括学习模型API(api_code)有返回结果和无返回结果两种情况,因此需要针对学习模型API(api_code)有返回结果和无返回结果两种情况进行相应的处理,具体包括:
步骤4.1,若学习模型API(api_code)有返回结果;
首先,多级轮询队列控制器收到学习模型API(api_code)返回的已挖掘JSON字符串(response)以后,将该已挖掘JSON字符串(response)与任务的键-值(key-value)字符串一并存储到Mysql数据库中的任务响应详情表(ainno_response)和任务响应信息表(ainno_detail)中。任务响应详情表(ainno_response)主要用于存储学习模型API返回的已挖掘JSON字符串(response),并提供已挖掘JSON字符串(response)的查看和下载,如图5所示,因此设计的字段包括任务唯一标识符(res_code)、已挖掘JSON字符串(response);
然后,多级轮询队列控制器修改正执行队列,将该已挖掘JSON字符串(response)对应的任务从正执行队列中删除。
步骤4.2,若学习模型API(api_code)无返回结果,则多级轮询队列控制器修改任务的键-值(Key-Value)字符串,包括:将任务状态(status)从Y修改为N,并将重试次数(retryCount)加一。
以上所述仅为本发明的优选实施例而已,并不用于限制本发明,对于本领域的技术人员来说,本发明可以有各种更改和变化。凡在本发明的精神和原则之内,所作的任何修改、等同替换、改进等,均应包含在本发明的保护范围之内。
Claims (5)
1.一种基于多级轮询队列控制器部署学习模型的方法,其特征在于,包括如下步骤:
步骤1,系统接收用户提交的待挖掘文本,并对待挖掘文本进行任务预处理,得到任务请求信息;然后将得到的任务请求信息提交到多级轮询队列控制器;
步骤2,多级轮询队列控制器接收到任务请求信息,并采用Mysql关系型数据库和Redis缓存数据库对任务请求信息进行存储;
步骤3,多级轮询队列控制器基于Mysql关系型数据库和Redis缓存数据库中的任务请求信息通过多级轮询操作部署学习模型并进行数据挖掘;
步骤4,对数据挖掘结果进行持久化存储和下载;
步骤1中所述任务预处理包括文本预处理和标识符预处理;其中:
所述文本预处理是将用户提交的待挖掘文本按照句子进行分拆,并形成待挖掘JSON字符串;
所述标识符预处理是将此次挖掘任务设置一个任务唯一标识符;
待任务预处理完成后,将包含待挖掘JSON字符串和任务唯一标识符的任务请求信息提交到多级轮询队列控制器;
步骤2包括如下子步骤:
步骤2.1,多级轮询队列控制器将任务请求信息存储到Mysql数据库中,用于持久化存储;具体为:
在Mysql数据库设计了三个表,分别是:任务请求信息表、任务响应详情表和任务响应信息表;将任务请求信息存储到任务请求信息表中;
步骤2.2,多级轮询队列控制器将任务请求信息存储到Redis缓存数据库中,用于支持高并发;具体为:在Redis缓存数据库设计了两个队列,分别是:待执行队列和正执行队列;将任务请求信息存储到待执行队列中,待执行队列由任务组成,每个任务包含一个键-值字符串;
步骤3包括如下子步骤:
步骤3.1,第一级轮询:轮询目标为待执行队列和正执行队列,将满足要求的任务从待执行队列转移到正执行队列;
步骤3.2,第二级轮询:轮询目标为正执行队列,调用学习模型API运行满足要求的任务;
步骤3.3,第三级轮询:轮询目标为正执行队列,将不满足要求的任务进行持久化存储和删除操作;
步骤3.1中第一级轮询的具体操作包括:
步骤3.1.1,多级轮询队列控制器查询正执行队列,确定每个学习模型API被同时调用的任务数量现值CurrentTaskNum,如果某个学习模型API被同时调用的任务数量现值CurrentTaskNum小于任务数量最大值MaxTaskNum,则计算该学习模型API的任务数量剩余值RemainTaskNum,计算公式如下:
RemainTaskNum=MaxTaskNum-CurrentTaskNum;
多级轮询队列控制器将该学习模型API及任务数量剩余值RemainTaskNum记录下来;
步骤3.1.2,多级轮询队列控制器查询待执行队列,如果待执行队列中存在该学习模型API,则将包含该学习模型API的任务从待执行队列中转移至正执行队列,转移数量小于或等于任务数量剩余值RemainTaskNum。
2.根据权利要求1所述的基于多级轮询队列控制器部署学习模型的方法,其特征在于,步骤3.2中第二次轮询的具体操作包括:
步骤3.2.1,正执行队列中任务状态有两种:Y和N,当任务状态为Y时表示任务正在执行,当任务状态为N时表示任务未执行或任务执行失败;多级轮询队列控制器查询出正执行队列中任务状态为N的任务,对任务状态为N的任务,先判断任务执行失败次数是否小于预设值,如果任务执行失败次数小于预设值,则多级轮询队列控制器调用学习模型API,并修改该任务的键-值字符串,包括将任务状态从N修改为Y;
步骤3.2.2,学习模型API从该任务的键-值字符串中解析,并对待挖掘JSON字符串进行处理;处理完成后,学习模型API生成已挖掘JSON字符串,返回给多级轮询队列控制器。
3.根据权利要求2所述的基于多级轮询队列控制器部署学习模型的方法,其特征在于,步骤3.3中第三级轮询的具体操作包括:
首先,多级轮询队列控制器查询出任务状态为N的任务,对任务状态为N的任务,先判断任务执行失败次数是否等于预设值,如果任务执行失败次数等于预设值,则将这些任务的键-值字符串存储到Mysql数据库的任务响应信息表中,然后从正执行队列中删除这些任务。
4.根据权利要求1-3任一项所述的基于多级轮询队列控制器部署学习模型的方法,其特征在于,所述学习模型API由学习模型、Flask和Gunicorn组成,学习模型API的开发流程是:
步骤a,在Pytorch、Keras和/或TensorFlow框架上进行训练、验证和发布学习模型;
步骤b,将基于Flask框架开发的web应用程序集成学习模型中并提供可快速响应请求的API;
步骤c,通过部署Gunicorn容器实现学习模型的并发访问。
5.根据权利要求4所述的基于多级轮询队列控制器部署学习模型的方法,其特征在于,所述数据挖掘结果包括学习模型API有返回结果和无返回结果两种情况,则步骤4包括如下子步骤:
步骤4.1,若学习模型API有返回结果;首先,多级轮询队列控制器收到学习模型API返回的已挖掘JSON字符串以后,将该已挖掘JSON字符串与任务的键-值字符串一并存储到Mysql数据库中的任务响应详情表和任务响应信息表中,并提供已挖掘JSON字符串的查看和下载;然后,多级轮询队列控制器修改正执行队列,将该已挖掘JSON字符串对应的任务从正执行队列中删除;
步骤4.2,若学习模型API无返回结果,则多级轮询队列控制器修改任务的键-值字符串,包括:将任务状态从Y修改为N,并将重试次数加一。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202111366559.2A CN113791889B (zh) | 2021-11-18 | 2021-11-18 | 一种基于多级轮询队列控制器部署学习模型的方法 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202111366559.2A CN113791889B (zh) | 2021-11-18 | 2021-11-18 | 一种基于多级轮询队列控制器部署学习模型的方法 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN113791889A CN113791889A (zh) | 2021-12-14 |
CN113791889B true CN113791889B (zh) | 2022-03-11 |
Family
ID=78955386
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202111366559.2A Active CN113791889B (zh) | 2021-11-18 | 2021-11-18 | 一种基于多级轮询队列控制器部署学习模型的方法 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN113791889B (zh) |
Families Citing this family (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN117369996A (zh) * | 2023-09-25 | 2024-01-09 | 深圳国匠云职业教育科技有限公司 | 数据处理方法、电子设备及计算机可读存储介质 |
Citations (7)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US8780720B2 (en) * | 2010-01-11 | 2014-07-15 | Venturi Ip Llc | Radio access network load and condition aware traffic shaping control |
CN109726806A (zh) * | 2017-10-30 | 2019-05-07 | 上海寒武纪信息科技有限公司 | 信息处理方法及终端设备 |
CN109814997A (zh) * | 2019-01-18 | 2019-05-28 | 创新奇智(广州)科技有限公司 | 一种分布式自主均衡人工智能任务调度方法及系统 |
CN110347899A (zh) * | 2019-07-04 | 2019-10-18 | 北京熵简科技有限公司 | 基于事件驱动模型的分布式互联网数据采集系统与方法 |
CN112256939A (zh) * | 2020-09-17 | 2021-01-22 | 青岛科技大学 | 一种针对化工领域的文本实体关系抽取方法 |
CN112685165A (zh) * | 2021-01-08 | 2021-04-20 | 北京理工大学 | 一种基于联合强化学习策略的多目标云工作流调度方法 |
CN112948081A (zh) * | 2021-02-26 | 2021-06-11 | 北京百度网讯科技有限公司 | 延时处理任务的方法、装置、设备以及存储介质 |
Family Cites Families (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN112000350B (zh) * | 2020-07-29 | 2023-06-13 | 新华三大数据技术有限公司 | 一种动态规则更新方法、装置及存储介质 |
-
2021
- 2021-11-18 CN CN202111366559.2A patent/CN113791889B/zh active Active
Patent Citations (7)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US8780720B2 (en) * | 2010-01-11 | 2014-07-15 | Venturi Ip Llc | Radio access network load and condition aware traffic shaping control |
CN109726806A (zh) * | 2017-10-30 | 2019-05-07 | 上海寒武纪信息科技有限公司 | 信息处理方法及终端设备 |
CN109814997A (zh) * | 2019-01-18 | 2019-05-28 | 创新奇智(广州)科技有限公司 | 一种分布式自主均衡人工智能任务调度方法及系统 |
CN110347899A (zh) * | 2019-07-04 | 2019-10-18 | 北京熵简科技有限公司 | 基于事件驱动模型的分布式互联网数据采集系统与方法 |
CN112256939A (zh) * | 2020-09-17 | 2021-01-22 | 青岛科技大学 | 一种针对化工领域的文本实体关系抽取方法 |
CN112685165A (zh) * | 2021-01-08 | 2021-04-20 | 北京理工大学 | 一种基于联合强化学习策略的多目标云工作流调度方法 |
CN112948081A (zh) * | 2021-02-26 | 2021-06-11 | 北京百度网讯科技有限公司 | 延时处理任务的方法、装置、设备以及存储介质 |
Non-Patent Citations (2)
Title |
---|
"A Geolocation Database Middleware Sublayer for Minimizing Secondary User Waiting Times in TV White Space Spectrum Allocation";George Atta-Boateng;《Wireless Personal Communications》;20191017;第111卷(第1期);第97-109页 * |
"面向多场景的大数据集成存储与治理系统的设计与实现";王园;《中国优秀硕士学位论文全文数据库 信息科技辑》;20210515(第05期);第I138-656页 * |
Also Published As
Publication number | Publication date |
---|---|
CN113791889A (zh) | 2021-12-14 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
US11422853B2 (en) | Dynamic tree determination for data processing | |
US9996593B1 (en) | Parallel processing framework | |
Srinivasan et al. | Performance of B-tree concurrency control algorithms | |
US8484638B2 (en) | Infrastructure for the automation of the assembly of schema maintenance scripts | |
US20090260011A1 (en) | Command line transactions | |
US10204125B2 (en) | Method, apparatus, and application platform for updating application object attribute | |
US11269692B2 (en) | Efficient sequencer for multiple concurrently-executing threads of execution | |
US20240061712A1 (en) | Method, apparatus, and system for creating training task on ai training platform, and medium | |
US20190042149A1 (en) | Writing composite objects to a data store | |
CN113791889B (zh) | 一种基于多级轮询队列控制器部署学习模型的方法 | |
US20230401214A1 (en) | Graph database and methods with improved functionality | |
US10997158B2 (en) | Techniques for updating big data tables using snapshot isolation | |
CN107220275A (zh) | 数据库句柄处理方法、装置和计算机设备 | |
US20210365406A1 (en) | Method and apparatus for processing snapshot, device, medium and product | |
CN106656552A (zh) | 一种数据平台系统的扩展方法、系统及电子设备 | |
CN113407343A (zh) | 一种基于资源分配的业务处理方法、装置及设备 | |
CN113051279A (zh) | 数据消息的存储方法、存储装置、电子设备及存储介质 | |
CN109408212B (zh) | 任务调度组件构造方法、装置及存储介质、服务器 | |
CN115080114B (zh) | 应用程序的移植处理方法、装置和介质 | |
Osman et al. | QuePED: Revisiting queueing networks for the performance evaluation of database designs | |
CN112162840B (zh) | 一种基于中断重入机制的协程处理及管理方法 | |
US11080086B1 (en) | Reactive transaction management | |
US20090064141A1 (en) | Efficient utilization of transactions in computing tasks | |
CN113032118A (zh) | 用于计算机应用程序的异步操作处理方法和相应的系统 | |
KR101824084B1 (ko) | 클라우드 컴퓨팅 기반의 경영분석 서비스 시스템에서 다양한 분석모델에 적용가능한 데이터 처리방법 |
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 |