APEX:一款基于 PyTorch 的混合精度训练加速神器。
Apex是一款由Nvidia开发的基于PyTorch的混合精度训练加速神器,最近Apex更新了API,可以用短短三行代码就能实现不同程度的混合精度加速,训练时间直接缩小一半。使用Pytorch实现:
from apex import amp
model, optimizer = amp.initialize(model, optimizer, opt_level="O1") # 这里是“欧一”,不是“零一”
with amp.scale_loss(loss, optimizer) as scaled_loss:
scaled_loss.backward()
1.linux系统下安装NVIDIA apex:
git clone https://github.com/NVIDIA/apex %下载apex
cd apex %进入apex文件夹的路径
pip install -v --no-cache-dir --global-option="--cpp_ext" --global-option="--cuda_ext" ./
安装命令失败,改用:
python setup.py install
安装成功。使用pip list检查是否成功。
2.在Windows10下安装
git clone下载:(受网络影响,可能链接超时,可以去github中直接下载zip后解压)
地址:https://github.com/NVIDIA/apex 复制好后,在想要放入的文件夹中, 右键空白处点击git bash here(前提是已经安装了git)。输入:
git clone https://github.com/NVIDIA/apex.git
使用cmd进入apex或apex-master文件夹后,使用命令行:
python setup.py install
失败,显示:
而后寻找原因,检查cuda版本,使用nvcc -V命令,显示:
3.一度以为电脑自装了cuda和cudnn安装包。因为使用nvidia-smi命令会显示cuda版本。但其实没安装=.=
(1)下载cuda:
先检查显卡对应的cuda版本,可以用nvidia-smi命令行,也可以进入nvidia控制面板,进入系统信息,点击组件:我的为11.6
网址:CUDA Toolkit Archive | NVIDIA Developer
选择对应版本:
选择系统:右下角下载。
(2)下载cudnn:
CUDNN是一个常见的神经网络层加速库文件,能够很大程度把加载到显卡上的网络层数据进行优化计算,而CUDA就像一个很粗重的加速库,其主要依靠的是显卡。CUDNN需要在有CUDA的基础上进行,CUDNN可以在CUDA基础上加速2倍以上。
网址(需注册):https://developer.nvidia.com/rdp/cudnn-download
下载相应的版本:
(3)安装和配置cuda:
运行下载的cuda的exe文件:
配置cuda的环境变量:
系统变量中多了两个:
再手动添加三个变量:
查看cuda是否安装成功,以及环境变量配置情况:
命令行输入set cuda查看环境变量,输入nvcc -V查看cuda版本:
进入路径C:\Program Files\NVIDIA GPU Computing Toolkit\CUDA\v10.2\extras\demo_suite,执行deviceQuery.exe,bandwidthTest.exe,两个地方的Result=PASS则说明通过。反之,Rsult=Fail 则需要重新安装:
(4).安装和配置:CUDNN
解压下载的cuDNN压缩包,可以看到bin、include、lib目录。
打开 C:\Program Files\NVIDIA GPU Computing Toolkit\CUDA打开,找到bin、include、lib目录,将三者文件夹中内对应的文件复制到bin、include、lib目录。
4.最后,我们来安装apex
在base环境中安装一直失败,还没解决。于是在之前创建的一个名为pytorch的虚拟环境中安装成功了。pip list之后显示:
5.后续,在base环境中也解决了:
需要用管理员权限打开anaconda prompt,在进行安装apex的操作。原因:"Defaulting to user installation because normal site-packages is not writeable" - 知乎