Code Migration And Alignment
导言
- 越靠近一线的研发,更会忙碌于开源代码/特性的迁移工作。
- 原因主要在于客户发现了效果好的开源成果,就觉得没有复用门槛,反过来催促开发快点实现。
- 读论文也是为了更好的理解迁移的代码,
而较少关注其原理。
无论是把 PyTorch代码 迁移到其他框架(e.g.,MindSpore),还是把将代码继承到All IN ONE 框架(e.g., MindSpeed-MM),都经常遇到如下头大的问题:
- 一行行代码理解迁移速度太慢,并且要理解的非重要、不相关内容太多。
- 一股脑先移植过来,总是遇到channel对不上、触发算子计算维度限制条件 等问题。
- 训练推理流程打通之后,也会遇到精度不对齐的问题。
原始的解决办法就是在计算流程上打印关键数据的变化,找到是开始出现了差异(非预期)地方,使用起来非常不方便:
- 需要手动加print;
- 需要肉眼对比打屏信息;
想寻找/开发一个python工具DataDiffer/TensorDiffer:
- 比如通过装饰器等方法,跟踪函数内,指定变量的变化;
- 包括shape,tensor内前5个非0值,
- 支持将变化信息保存到文件,方便后续对比;