Megatron-LM学习笔记(番外)MindSpeed与MindSpeed-LLM
在现在的2025年,晟腾卡的torch使用体验已经好了很多了,当然也不是没有问题,比如使用transformers的库就有自己的各种各样的问题(精度不对齐),想要调优还很困难。我觉得这个方向是对的,因为尊重开源社区的成果以及有自信是很重要的,完全不需要重复造轮子的时候,没有需求的时候,尽量保持标准。毕竟话语权是自己靠贡献争取的。但是这不代表框架没有坑,最坑的就是megatron-adaptor这个
国产卡中昇腾近几年进步非常大(指软件配套相关),大约在2024年左右还是完全不可用的状态。基本内部正经开发好像都是使用torch,和世界主流接轨,至于mindspore实在是不知道其存在的意义,起步晚功能少而且基本上和其他的框架没啥区别,如果没有新活或者新架构完全可以不整。在现在的2025年,晟腾卡的torch使用体验已经好了很多了,当然也不是没有问题,比如使用transformers的库就有自己的各种各样的问题(精度不对齐),想要调优还很困难。
MindSpeed基本上就是Megatron,MindSpeed-LLM就是Megatron-LM,这样基本上保证了其他基于megatron的代码能够迁移过来。我觉得这个方向是对的,因为尊重开源社区的成果以及有自信是很重要的,完全不需要重复造轮子的时候,没有需求的时候,尽量保持标准。毕竟话语权是自己靠贡献争取的。当然,各种原因也不能保证开源贡献一定能得到应有的回报就是了。
根据说明安装好MindSpeed和MindSpeed-LM,弄好megatron,基本上就能直接使用提供的脚本了。这个和megatron基本没有区别。
https://gitee.com/ascend/MindSpeed-LLM/blob/2.1.0/docs/pytorch/install_guide.md
但是这不代表框架没有坑,最坑的就是megatron-adaptor这个玩意,使用了各种monkey patch的方式把megatron中的实现替换成了自己的实现。实测确实能不会出现简单torch实现的训练精度问题,但是想改代码一定要小心到底是替换过的还是原始的函数。
https://gitee.com/ascend/MindSpeed-LLM/blob/2.1.0/mindspeed_llm/tasks/megatron_adaptor.py
替换的原理是实时找到当前初始化后环境中的各种函数或者模块的名字,然后直接把这些指向自己的实现。想修改megatron的函数,一定要先来adaptor里搜搜看你要修改的函数是否出现在了这里,然后去修改自己的实现的函数。比如save checkpoint就被改掉了,但是load没有被改,真的很尴尬,debug地狱。
鲲鹏昇腾开发者社区是面向全社会开放的“联接全球计算开发者,聚合华为+生态”的社区,内容涵盖鲲鹏、昇腾资源,帮助开发者快速获取所需的知识、经验、软件、工具、算力,支撑开发者易学、好用、成功,成为核心开发者。
更多推荐



所有评论(0)