Page 106 - 《软件学报》2026年第2期
P. 106
丁嵘 等: 基于领域知识图谱的框架间 AI 源码自动迁移 585
PaddlePaddle, and MindSpore. The approach has proven to be both mature and reliable, with part of its implementation open-sourced in
Baidu’s official migration tool, PaConvert.
Key words: deep learning framework; code migration; knowledge graph; abstract syntax tree (AST)
1 引 言
人工智能是新一轮科技革命和产业变革的重要驱动力量, 正在引领全球经济发展. 其中, 深度学习框架是新一
轮人工智能跨越发展的核心引擎, 也是构建人工智能全栈生态的关键. 因此, 深度学习框架引起了学术界和工业界
的高度重视, 全球科技巨头纷纷布局, 各种开源深度学习框架如雨后春笋般层出不穷, 如 PyTorch、MindSpore 和
PaddlePaddle [1,2] 等.
然而, 各种深度学习框架种类繁多、接口多样, 生态环境极其复杂. 一方面, 各种框架间的异构设计难以形成
协同发展、群智服务的良好态势, 造成了一个个深度学习框架的生态孤岛, 给深度学习框架技术进步、协同发展、
应用深化带来了巨大的挑战. 另一方面, 国外企业在深度学习框架方面凭借先发优势已经建立了强而有力的产业
生态, 打造了众多行业事实标准. 而现阶段我国相关算法和创新型应用多以国外底层软硬件平台构建, 自主产业生
态薄弱, “卡脖子”问题突出. 特别是国产厂商技术路线多样, 自主深度学习框架应用不够丰富, 相互间的兼容适配
水平较差, 缺乏有效的互操作性与互联互通机制, 严重制约了我国自主技术生态体系的构建. 例如, 百度的昆仑芯
片只支持飞桨自身以及国外 PyTorch 和 TensorFlow 等顶层框架的模型部署, 但不支持华为 MindSpore 框架的模
型部署; MindSpore 外的其他深度学习框架下的模型同样不能直接在昇腾处理器上进行训练. 为了充分利用昆仑
和昇腾等国内 AI 芯片的算力来提升训练性能, 研究人员需要将源模型进行迁移, 使迁移后的模型能够高效运行在
目标处理器上.
为了解决上述问题, 并推动我国自主深度学习框架的快速发展, 寻求一种实现深度学习框架间模型代码自动
迁移的方法就变得至关重要.
本文针对常见的神经网络模型代码在不同的深度学习框架间设计并实现出一种有效可行的代码自动转换方
案, 也即使用某一个深度学习框架编写的模型代码能够迁移到另一种深度学习框架上继续进行编写或运行. 主要
设计并实现了不同深度学习框架间算子差异信息的领域知识图谱、神经网络模型代码解析技术、模型代码迁移
的中间件、神经网络模型代码生成技术以及不同深度学习框架间的模型代码自动转换的程序及测试.
本文主要贡献如下: (1) 提出了基于领域知识图谱的深度学习框架间模型代码迁移方法, 极大地降低了代码迁
移的成本与复杂度. (2) 提出了深度学习框架知识的抽取方法, 从不同数据来源中抽取出各深度学习框架的算子信
息, 特别是不同框架间的算子及参数差异的映射信息, 最终构建出领域知识图谱, 以辅助模型迁移程序进行模型代
码的迁移. (3) 提出了一种基于抽象语法树 (abstract syntax tree, AST) 的模型代码迁移中间件, 简化了不同框架间
的模型代码迁移流程, 提高模型代码迁移的性能. (4) 本文在单语和并行语料库上进行了 3 种深度学习框架间模型
代码互相迁移的对比实验, 并将迁移前后的模型通过深度学习训练过程的对比实验来进一步验证模型代码迁移的
有效性. 实验结果表明, 本文提出的方法具有较好的迁移效果, 满足功能正确性和精度要求, 部分成果已经开源到
百度的迁移工具 PaConvert (https://github.com/PaddlePaddle/PaConvert) 中.
本文第 2 节介绍已有的相关工作. 第 3 节分析关键问题以及本文方法的整体框架. 第 4 节介绍本文方法的具
体实现细节. 第 5 节介绍为了验证方法有效性而开展的实验以及实验设置和实验结果. 最后, 第 6 节对本文工作进
行总结.
2 相关工作
微软等提出深度学习模型标准“开放神经网络交换 (ONNX)”格式, 推动了算法模型在不同机器学习框架间的
应用迁移 [3] . ONNX 定义了一组与环境、平台均无关的标准格式来增强各种 AI 模型的可交互性. 它使模型能够在
一个框架中进行训练, 然后转移到另一个框架进行推理. 因此源框架的深度学习模型可以先转换成 ONNX 模型,
然后再将 ONNX 模型转换为目标框架的深度学习模型.

