Page 111 - 《软件学报》2026年第2期
P. 111

590                                                        软件学报  2026  年第  37  卷第  2  期


                    本文的领域知识图谱采取自顶向下的构建方法, 首先需要根据研究目标确定知识图谱的数据模型. 本文的模
                 型代码迁移程序需要用到源与目标框架下算子间的映射关系, 因此知识图谱中需要存储                              PyTorch、MindSpore、
                 PaddlePaddle 等国内外深度学习框架内的算子知识、框架间算子映射关系知识等. 由此, 本文的领域知识图谱中
                 存放的节点就包括: 深度学习框架的模块、算子、算子参数、算子输入值、算子返回值, 存放的关系则分为框架
                 内关系与框架间关系. 其中, 框架内关系包含模块与算子的关系、算子及其参数的关系、参数及其数据类型的关
                 系以及算子及其输入值的关系, 框架间关系包含算子间映射关系、参数间映射关系等. 部分节点和关系设计如表                                   1
                 和表  2  所示.

                                                 表 1 领域知识图谱节点设计

                              节点名称            标签 (label)               属性 (properties)
                                                                    name: 深度学习框架名称
                              框架节点            Framework
                                                                    version: 深度学习框架版本
                                                                framework: 所属的深度学习框架名称
                               类节点             Module
                                                                        name: 类名称
                                                                framework: 所属的深度学习框架名称
                                                                        name: 算子名称
                              算子节点             Operator
                                                                  full_name: 算子的完整调用路径
                                                                    version: 深度学习框架版本
                                                                framework: 所属的深度学习框架名称
                                                                    operator: 所属的算子名称
                                                           parameter_order: 该参数在所处参数中的顺序序号值
                              参数节点             Parameter                name: 参数名称
                                                              dtype: 参数的类型名称/参数可选类型的数目
                                                                     default: 参数的默认值
                                                                     optional: 参数的可选性

                                                 表 2 领域知识图谱关系设计

                        关系名称              类型 (type)                      属性 (properties)
                  框架节点与类节点间的关系         classOfFramework             name: 所连接的类节点的名称
                   类节点与类节点间的关系          subClassOfClass             name: 所连接的类节点的名称
                  类节点与算子节点间的关系          operatorOfClass            name: 所连接的算子节点的名称
                                                     parameter_order: 所连接的参数节点在当前算子的参数列表中所处的顺序值
                 算子节点与参数节点间的关系 parameterOfOperator
                                                                   name: 所连接的参数节点的名称
                                                      input_order: 所连接的输入节点在当前算子的输入列表中所处的顺序值
                 算子节点与输入节点间的关系          inputOfOperatpr
                                                                   name: 所连接的输入节点的名称
                 不同框架的算子节点间的关系 equivalentOperator                  framework_name: 目标框架名称
                 不同框架的参数节点间的关系 equivalentParameter                 framework_name: 目标框架名称

                    目前, 深度学习框架如       PyTorch 和  MindSpore 等官方平台都提供了详细的      API 文档, MindSpore 和  PaddlePaddle
                 等官方社区也都提供了其与          PyTorch  框架的算子映射关系文档, 为本文的研究提供了材料支撑. 然而, 仅依靠深度
                 学习框架官方提供的映射文档直接获取的框架间关系知识不理想, 有效的算子以及参数映射关系数量较少. 因此
                 本文提出了一种深度学习框架知识抽取方法, 把抽取出的深度学习框架知识存入基于图的知识图谱中, 以更好地
                 突出算子及参数的层次信息, 获取从关系的角度去分析问题的能力, 为代码迁移提供数据基础.
                    具体来说, 本文基于网络爬虫技术以基于规则的知识抽取方法, 从主流深度学习框架提供的官方文档网站中
                 爬取出深度学习框架所有算子的信息以及官方社区提供的部分深度学习框架间算子的映射关系信息, 然后解析网
                 页内容, 获取有效信息元素, 同时对获取到的信息进行数据清洗, 包括解析、过滤和统一重组等操作. 数据清洗的
   106   107   108   109   110   111   112   113   114   115   116