找回密码
 立即注册
查看: 390|回复: 0

[linux] Docker 容器访问 GPU 资源使用指南

[复制链接]

279

主题

0

回帖

964

积分

超级版主

积分
964
发表于 2024-5-22 13:51:29 | 显示全部楼层 |阅读模式
本帖最后由 Shaw0xyz 于 2024-5-22 13:53 编辑

随着深度学习和高性能计算的普及,利用 GPU 加速计算已经成为常态。Docker 提供了一种便捷的方式来封装和部署应用程序,但默认情况下,Docker 容器无法直接访问主机的 GPU 资源。本文将详细介绍如何配置和使用 Docker 容器访问 GPU 资源,包括环境准备、基本配置和实际案例。


1. 环境准备

在开始配置 Docker 之前,需要确保主机系统已经正确安装了 GPU 驱动和 NVIDIA Docker 工具。

1.1 安装 GPU 驱动

首先,需要为你的 GPU 安装合适的驱动程序。以 NVIDIA GPU 为例,可以按照以下步骤进行安装:

1. 前往 [NVIDIA 驱动下载页面](https://www.nvidia.com/Download/index.aspx),根据你的操作系统和 GPU 型号下载合适的驱动程序。
2. 按照下载页面的指引安装驱动程序。

1.2 安装 Docker

确保系统中已经安装了 Docker。可以通过以下命令检查 Docker 是否已安装:


  1. docker --version
复制代码



如果未安装 Docker,可以参考以下步骤进行安装:

1.2.1 在 Ubuntu 上安装 Docker


  1. sudo apt-get update
  2. sudo apt-get install -y docker.io
复制代码



1.2.2 在 CentOS 上安装 Docker


  1. sudo yum install -y docker
复制代码


安装完成后,启动 Docker 服务:


  1. sudo systemctl start docker
  2. sudo systemctl enable docker
复制代码



1.3 安装 NVIDIA Docker 工具

NVIDIA Docker 工具包(nvidia-docker)允许 Docker 容器访问主机的 GPU。以下是安装步骤:

1.3.1 添加 NVIDIA Docker 存储库


  1. distribution=$(. /etc/os-release;echo $ID$VERSION_ID)
  2. curl -s -L <a href="https://nvidia.github.io/nvidia-docker/gpgkey" target="_blank">https://nvidia.github.io/nvidia-docker/gpgkey</a> | sudo apt-key add -
  3. curl -s -L <a href="https://nvidia.github.io/nvidia-docker/" target="_blank">https://nvidia.github.io/nvidia-docker/</a>$distribution/nvidia-docker.list | sudo tee /etc/apt/sources.list.d/nvidia-docker.list
复制代码



1.3.2 安装 NVIDIA Docker 工具包


  1. sudo apt-get update
  2. sudo apt-get install -y nvidia-docker2
复制代码



1.3.3 重启 Docker 服务


  1. sudo systemctl restart docker
复制代码


2. 配置 Docker 使用 GPU

2.1 验证 NVIDIA Docker 安装

安装完成后,可以通过以下命令验证 NVIDIA Docker 是否安装成功:


  1. sudo docker run --rm --gpus all nvidia/cuda:11.0-base nvidia-smi
复制代码



如果输出显示了 GPU 相关信息,说明安装成功。

2.2 配置 Docker 容器使用 GPU

在启动 Docker 容器时,需要使用 `--gpus` 标志来指定使用 GPU。以下是一个基本示例:


  1. sudo docker run --gpus all nvidia/cuda:11.0-base nvidia-smi
复制代码



2.3 指定特定 GPU

如果系统中有多块 GPU,可以使用 `--gpus` 标志指定特定的 GPU。例如,使用第 0 号 GPU:


  1. sudo docker run --gpus '"device=0"' nvidia/cuda:11.0-base nvidia-smi
复制代码


3. 实际案例

以下是一个使用 TensorFlow 的实际案例,展示如何在 Docker 容器中使用 GPU 进行深度学习训练。

3.1 拉取 TensorFlow 镜像

首先,拉取官方的 TensorFlow 镜像:


  1. sudo docker pull tensorflow/tensorflow:latest-gpu

复制代码

3.2 运行 TensorFlow 容器

启动一个 TensorFlow 容器,并映射主机的 GPU 资源:


  1. sudo docker run --gpus all -it tensorflow/tensorflow:latest-gpu bash
复制代码



3.3 在容器中验证 GPU

在容器内,可以使用以下 Python 脚本验证 TensorFlow 是否能够识别 GPU:


  1. import tensorflow as tf
  2. print("Num GPUs Available: ", len(tf.config.experimental.list_physical_devices('GPU')))
复制代码


保存上述脚本为 `test_gpu.py`,然后在容器内运行:


  1. python test_gpu.py
复制代码


如果输出显示 GPU 的数量,说明 TensorFlow 成功识别了 GPU。

4. 常见问题及解决方案

4.1 容器无法访问 GPU

如果容器无法访问 GPU,请检查以下几项:

(1) 确保 GPU 驱动已正确安装。  
(2) 确保 NVIDIA Docker 工具包已正确安装并且 Docker 服务已重启。  
(3) 确保启动容器时使用了 `--gpus` 标志。

4.2 兼容性问题

确保 Docker 镜像中的 CUDA 版本与主机系统的 CUDA 驱动版本兼容。可以在 [NVIDIA 的 CUDA 兼容性文档](https://docs.nvidia.com/deploy/cuda-compatibility/index.html) 中查找相关信息。

5. 总结

本文详细介绍了在 Docker 容器中访问 GPU 资源的配置和使用方法。通过正确安装 GPU 驱动、Docker 和 NVIDIA Docker 工具包,并在启动容器时使用适当的标志,我们可以方便地在容器中使用 GPU 进行高性能计算。希望本文对你有所帮助,祝你在使用 Docker 和 GPU 进行开发时一切顺利!

荔枝学姐爱吃荔枝!
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

联系站长|Archiver|手机版|小黑屋|主机论坛

GMT+8, 2025-4-5 02:22 , Processed in 0.074487 second(s), 24 queries .

Powered by 主机论坛 HostSsss.Com

HostSsss.Com

快速回复 返回顶部 返回列表