Code Migration And Alignment

导言

  • 越靠近一线的研发,更会忙碌于开源代码/特性的迁移工作。
  • 原因主要在于客户发现了效果好的开源成果,就觉得没有复用门槛,反过来催促开发快点实现。
  • 读论文也是为了更好的理解迁移的代码,而较少关注其原理

无论是把 PyTorch代码 迁移到其他框架(e.g.,MindSpore),还是把将代码继承到All IN ONE 框架(e.g., MindSpeed-MM),都经常遇到如下头大的问题:

  1. 一行行代码理解迁移速度太慢,并且要理解的非重要、不相关内容太多。
  2. 一股脑先移植过来,总是遇到channel对不上、触发算子计算维度限制条件 等问题。
  3. 训练推理流程打通之后,也会遇到精度不对齐的问题。

原始的解决办法就是在计算流程上打印关键数据的变化,找到是开始出现了差异(非预期)地方,使用起来非常不方便:

  1. 需要手动加print;
  2. 需要肉眼对比打屏信息;

想寻找/开发一个python工具DataDiffer/TensorDiffer:

  1. 比如通过装饰器等方法,跟踪函数内,指定变量的变化;
  2. 包括shape,tensor内前5个非0值,
  3. 支持将变化信息保存到文件,方便后续对比;

项目