deepspeed 多机多卡RuntimeError: Ninja is required to load C++ extensions
·
问题原贴:
https://github.com/microsoft/deepspeed/issues/1687
原因
deepspeed 子进程的找不到ninja这个包,这包是用来加载tocrh的一些c++插件 cpu_adam或者 fuse adam,这个一般会引起下游的错误 No mudule named fuse adam 或者 No mudule named cpu_adam
排查环境原因
排查 ninja是否安装
ninja --version
如果没有安装就
pip intall ninja
如果有安装还是报错就继续往下看
需要给子进程设置ninja的环境变量
#查看ninja路径
whereis ninja
# 报错文件路径可以在报错信息中找到
vi /opt/conda/lib/python3.8/site-packages/torch/utils/cpp_extension.py
# vim 命令模式搜索
/def is_ninja_available()
#代码中加入你的ninja的环境变量
os.environ['PATH'] += ':/opt/conda/bin'
找到torch的源码报错位置(报错信息会写),文件名是cpp_extension.py文件,具体改法如下图
更好的解决方案猜想
1.给系统设置ninja的环境变量(实测不行)
2.deepspeed启动时设置ninja环境变量(待测试)
更多推荐
已为社区贡献2条内容
所有评论(0)