一种面向AI边缘推理的异构环境包与依赖统一管理方法与流程

摘要: 本发明涉及软件工程化管理,特别是涉及一种面向ai边缘推理的异构环境包与依赖统一管理方法。背景技术:1、在工业视觉和ai边缘推理场景中,c++工程常用于承载高性能...
一种面向AI边缘推理的异构环境包与依赖统一管理方法与流程

本发明涉及软件工程化管理,特别是涉及一种面向ai边缘推理的异构环境包与依赖统一管理方法。

背景技术:

1、在工业视觉和ai边缘推理场景中,c++工程常用于承载高性能推理、图像处理、加速算子和设备侧业务逻辑。此类工程通常同时依赖内部源码仓库、第三方预编译库、特定编译器版本、cmake构建配置以及gpu或推理引擎运行时动态库。与普通服务器环境相比,工业边缘设备具有操作系统版本多样、编译器版本不一致、设备算力有限、现场网络条件不稳定和人工维护成本高等特点。

2、但是现有方案主要存在以下不足:第一,源码工程依赖和环境包依赖割裂。源码管理工具主要用于处理源码仓库拉取和版本锁定,包管理工具更关注环境包依赖管理和构建集成。当一个ai推理工程既需要内部源码库,又需要多个预编译环境包时,开发者通常需要在多个工具之间手工协调依赖顺序、版本和路径。第二,源码工程依赖树和环境包依赖树之间缺少联动机制。实际工程中,主工程可能声明一部分环境包依赖,源码依赖工程也可能继续声明自己的环境包依赖;同时,某个环境包自身还可能依赖其他运行时包、基础库包或推理引擎组件。现有方案通常难以自动从源码工程依赖树中提取环境包根依赖,并进一步递归展开环境包传递依赖。第三,异构环境下环境包匹配不够适合边缘现场。传统包管理流程在包不完全匹配时往往需要本地构建或人工调整配置。对于边缘工控机而言,现场编译大型依赖可能耗时较长,甚至因算力、存储或系统裁剪而不可行。第四,构建时依赖和运行时依赖割裂。ai推理工程不仅需要头文件和链接库,还需要运行时目录、动态库目录、推理引擎资源目录等环境变量配置。现有工具常能解决部分编译期问题,但仍可能出现编译通过而运行时找不到动态库的问题。

技术实现思路

1、为了克服现有技术的不足,本发明的目的是提供一种面向ai边缘推理的异构环境包与依赖统一管理方法,解决现有面向ai边缘推理的c++工程中源码工程依赖、预编译环境包依赖、编译器版本约束、构建配置与运行时环境变量配置相互割裂导致的人工部署成本高、异构边缘设备适配困难的问题。

2、为实现上述目的,本发明提供了如下方案:

3、一种面向ai边缘推理的异构环境包与依赖统一管理方法,包括:

4、接收并解析用户任务指令及结构化依赖清单;所述结构化依赖清单包括:源码依赖条目、环境包依赖条目、编译器版本约束条目、工程资源同步操作条目;

5、根据所述源码依赖条目递归提取对应的源码依赖工程,得到源码工程依赖树;

6、通过读取目标工程、所述源码工程依赖树中各源码依赖工程对应的所述环境包依赖条目建立环境包根依赖集合;

7、根据环境包仓库中的依赖描述文件递归展开所述环境包根依赖集合中环境包的传递依赖,得到环境包依赖闭包;

8、根据目标设备的操作系统类型、操作系统版本和编译器版本生成设备环境指纹;

9、基于所述设备环境指纹、所述编译器版本约束条目以及各所述环境包依赖条目中的版本约束对所述环境包依赖闭包中的环境包进行分级匹配;

10、下载并部署匹配到的异构预编译环境包;

11、根据所述源码工程依赖树、所述环境包依赖闭包以及已部署环境包的安装目录信息生成构建配置片段,并根据所述工程资源同步操作条目进行工程资源同步;

12、将已部署环境包的运行时目录、库目录、资源目录或安装根目录写入运行时环境变量,并在运行阶段读取环境变量的依赖路径。

13、优选地,接收并解析用户任务指令及结构化依赖清单,还包括:

14、通过解析所述用户任务指令生成任务描述对象;所述任务描述对象包括:任务类型、目标工程路径、目标构建对象标识、编译器版本、待处理依赖项和执行选项;

15、根据所述任务描述对象生成步骤执行顺序。

16、优选地,根据所述源码依赖条目递归提取对应的源码依赖工程,得到源码工程依赖树,包括:

17、获取每个所述源码依赖条目对应的源码仓库地址、本地目录和结构化的依赖清单路径;

18、当所述本地目录不存在时,获取所述源码依赖条目对应的源码依赖工程;

19、当所述本地目录已存在时,根据任务类型进行更新或状态检查;

20、读取已获取源码依赖工程中的所述结构化依赖清单,识别下级源码依赖条目,并对下级源码依赖工程与父级源码依赖工程建立层级关系;

