# 大模型网络算法参数和输出对比

**网络参数对比**

网络参数（这里指网络权重）是网络的基础，如果网络参数与标杆网络不一致，后续的对比将没有意义。

排查参数个数是否一致；

排查参数shape是否一致；

排查参数是否有冻结；

如果排查网络参数一致后，可以使用权重迁移工具，将两个的网络参数都初始化相同的值，便于进行下述对比。

**网络输出对比**

控制相同网络权重和输入，对比网络的输出结果（包含正向网络输出和loss）是否一致。如果一致，说明网络基本没有问题，可以优先进行其他对比。如果不一致，可以用下面的逐层对比找出差异产生的具体位置。

注意：对比时需要去除网络中的随机元素。

**逐层对比**

**静态图**

如果MindSpore网络运行在静态图模式下，可以使用Dump工具进行对比。

Dump对比：可以导出所有算子的输入输出，与标干网络对应算子的输入输出进行对比。

工具链接：Dump功能调试

**动态图**

如果网络运行在动态图模式下，可以使用Debug、USEFUL\_TOOLS或Hook功能进行对比。

Debug对比：使用pycharm、vscode等工具的Debug功能，在指定位置打断点，查看算子的输入输出。

使用USEFUL\_TOOLS工具对比：如果MindSpore网络与目标网络完全一致，包括节点的名称，个数等。此时，可以使用USEFUL\_TOOLS工具自动对比pytorch或mindspore网络中的同名节点的正向与反向的输入与输出。工具链接：USEFUL\_TOOLS

使用Hook功能对比：Hook功能可以捕获中间层算子的输入、输出数据以及反向梯度。工具链接：Hook功能

