问题原贴:
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环境变量(待测试)

Logo

旨在为数千万中国开发者提供一个无缝且高效的云端环境,以支持学习、使用和贡献开源项目。

更多推荐