21、对已处理的源码依赖工程进行标记,当不存在未处理的下级源码依赖条目时,输出源码工程依赖树。

22、优选地,通过读取目标工程、所述源码工程依赖树中各源码依赖工程对应的所述环境包依赖条目建立环境包根依赖集合,包括:

23、通过遍历目标工程及源码工程依赖树中各源码依赖工程对应的结构化依赖清单提取环境包依赖项;所述环境包依赖项包括:环境包名称、版本约束、编译器版本约束、工程资源同步操作;

24、当多个工程声明相同环境包时,根据环境包名称、版本约束和编译器版本约束进行归并,保留来源工程、清单路径和同步操作,得到源码工程-环境包关联关系。

25、优选地,根据环境包仓库中的依赖描述文件递归展开所述环境包根依赖集合中环境包的传递依赖,得到环境包依赖闭包,包括:

26、将所述环境包根依赖集合中的环境包依赖项设定为待解析对象,并在环境包仓库中查询所述待解析对象对应的依赖描述文件;

27、读取所述依赖描述文件中的下级环境包依赖项,并将未处理的下级环境包加入待解析集合;

28、将不存在依赖描述文件的环境包以叶子环境包的方式保留在环境包依赖树中;

29、当所述待解析集合为空时,输出环境包依赖闭包。

30、优选地,所述设备环境指纹包括:操作系统标识、系统版本标识和编译器版本标识。

31、优选地,基于所述设备环境指纹、所述编译器版本约束条目以及各所述环境包依赖条目中的版本约束对所述环境包依赖闭包中的环境包进行分级匹配,下载并部署匹配得到的异构预编译环境包,包括:

32、根据环境包名称、版本约束、编译器版本约束、设备环境指纹查询环境包仓库索引;

33、将查询时操作系统类型、操作系统版本、编译器版本和环境包版本均一致的环境包确定为精确匹配环境包;

34、当不存在精确匹配环境包时,依次查询兼容操作系统环境包、兼容编译器版本环境包和通用通道环境包;

35、记录每个匹配环境包的匹配级别、仓库路径、版本信息和来源工程,得到待部署环境包列表;

36、当不存在满足兼容条件的候选环境包时,将环境包记录为未匹配环境包并输出环境包的名称及版本约束信息。

37、优选地,下载并部署匹配到的异构预编译环境包,包括:

38、将待部署环境包列表与本地环境包索引进行比较;

39、当目标部署环境包为本地不存在的环境包时,下载并解压对应压缩包;

40、当目标部署环境包为本地版本或更新时间不满足要求的环境包时,更新对应环境包;

41、当目标部署环境包为本地已满足要求的环境包时,跳过下载;

42、部署完成后更新本地环境包索引,记录环境包名称、版本号、编译器版本、安装路径、库目录、运行时目录以及资源目录。

43、优选地,根据所述源码工程依赖树、所述环境包依赖闭包以及已部署环境包的安装目录信息生成构建配置片段,并根据所述工程资源同步操作条目进行工程资源同步,包括:

44、根据源码工程依赖树生成源码依赖导入配置,根据环境包依赖树和本地环境包安装路径生成环境包导入配置,并将构建配置片段写入目标工程构建配置文件;

45、根据所述工程资源同步操作条目中的源文件或目录、目标工程相对路径、同步类型执行复制或移动操作;

46、当源资源不存在或目标路径不可写时,记录异常并输出同步失败项。

47、优选地,将已部署环境包的运行时目录、库目录、资源目录或安装根目录写入运行时环境变量,并在运行阶段读取环境变量的依赖路径,包括:

48、对已部署的所述异构预编译环境包中的运行时目录、库目录、资源目录或安装根目录进行路径规范化、空值判断、路径重复判断;

49、生成环境变量名;所述环境变量名包括:环境包标识、目录类型;

50、当目标环境变量不存在或现有变量值不包含目标目录时,向用户级或系统级环境变量写入变量值;

51、当现有变量值已满足要求时,跳过写入。

52、本发明公开了以下技术效果:

53、本发明提供了一种面向ai边缘推理的异构环境包与依赖统一管理方法,通过源码工程依赖树与环境包依赖树的联动解析,解决了人工逐个检查子工程依赖清单的问题,实现了从目标工程及其下级源码依赖工程中自动提取环境包依赖;通过环境包依赖描述文件递归展开传递依赖,解决了因遗漏间接依赖导致部署失败的问题,实现了形成包含直接环境包依赖和间接环境包依赖的环境包依赖闭包;通过设备环境指纹和分级环境包匹配机制,解决了边缘设备现场本地编译大型依赖的问题,实现了根据目标设备的操作系统信息和编译器版本优先复用异构预编译环境包;通过运行时环境变量配置,解决了频繁手动填写固定路径的问题,实现了在运行阶段通过读取环境变量获得依赖路径。