Linux非root用户如何优雅地安装apex加速包-----使用conda命令和cudatoolkit-dev包
Linux非root用户如何优雅地安装apex加速包-----使用conda命令和cudatoolkit-dev包一、官方推荐的安装方式github链接: GitHub - NVIDIA/apex: A PyTorch Extension: Tools for easy mixed precision and distributed training in Pytorchgit clone htt
Linux非root用户如何优雅地安装apex加速包-----使用conda命令和cudatoolkit-dev包
一、官方推荐的安装方式
git clone https://github.com/NVIDIA/apex
cd apex
pip install -v --disable-pip-version-check --no-cache-dir --global-option="--cpp_ext" --global-option="--cuda_ext" ./
二、一点也不优雅的安装方法
大多数博客和教程,都会推荐使用 python setup.py install命令来安装,这种方式虽然可以安装成功,但是确实相应的依赖,安装的只是一个阉割版的apex,很多功能都不可用,在运行如下代码时就会报错。
import torch
import apex
input = torch.rand(3, 10).cuda()
fln = apex.normalization.FusedLayerNorm(10).cuda()
fln(input)
所以这种方式一点也不优雅,实际上要想安装官方推荐命令安装完整版apex,需要满足两个条件。
三、安装apex的前置条件
1. 当前环境中cuda版本(可使用nvcc -V命令查看)和Pytorch版本一致(可使用conda list命令查看)
2.当前环境中gcc的版本大于等于5.2(可使用gcc -v命令查看)
对于GCC的版本要求这一点尤其重要,大多数博客都不会提到这一点,如果当前环境中gcc版本太低,而账户又没有root权限,可以参考centos下非root用户安装gcc的方法 - Gaaray - 博客园 (cnblogs.com)来为当前用户安装指定的gcc版本,解压编译安装的时间比较长,请耐心等待,简要步骤如下:
0. 源码下载地址为:https://ftp.gnu.org/gnu/gcc/
1. 下载源码、解压、cd到源码目录
2. chmod +x ./contrib/download_prerequistites
3. ./contrib/download_prerequistites
4. mkdir objdir && cd objdir
5. ../configure --disable-checking --enable-languages=c,c++ --disable-multilib --prefix=安装目录 --enable-threads=posix
6. 多线程编译并安装
7. 将gcc添加到当前环境变量并source生效
如果在编译时,出现找不到makeinfo的错误,可参考Linux中,texinfo-6.4 编译安装说明_zhawk的专栏-CSDN博客_linux安装texinfo来安装texinfo,只需执行如下几步即可:
0. 源码下载地址为:https://ftp.gnu.org/gnu/texinfo/
1. 下载源码、解压、cd到源码目录
2. ./configure --prefix=安装目录(默认为/usr/local)
3. make
4. make install(根据安装目录的不同,可能需要root权限)
5. vi ~/.bash_profile ,将“安装目录/bin”加入环境变量PATH并source生效
四、虽优但不雅的安装方式
还有一部分博文,会推荐在当前用户目录下,手动安装cuda对应版本并添加到当前用户环境变量中。以Centos 7安装cuda10.1为例,首先需要到官网上下载对于的安装文件,CUDA Toolkit 10.1在nvidia官网上有三个版本,分别是:cuda_10.1.105_418.39_linux.run(链接:CUDA Toolkit 10.1 original Archive | NVIDIA Developer)、cuda_10.1.168_418.67_linux.run(链接:CUDA Toolkit 10.1 update1 Archive | NVIDIA Developer)、cuda_10.1.243_418.87.00_linux.run(链接:CUDA Toolkit 10.1 update2 Archive | NVIDIA Developer)
首先使用conda list命令查看pytorch版本,这里选择对应的cuda_10.1.243_418.87.00_linux.run来下载安装cuda 10.1。
具体安装步骤可参考:非root用户在服务器上安装CUDA10.1和cudnn到指定目录 - thronsbird - 博客园 (cnblogs.com)和非root用户在linux下安装多个版本的CUDA和cuDNN(cuda 8、cuda 10.1 等)_hizengbiao曾小虎的博客-CSDN博客_安装多个版本的cuda,简要步骤如下:
0. 在当前用户目录下新建目录cuda/cuda-10.1
1. chmod +x cuda_10.1.243_418.87.00_linux.run
2. sh cuda_10.1.243_418.87.00_linux.run
3. 在安装界面,只选中CUDA Toolkit 10.1('X' 代表选中,只需安装CUDA Toolkit)
4. 光标移动到CUDA Toolkit 10.1上,按'A'键进入高级选项,将Toolkit Install Path更改为新建的cuda/cuda-10.1目录,其他选项均不勾选,done
5. 光标移动到Options,更改Library install path为新建的cuda/cuda-10.1目录,done
6. install
7. 将cuda添加到当前环境变量并source生效
8. 如果遇到其他的问题,可以试试指定--tmpdir参数,如果一直安装不成功,建议采用下一种方法
在手动安装cuda 10.1之后,可以使用nvcc -V命令查看是否安装成功,如果安装成功,即可正常安装apex包。但是在安装cuda 10.1时,往往会出现各种问题,并且这种方式对其他环境会有影响,如果需要安装多个版本的cuda,每次都需要更改环境变量来切换,很不方便。所以这种方式,有可能会安装成功,算得上是优,但并不雅。
五、优且雅的方式
使用conda安装Pytorch时,所安装的cudatoolkit是阉割版的,所以并不包含nvcc等处理程序。具体可参考conda安装的cudatoolkit与Nvidia官方提供的cudatoolkit的区别_马圈圈马的博客-CSDN博客。
而安装apex包时,需要用到nvcc程序,为了解决这个状况,conda-forge推出了cudatoolkit-dev,多个版本的cuda,并提供nvcc和cuda-gdb等二进制程序,通过此方法可以成功安装apex。具体可参考在conda安装的cuda环境中安装apex – Websoft技术经验分享 (nju.edu.cn)。
简要步骤介绍如下:
1. 使用conda search cudatoolkit-dev -c conda-forge命令查找可安装的版本
2. 从nvidia官网下载对应版本的cudatoolkit的安装文件到一个目录
3. export DEBUG_INSTALLER_PATH=所下载安装文件的目录
4. conda install cudatoolkit-dev==对应版本号 -c conda-forge
5. 使用nvcc -V命令查看是否安装成功
6. cd到apex源码目录
7. pip install -v --disable-pip-version-check --no-cache-dir --global-option="--cpp_ext" --global-option="--cuda_ext" ./
运行如下代码进行测试:
import torch
import apex
input = torch.rand(3, 10).cuda()
fln = apex.normalization.FusedLayerNorm(10).cuda()
fln(input)
更多推荐
所有评论(0)