Ubuntu PyTorch 配置GPU环境

本文主要讲ubuntu18.04配置NVIDIA GPU环境, 并安装配置PyTorch。

先确认GPU型号

方式一:

$ lspci | grep -i nvidia
01:00.0 VGA compatible controller: NVIDIA Corporation Device 249d (rev a1)
01:00.1 Audio device: NVIDIA Corporation Device 228b (rev a1)

方式二:

$ ubuntu-drivers devices
== /sys/devices/pci0000:00/0000:00:01.0/0000:01:00.0 ==
modalias : pci:v000010DEd0000249Dsv00001D05sd00001147bc03sc00i00
vendor   : NVIDIA Corporation
manual_install: True
driver   : nvidia-driver-510 - distro non-free
driver   : nvidia-driver-510-server - distro non-free
driver   : nvidia-driver-515-server - distro non-free
driver   : nvidia-driver-515 - distro non-free
driver   : nvidia-driver-470-server - distro non-free
driver   : nvidia-driver-470 - distro non-free recommended
driver   : xserver-xorg-video-nouveau - distro free builtin

方式二中, driver : nvidia-driver-470 - distro non-free recommended便是系统推荐的的GPU 驱动版本。

安装驱动

只安装驱动

直接安装推荐的版本:

sudo apt install nvidia-driver-470

驱动 + cuda 安装

一般我们做深度学习使用nvidia gpu都需要安装cuda,安装cuda之前一定要确认依赖cuda的版本,比如当前最新版的PyTorch支持到的cuda版本为11.6, 而cuda最新版已经到11.6了,故要安装对应的版本。

我们根据英伟达官网链接 安装。

根据需要选择适合的cuda版本,点击链接进入安装, 此处我选择11.6。


nvidia-cuda-install-01.jpg

点击链接之后进入下一步,依次选择操作系统、架构、发行版(版本)、安装方式后,便给出的安装信息。
ubuntu安装方式栏有三个选项,三个我都试过,没特殊原因推荐使用runfile(local)方式,我在使用deb(local)deb(network)安装的时候,会直接安装最新版的cuda,而我需要确定的一个版本11.6。

此处我选择"Linux-x86_64-Ubuntu-18.04-runfile(local)"

nvidia-cuda-install-02.jpg

复制安装命令依次执行:

$ wget https://developer.download.nvidia.com/compute/cuda/11.6.2/local_installers/cuda_11.6.2_510.47.03_linux.run
$ sudo sh cuda_11.6.2_510.47.03_linux.run
===========
= Summary =
===========

Driver:   Installed
Toolkit:  Installed in /usr/local/cuda-11.6/

Please make sure that
 -   PATH includes /usr/local/cuda-11.6/bin
 -   LD_LIBRARY_PATH includes /usr/local/cuda-11.6/lib64, or, add /usr/local/cuda-11.6/lib64 to /etc/ld.so.conf and run ldconfig as root

To uninstall the CUDA Toolkit, run cuda-uninstaller in /usr/local/cuda-11.6/bin
To uninstall the NVIDIA Driver, run nvidia-uninstall
Logfile is /var/log/cuda-installer.log

安装完成后根据提示配置环境变量

# cuda
export PATH="/usr/local/cuda-11.6/bin:$PATH"
export LD_LIBRARY_PATH="/usr/local/cuda-11.6/lib64:$LD_LIBRARY_PATH"

重启系统

使用以上两种方式安装都需要重启系统

$ sudo reboot

查看安装是否成功:

$ nvidia-smi
Sat Jul  9 07:04:15 2022
+-----------------------------------------------------------------------------+
| NVIDIA-SMI 510.47.03    Driver Version: 510.47.03    CUDA Version: 11.6     |
|-------------------------------+----------------------+----------------------+
| GPU  Name        Persistence-M| Bus-Id        Disp.A | Volatile Uncorr. ECC |
| Fan  Temp  Perf  Pwr:Usage/Cap|         Memory-Usage | GPU-Util  Compute M. |
|                               |                      |               MIG M. |
|===============================+======================+======================|
|   0  NVIDIA GeForce ...  Off  | 00000000:01:00.0 Off |                  N/A |
| N/A   52C    P0    35W /  N/A |      5MiB /  8192MiB |      0%      Default |
|                               |                      |                  N/A |
+-------------------------------+----------------------+----------------------+

+-----------------------------------------------------------------------------+
| Processes:                                                                  |
|  GPU   GI   CI        PID   Type   Process name                  GPU Memory |
|        ID   ID                                                   Usage      |
|=============================================================================|
|    0   N/A  N/A      1140      G   /usr/lib/xorg/Xorg                  4MiB |
+-----------------------------------------------------------------------------+

安装PyTorch

安装基础包

我一般使用conda管理python环境, 安装PyTorch之前先创建一个命名为dl-gpu的python环境:

$ conda create -y -n dl-gpu python=3.8

激活环境

$ conda activate dl-gpu

