igozhang

——

    CentOS 8.2 配置深度学习环境

    CentOS 8.2 + NVIDIA RTX 3090 上安装 Docker、专有驱动、CUDA、cuDNN,并配置普通用户使用 Docker。

    环境

    项目 说明
    操作系统 CentOS 8.2
    GPU NVIDIA GeForce RTX 3090
    驱动安装包示例 NVIDIA-Linux-x86_64-470.57.02.run
    CUDA 示例 cuda_11.4.1_470.57.02_linux.run
    cuDNN 示例 cudnn-11.4-linux-x64-v8.2.2.26
    内核示例 4.18.0-305.10.2.el8_4.x86_64(以 uname -r 为准)

    相关概念

    概念 一句话
    nouveau 开源 NVIDIA 驱动;装专有驱动前需禁用。
    NVIDIA 专有驱动 官方闭源驱动,深度学习 / CUDA 的基础。
    CUDA NVIDIA GPU 并行计算平台与工具链(含 nvcc)。
    cuDNN 深度学习加速库,需与 CUDA 大版本匹配。
    DKMS 内核模块动态构建,内核更新后便于重编驱动。

    版本组合需互相匹配(驱动 ↔ CUDA ↔ cuDNN ↔ 框架)。下文版本为当时可用组合,换卡/换系统时请对照 NVIDIA 兼容表。


    1. 安装 Docker

    1.1 基础包

    yum install -y yum-utils \
      device-mapper-persistent-data \
      lvm2
    

    1.2 添加稳定仓库(阿里云)

    yum-config-manager \
      --add-repo \
      https://mirrors.aliyun.com/docker-ce/linux/centos/docker-ce.repo
    

    1.3 安装并启动

    yum -y install docker-ce docker-ce-cli containerd.io
    systemctl start docker
    systemctl enable docker
    

    2. 安装显卡驱动

    2.1 编译依赖

    yum -y install pkg-config gcc gcc-c++ \
      kernel-devel kernel-headers dkms epel-release
    

    2.2 禁用 nouveau

    grub2-editenv - set "$(grub2-editenv - list | grep kernelopts) nouveau.modeset=0"
    
    echo -e "blacklist nouveau\noptions nouveau modeset=0" > /etc/modprobe.d/blacklist.conf
    

    重启后验证(应无输出或看不到 nouveau 在用):

    lsmod | grep nouveau
    

    可选更新系统:

    yum -y update
    

    2.3 取消对 nvidiafb 的 blacklist(如有)

    grep nvidia /etc/modprobe.d/* /lib/modprobe.d/*
    

    若看到类似:

    /lib/modprobe.d/dist-blacklist.conf:blacklist nvidiafb
    

    注释掉该行后再装官方驱动,否则可能安装失败。

    2.4 运行官方 .run 安装包

    建议在多用户文本模式 / 无图形占用 GPU 时安装。带上内核源码路径:

    ./NVIDIA-Linux-x86_64-470.57.02.run \
      --kernel-source-path=/usr/src/kernels/4.18.0-305.10.2.el8_4.x86_64 \
      -k $(uname -r)
    

    kernel-source-path 必须与当前 uname -r 对应目录一致。安装后重启,用 nvidia-smi 验证。


    3. 安装 CUDA

    ./cuda_11.4.1_470.57.02_linux.run
    

    交互中选择 Accept,再按提示 install(若已装驱动,可按向导跳过重复驱动安装,只装 Toolkit)。

    写入环境变量(可写入 ~/.bashrc):

    export PATH=/usr/local/cuda-11.4/bin:$PATH
    export LD_LIBRARY_PATH=/usr/local/cuda-11.4/lib64:$LD_LIBRARY_PATH
    export CUDA_HOME=/usr/local/cuda
    

    验证:

    nvcc -V
    

    4. 安装 cuDNN

    tar -xf cudnn-11.4-linux-x64-v8.2.2.26.tgz
    
    cp cuda/include/cudnn*.h /usr/local/cuda-11.4/include
    cp cuda/lib64/libcudnn* /usr/local/cuda-11.4/lib64/
    chmod a+r /usr/local/cuda-11.4/include/cudnn*.h \
              /usr/local/cuda-11.4/lib64/libcudnn*
    

    验证版本宏:

    cat /usr/local/cuda/include/cudnn_version.h | grep CUDNN_MAJOR -A 2
    

    /usr/local/cuda 为指向 cuda-11.4 的符号链接,上述路径一致;否则请改成实际 include 路径。


    5. 普通用户使用 Docker

    useradd igo
    passwd igo
    
    grep docker /etc/group
    # 示例:docker:x:985:
    
    usermod -aG docker igo
    usermod -aG wheel igo    # 赋予 sudo 组(按安全策略决定是否需要)
    
    # 用户重新登录,或:
    newgrp docker
    

    之后 igo 可无 sudo 执行 docker(仍受组权限与 rootless 策略约束)。


    6. 性能验证(可选)

    环境配好后,可运行例如:

    • Google BERT 等深度学习样例
    • 3DMark 等基准(若在桌面/Windows 双系统或其它环境测图形性能)

    以确认 GPU 计算与驱动工作正常。


    流程速览

    Docker 仓库与安装
      → 禁 nouveau → 处理 nvidiafb blacklist
      → 装 NVIDIA .run → 装 CUDA → 装 cuDNN
      → 用户加入 docker/wheel → nvidia-smi / nvcc / 业务测试
    

    注意

    1. 装驱动前务必禁用 nouveau,并尽量关闭占用 GPU 的图形界面。
    2. 内核升级后可能需重装/重编驱动;DKMS 可减轻但非万能。
    3. CUDA / cuDNN / 驱动版本必须匹配;3090 勿随意混用过旧驱动。
    4. 容器内用 GPU 还需 NVIDIA Container Toolkit(本文未展开,按需另配)。
    5. 生产环境慎把用户随便加入 wheel;密码与组权限按规范最小化。

    MP3