前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >专栏 >Docker容器如何优雅使用NVIDIA GPU

Docker容器如何优雅使用NVIDIA GPU

作者头像
我的小碗汤
发布于 2021-12-24 11:49:56
发布于 2021-12-24 11:49:56
56.2K028
代码可运行
举报
文章被收录于专栏:我的小碗汤我的小碗汤
运行总次数:28
代码可运行

Docker 容器不会自动看到您系统的 GPU。这会导致依赖 GPU 的工作负载(例如机器学习框架)的性能降低。以下是将主机的 NVIDIA GPU 公开给容器的方法。

让 GPU 在 Docker 中工作

Docker 容器共享您主机的内核,但带有自己的操作系统和软件包。这意味着它们缺少用于与 GPU 交互的 NVIDIA 驱动程序。默认情况下,Docker 甚至不会向容器添加 GPU,因此docker run根本看不到您的硬件。

概括地说,让 GPU 工作是一个两步过程:在映像中安装驱动程序,然后指示 Docker 在运行时将 GPU 设备添加到容器中。

本指南侧重于 CUDA 和 Docker 的现代版本。最新版本的 NVIDIA Container Toolkit 专为 CUDA 10 和 Docker Engine 19.03 及更高版本的组合而设计。CUDA、Docker 和 NVIDIA 驱动程序的旧版本可能需要额外的步骤。

添加 NVIDIA 驱动程序

在继续进行 Docker 配置之前,请确保您的主机上的 NVIDIA 驱动程序正常工作。您应该能够成功运行nvidia-smi并看到您的 GPU 名称、驱动程序版本和 CUDA 版本。

要将 GPU 与 Docker 结合使用,请首先将NVIDIA Container Toolkit[1]添加到您的主机。这集成到 Docker 引擎中以自动配置您的容器以支持 GPU。

使用示例命令将工具包的包存储库添加到您的系统:

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
distribution=$(. /etc/os-release;echo $ID$VERSION_ID) \
   && curl -s -L https://nvidia.github.io/nvidia-docker/gpgkey | sudo apt-key add - \
   && curl -s -L https://nvidia.github.io/nvidia-docker/$distribution/nvidia-docker.list | sudo tee /etc/apt/sources.list.d/nvidia-docker.list

接下来在您的主机上安装nvidia-docker2软件包:

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
apt-get update
apt-get install -y nvidia-docker2

重启 Docker 守护进程以完成安装:

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
sudo systemctl restart docker

Container Toolkit 现在应该可以运行了。

使用 GPU 访问启动容器

由于默认情况下 Docker 不提供您系统的 GPU,您需要创建带有--gpus硬件标志的容器以显示。您可以指定要启用的特定设备或使用all关键字。

该nvidia/cuda 镜像是预先配置了CUDA二进制文件和GPU的工具。启动一个容器并运行nvidia-smi命令来检查您的 GPU 是否可以访问。输出应与您nvidia-smi在主机上使用时看到的相符。CUDA 版本可能会有所不同,具体取决于主机上和所选容器映像中的工具包版本。

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
docker run -it --gpus all nvidia/cuda:11.4.0-base-ubuntu20.04 nvidia-smi

选择基础镜像

使用其中一个nvidia/cuda[2]标签是让您的 GPU 工作负载在 Docker 中运行的最快和最简单的方法。有许多不同的变体可供选择;它们提供了操作系统、CUDA 版本和 NVIDIA 软件选项的矩阵。这些镜像是为多种架构而构建的。

每个标签都具有以下格式:

11.4.0-base-ubuntu20.04

  • 11.4.0 – CUDA version.
  • base – Image flavor.
  • ubuntu20.04 – Operating system version.

提供三种不同的镜像风格。该base镜像是基本 CUDA 运行时二进制文件的最小选项。runtime是一个功能更全面的选项,包括用于跨GPU通信[3]的 CUDA 数学库和 NCCL 。第三种变体devel为您runtime提供了用于创建自定义 CUDA 镜像的所有内容以及头文件和开发工具。

如果其中一个镜像适合您,请将其用作Dockerfile. 然后,您可以使用常规 Dockerfile 指令来安装您的编程语言、复制源代码并配置您的应用程序。它消除了手动 GPU 设置步骤的复杂性。

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
FROM nvidia/cuda:11.4.0-base-ubuntu20.04
RUN apt update
RUN apt-get install -y python3 python3-pip
RUN pip install tensorflow-gpu

COPY tensor-code.py .
ENTRYPONT ["python3", "tensor-code.py"]

使用--gpus标志构建和运行此镜像将通过 GPU 加速启动您的 Tensor 工作负载。

手动配置镜像

如果您需要选择不同的基础镜像,您可以手动为您的镜像添加 CUDA 支持。实现此目的的最佳方法是参考官方NVIDIA Dockerfiles[4]

复制用于添加 CUDA 包存储库、安装库并将其链接到您的路径的说明。我们不会复制本指南中的所有步骤,因为它们因 CUDA 版本和操作系统而异。

