共计 1957 个字符,预计需要花费 5 分钟才能阅读完成。
前言
随着 AI 的爆火,更多的开源 AI 代码也涌现出来。但是,想要在用 docker 本地部署一个 AI 程序,仅仅靠 cpu 运行实在太慢,所以 docker 能使用宿主机的 gpu 也是很有必要的。
下面就简单了解一下如何让 docker 能够使用 宿主机的 gpu,阿蛮君仅自己尝试过,不敢保证完全正确。
一、升级docker并配置
1. 升级
建议更新 docker 到最新版本,可以参考 Linux 离线安装 Docker
2. 安装
curl -s -L https://nvidia.github.io/nvidia-container-runtime/gpgkey | \
sudo apt-key add -
distribution=$(. /etc/os-release;echo $ID$VERSION_ID)
curl -s -L https://nvidia.github.io/nvidia-container-runtime/$distribution/nvidia-container-runtime.list | \
sudo tee /etc/apt/sources.list.d/nvidia-container-runtime.list
sudo apt-get update
二、安装cuda
可以尝试直接使用包管理工具安装 sudo apt install nvidia-cuda-dev nvidia-cuda-toolkit
,仅使用 apt install nvidla-cuda-toolkit
可能报错。
1. 安装
借用 chatgpt 的回答,CUDA(Compute Unified Device Architecture)是由 NVIDIA 开发的并行计算平台和编程模型。它提供了一种在NVIDIA GPU上进行通用目的并行计算的方法。所以,本教程也仅适用 NVIDIA GPU 的机器。
下载地址:https://developer.nvidia.com/cuda-toolkit-archive, 选择与自己系统相对应的版本。
这里可以选择最新版的,和驱动没有必要关系,不过这里安装的 cuda 可能也会捆绑显卡驱动,但是驱动不一定适合本机。
这里选择本地或在线安装都可以,按照提示的命令安装就行。
2. 配置环境变量
安装好以后需要配置环境变量,一般会在 /usr/local
文件夹下有一个 cuda 的文件夹。
cat >> ~/.bashrc <<EOF
export PATH=/usr/local/cuda/bin${PATH:+:${PATH}}
export LD_LIBRARY_PATH=/usr/local/cuda/lib64${LD_LIBRARY_PATH:+:${LD_LIBRARY_PATH}}
EOF
注意:这里 cuda 根据实际目录进行配置,可以通过 find / -name "nvcc"
查看。
接下来,更新环境变量配置。
source ~/.bashrc
验证是否配置成功。
nvcc -V
三、安装显卡驱动
1. 查看驱动是否安装
nvidia-smi
如果提示命令不存在就是没有安装,其他提示可能是机器本身没有显卡或者显卡驱动安装的版本不正确。
如果提示内容为 Not supported,也是说明安装的版本不正确。
2. 查看显卡型号
lspci | grep -i vga
可以看见显卡的型号为 NVIDIA 的 GeForce GT 710。
如果后面内容显示为一串数字如下,则可以访问:http://pci-ids.ucw.cz/mods/PC/10de/2486 (把后面的数字替换为查询到的数字),查询到显卡型号为 3060 Ti。
root@robot-server:~# lspci | grep -i vga
01:00.0 VGA compatible controller: NVIDIA Corporation Device 2486 (rev a1)
3. 安装显卡驱动
查询地址:https://www.nvidia.com/Download/index.aspx?lang=zh-cn
通过输入显卡型号和系统类型进行搜索下载,下载后你将得到一个 run 后缀的文件,运行即可。
chmod +x NVIDIA-Linux-x86_64-470.182.03.run && \
./NVIDIA-Linux-x86_64-470.182.03.run
这里需要注意的是,可能会弹出窗口让你选择,如果看见 dkms,尽量选 yes,但阿蛮君也不是很懂,其他的选择默认即可。
4. 测试显卡驱动
nvidia-smi
正常显示结果如下:
四、Docker使用GPU
docker run -it --rm --gpus all ubuntu nvidia-smi
显示如下结果说明大功告成。
容器内使用 nvcc 命令:
docker run -it --rm -v $(which nvcc):/usr/bin/nvcc --gpus all ubuntu nvcc -V
提醒:本文发布于129天前,文中所关联的信息可能已发生改变,请知悉!