Pytoch 由4个主要的包组成:
在安装过程中,使用的机器为4*GPU工作站,重点关注如何安装GPU版本的PyTorch。
安装过程:
通过Anaconda进行安装,同时通过Anaconda进行python相关的包管理;
建议通过.bash文件的形式进行安装,首先去Nvidia官网下载所需版本的驱动文件:
sudo gedit /etc/modprobe.d/blacklist.conf
在文件夹最末尾处添加命令
blacklist nouveau
options nouveau modeset=0
sudo update-initramfs -u
特别提醒:
对于有些机器,禁用自带显卡驱动后,如果显示器插在GPU上的话,大概率重启后会一直黑屏了,解决方案:
lsmod | grep nouveau
查看nouveau模块是否被加载,如果什么都没有输出,则执行下一步,不行的话重新操作前面三步
cd /home/用户名
对驱动文件赋权
sudo chmod 755 Nvidia(驱动)
sudo service lightdm stop
sudo bash Nvidia(驱动)(–no-opengl-files)
注意:-no-opengl.files 如果添加的话,在调用Unity加速的时候可能会无法使用GPU加速,但是不加的话,有些机器开机会卡在循环登录界面,加上与不加均不会影响PyTorch的使用。
-**Accept License(**接受协议)
-Select Continue Installation(选择继续安装)
-Select “NO” to not install 32bit files(选择NO不要安装32位文件)
-Select “NO” to rebuilding any Xserver configurations with Nvidia.
reboot
nvidia-smi
能够看到显卡型号以及使用情况说明显卡驱动安装成功。
另外,在系统设置里面的详情里,如果安装显卡驱动成功的话,能够看到显卡型号。
https://docs.nvidia.com/cuda/cuda-installation-guide-linux/index.html
在第4步有通过run文件安装cuda的方法
特别注意的地方:
安装cuda也需要先关闭界面服务,按照顺序从上到下做下来的话,这一步已经完成了
sudo sh cuda_10.1.105_418.39_linux.run
export PATH=/usr/local/cuda-10.1/bin:/usr/local/cuda-10.1/NsightCompute-2019.1${PATH:+:${PATH}}
export LD_LIBRARY_PATH=/usr/local/cuda-10.1/lib64${LD_LIBRARY_PATH:+:${LD_LIBRARY_PATH}}
Note that the above paths change when using a custom install path with the runfile installation method.
通过官网下载安装文件https://developer.nvidia.com/cudnn,这一步需要nvidia账号。
安装教程建议也参考官网教程进行安装:https://docs.nvidia.com/deeplearning/sdk/cudnn-install/index.html#verify
下载的文件后缀为 solitairetheme8直接改成.tgz就行。
然后:
tar -xzvf cudnn-10.2-linux-x64-v7.6.5.32.tgz
sudo cp cuda/include/cudnn.h /usr/local/cuda/include
sudo cp cuda/lib64/libcudnn* /usr/local/cuda/lib64
sudo chmod a+r /usr/local/cuda/include/cudnn.h /usr/local/cuda/lib64/libcudnn*
官网教程:https://pytorch.org/get-started/locally/
执行如下命令即可
conda install pytorch torchvision cudatoolkit=10.1 -c pytorch
验证驱动
nvidia-smi
验证cudnn
新建文件:test_gpu.py
import torch
if __name__ == '__main__':
# 测试cuda
print("Support CUDA?:", torch.cuda.is_available())
x = torch.tensor([10.0])
x = x.cuda()
print(x)
y = torch.randn(2,3)
y = y.cuda()
print(y)
z = x+y
print(z)
# 测试CUDNN
from torch.backends import cudnn
print("Support cudnn ?:", cudnn.is_acceptable(x))
运行文件:
python test_gpu.py
两处打印support的地方均能够看到true即可。