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

丁嵘 等: 基于领域知识图谱的框架间          AI 源码自动迁移                                            597


                 异, 来验证功能正确性.
                    但是, 深度学习模型代码转换的并行语料库很少, 因此, 本文借鉴了 TransCoder 的回译功能来生成同一框架
                 的模型代码, 也即先用源框架的模型代码转换到另一种目标框架的模型代码, 再由生成的目标框架的模型组网代
                 码回译到源框架上, 获取源框架的新的模型代码               [9] . 此时在满足上述的   3  个条件下, 将同一框架下的原始模型代码
                 与回译后生成的新的模型代码之间检测模型代码翻译的功能正确性. 综上, 本文按照不同的深度学习框架, 分别测
                 试并行语料库和单语言语料库的神经网络模型代码转换的异构适配技术, 语料库的数量及其代码规模如表                                      10
                 所示.

                                                     表 10 语料库数量

                                    语料库名称                     数量                 代码行数
                                  PyTorch模型代码                  98                 93 786
                                PaddlePaddle模型代码               76                 71 820
                                 MindSpore模型代码                 54                 50 544

                    本文采用回归问题的常用评价指标来衡量代码迁移前后的输出张量的差异性. 由于深度学习模型输出张量元
                 组, 因此采用平均绝对误差        (mean absolute error, MAE) 和均方误差  (mean squared error, MSE) 两种评价指标. 假设  t
                 是输入张量元组的数量,        k  是输出张量元组的数量,       X i∈ [1,k]、 Y i∈[1,k] 、 Z i∈[1,k]  都是张量.  X =< X 1 ,X 2 ,...,X t >  表示
                 输入张量元组,     Y =< Y 1 ,Y 2 ,...,Y t > 表示参考模型代码在输入  X  后计算得出的输出张量元组,      Z =< Z 1 ,Z 2 ,...,Z t >
                                                                    X  后计算得出的输出张量元组.             Z i  是欧几
                 表示通过本文迁移后生成的目标模型代码在输入同一个张量元组                                                Y i  和
                         n
                                                                       j
                 里得空间   R  的两个结果向量, 并且      Y ij  和  Z ij  分别表示输出张量和的第   个分量.

                                                    
                                                          1  n ∑
                                                     MAE i =  y i j −z i j
                                                    
                                                    
                                                    
                                                          n
                                                    
                                                    
                                                            j=1
                                                    
                                                    
                                                    
                                                    
                                                    
                                                            k ∑
                                                    
                                                    
                                                    
                                                    
                                                             MAE i
                                                    
                                                    
                                                            i=1                                       (5)
                                                     MAE c =
                                                    
                                                    
                                                    
                                                              k
                                                    
                                                    
                                                    
                                                    
                                                           C ∑
                                                    
                                                    
                                                    
                                                    
                                                             MAE c
                                                    
                                                    
                                                    
                                                          c=1
                                                    
                                                     MAE =
                                                    
                                                              C
                    平均绝对误差如公式        (5) 所示, 其中   MAE i  表示  Y i  和  Z i  两个张量的平均绝对误差,  n 表示张量的维度,   MAE c
                 表示   Y  和  Z  两个张量元组的平均绝对误差, 其值也代表在单个模型代码上迁移的平均相对误差,                        MAE  则表示最
                 终的平均相对误差,      C  表示经过测试的模型代码的总数量.

                                                            n ∑
                                                          1   (    ) 2
                                                   
                                                   MSE i =
                                                   
                                                              y i j −z i j
                                                          n
                                                   
                                                   
                                                            j=1
                                                   
                                                   
                                                   
                                                   
                                                           k ∑
                                                   
                                                   
                                                   
                                                   
                                                            MSE i
                                                   
                                                   
                                                   
                                                           i=1                                        (6)
                                                   
                                                    MSE c =
                                                   
                                                   
                                                             k
                                                   
                                                   
                                                   
                                                   
                                                          C ∑
                                                   
                                                   
                                                   
                                                   
                                                            MSE c
                                                   
                                                   
                                                   
                                                          c=1
                                                   
                                                   MSE =
                                                   
                                                             C
                    均方误差如公式       (6) 所示, 其中  MSE i  表示  Y i  和  Z i  两个张量的均方误差,  n 表示张量的维度,   MSE c  表示  Y  和
                 Z  两个张量元组的均方误差, 其值也代表在单个模型代码上迁移的均方误差,                        MSE  则表示最终的均方误差,       C  表
                 示经过测试的模型代码的总数量.
                    本文分别对比了      PyTorch、PaddlePaddle 和  MindSpore 这  3  种深度学习框架的神经网络模型代码的迁移效果,
   113   114   115   116   117   118   119   120   121   122   123