CN117252750A - 医疗机器人图像算法部署方法、调度方法、装置及系统 - Google Patents
医疗机器人图像算法部署方法、调度方法、装置及系统 Download PDFInfo
- Publication number
- CN117252750A CN117252750A CN202311155512.0A CN202311155512A CN117252750A CN 117252750 A CN117252750 A CN 117252750A CN 202311155512 A CN202311155512 A CN 202311155512A CN 117252750 A CN117252750 A CN 117252750A
- Authority
- CN
- China
- Prior art keywords
- algorithm
- execution
- image
- information
- module
- 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
- 238000004422 calculation algorithm Methods 0.000 title claims abstract description 840
- 238000000034 method Methods 0.000 title claims abstract description 73
- 238000011161 development Methods 0.000 claims abstract description 23
- 238000005516 engineering process Methods 0.000 claims abstract description 20
- 230000008569 process Effects 0.000 claims description 21
- 238000010276 construction Methods 0.000 claims description 18
- 238000012795 verification Methods 0.000 claims description 6
- 230000002035 prolonged effect Effects 0.000 claims description 5
- 230000003993 interaction Effects 0.000 claims description 3
- 230000008878 coupling Effects 0.000 abstract description 2
- 238000010168 coupling process Methods 0.000 abstract description 2
- 238000005859 coupling reaction Methods 0.000 abstract description 2
- 230000006870 function Effects 0.000 description 8
- 238000010586 diagram Methods 0.000 description 7
- 238000012545 processing Methods 0.000 description 4
- 230000009471 action Effects 0.000 description 3
- 238000013135 deep learning Methods 0.000 description 3
- 238000002955 isolation Methods 0.000 description 3
- 230000005540 biological transmission Effects 0.000 description 2
- 239000012141 concentrate Substances 0.000 description 2
- 238000012546 transfer Methods 0.000 description 2
- 230000006978 adaptation Effects 0.000 description 1
- 230000009286 beneficial effect Effects 0.000 description 1
- 238000004891 communication Methods 0.000 description 1
- 238000004590 computer program Methods 0.000 description 1
- 239000000470 constituent Substances 0.000 description 1
- 230000006378 damage Effects 0.000 description 1
- 230000007547 defect Effects 0.000 description 1
- 238000001514 detection method Methods 0.000 description 1
- 238000007599 discharging Methods 0.000 description 1
- 235000003642 hunger Nutrition 0.000 description 1
- 239000003999 initiator Substances 0.000 description 1
- 230000010354 integration Effects 0.000 description 1
- 238000012986 modification Methods 0.000 description 1
- 230000004048 modification Effects 0.000 description 1
- 238000012544 monitoring process Methods 0.000 description 1
- 230000003287 optical effect Effects 0.000 description 1
- 238000005192 partition Methods 0.000 description 1
- 230000004044 response Effects 0.000 description 1
- 230000037351 starvation Effects 0.000 description 1
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06T—IMAGE DATA PROCESSING OR GENERATION, IN GENERAL
- G06T1/00—General purpose image data processing
- G06T1/20—Processor architectures; Processor configuration, e.g. pipelining
-
- 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
- G16—INFORMATION AND COMMUNICATION TECHNOLOGY [ICT] SPECIALLY ADAPTED FOR SPECIFIC APPLICATION FIELDS
- G16H—HEALTHCARE INFORMATICS, i.e. INFORMATION AND COMMUNICATION TECHNOLOGY [ICT] SPECIALLY ADAPTED FOR THE HANDLING OR PROCESSING OF MEDICAL OR HEALTHCARE DATA
- G16H30/00—ICT specially adapted for the handling or processing of medical images
Landscapes
- Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- Health & Medical Sciences (AREA)
- General Physics & Mathematics (AREA)
- Software Systems (AREA)
- Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- Nuclear Medicine, Radiotherapy & Molecular Imaging (AREA)
- Radiology & Medical Imaging (AREA)
- Epidemiology (AREA)
- General Health & Medical Sciences (AREA)
- Medical Informatics (AREA)
- Primary Health Care (AREA)
- Public Health (AREA)
- Information Retrieval, Db Structures And Fs Structures Therefor (AREA)
Abstract
本发明公开了一种医疗机器人图像算法部署方法、调度方法、装置及系统,部署方法包括:预先使用编程语言完成图像算法的开发,得到图像算法执行程序;通过dockerfile的方式将图像算法执行程序构建成算法镜像文件;为算法镜像文件关联设置算法信息,算法信息至少包括具有唯一性的算法名称;将算法镜像文件及其相关联的算法信息通过协议接口发送至医疗机器人系统预建立的算法管理模块;算法管理模块将算法镜像文件保存在存储模块的对象存储服务器中,并将算法信息保存在存储模块的关系型数据库中。本发明提供算法部署接口来解决业务与算法的代码耦合问题,并通过容器技术解决算法之间环境冲突的问题。
Description
技术领域
本发明涉及医疗智能系统集成领域,尤其涉及一种医疗机器人图像算法部署方法、调度方法、装置及系统。
背景技术
将图像算法部署到医疗机器人中时,需要使用医疗机器人的开发语言来实现图像算法,并在机器人软件中直接引入算法代码;对于算法的调度也完全由机器人软件负责,算法的代码程序和机器人软件强耦合在一起往往会发生不兼容的问题。
并且,随着需要开发的图像算法的数量增多,在部署多个功能算法时,还可能出现算法要求的执行环境不一致的问题。当前采用深度学习算法作为开发图像算法的工具,这样的方案存在的缺陷至少包括部署效率低下和无法很好解决算法执行环境冲突问题这两个方面。
此外,深度学习算法对硬件要求较高,机器人软件中引入算法代码并执行会使机器人软件对机器配置的要求变高。
以上背景技术内容的公开仅用于辅助理解本发明的发明构思及技术方案,其并不必然属于本专利申请的现有技术,也不必然会给出技术教导;在没有明确的证据表明上述内容在本专利申请的申请日之前已经公开的情况下,上述背景技术不应当用于评价本申请的新颖性和创造性。
发明内容
本发明的目的是提供改进的医疗机器人图像算法部署方法和调度方法,通过算法和业务层面实现代码解耦,提高算法部署效率,进而降低算法调度难度。
为达到上述目的,本发明采用的技术方案如下:
一种医疗机器人图像算法部署方法,包括以下步骤:
预先使用编程语言完成图像算法的开发,得到图像算法执行程序;
通过dockerfile的方式将图像算法执行程序构建成算法镜像文件,其中,通过容器技术为所述算法镜像文件配置独立的执行环境;
为所述算法镜像文件关联设置算法信息,所述算法信息至少包括具有唯一性的算法名称;
将所述算法镜像文件及其相关联的算法信息通过协议接口发送至医疗机器人系统预建立的算法管理模块;
所述算法管理模块将所述算法镜像文件保存在能够与所述算法管理模块进行数据交互的存储模块中,并将所述算法信息保存在所述存储模块中。
进一步地,承前所述的任一技术方案或多个技术方案的组合,通过以下方式构建算法镜像文件:
建立算法数据文件,所述算法数据文件包括算法权重参数;
将所述算法数据文件和所述图像算法执行程序放入算法镜像构建目录中,并在该目录下编写dockerfile,其文件内容包括算法需要的基础环境和/或算法执行环境需要的程序或者工具包;
执行算法镜像生成脚本,使得所述算法镜像生成脚本根据dockerfile生成环境镜像,并将所述算法镜像构建目录下的所述算法数据文件和所述图像算法执行程序复制到所述环境镜像中,得到包括所述图像算法执行程序和执行环境的算法镜像;
所述算法镜像生成脚本将所述算法镜像保存为压缩包类型的算法镜像文件。
进一步地,承前所述的任一技术方案或多个技术方案的组合,在所述算法管理模块将所述算法镜像文件保存在存储模块中后,还包括:将相应的存储路径加入所述算法信息中,并将所述算法信息保存在存储模块中;
和/或,所述算法信息还包括算法版本信息、定义算法输入数据和输出数据格式的声明、算法系统资源的需求信息中的一项或多项。
进一步地,承前所述的任一技术方案或多个技术方案的组合,所述算法镜像文件及其相关联的算法信息被配置为通过HTTP接口发送至所述医疗机器人系统的算法管理模块;
和/或,所述算法管理模块将所述算法镜像文件保存在存储模块的对象存储服务器中,所述对象存储服务器为MinIO云存储器;
和/或,所述算法管理模块将所述算法信息保存在所述存储模块的关系型数据库中,所述关系型数据库为MySQL。
进一步地,承前所述的任一技术方案或多个技术方案的组合,同一个医疗机器人系统被配置为允许部署多个图像算法;
不同的图像算法被配置为允许使用不同的编程语言完成开发。
根据本发明的另一方面,提供了一种医疗机器人图像算法调度方法,包括以下步骤:
基于如上所述的图像算法部署方法,预先在医疗机器人系统中部署图像算法,所述医疗机器人系统配置有算法管理模块、存储模块、算法调度模块和算法执行模块,其中,所述算法执行模块配置有多个执行实例;
通过协议接口向所述算法调度模块发送算法执行请求,该算法执行请求的信息至少包括算法名称;
所述算法管理模块根据所述算法执行请求,在所述存储模块中查询与该算法名称相匹配的算法信息,进而获取与该算法信息相关联的算法镜像文件的下载链接,并将所述算法信息和算法镜像文件的下载链接返回至所述算法调度模块;
所述算法调度模块根据所述算法信息、下载链接封装得到一任务实例,并将其分配至所述算法执行模块中可执行任务的执行实例;
所述执行实例通过所述下载链接从所述存储模块中下载对应的算法镜像文件;
所述执行实例基于容器技术在独立的执行环境中实现所述算法镜像文件的算法执行,得到算法执行结果;
所述执行实例向所述算法调度模块返回所述算法执行结果。
进一步地,承前所述的任一技术方案或多个技术方案的组合,所述算法调度模块通过以下方式确定所述可执行任务的执行实例:
通过列表获取所述算法执行模块的所有执行实例的信息,依次判断各个执行实例的工作状态:
若全部执行实例的工作状态为执行中状态,则所述算法调度模块的任务实例分配堵塞,并等待出现空闲的执行实例;
若存在空闲的执行实例,则从中选择系统资源满足所述任务实例的资源需求的执行实例。
进一步地,承前所述的任一技术方案或多个技术方案的组合,所述算法调度模块被配置为维护N条就绪队列,所述就绪队列按照FIFO的方式读写任务实例,其中,N为大于或等于2的整数;
为各个任务实例增加一队列号字段,所述队列号字段存储该任务实例将进入的就绪队列的序号;
除第一条就绪队列以后,其他每一条就绪队列中的任务实例经过各自不同的等待时间后进入第一条就绪队列,其中,从第二条就绪队列至第N条就绪队列对应的等待时间逐渐变长;所述算法调度模块从第一条就绪队列获取任务实例;
各个任务实例的队列号字段的序号初始值均为1;
当存在空闲的执行实例,且该执行实例的系统资源不满足当前任务实例的资源需求时,若当前任务实例的队列号字段的序号不为N,则将当前任务实例的队列号字段的序号自增1,并将此当前任务送入下一级的就绪队列;若当前任务实例的队列号字段的序号为N,则所述算法调度模块的任务实例分配堵塞,并等待出现空闲的、系统资源满足资源需求的执行实例。
进一步地,承前所述的任一技术方案或多个技术方案的组合,所述算法调度模块被配置为维护所述算法执行模块的所有执行实例的信息列表,其中,每个执行实例的列表项信息包括其工作状态、系统资源、其当前执行中的任务信息;
所述算法调度模块根据所述信息列表来判断是否有可执行任务的执行实例能够执行任务实例;
在所述算法执行模块中的执行实例启动时,根据该执行实例的注册信息增加该执行实例的列表项信息的拷贝到列表中,并在该执行实例执行任务实例过程中上报心跳信息,若心跳信息的最后更新完成时间大于预设的时间段,则将该执行实例的列表项信息的拷贝从列表中删除。
进一步地,承前所述的任一技术方案或多个技术方案的组合,所述算法管理模块在所述存储模块中查询到的与该算法名称相匹配的算法信息还包括定义算法输入数据和输出数据格式的声明、算法系统资源的需求信息、算法镜像文件的存储路径;
所述算法管理模块根据所述算法镜像文件的存储路径来获取与算法镜像文件的下载链接;
所述算法执行请求的信息还包括算法执行参数,其格式由所述定义算法输入数据和输出数据格式的声明决定;
所述算法调度模块将所述算法信息、算法执行参数及算法镜像文件的下载链接封装为一任务实例。
进一步地,承前所述的任一技术方案或多个技术方案的组合,所述算法执行模块接收到任务实例后,根据其中封装的算法信息中的定义算法输入数据和输出数据格式的声明对所述算法执行参数进行校验;
若校验通过,则所述算法执行模块为该任务实例分配专属的存储路径,并将该任务实例的存储路径作为数据卷挂载到算法镜像文件的执行容器中,进而在独立的执行环境中实现所述算法镜像文件的算法执行。
根据本发明的另一方面,提供了一种医疗机器人图像算法部署装置,包括以下模块:
图像算法开发模块,其被配置为使用编程语言完成图像算法的开发,得到图像算法执行程序,不同的图像算法被配置为允许使用不同的编程语言完成开发;
镜像构建模块,其被配置为通过dockerfile的方式将图像算法执行程序构建成算法镜像文件,其中,通过容器技术为所述算法镜像文件配置独立的执行环境;
算法信息模块,其被配置为对所述算法镜像文件关联设置算法信息,所述算法信息至少包括具有唯一性的算法名称;
医疗机器人系统预建立的算法管理模块和存储模块,所述算法管理模块被配置为将所述算法镜像文件保存在所述存储模块中,并将所述算法信息保存在所述存储模块中。
进一步地,承前所述的任一技术方案或多个技术方案的组合,所述镜像构建模块通过以下方式构建算法镜像文件:
建立算法数据文件,所述算法数据文件包括算法权重参数;
将所述算法数据文件和所述图像算法执行程序放入算法镜像构建目录中,并在该目录下编写dockerfile,其文件内容包括算法需要的基础环境和/或算法执行环境需要的程序或者工具包;
执行算法镜像生成脚本,使得所述算法镜像生成脚本根据dockerfile生成环境镜像,并将所述算法镜像构建目录下的所述算法数据文件和所述图像算法执行程序复制到所述环境镜像中,得到包括所述图像算法执行程序和执行环境的算法镜像;
所述算法镜像生成脚本将所述算法镜像保存为压缩包类型的算法镜像文件。
进一步地,承前所述的任一技术方案或多个技术方案的组合,在所述算法管理模块将所述算法镜像文件保存在存储模块中后,还包括:将相应的存储路径加入所述算法信息中,并将所述算法信息保存在存储模块中;
和/或,所述算法信息还包括算法版本信息、定义算法输入数据和输出数据格式的声明、算法系统资源的需求信息中的一项或多项。
根据本发明的又一方面,提供了一种医疗机器人图像算法调度装置,包括如上所述的图像算法部署装置以及医疗机器人系统预建立的算法调度模块、算法执行模块,其中,所述算法执行模块配置有多个执行实例;
所述图像算法调度装置还包括以下模块:
请求模块,其被配置为通过协议接口向所述算法调度模块发送算法执行请求,该算法执行请求的信息至少包括算法名称;
所述图像算法部署装置的算法管理模块被配置为根据所述算法执行请求,在存储模块中查询与该算法名称相匹配的算法信息,进而获取与该算法信息相关联的算法镜像文件的下载链接,并将所述算法信息和算法镜像文件的下载链接返回至所述算法调度模块;
所述算法调度模块根据所述算法信息、下载链接封装得到一任务实例,并将其分配至所述算法执行模块中可执行任务的执行实例;
所述执行实例通过所述下载链接从所述存储模块中下载对应的算法镜像文件;
所述执行实例基于容器技术在独立的执行环境中实现所述算法镜像文件的算法执行,得到算法执行结果;
所述执行实例向所述算法调度模块返回所述算法执行结果。
进一步地,承前所述的任一技术方案或多个技术方案的组合,所述算法调度模块通过以下方式确定所述可执行任务的执行实例:
通过列表获取所述算法执行模块的所有执行实例的信息,依次判断各个执行实例的工作状态:
若全部执行实例的工作状态为执行中状态,则所述算法调度模块的任务实例分配堵塞,并等待出现空闲的执行实例;
若存在空闲的执行实例,则从中选择系统资源满足所述任务实例的资源需求的执行实例。
进一步地,承前所述的任一技术方案或多个技术方案的组合,所述算法调度模块被配置为维护N条就绪队列,所述就绪队列按照FIFO的方式读写任务实例,其中,N为大于或等于2的整数;
为各个任务实例增加一队列号字段,所述队列号字段存储该任务实例将进入的就绪队列的序号;
除第一条就绪队列以后,其他每一条就绪队列中的任务实例经过各自不同的等待时间后进入第一条就绪队列,其中,从第二条就绪队列至第N条就绪队列对应的等待时间逐渐变长;所述算法调度模块从第一条就绪队列获取任务实例;
各个任务实例的队列号字段的序号初始值均为1;
当存在空闲的执行实例,且该执行实例的系统资源不满足当前任务实例的资源需求时,若当前任务实例的队列号字段的序号不为N,则将当前任务实例的队列号字段的序号自增1,并将此当前任务送入下一级的就绪队列;若当前任务实例的队列号字段的序号为N,则所述算法调度模块的任务实例分配堵塞,并等待出现空闲的、系统资源满足资源需求的执行实例。
进一步地,承前所述的任一技术方案或多个技术方案的组合,所述算法调度模块被配置为维护所述算法执行模块的所有执行实例的信息列表,其中,每个执行实例的列表项信息包括其工作状态、系统资源、其当前执行中的任务信息;
所述算法调度模块根据所述信息列表来判断是否有可执行任务的执行实例能够执行任务实例;
在所述算法执行模块中的执行实例启动时,根据该执行实例的注册信息增加该执行实例的列表项信息的拷贝到列表中,并在该执行实例执行任务实例过程中上报心跳信息,若心跳信息的最后更新完成时间大于预设的时间段,则将该执行实例的列表项信息的拷贝从列表中删除。
进一步地,承前所述的任一技术方案或多个技术方案的组合,所述算法执行模块接收到任务实例后,根据其中封装的算法信息中的定义算法输入数据和输出数据格式的声明对所述算法执行参数进行校验;
若校验通过,则所述算法执行模块为该任务实例分配专属的存储路径,并将该任务实例的存储路径作为数据卷挂载到算法镜像文件的执行容器中,进而在独立的执行环境中实现所述算法镜像文件的算法执行。
进一步地,承前所述的任一技术方案或多个技术方案的组合,所述算法管理模块在所述存储模块中查询到的与该算法名称相匹配的算法信息还包括定义算法输入数据和输出数据格式的声明、算法系统资源的需求信息、算法镜像文件的存储路径;
所述算法管理模块根据所述算法镜像文件的存储路径来获取与算法镜像文件的下载链接;
所述算法执行请求的信息还包括算法执行参数,其格式由所述定义算法输入数据和输出数据格式的声明决定;
所述算法调度模块将所述算法信息、算法执行参数及算法镜像文件的下载链接封装为一任务实例。
根据本发明的再一方面,提供了一种医疗机器人系统,包括如上所述的医疗机器人图像算法调度装置,所述系统中的各模块之间通过RPC接口进行通讯。
根据本发明的再一方面,提供了一种计算机可读存储介质,用于存储程序指令,所述程序指令被配置为运行而执行如上所述的方法的步骤。
根据本发明的再一方面,提供了一种电子设备,包括处理器和存储器,其中,所述存储器用于存储程序指令,所述处理器被配置为运行所述程序指令,所述程序指令被运行而执行如上所述的方法的步骤。
本发明提供的技术方案带来的有益效果如下:
a.提供算法部署接口,通过算法和业务层面实现代码解耦,提高算法部署效率;
b.通过容器技术为算法镜像文件配置独立的执行环境,容器执行环境隔离的特性使得即使开发数量较多的图像功能算法,也不会因执行环境不一致而造成冲突;
c.相比于深度学习算法,机器人硬件要求较低。
附图说明
为了更清楚地说明本申请实施例或现有技术中的技术方案,下面将对实施例或现有技术描述中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图仅仅是本申请中记载的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图获得其他的附图。
图1为本发明的一个示例性实施例提供的图像算法部署方法的流程图;
图2为本发明的一个示例性实施例提供的完成图像算法部署的开发设备与部署设备的交互示意图;
图3为本发明的一个示例性实施例提供的构建算法镜像文件的方法流程图;
图4为本发明的一个示例性实施例提供的图像算法调度方法的流程图;
图5为本发明的一个示例性实施例提供的维护三条就绪队列的流程图;
图6为本发明的一个示例性实施例提供的算法执行中的第一种执行情况的过程示意图;
图7为本发明的一个示例性实施例提供的算法执行中的第二种执行情况的过程示意图;
图8为本发明的一个示例性实施例提供的算法执行中的第三种执行情况的过程示意图;
图9为本发明的一个示例性实施例提供的算法执行中的第四种执行情况的过程示意图;
图10为本发明的一个示例性实施例提供的具备图像算法调度装置的系统架构示意图;
图11为本发明的一个示例性实施例提供的电子设备的硬件结构图。
具体实施方式
为了使本技术领域的人员更好地理解本发明方案,下面将结合本发明实施例中的附图,对本发明实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例仅仅是本发明一部分的实施例,而不是全部的实施例。基于本发明中的实施例,本领域普通技术人员在没有做出创造性劳动前提下所获得的所有其他实施例,都应当属于本发明保护的范围。
需要说明的是,本发明的说明书和权利要求书及上述附图中的术语“第一”、“第二”等是用于区别类似的对象,而不必用于描述特定的顺序或先后次序。应该理解这样使用的数据在适当情况下可以互换,以便这里描述的本发明的实施例能够以除了在这里图示或描述的那些以外的顺序实施。此外,术语“包括”和“具有”以及他们的任何变形,意图在于覆盖不排他的包含,例如,包含了一系列步骤或单元的过程、方法、装置、产品或设备不必限于清楚地列出的那些步骤或单元,而是可包括没有清楚地列出的或对于这些过程、方法、产品或设备固有的其他步骤或单元。
在本发明的一个实施例中,提供了一种医疗机器人图像算法部署方法,参见图1、图2和图10,部署方法包括以下步骤:
第一步、由算法开发设备预先使用编程语言完成图像算法的开发,得到图像算法执行程序;
第二步、通过dockerfile的方式将图像算法执行程序构建成算法镜像文件,其中,通过容器技术为所述算法镜像文件配置独立的执行环境;
构建算法镜像文件的方法如图3所示:
建立算法数据文件,所述算法数据文件包括算法权重参数;
将所述算法数据文件和所述图像算法执行程序放入算法镜像构建目录中,并在该目录下编写dockerfile,其文件内容包括算法需要的基础环境(即算法执行所需的系统环境,比如ubuntu、cuda、pytorch)和/或算法执行环境需要的程序或者工具包(即算法执行所依赖的软件);
执行算法镜像生成脚本,使得所述算法镜像生成脚本根据dockerfile生成环境镜像,并将所述算法镜像构建目录下的所述算法数据文件和所述图像算法执行程序复制到所述环境镜像中,得到包括所述图像算法执行程序和执行环境的算法镜像;
所述算法镜像生成脚本将所述算法镜像保存为压缩包类型(比如.tar.gz后缀)的算法镜像文件。
第三步、算法镜像文件有相关联的算法信息,所述算法信息至少包括具有唯一性的算法名称;在一个实施例中,算法信息还可以包括算法版本、定义算法输入数据和输出数据格式的声明、算法系统资源的需求信息(如CPU、内存和GPU等)。
第四步、算法开发设备将所述算法镜像文件及其相关联的算法信息通过协议接口(比如HTTP,超文本传输协议)发送至医疗机器人系统的部署设备,具体地,部署设备包括算法管理模块和存储模块;
第五步、算法管理模块将所述算法镜像文件和算法信息保存在存储模块中,本实施例中采用分区存放的方式,具体为将算法镜像文件保存在镜像存储器(对象存储服务器,比如MinIO)中,以及将所述算法信息保存在算法信息存储器(关系型数据库,比如MySQL)中。当执行算法时,才会从存储模块中取出算法信息和镜像文件来执行算法,具体参见下文的图像算法调度实施例。
在所述算法管理模块将所述算法镜像文件保存在对象存储服务器中后,还将相应的存储路径信息加入所述算法信息中,并将所述算法信息保存在关系型数据库中,这为后面的算法调度提供了下载算法镜像文件的依据。
本实施例方便算法开发人员部署算法,算法开发人员只需要专注于算法功能的开发,提交完算法信息和算法镜像文件后,就完成算法的部署。同一个医疗机器人系统被配置为允许部署多个图像算法,不同的图像算法被配置为允许使用不同的编程语言完成开发。这样一来解决了业务和算法的代码耦合的难题,算法开发者不需要使用业务所使用的编程语言来实现算法,不同的开发者可以专注于各自的图像算法开发,提高开发效率。
同时,提供算法部署接口,减少部署流程中人工操作,提高部署效率。
在完成如上的图像算法部署之后,本发明实施例提供了一种医疗机器人图像算法调度方法,需要医疗机器人系统预建立的算法调度模块和算法执行模块参与,其中,所述算法执行模块配置有多个执行实例;每个执行实例的进程会维护自己的状态,算法执行模块通过封装的docker控制器,负责算法输入和输出处理,以及算法镜像的执行容器的管理,通过容器执行环境隔离的特性,解决算法执行环境冲突的问题。
如图4所示,图像算法调度方法包括以下步骤:
步骤A、通过协议(HTTP,超文本传输协议)接口向所述算法调度模块发送算法执行请求,该算法执行请求的信息包括算法名称和算法执行参数,算法执行参数的格式由前述的定义算法输入数据和输出数据格式的声明决定;
步骤B、所述算法管理模块根据所述算法执行请求,在所述存储模块中查询与该算法名称相匹配的算法信息,该算法信息还包括定义算法输入数据和输出数据格式的声明、算法系统资源的需求信息、算法镜像文件的存储路径;
步骤C、所述算法管理模块根据所述算法镜像文件的存储路径来获取与算法镜像文件的下载链接;
步骤D、算法管理模块将该下载链接和算法信息返回至算法调度模块;
步骤E、所述算法调度模块根据所述算法信息、算法执行参数、下载链接封装得到一任务实例,并将其分配至所述算法执行模块中可执行任务的执行实例;确定可执行任务的执行实例的方式具体如下:
算法调度模块被配置为维护所述算法执行模块的所有执行实例的信息列表,其中,每个执行实例的列表项信息包括其工作状态、系统资源、其当前执行中的任务信息;
在所述算法执行模块中的执行实例启动时,根据该执行实例的注册信息增加该执行实例的列表项信息的拷贝到列表中,并在该执行实例执行任务实例过程中上报心跳信息,若心跳信息的最后更新完成时间大于预设的时间段,则将该执行实例的列表项信息的拷贝从列表中删除。
由于列表中有执行实例的工作状态和系统资源,若工作状态为执行中状态,则算法调度模块判断该执行实例为不可执行任务的执行实例;
若工作状态为空闲状态,并且系统资源能够满足任务实例的资源需求,则算法调度模块判断该执行实例为可执行任务的执行实例。
本发明实施例提供了一种执行任务实例的高效调度规则,参见图5,所述算法调度模块维护N条就绪队列,所述就绪队列按照FIFO的方式读写任务实例,其中,N为大于或等于2的整数;为各个任务实例增加一队列号字段,所述队列号字段存储该任务实例将进入的就绪队列的序号;以N=3为例,当封装一任务实例后,其队列号字段的序号初始值为1,即进入第一条就绪队列,第一条就绪队列按照FIFO规则读出任务实例至算法调度模块,按照上文内容,算法调度模块查询列表后,有以下四种执行情况:
情况一、参见图6,判断存在可执行任务的执行实例(图6中的执行实例2),则分配该执行实例2来执行当前任务(具体步骤继续参见下文的步骤F、G、H);
情况二、参见图7,遍历列表后确定所有执行实例(图7中的执行实例1至执行实例m)均处于执行中的工作状态,则算法调度模块的任务实例分配堵塞,并等待出现空闲的、系统资源满足资源需求的执行实例;
情况三、参见图8,与情况二中所有执行实例处于执行中的状态有所不同,情况三中有至少一个执行实例(图8中的执行实例2)处于空闲状态,但是由于系统资源不足而无法执行当前任务,则将当前任务实例的队列号序号自加1,并将其送入下一级就绪队列(即第二条就绪队列);参见图5,进入第二条就绪队列的任务实例在历时S2之后,又进入第一条就绪队列,但此时其队列号序号保持为2;若下一次轮到此任务实例读出至算法调度模块,并且再一次满足情况三,则其队列号序号自加1变为3,将其送入第三条就绪队列;
情况四、参见图9和图5,其承接情况三中送入第三条就绪队列的任务实例在历时S3之后,又进入第一条就绪队列,但此时其队列号序号保持为3;若下一次轮到此任务实例读出至算法调度模块,至少有一个执行实例(图9中的执行实例2)处于空闲状态,但是由于系统资源不足而无法执行当前任务,此时任务实例的队列号序号为3,则算法调度模块的任务实例分配堵塞,并等待出现空闲的、系统资源满足资源需求的执行实例来执行此队列号序号为3的任务实例。
情况三的调度方式可以实现资源需求低的任务能够优先执行,同时情况四的调度方式可以避免资源需求高的任务长时间饿死的情况,使系统资源得到充分利用,提高调度效率。显然,本发明不限定就绪队列的数量为三,可以增加就绪队列的数量,则资源需求高的任务容忍饥饿的时间就拉长,资源需求低的任务的优先级就更明显。
步骤F、所述执行实例通过所述下载链接从所述存储模块中下载对应的算法镜像文件;
具体地,由算法执行模块接收到任务实例后,根据其中封装的算法信息中的定义算法输入数据和输出数据格式的声明对所述算法执行参数进行校验;
若校验通过,则所述算法执行模块为该任务实例分配专属的存储路径,并将该任务实例的存储路径作为数据卷挂载到算法镜像文件的执行容器中。
步骤G、所述执行实例基于容器技术在独立的执行环境中实现所述算法镜像文件的算法执行,得到算法执行结果;基于将任务实例的存储路径作为数据卷挂载到算法镜像文件的执行容器中,进而在独立的执行环境中实现所述算法镜像文件的算法执行,得到算法执行结果。通过容器技术,为算法提供独立的执行环境,解决了算法之间环境冲突的问题。
步骤H、所述执行实例向所述算法调度模块返回所述算法执行结果。
本实施例提供执行上述算法调度方法的算法调度接口既包括算法执行接口,又包括停止执行接口。执行算法时,会根据当前系统状态,将任务发送算法执行模块中合适的进程处理;停止算法时,找到该任务的执行进程,发送停止指令,停止算法执行。执行算法任务,实现增加一个算法任务并为之分配执行实例实行算法任务;停止算法任务,通过任务ID找到执行该任务的算法执行实例,并发送停止命令任务;更新算法任务,目的是为算法执行模块任务执行完毕后回调该接口实现任务的更新;获取算法任务,提供给任务发起方获取任务的执行情况;注册执行实例,提供给算法执行模块,算法执行模块中的执行实力启动时通过该接口注册算法执行实例到算法调度模块中的算法执行实例列表;发送执行实例心跳,给到算法执行实例定时通知算法调度模块更新算法执行实例的状态。算法调度模块中会保存一份算法执行实例的列表,该列表记录了算法执行实例的执行状态、IP、端口、启动时间和最后更新时间,算法执行模块会根据最后更新时间定时清除一定时间范围内没有更新的实例,通过该列表,实现算法任务的调度。
数据卷是可供容器读取的一种特殊目录,算法执行容器的文件系统是独立于部署机器文件系统的,通过挂载数据卷的方式来实现容器与部署机器存储的共享。通过数据卷的方式,将算法的参数传递给算法,以及将算法输出和生成的数据文件保存。算法执行模块通过封装的docker控制器,实现算法容器的创建、状态监控以及销毁容器。算法的执行容器每次执行前会重新创建,通过异步方式监控容器状态,当容器状态变更为已结束时,算法执行模块负责销毁以及算法任务结果的保存。通过容器技术,确保算法执行环境独立和每次执行环境的统一。
在本发明的一个实施例中,提供了一种医疗机器人图像算法部署装置,包括以下模块:
图像算法开发模块,其被配置为使用编程语言完成图像算法的开发,得到图像算法执行程序,不同的图像算法被配置为允许使用不同的编程语言完成开发;
镜像构建模块,其被配置为通过dockerfile的方式将图像算法执行程序构建成算法镜像文件,其中,通过容器技术为所述算法镜像文件配置独立的执行环境;
算法信息模块,其被配置为对所述算法镜像文件关联设置算法信息,所述算法信息至少包括具有唯一性的算法名称;
医疗机器人系统预建立的算法管理模块和存储模块,所述算法管理模块被配置为将所述算法镜像文件保存在所述存储模块的对象存储服务器中,并将所述算法信息保存在所述存储模块的关系型数据库中。
其中,所述镜像构建模块通过以下方式构建算法镜像文件:
建立算法数据文件,所述算法数据文件包括算法权重参数;
将所述算法数据文件和所述图像算法执行程序放入算法镜像构建目录中,并在该目录下编写dockerfile,其文件内容包括算法需要的基础环境和/或算法执行环境需要的程序或者工具包;
执行算法镜像生成脚本,使得所述算法镜像生成脚本根据dockerfile生成环境镜像,并将所述算法镜像构建目录下的所述算法数据文件和所述图像算法执行程序复制到所述环境镜像中,得到包括所述图像算法执行程序和执行环境的算法镜像;
所述算法镜像生成脚本将所述算法镜像保存为压缩包类型的算法镜像文件。
在所述算法管理模块将所述算法镜像文件保存在对象存储服务器中后,还包括:将相应的存储路径加入所述算法信息中,并将所述算法信息保存在关系型数据库中;
和/或,所述算法信息还包括算法版本信息、定义算法输入数据和输出数据格式的声明、算法系统资源的需求信息中的一项或多项。
本图像算法部署装置实施例与上述的图像算法部署方法实施例属于相同构思,在此通过引用的方式将图像算法部署方法实施例的全部内容并入本图像算法部署装置实施例。
在本发明的一个实施例中,提供了一种医疗机器人图像算法调度装置,包括如上所述的图像算法部署装置以及医疗机器人系统预建立的算法调度模块、算法执行模块,其中,所述算法执行模块配置有多个执行实例;
所述图像算法调度装置还包括以下模块:
请求模块,其被配置为通过协议接口向所述算法调度模块发送算法执行请求,该算法执行请求的信息至少包括算法名称;
所述图像算法部署装置的算法管理模块被配置为根据所述算法执行请求,在存储模块中查询与该算法名称相匹配的算法信息,进而获取与该算法信息相关联的算法镜像文件的下载链接,并将所述算法信息和算法镜像文件的下载链接返回至所述算法调度模块;
所述算法调度模块根据所述算法信息、下载链接封装得到一任务实例,并将其分配至所述算法执行模块中可执行任务的执行实例;
所述执行实例通过所述下载链接从所述存储模块中下载对应的算法镜像文件;
所述执行实例基于容器技术在独立的执行环境中实现所述算法镜像文件的算法执行,得到算法执行结果;
所述执行实例向所述算法调度模块返回所述算法执行结果。
其中,所述算法调度模块通过以下方式确定所述可执行任务的执行实例:
通过列表获取所述算法执行模块的所有执行实例的信息,依次判断各个执行实例的工作状态:
若全部执行实例的工作状态为执行中状态,则所述算法调度模块的任务实例分配堵塞,并等待出现空闲的执行实例;
若存在空闲的执行实例,则从中选择系统资源满足所述任务实例的资源需求的执行实例。
其中,所述算法调度模块被配置为维护N条就绪队列,所述就绪队列按照FIFO的方式读写任务实例;
为各个任务实例增加一队列号字段,所述队列号字段存储该任务实例将进入的就绪队列的序号;
除第一条就绪队列以后,其他每一条就绪队列中的任务实例经过各自不同的等待时间后进入第一条就绪队列,其中,从第二条就绪队列至第N条就绪队列对应的等待时间逐渐变长;所述算法调度模块从第一条就绪队列获取任务实例;
各个任务实例的队列号字段的序号初始值均为1;
当存在空闲的执行实例,且该执行实例的系统资源不满足当前任务实例的资源需求时,若当前任务实例的队列号字段的序号不为N,则将当前任务实例的队列号字段的序号自增1,并将此当前任务送入下一级的就绪队列;若当前任务实例的队列号字段的序号为N,则所述算法调度模块的任务实例分配堵塞,并等待出现空闲的、系统资源满足资源需求的执行实例。
其中,所述算法调度模块被配置为维护所述算法执行模块的所有执行实例的信息列表,其中,每个执行实例的列表项信息包括其工作状态、系统资源、其当前执行中的任务信息;
所述算法调度模块根据所述信息列表来判断是否有可执行任务的执行实例能够执行任务实例;
在所述算法执行模块中的执行实例启动时,根据该执行实例的注册信息增加该执行实例的列表项信息的拷贝到列表中,并在该执行实例执行任务实例过程中上报心跳信息,若心跳信息的最后更新完成时间大于预设的时间段,则将该执行实例的列表项信息的拷贝从列表中删除。
其中,所述算法执行模块接收到任务实例后,根据其中封装的算法信息中的定义算法输入数据和输出数据格式的声明对所述算法执行参数进行校验;
若校验通过,则所述算法执行模块为该任务实例分配专属的存储路径,并将该任务实例的存储路径作为数据卷挂载到算法镜像文件的执行容器中,进而在独立的执行环境中实现所述算法镜像文件的算法执行。
其中,所述算法管理模块在所述存储模块中查询到的与该算法名称相匹配的算法信息还包括定义算法输入数据和输出数据格式的声明、算法系统资源的需求信息、算法镜像文件的存储路径;
所述算法管理模块根据所述算法镜像文件的存储路径来获取与算法镜像文件的下载链接;
所述算法执行请求的信息还包括算法执行参数,其格式由所述定义算法输入数据和输出数据格式的声明决定;
所述算法调度模块将所述算法信息、算法执行参数及算法镜像文件的下载链接封装为一任务实例。
本图像算法调度装置实施例与上述的图像算法调度方法实施例属于相同构思,在此通过引用的方式将图像算法调度方法实施例的全部内容并入本图像算法调度装置实施例。
如图10所示,本发明的一个实施例还提供了一种医疗机器人系统,包括如上所述的医疗机器人图像算法调度装置,所述系统中的各模块之间(比如算法管理模块与算法调度模块、算法调度模块与算法执行模块)通过RPC接口进行通讯。RPC通过二进制协议传输数据,比HTTP的文本协议更加高效,同时也可以采用编解码技术,提高数据传输效率。RPC还可以采用连接池技术,避免了HTTP建立和断开连接的开销,提高了并发处理能力和响应速度,具有更高的性能和效率。除此之外,RPC还可以自定义协议和传输方式,以满足不同场景的需求,具有更好的定制性和扩展性。
本发明的一个实施例还提供了一种计算机可读存储介质,用于存储程序指令,所述程序指令被配置为运行而执行如上所述的方法的步骤。上述计算机可读存储介质可以是前述任一实施例提供的装置的相应设备上的内部存储单元,例如计算机设备的硬盘或内存。该计算机可读存储介质也可以是该计算机设备的外部存储设备,例如该计算机设备上配备的插接式硬盘,智能存储卡(smart media card,SMC),安全数字(secure digital,SD)卡,闪存卡(flashcard)等。进一步地,该计算机可读存储介质还可以既包括该计算机设备的内部存储单元也包括外部存储设备。该计算机可读存储介质用于存储该计算机程序以及该计算机设备所需的其他程序和数据。该计算机可读存储介质还可以用于暂时地存储已经输出或者将要输出的数据。
本发明的一个实施例还提供了一种电子设备,包括处理器和存储器,如图11所示,其中,所述存储器用于存储程序指令,所述处理器被配置为运行所述程序指令,所述程序指令被运行而执行如上所述的方法的步骤。本领域技术人员可以理解,图11中示出的电子设备的组成结构并不构成对电子设备的限定,可以包括比图示更多或更少的部件,或者组合某些部件,或者不同的部件布置。其中:
处理器是该电子设备的控制中心,利用各种接口和线路连接整个电子设备的各个部分,通过运行或执行存储在存储器内的软件程序和/或模块,以及调用存储在存储器内的数据,执行电子设备的各种功能和处理数据。可选的,处理器可包括一个或多个处理核心;优选的,处理器可集成应用处理器和调制解调处理器,其中,应用处理器主要处理操作系统、用户界面和应用程序等,调制解调处理器主要处理无线通信。可以理解的是,上述调制解调处理器也可以不集成到处理器中。
存储器可用于存储软件程序以及模块,处理器通过运行存储在存储器的软件程序以及模块,从而执行各种功能应用以及数据处理。存储器可主要包括存储程序区和存储数据区,其中,存储程序区可存储操作系统、至少一个功能所需的应用程序(比如声音播放功能、图像播放功能等)等;存储数据区可存储根据电子设备的使用所创建的数据等。此外,存储器可以包括高速随机存取存储器,还可以包括非易失性存储器,例如至少一个磁盘存储器件、闪存器件、或其他易失性固态存储器件。相应地,存储器还可以包括存储器控制器,以提供处理器对存储器的访问。
电子设备还包括给各个部件供电的电源,优选的,电源可以通过电源管理系统与处理器逻辑相连,从而通过电源管理系统实现管理充电、放电、以及功耗管理等功能。电源还可以包括一个或一个以上的直流或交流电源、再充电系统、电源故障检测电路、电源转换器或者逆变器、电源状态指示器等任意组件。
该电子设备还可包括输入单元,该输入单元可用于接收输入的数字或字符信息,以及产生与用户设置以及功能控制有关的键盘、鼠标、操作杆、光学或者轨迹球信号输入。
尽管未示出,电子设备还可以包括显示单元等,在此不再赘述。具体在本实施例中,电子设备中的处理器会按照如下的指令,将一个或一个以上的应用程序的进程对应的可执行文件加载到存储器中,并由处理器来运行存储在存储器中的应用程序。
综上,本专利的技术方案具有以下优势:
第一、独立性和统一性:采用容器技术实现算法执行环境的独立和每次执行环境的统一,避免了由于环境变量、库版本等因素导致的算法执行结果不一致问题;
第二、可扩展性和并发性:通过维护算法执行实例的列表,实现了算法任务的调度和并发执行,同时通过增加算法执行实例的数量,在部署设备性能足够的前提下能够横向扩展算法任务并发数量,提高机器性能的利用效率;
第三、灵活性和可控性:采用RPC接口的方式实现了算法任务的调度和分配,提供了HTTP接口实现算法任务执行、停止、获取等操作,方便用户对算法任务进行管理和控制;
第四、安全性和稳定性:通过容器技术实现算法环境的隔离和沙箱化,避免了算法对部署设备的影响,提高了安全性和稳定性。
需要说明的是,在本文中,诸如第一和第二等之类的关系术语仅仅用来将一个实体或者操作与另一个实体或操作区分开来,而不一定要求或者暗示这些实体或操作之间存在任何这种实际的关系或者顺序。而且,术语“包括”、“包含”或者其任何其他变体意在涵盖非排他性的包含,从而使得包括一系列要素的过程、方法、物品或者设备不仅包括那些要素,而且还包括没有明确列出的其他要素,或者是还包括为这种过程、方法、物品或者设备所固有的要素。在没有更多限制的情况下,由语句“包括一个……”限定的要素,并不排除在包括所述要素的过程、方法、物品或者设备中还存在另外的相同要素。
以上所述仅是本申请的具体实施方式,应当指出,对于本技术领域的普通技术人员来说,在不脱离本申请原理的前提下,还可以做出若干改进和润饰,这些改进和润饰也应视为本申请的保护范围。
Claims (18)
1.一种医疗机器人图像算法部署方法,其特征在于,包括以下步骤:
预先使用编程语言完成图像算法的开发,得到图像算法执行程序;
通过dockerfile的方式将图像算法执行程序构建成算法镜像文件,其中,通过容器技术为所述算法镜像文件配置独立的执行环境;
为所述算法镜像文件关联设置算法信息,所述算法信息至少包括具有唯一性的算法名称;
将所述算法镜像文件及其相关联的算法信息通过协议接口发送至医疗机器人系统预建立的算法管理模块;
所述算法管理模块将所述算法镜像文件保存在能够与所述算法管理模块进行数据交互的存储模块中,并将所述算法信息保存在所述存储模块中。
2.根据权利要求1所述的医疗机器人图像算法部署方法,其特征在于,通过以下方式构建算法镜像文件:
建立算法数据文件,所述算法数据文件包括算法权重参数;
将所述算法数据文件和所述图像算法执行程序放入算法镜像构建目录中,并在该目录下编写dockerfile,其文件内容包括算法需要的基础环境和/或算法执行环境需要的程序或者工具包;
执行算法镜像生成脚本,使得所述算法镜像生成脚本根据dockerfile生成环境镜像,并将所述算法镜像构建目录下的所述算法数据文件和所述图像算法执行程序复制到所述环境镜像中,得到包括所述图像算法执行程序和执行环境的算法镜像;
所述算法镜像生成脚本将所述算法镜像保存为压缩包类型的算法镜像文件。
3.根据权利要求1所述的医疗机器人图像算法部署方法,其特征在于,在所述算法管理模块将所述算法镜像文件保存在存储模块中后,还包括:将相应的存储路径加入所述算法信息中,并将所述算法信息保存在存储模块中;
和/或,所述算法信息还包括算法版本信息、定义算法输入数据和输出数据格式的声明、算法系统资源的需求信息中的一项或多项。
4.根据权利要求1所述的医疗机器人图像算法部署方法,其特征在于,所述算法镜像文件及其相关联的算法信息被配置为通过HTTP接口发送至所述医疗机器人系统的算法管理模块;
和/或,所述算法管理模块将所述算法镜像文件保存在存储模块的对象存储服务器中,所述对象存储服务器为MinIO云存储器;
和/或,所述算法管理模块将所述算法信息保存在所述存储模块的关系型数据库中,所述关系型数据库为MySQL。
5.根据权利要求1至4中任一项所述的医疗机器人图像算法部署方法,其特征在于,同一个医疗机器人系统被配置为允许部署多个图像算法;
不同的图像算法被配置为允许使用不同的编程语言完成开发。
6.一种医疗机器人图像算法调度方法,其特征在于,包括以下步骤:
基于权利要求1至5中任一项所述的图像算法部署方法,预先在医疗机器人系统中部署图像算法,所述医疗机器人系统配置有算法管理模块、存储模块、算法调度模块和算法执行模块,其中,所述算法执行模块配置有多个执行实例;
通过协议接口向所述算法调度模块发送算法执行请求,该算法执行请求的信息至少包括算法名称;
所述算法管理模块根据所述算法执行请求,在所述存储模块中查询与该算法名称相匹配的算法信息,进而获取与该算法信息相关联的算法镜像文件的下载链接,并将所述算法信息和算法镜像文件的下载链接返回至所述算法调度模块;
所述算法调度模块根据所述算法信息、下载链接封装得到一任务实例,并将其分配至所述算法执行模块中可执行任务的执行实例;
所述执行实例通过所述下载链接从所述存储模块中下载对应的算法镜像文件;
所述执行实例基于容器技术在独立的执行环境中实现所述算法镜像文件的算法执行,得到算法执行结果;
所述执行实例向所述算法调度模块返回所述算法执行结果。
7.根据权利要求6所述的图像算法调度方法,其特征在于,所述算法调度模块被配置为维护所述算法执行模块的所有执行实例的信息列表,其中,每个执行实例的列表项信息包括其工作状态、系统资源、其当前执行中的任务信息;所述算法调度模块根据所述信息列表来判断是否有可执行任务的执行实例能够执行任务实例;在所述算法执行模块中的执行实例启动时,根据该执行实例的注册信息增加该执行实例的列表项信息的拷贝到列表中,并在该执行实例执行任务实例过程中上报心跳信息,若心跳信息的最后更新完成时间大于预设的时间段,则将该执行实例的列表项信息的拷贝从列表中删除;
所述算法调度模块通过以下方式确定所述可执行任务的执行实例:通过列表获取所述算法执行模块的所有执行实例的信息,依次判断各个执行实例的工作状态:若全部执行实例的工作状态为执行中状态,则所述算法调度模块的任务实例分配堵塞,并等待出现空闲的执行实例;若存在空闲的执行实例,则从中选择系统资源满足所述任务实例的资源需求的执行实例;
所述算法调度模块被配置为维护N条就绪队列,所述就绪队列按照FIFO的方式读写任务实例,其中,N为大于或等于2的整数;为各个任务实例增加一队列号字段,所述队列号字段存储该任务实例将进入的就绪队列的序号;除第一条就绪队列以后,其他每一条就绪队列中的任务实例经过各自对应的等待时间后进入第一条就绪队列;所述算法调度模块从第一条就绪队列获取任务实例;各个任务实例的队列号字段的序号初始值均为1;当存在空闲的执行实例,且该执行实例的系统资源不满足当前任务实例的资源需求时,若当前任务实例的队列号字段的序号不为N,则将当前任务实例的队列号字段的序号自增1,并将此当前任务送入下一级的就绪队列;若当前任务实例的队列号字段的序号为N,则所述算法调度模块的任务实例分配堵塞,并等待出现空闲的、系统资源满足资源需求的执行实例。
8.根据权利要求6所述的图像算法调度方法,其特征在于,所述算法管理模块在所述存储模块中查询到的与该算法名称相匹配的算法信息还包括定义算法输入数据和输出数据格式的声明、算法系统资源的需求信息、算法镜像文件的存储路径;
所述算法管理模块根据所述算法镜像文件的存储路径来获取与算法镜像文件的下载链接;
所述算法执行请求的信息还包括算法执行参数,其格式由所述定义算法输入数据和输出数据格式的声明决定;
所述算法调度模块将所述算法信息、算法执行参数及算法镜像文件的下载链接封装为一任务实例。
9.根据权利要求6至8中任一项所述的图像算法调度方法,其特征在于,所述算法执行模块接收到任务实例后,根据其中封装的算法信息中的定义算法输入数据和输出数据格式的声明对所述算法执行参数进行校验;
若校验通过,则所述算法执行模块为该任务实例分配专属的存储路径,并将该任务实例的存储路径作为数据卷挂载到算法镜像文件的执行容器中,进而在独立的执行环境中实现所述算法镜像文件的算法执行。
10.一种医疗机器人图像算法部署装置,其特征在于,包括以下模块:
图像算法开发模块,其被配置为使用编程语言完成图像算法的开发,得到图像算法执行程序,不同的图像算法被配置为允许使用不同的编程语言完成开发;
镜像构建模块,其被配置为通过dockerfile的方式将图像算法执行程序构建成算法镜像文件,其中,通过容器技术为所述算法镜像文件配置独立的执行环境;
算法信息模块,其被配置为对所述算法镜像文件关联设置算法信息,所述算法信息至少包括具有唯一性的算法名称;
医疗机器人系统预建立的算法管理模块和存储模块,所述算法管理模块被配置为将所述算法镜像文件保存在所述存储模块中,并将所述算法信息保存在所述存储模块中。
11.根据权利要求10所述的图像算法部署装置,其特征在于,所述算法信息还包括算法版本信息、定义算法输入数据和输出数据格式的声明、算法系统资源的需求信息中的一项或多项,在所述算法管理模块将所述算法镜像文件保存在存储模块中后,还包括:将相应的存储路径加入所述算法信息中,并将所述算法信息保存在存储模块中;
所述镜像构建模块通过以下方式构建算法镜像文件:
建立算法数据文件,所述算法数据文件包括算法权重参数;
将所述算法数据文件和所述图像算法执行程序放入算法镜像构建目录中,并在该目录下编写dockerfile,其文件内容包括算法需要的基础环境和/或算法执行环境需要的程序或者工具包;
执行算法镜像生成脚本,使得所述算法镜像生成脚本根据dockerfile生成环境镜像,并将所述算法镜像构建目录下的所述算法数据文件和所述图像算法执行程序复制到所述环境镜像中,得到包括所述图像算法执行程序和执行环境的算法镜像;
所述算法镜像生成脚本将所述算法镜像保存为压缩包类型的算法镜像文件。
12.一种医疗机器人图像算法调度装置,其特征在于,包括如权利要求10或11所述的图像算法部署装置以及医疗机器人系统预建立的算法调度模块、算法执行模块,其中,所述算法执行模块配置有多个执行实例;
所述图像算法调度装置还包括以下模块:
请求模块,其被配置为通过协议接口向所述算法调度模块发送算法执行请求,该算法执行请求的信息至少包括算法名称;
所述图像算法部署装置的算法管理模块被配置为根据所述算法执行请求,在存储模块中查询与该算法名称相匹配的算法信息,进而获取与该算法信息相关联的算法镜像文件的下载链接,并将所述算法信息和算法镜像文件的下载链接返回至所述算法调度模块;
所述算法调度模块根据所述算法信息、下载链接封装得到一任务实例,并将其分配至所述算法执行模块中可执行任务的执行实例;
所述执行实例通过所述下载链接从所述存储模块中下载对应的算法镜像文件;
所述执行实例基于容器技术在独立的执行环境中实现所述算法镜像文件的算法执行,得到算法执行结果;
所述执行实例向所述算法调度模块返回所述算法执行结果。
13.根据权利要求12所述的图像算法调度装置,其特征在于,所述算法调度模块被配置为维护所述算法执行模块的所有执行实例的信息列表,其中,每个执行实例的列表项信息包括其工作状态、系统资源、其当前执行中的任务信息;所述算法调度模块根据所述信息列表来判断是否有可执行任务的执行实例能够执行任务实例;在所述算法执行模块中的执行实例启动时,根据该执行实例的注册信息增加该执行实例的列表项信息的拷贝到列表中,并在该执行实例执行任务实例过程中上报心跳信息,若心跳信息的最后更新完成时间大于预设的时间段,则将该执行实例的列表项信息的拷贝从列表中删除;
所述算法调度模块通过以下方式确定所述可执行任务的执行实例:通过列表获取所述算法执行模块的所有执行实例的信息,依次判断各个执行实例的工作状态:若全部执行实例的工作状态为执行中状态,则所述算法调度模块的任务实例分配堵塞,并等待出现空闲的执行实例;若存在空闲的执行实例,则从中选择系统资源满足所述任务实例的资源需求的执行实例;
所述算法调度模块被配置为维护N条就绪队列,所述就绪队列按照FIFO的方式读写任务实例,其中,N为大于或等于2的整数;为各个任务实例增加一队列号字段,所述队列号字段存储该任务实例将进入的就绪队列的序号;除第一条就绪队列以后,其他每一条就绪队列中的任务实例经过各自不同的等待时间后进入第一条就绪队列,其中,从第二条就绪队列至第N条就绪队列对应的等待时间逐渐变长;所述算法调度模块从第一条就绪队列获取任务实例;各个任务实例的队列号字段的序号初始值均为1;当存在空闲的执行实例,且该执行实例的系统资源不满足当前任务实例的资源需求时,若当前任务实例的队列号字段的序号不为N,则将当前任务实例的队列号字段的序号自增1,并将此当前任务送入下一级的就绪队列;若当前任务实例的队列号字段的序号为N,则所述算法调度模块的任务实例分配堵塞,并等待出现空闲的、系统资源满足资源需求的执行实例。
14.根据权利要求12所述的图像算法调度装置,其特征在于,所述算法执行模块接收到任务实例后,根据其中封装的算法信息中的定义算法输入数据和输出数据格式的声明对所述算法执行参数进行校验;
若校验通过,则所述算法执行模块为该任务实例分配专属的存储路径,并将该任务实例的存储路径作为数据卷挂载到算法镜像文件的执行容器中,进而在独立的执行环境中实现所述算法镜像文件的算法执行。
15.根据权利要求12至14中任一项所述的图像算法调度装置,其特征在于,所述算法管理模块在所述存储模块中查询到的与该算法名称相匹配的算法信息还包括定义算法输入数据和输出数据格式的声明、算法系统资源的需求信息、算法镜像文件的存储路径;
所述算法管理模块根据所述算法镜像文件的存储路径来获取与算法镜像文件的下载链接;
所述算法执行请求的信息还包括算法执行参数,其格式由所述定义算法输入数据和输出数据格式的声明决定;
所述算法调度模块将所述算法信息、算法执行参数及算法镜像文件的下载链接封装为一任务实例。
16.一种医疗机器人系统,其特征在于,包括如权利要求12至15中任一项所述的医疗机器人图像算法调度装置,所述系统中的各模块之间通过RPC接口进行通讯。
17.一种计算机可读存储介质,用于存储程序指令,其特征在于,所述程序指令被配置为运行而执行如权利要求1至9中任一项所述的方法的步骤。
18.一种电子设备,包括处理器和存储器,其中,所述存储器用于存储程序指令,所述处理器被配置为运行所述程序指令,其特征在于,所述程序指令被运行而执行如权利要求1至9中任一项所述的方法的步骤。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202311155512.0A CN117252750A (zh) | 2023-09-07 | 2023-09-07 | 医疗机器人图像算法部署方法、调度方法、装置及系统 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202311155512.0A CN117252750A (zh) | 2023-09-07 | 2023-09-07 | 医疗机器人图像算法部署方法、调度方法、装置及系统 |
Publications (1)
Publication Number | Publication Date |
---|---|
CN117252750A true CN117252750A (zh) | 2023-12-19 |
Family
ID=89136090
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202311155512.0A Pending CN117252750A (zh) | 2023-09-07 | 2023-09-07 | 医疗机器人图像算法部署方法、调度方法、装置及系统 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN117252750A (zh) |
-
2023
- 2023-09-07 CN CN202311155512.0A patent/CN117252750A/zh active Pending
Similar Documents
Publication | Publication Date | Title |
---|---|---|
US11573844B2 (en) | Event-driven programming model based on asynchronous, massively parallel dataflow processes for highly-scalable distributed applications | |
CN106663010B (zh) | 执行基于图的程序规范 | |
CN111061715B (zh) | 基于Web和Kafka的分布式数据集成系统及方法 | |
CN107077364B (zh) | 基于特定数据端口连接的识别使用图组件的自动聚类的基于图的程序规范的编译 | |
Agha | Actors: a model of concurrent computation in distributed systems | |
CN110716748B (zh) | 业务处理方法、装置、计算机可读介质及电子设备 | |
CN106687920B (zh) | 管理任务的调用 | |
CN106687919B (zh) | 用于控制多个组件的执行的方法、系统和计算机可读介质 | |
EP3944082A1 (en) | Extending the kubernetes api in-process | |
CN111984269A (zh) | 提供应用构建服务的方法及应用构建平台 | |
CN111984270A (zh) | 应用部署方法和系统 | |
CN112256414A (zh) | 一种连接多种计算存储引擎的方法及系统 | |
CN116680040B (zh) | 一种容器处理方法、装置、设备、存储介质及程序产品 | |
CN114296933A (zh) | 端边云架构下轻量化容器的实现方法、数据处理系统 | |
CN115600676A (zh) | 深度学习模型推理方法、装置、设备及存储介质 | |
CN114675935A (zh) | 联盟链中部署链码的方法和系统 | |
CN114237892A (zh) | 键值数据的处理方法、装置、电子设备及存储介质 | |
EP1249764A2 (en) | Processor system | |
CN116362336B (zh) | 一种模型推理交互方法、电子设备、可读存储介质 | |
CN117076096A (zh) | 任务流程的执行方法、装置、计算机可读介质及电子设备 | |
CN115964176B (zh) | 云计算集群调度方法、电子设备和存储介质 | |
CN116932147A (zh) | 流式作业处理方法、装置、电子设备及介质 | |
WO2023051034A1 (zh) | 终端代码增量编译方法、系统、装置、服务器和存储介质 | |
CN117252750A (zh) | 医疗机器人图像算法部署方法、调度方法、装置及系统 | |
CN114661421A (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 |