Page 110 - 《软件学报》2026年第2期
P. 110
丁嵘 等: 基于领域知识图谱的框架间 AI 源码自动迁移 589
此外, 存储在代码中的映射信息与迁移程序耦合程度过高, 只适用于特定场景和有限框架下的代码迁移, 无法适应
后续对框架数量进行扩展.
此外, 模型构建步骤通常可以分为模型设计、准备数据、训练设置、应用部署和模型评估这 5 个阶段, 其中
最核心的即为模型设计步骤. 该步骤决定了模型在解决问题方面的性能表现, 并且可以根据开发者需求来自定义
选择数据集和训练配置参数等. 模型设计步骤由建模人员负责的部分主要包括网络结构设计、损失函数的指定以
及优化算法的指定, 上述部分在不同深度学习框架下的差异主要体现在所调用的算子及其参数的不同, 且主要为
一对一映射关系的算子, 所以本文的方法主要针对一对一关系的算子及参数节点进行迁移.
3.2 方法框架
基于上述分析, 本文拟采用知识图谱来存储框架间映射关系. 由于知识图谱以图的形式表示信息, 可以表示各
种类型的实体和复杂的关系, 并且可以随着新知识的加入而动态更新以及进行知识融合; 同时知识图谱的结构化
特性可以减少信息的冗余和噪声, 支持基于属性和关系等的复杂查询, 使得检索结果更加准确和高效, 具备较好的
信息表达能力和检索能力. 同时, 知识图谱的图结构也适合与后续进行深度学习框架间知识融合, 提升映射信息的
获取效率. 因此, 本文拟采用知识与代码相分离的思想, 将框架间算子差异信息存储在领域知识图谱中, 以降低迁
移算法与映射信息之间的耦合性, 提高存储算子信息的灵活性及查询效率. 并在此基础上实现模型代码的自动迁
移程序, 从而达到不同深度学习框架间模型代码自动迁移的目的.
此外, 考虑到代码翻译中的抽象语法树是语言相关且接近源代码语法结构的高级数据结构, 适合于快速的算
子检测与修改, 因此本文利用抽象语法树作为中间数据结构来实现模型的自动迁移, 从而解决现有技术体系依赖
人工进行代码迁移或依赖人工编写接口映射规则而导致成本居高不下的问题, 提高代码迁移的性能, 最终实现国
外深度学习框架上的模型代码低成本自动化迁移至国内主流框架, 本文的方法框架如图 1 所示.
领域知识图谱
func() 领域知识
构建模块
图谱
设计文档
抽象语法树 抽象语法树 抽象语法树
func() func()
解析模块 改写模块 反解析模块
源码 ଢѓս
图 1 基于领域知识图谱的框架间 AI 源码自动迁移方法框架
本文的方法框架由 4 个部分组成, 包括领域知识图谱构建模块、抽象语法树解析模块、抽象语法树改写模块
和抽象语法树反解析模块. 其中, 领域知识图谱构建模块负责基于设计好的节点与关系构建不同深度学习框架间
的算子映射关系, 为后续进行代码迁移提供知识基础; 抽象语法树解析模块将源框架下的模型代码中表征的相关
信息解析成抽象语法树, 并与目标框架一起传递到抽象语法树改写模块; 抽象语法树改写模块负责将上一步得到
的抽象语法树基于知识图谱进行针对性地遍历和改写操作, 得到目标深度学习框架下的新抽象语法树; 最后, 抽象
语法树反解析模块负责将新抽象语法树反解析为目标框架下的模型代码.
4 关键模块
4.1 领域知识图谱构建模块
由上述分析可知, 将不同框架间的差异信息存储在表格或代码中会导致知识的表达能力较弱. 例如, 不同深度
学习框架间的算子间往往会存在多对多映射关系, 且同一框架内需要考虑算子调用顺序如 PyTorch 的数据集加载
器算子需要调用具体的数据集算子; 不同框架间需要考虑算子依赖关系如 PyTorch 框架的采样器算子需要依赖数
据集算子, 而 MindSpore 框架的数据集算子需要反向依赖采样器算子. 这些信息无法较好地在表格或代码中进行
展现, 而知识图谱的图结构特性适合存储复杂信息.