注意 Dockerfile 末尾的环境变量——这些定义了使用你的镜像的容器如何与 NVIDIA Container Runtime 集成:

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
ENV NVIDIA_VISIBLE_DEVICES all
ENV NVIDIA_DRIVER_CAPABILITIES compute,utility

一旦安装了 CUDA 并设置了环境变量,您的镜像应该会检测到您的 GPU。这使您可以更好地控制镜像的内容,但随着新 CUDA 版本的发布,您可能需要调整。

它是如何工作的?

NVIDIA Container Toolkit 是一个包的集合,它们将容器运行时(如 Docker)与主机上 NVIDIA 驱动程序的接口包装在一起。该libnvidia-container库负责提供 API 和 CLI,通过运行时包装器自动将系统的 GPU 提供给容器。

该nvidia-container-toolkit组件实现了一个容器运行时prestart钩子。这意味着它会在新容器即将启动时收到通知。它查看您要附加并调用libnvidia-container以处理容器创建的 GPU 。

挂钩由nvidia-container-runtime启用。这会包装您的“真实”容器运行时,例如 containerd 或 runc,以确保prestart运行NVIDIA挂钩。在钩子执行后,您现有的运行时会继续容器启动过程。安装容器工具包后,您将看到在 Docker 守护程序配置文件中选择了 NVIDIA 运行时。

概括

在 Docker 容器内使用 NVIDIA GPU 需要您将 NVIDIA Container Toolkit 添加到主机。这将 NVIDIA 驱动程序与您的容器运行时集成在一起。

docker run使用--gpu标志调用使您的硬件对容器可见。在安装 Container Toolkit 后,必须在您启动的每个容器上设置此项。

NVIDIA 提供预配置的 CUDA Docker 镜像,您可以将其用作应用程序的快速入门。如果您需要更具体的内容,请参阅官方 Dockerfiles 以组装您自己的仍与 Container Toolkit 兼容的文件。

参考资料

[1]NVIDIA Container Toolkit: https://github.com/NVIDIA/nvidia-docker

[2]nvidia/cuda: https://hub.docker.com/r/nvidia/cuda/tags

[3]跨GPU通信: https://developer.nvidia.com/nccl

[4]官方NVIDIA Dockerfiles: https://gitlab.com/nvidia/container-images/cuda/-/blob/master/dist/11.5.0/ubuntu2004/base/Dockerfile

本文翻译自:「JAMES WALKER」,版权归原作者所有。

