参考链接:Linux非root用户如何优雅地安装apex加速包-----使用conda命令和cudatoolkit-dev包_linux安装apex_liyiersan123的博客-CSDN博客
apex是NVIDIA开源的用于在PyTorch框架下实现混合精度训练的模块,能够方便地进行FP16训练。
github库链接:https://github.com/NVIDIA/apex/#linux
安装步骤:
1. 首先确保运行环境中torch版本和cuda版本对应
使用nvcc -V命令
使用conda list命令
如果不一致,可以重新安装对应版本的pytorch,安装网址如下:
https://pytorch.org/get-started/previous-versions/
注:有的博客提示还需要检查gcc版本:当前环境中gcc的版本大于等于5.2(可使用gcc -v命令查看)
2. 下载apex库
git clone https://github.com/NVIDIA/apex.git (报错的话可以多运行几次)
cd apex
git checkout 22.04-dev (这个命令不是必须的)
3. 安装
纯python版本安装:(可用)
python setup.py install --cpp_ext --cuda_ext
python和C++版本安装:(我这边测试没成功)
pip install -v --disable-pip-version-check --no-cache-dir --global-option="--cpp_ext" --global-option="--cuda_ext" ./
可能遇到的报错:
1. ImportError: cannot import name ‘container_abcs‘ from ‘torch._six‘
报错原因:torch1.8版本之后就不使用torch._six了
解决方法:需要去apex库环境下找到 _amp_state.py 文件
apex库环境路径:/home/{用户名}/anaconda3/envs/{虚拟环境名}/lib/python3.9/site-packages/apex-0.1-py3.9-linux-x86_64.egg/apex/amp
修改里面的:
if TORCH_MAJOR == 0: import collections.abc as container_abcs else: from torch._six import container_abcs
修改为:
if TORCH_MAJOR == 1 and TORCH_MINOR < 8: from torch._six import container_abcs else: import collections.abc as container_abcs
2. ModuleNotFoundError: No module named ‘fused_layer_norm_cuda‘
报错原因:安装apex包时使用命令:python setup.py install 通过该命令安装的apex没有cuda
解决方法:
参考:ModuleNotFoundError: No module named ‘fused_layer_norm_cuda‘_cuda_ext_Yez1011的博客-CSDN博客
3.ModuleNotFoundError: No module named 'amp_C'
解决办法:
如果原来有apex,需要先卸载掉
1、git clone git://github.com/NVIDIA/apex
2、cd apex/apex/transformers/pipline_parallel
将下面的utils.py 文件的第23行的import amp_C 给注释掉(出现import amp_C的地方,都注释掉),保存。
3. pip install -v --no-cache-dir ./