【原创】AnolisOS/CentOS8 升级nvidia驱动 & 容器中使用cuda

3 篇文章 0 订阅

1 前言

最近在研究AI,希望在容器内使用pytorch, 同时能够利用用到宿主机的GPU资源。
发现宿主机的cuda版本(11.4)和容器需要的(11.6)不一致,导致pytorch无法正常运行,因此决定升级。
*所有操作默认在root用户下进行
*本次操作基于龙蜥(Anolis OS) 8.2,和CentOS 8.X应该是一致的

2 升级cuda和Nvidia驱动

2.1 准备升级包

去Nvidia官网下载安装包。以11.6为例,官网网页
建议选择runfile进行安装。

2.2 卸载旧版本

如果有安装旧版本,必选卸载nvidia,cuda可以不卸载(但是留着也没啥用了,所以建议一并卸载)

可以用lsmod确认本机是否已安装nvidia驱动。

$ lsmod | grep nvidia
nvidia_uvm           1171456  2
nvidia_drm             65536  0
nvidia_modeset       1155072  1 nvidia_drm
nvidia              39051264  159 nvidia_uvm,nvidia_modeset
drm_kms_helper        204800  2 nvidia_drm,i915
drm                   540672  6 drm_kms_helper,nvidia,nvidia_drm,i915,ttm
i2c_core               77824  7 drm_kms_helper,i2c_algo_bit,igb,nvidia,i2c_i801,i915,drm

按下述方法进行卸载。

#卸载驱动
nvidia-uninstall
#卸载cuda
/usr/local/cuda/cuda-uninstaller
#重启机器,保证驱动从内核中剥离,当然理论上也可以用modprobe去卸载
reboot

2.3 安装新版本

这个时候就直接执行前面下载好的安装包,下一步到底即可

./cuda_11.6.0_510.39.01_linux.run

2.4 检查版本情况

$ nvidia-smi 
Thu Mar  7 08:51:56 2024       
+-----------------------------------------------------------------------------+
| NVIDIA-SMI 510.39.01    Driver Version: 510.39.01    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  Tesla T4            On   | 00000000:01:00.0 Off |                    0 |
| N/A   47C    P8    17W /  70W |      2MiB / 15360MiB |      0%      Default |
|                               |                      |                  N/A |
+-------------------------------+----------------------+----------------------+
                                                                               
+-----------------------------------------------------------------------------+
| Processes:                                                                  |
|  GPU   GI   CI        PID   Type   Process name                  GPU Memory |
|        ID   ID                                                   Usage      |
|=============================================================================|
|  No running processes found                                                 |
+-----------------------------------------------------------------------------+
$  /usr/local/cuda/bin/nvcc --version
nvcc: NVIDIA (R) Cuda compiler driver
Copyright (c) 2005-2021 NVIDIA Corporation
Built on Fri_Dec_17_18:16:03_PST_2021
Cuda compilation tools, release 11.6, V11.6.55
Build cuda_11.6.r11.6/compiler.30794723_0

3 安装NVIDIA Container Toolkit

正常情况下,前面步骤完成后,docker run时直接加上--gpus=all启用GPU进入容器即可跳过此步骤。
但是如果该环境之前没在容器中跑过gpu,有可能会收到抛错:

$ docker run --rm --gpus=all -it pytorch/pytorch:1.13.0-cuda11.6-cudnn8-devel /bin/bash
could not select device driver "" with capabilities: [[gpu]]

这是因为没有安装NVIDIA Container Toolkit导致的。需要安装才能在容器内支持GPU。
参考官方网页进行安装。

cd /etc/yum.repos.d/
wget --no-check-certificate https://nvidia.github.io/libnvidia-container/stable/rpm/nvidia-container-toolkit.repo
#移除HTTPS安全检查避免证书问题
sed -i 's/sslverify=1/sslverify=0/g' nvidia-container-toolkit.repo
yum install -y nvidia-container-toolkit
#安装完成后按照要求,使用命令对docker的daemon.json进行配置
nvidia-ctk runtime configure --runtime=docker
#配置完毕后重启docker
systemctl restart docker

3.1 使用docker-compose启动时的配置方法

修改docker-compose.yml

server:
    container_name: mmdetection
    build: .
    #主要增加这下面这段
    deploy:
      resources:
        reservations:
          devices:
             - driver: nvidia
               count: 1
               capabilities: [gpu]
    #按需追加,在某些环境下可能需要
    privileged: true

4 进入容器检查情况

此时再次启动容器,能够正常启动

$ python3
Python 3.9.12 (main, Apr  5 2022, 06:56:58) 
[GCC 7.5.0] :: Anaconda, Inc. on linux
Type "help", "copyright", "credits" or "license" for more information.
>>> import torch
>>> print(torch.cuda.is_available())
True
>>> print(torch.version.cuda)
11.6
>>> print(torch.cuda.device_count())
1

主要的测试均通过,此时device可以切换到cuda:0上运行了

  • 10
    点赞
  • 11
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
您好!感谢您的提问。以下是在CentOS安装CUDA的一般步骤: 1. 首先,请确保您的系统符合CUDA的硬件和软件要求。您可以在NVIDIA官方网站上查找适用于您的显卡和操作系统版本的CUDA版本。 2. 下载CUDA安装包。您可以在NVIDIA官方网站的CUDA下载页面上获取适用于CentOSCUDA安装包。 3. 在安装CUDA之前,建议您先更新系统并安装必要的依赖项。可以使用以下命令更新系统软件包: ``` sudo yum update ``` 4. 安装必要的依赖项。运行以下命令来安装所需的依赖项: ``` sudo yum install gcc kernel-devel-$(uname -r) kernel-headers-$(uname -r) ``` 5. 运行CUDA安装程序。使用终端进入到您下载的CUDA安装包所在的目录,然后运行以下命令来启动安装程序: ``` sudo sh cuda_<version>_<arch>.run ``` 其,`<version>`和`<arch>`是您下载的CUDA安装包的版本和架构。 6. 在安装过程,您需要接受许可协议、选择安装路径以及选择安装组件。根据您的需求进行相应的选择。 7. 安装完成后,您需要配置环境变量。打开终端并编辑`~/.bashrc`文件,添加以下行: ``` export PATH=/usr/local/cuda-<version>/bin:$PATH export LD_LIBRARY_PATH=/usr/local/cuda-<version>/lib64:$LD_LIBRARY_PATH ``` 其,`<version>`是您安装CUDA版本号。 8. 最后,更新环境变量使其生效: ``` source ~/.bashrc ``` 现在,您已经成功在CentOS安装CUDA。您可以通过运行`nvcc -V`命令来验证CUDA安装情况。 希望对您有所帮助!如有任何问题,请随时提问。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值