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环境变量(待测试)
新一代开源开发者平台 GitCode,通过集成代码托管服务、代码仓库以及可信赖的开源组件库,让开发者可以在云端进行代码托管和开发。旨在为数千万中国开发者提供一个无缝且高效的云端环境,以支持学习、使用和贡献开源项目。
更多推荐


所有评论(0)