然后开始安装PyTorch,
首先进入官网安装链接, 依次选择PyTorch BuildYour OSPackageLanguageCompute Platform

pytorch-install-01.jpg

此处我选择的是"Stable(1.12.0)-Linux-Conda-Python-CUDA11.6",得到执行的命令

$ conda install pytorch torchvision torchaudio cudatoolkit=11.6 -c pytorch -c conda-forge

注意点:

  1. 如果是conda安装,官网有一个提示 NOTE: 'conda-forge' channel is required for cudatoolkit 11.6, 需要先安装conda-forge, 安装可参考链接
  2. cuda版本与PyTorch支持的版本要尽量一致

验证安装

执行上述安装命令

$ conda install pytorch torchvision torchaudio cudatoolkit=11.6 -c pytorch -c conda-forge

验证是否可用:

(dl-gpu) ➜  ~ python -c "import torch;print(torch.cuda.device_count())"
1

这里输出1则说明GPU配置成功了。

安装Jupyter

个人比较喜欢使用JupyterLab,所以本次安装JupyterLab, 安装细节见文档

使用conda安装

$ conda install -c conda-forge jupyterlab

使用pip安装

pip install jupyterlab

启动Jupyter并验证Torch和GPU

$ jupyter-lab
import torch
# 查看显卡数量
print('GPU count: ', torch.cuda.device_count())
# 获取第一个GPU
gpu1 = torch.device(f'cuda:0')
print('GPU one: ', gpu1)

# 创建使用GPU的张量X, Y
X = torch.rand(2, 3, device=gpu1)
Y = torch.rand(3, 4, device=gpu1)
# 分别打印X、Y、以及X和Y的乘积
X, Y, torch.mm(X, Y)
pytorch-gpu-py-example.jpg

其中device='cuda:0'表示当前张量数据存储在第0个GPU上。

常见问题

常见问题1: 重启系统后无法连接驱动了

$ nvidia-smi
NVIDIA-SMI has failed because it couldn't communicate with the NVIDIA driver. Make sure that the latest NVIDIA driver is installed and running.

大概率是更新Linux内核引起的,

  1. 先检查驱动和cuda版本
$ nvcc -V
nvcc: NVIDIA (R) Cuda compiler driver
Copyright (c) 2005-2022 NVIDIA Corporation
Built on Tue_Mar__8_18:18:20_PST_2022
Cuda compilation tools, release 11.6, V11.6.124
Build cuda_11.6.r11.6/compiler.31057947_0

说明驱动和和cuda都是存在的。

  1. 查看已经安装的驱动的版本信息
$ ls /usr/src|grep nvidia
nvidia-510.47.03

这里我的驱动版本是: nvidia-510.47.03

  1. 使用dkms工具安装驱动
$ sudo apt install dkms
$ sudo dkms install -m nvidia -v 510.47.03
...
nvidia-peermem.ko:
Running module version sanity check.
 - Original module
   - No original module exists within this kernel
 - Installation
   - Installing to /lib/modules/5.4.0-121-generic/updates/dkms/

depmod...

DKMS: install completed.

等待完成后再次输入nvidia-smi命令就发现驱动好了

$ nvidia-smi
Sat Jul  9 08:14:07 2022
+-----------------------------------------------------------------------------+
| NVIDIA-SMI 510.47.03    Driver Version: 510.47.03    CUDA Version: 11.6     |
|-------------------------------+----------------------+----------------------+
| GPU  Name        Persistence-M| Bus-Id        Disp.A | Volatile Uncorr. ECC |
| Fan  Temp  Perf  Pwr:Usage/Cap|         Memory-Usage | GPU-Util  Compute M. |
|                               |                      |               MIG M. |
|===============================+======================+======================|
|   0  NVIDIA GeForce ...  Off  | 00000000:01:00.0 Off |                  N/A |
| N/A   56C    P0    34W /  N/A |      0MiB /  8192MiB |      0%      Default |
|                               |                      |                  N/A |
+-------------------------------+----------------------+----------------------+

+-----------------------------------------------------------------------------+
| Processes:                                                                  |
|  GPU   GI   CI        PID   Type   Process name                  GPU Memory |
|        ID   ID                                                   Usage      |
|=============================================================================|
|  No running processes found                                                 |
+-----------------------------------------------------------------------------+

为了避免出现此问题,可关闭linux自动更新:

编辑文件/etc/apt/apt.conf.d/10periodic, 将其中的所有值改为0

©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 206,723评论 6 481
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 88,485评论 2 382
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 152,998评论 0 344
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 55,323评论 1 279
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 64,355评论 5 374
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 49,079评论 1 285
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 38,389评论 3 400
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 37,019评论 0 259
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 43,519评论 1 300
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 35,971评论 2 325
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 38,100评论 1 333
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 33,738评论 4 324
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 39,293评论 3 307
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 30,289评论 0 19
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 31,517评论 1 262
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 45,547评论 2 354
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 42,834评论 2 345

推荐阅读更多精彩内容