Linux非root用户如何优雅地安装apex加速包-----使用conda命令和cudatoolkit-dev包

本文详细介绍了Linux非root用户如何通过使用conda命令和cudatoolkit-dev包,避免常见问题,优雅地安装Apex加速包。重点讲解了安装前的条件检查,以及如何解决gcc版本不足和手动安装cuda的问题,最终推荐了conda-forge的cudatoolkit-dev作为解决方案。
摘要由CSDN通过智能技术生成
Linux非root用户如何优雅地安装apex加速包-----使用conda命令和cudatoolkit-dev包
一、官方推荐的安装方式

github链接: GitHub - NVIDIA/apex: A PyTorch Extension: Tools for easy mixed precision and distributed training in Pytorch

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)
评论 3
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值