本文参与 腾讯云自媒体同步曝光计划,分享自微信公众号。
原始发表:2021-12-23,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 进击云原生 微信公众号,前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
暂无评论
推荐阅读
编辑精选文章
换一批
使用Docker安装TensorFlow ,并设置GPU/CPU支持
一、Ubunutu20.4系统设置root登录及密钥登录 1、进入服务器主界面,将系统更换为Ubuntu20.4 https://console.cloud.tencent.com/cvm/insta
用户5481900
2022/05/26
1.9K0
docker中如何使用GPU
1. 系统已经安装好GPU驱动,CUDA,这里使用腾讯云自动安装驱动来安装GPU驱动和CUDA
Sync
2024/07/04
1.2K0
5分钟搭建强大又好用的深度学习环境
为深度学习项目建立一个良好的环境不是一件容易的任务。因为需要处理的事情太多了:库必须匹配特定的版本,整个环境需要可以复制到其他机器上,所有东西都需要能够机器中的所有驱动程序通信。这意味着你需要为你的NVIDIA GPU安装特定的驱动程序,并且CUDA库必须与你的驱动程序和你想要使用的框架兼容。
deephub
2021/03/10
7960
5分钟搭建强大又好用的深度学习环境
Win10下配置WSL2使用CUDA搭建深度学习环境
操作系统:Windows 10 专业版 22H2(保系统版本高于windows10 21H2或Windows11)
御坂妹
2024/11/04
1.9K0
机器学习筑基篇,容器调用显卡计算资源,Ubuntu 24.04 快速安装 NVIDIA Container Toolkit!
描述:NVIDIA Container Toolkit(容器工具包)使用户能够构建和运行 GPU 加速的容器,该工具包括一个容器运行时库和实用程序,用于自动配置容器以利用 NVIDIA GPU。
全栈工程师修炼指南
2024/07/16
3.7K0
机器学习筑基篇,容器调用显卡计算资源,Ubuntu 24.04 快速安装 NVIDIA Container Toolkit!
通过Docker部署深度学习项目环境
深度学习环境部署的方法有很多种,其中Docker化深度学习环境和项目是一个很不错的选择。这里写过一些深度学习主机安装和部署的文章,这篇文章记录一下相关的通过Docker来部署和测试深度学习项目的一些经验(Ubuntu16.04)。
AINLP
2019/08/21
2.4K0
通过Docker部署深度学习项目环境
Nvidia docker 安装与使用
Nvidia docker 是nvidia显卡在docker基础上进行封装得到的docker工具,需要电脑中安装Nvidia显卡驱动与docker,配置好Nvidia docker后docker可以使用GPU。本文记录Nvidia docker的安装与使用方法。 环境 Linux 16.04 64位操作系统 显卡驱动 450.80.02 CUDA 版本 11.0 docker 安装版本 19.03.4 安装过程 加入包仓库 curl -s -L https://nvidia.github.io/nvi
为为为什么
2022/08/05
3.5K0
Docker: Nvidia Driver, Nvidia Docker 推荐安装步骤
最后, sudo reboot 重启。之后,运行 nvidia-smi 输出 Nvidia 驱动信息:
GoCoding
2021/05/06
1.5K0
如何在CDSW中使用GPU运行深度学习
温馨提示:要看高清无码套图,请使用手机打开并单击图片放大查看。 Fayson的github: https://github.com/fayson/cdhproject 提示:代码块部分可以左右滑动查看噢 GPU是一种专门的处理器,对于加速高度并行化的计算密集型工作负载效果非常明显,尤其是在深度学习领域。理想的情况是你将GPU和CPU结合起来用于数据工程和数据科学的工作负载。典型的机器学习工作流程涉及数据准备、模型训练、模型评分和模型拟合。你可以在工作流程的每个阶段使用现有的通用CPU,并可选择性的使用专用G
Fayson
2018/07/12
1.9K0
【教程】创建NVIDIA Docker共享使用主机的GPU
小锋学长生活大爆炸
2025/05/24
1460
【教程】创建NVIDIA Docker共享使用主机的GPU
Docker-(1) 介绍和安装
流程为:你可以通过Docker Client要求Docker daemon运行某一个image,daemon就会在系统查找这个image,如果找到了就 run the container forked from that image,否则pull the image from the Docker registry and create a container from the image.
孔西皮
2023/10/18
2400
Docker-(1) 介绍和安装
Ubuntu20.4 docker运行stable diffusion webui
注:我这里用的腾讯云的tcr的私有仓库同步的siutin/stable-diffusion-webui-docker镜像:
对你无可奈何
2023/06/06
2.3K0
nvidia-docker安装指南
nvidia-docker安装需要安装Docker- CE、NVIDIA Container Toolkit
鳄鱼儿
2024/05/21
2.3K0
nvidia-docker安装指南
玩转 AIGC:打造 AI 大模型云主机,Ubuntu 24.04 LTS 安装 Docker 和 NVIDIA Container Toolkit
今天分享的内容是 玩转 AIGC「2024」 系列文档中的 打造本地 AI 大模型地基,Ubuntu 24.04 LTS 安装 Docker 和 NVIDIA Container Toolkit。
运维有术
2024/05/07
1.2K0
玩转 AIGC:打造 AI 大模型云主机,Ubuntu 24.04 LTS 安装 Docker 和 NVIDIA Container Toolkit
【玩转腾讯云】从装驱动起步 在Ubuntu 18.04上构建GPU可用的Kaggle Docker镜像
接前文,在安装好Ubuntu 18.04双系统和解决了Windows与Ubuntu的时间同步问题后。正式进入正题了:构建GPU可使用的Kaggle Docker镜像(NVIDIA Only)。为了分享总结经验,同时也方便自己以后有使用需求,现简单总结下构建过程。
ZNing
2020/05/05
2K0
基于 Docker 的深度学习环境:入门篇
这段时间,不论是 NLP 模型,还是 CV 模型,都得到了极大的发展。有不少模型甚至可以愉快的在本地运行,并且有着不错的效果。所以,经常有小伙伴对于硬件选择,基础环境准备有这样、那样的问题。
soulteary
2023/03/22
1.7K0
docker19.03使用NVIDIA显卡
2019年7月的docker 19.03已经正式发布了,这次发布对我来说有两大亮点。 1,就是docker不需要root权限来启动喝运行了 2,就是支持GPU的增强功能,我们在docker里面想读取nvidia显卡再也不需要额外的安装nvidia-docker了
张琳兮
2019/09/16
6.8K0
【保姆级教程】如何在Win11上搭建一个GPU环境
下载链接:https://developer.nvidia.com/cuda-downloads,图片下载的是 cuda_12.6.1_560.94_windows.exe
致Great
2024/11/23
1K0
【保姆级教程】如何在Win11上搭建一个GPU环境
Docker - 基于NVIDIA-Docker的Caffe-GPU环境搭建
保持更新版本迁移至 - Docker - 基于NVIDIA-Docker的Caffe-GPU环境搭建
AIHGF
2019/02/18
2.4K0
CentOS本地部署语言模型
2.屏蔽linux系统自带的开源英伟达显卡驱动nouveau。编辑/lib/modprobe.d/dist-blacklist.conf文件。
小新笔记坊
2025/02/13
1270
相关推荐
使用Docker安装TensorFlow ,并设置GPU/CPU支持
更多 >
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档
本文部分代码块支持一键运行,欢迎体验
本文部分代码块支持一键运行,欢迎体验