首页 > 其他分享 >配置 Docker 使用 GPU

配置 Docker 使用 GPU

时间:2023-03-03 16:22:27浏览次数:51  
标签:sudo container amd64 配置 toolkit nvidia GPU Docker

准备工作

首先你需要准备一台拥有GPU的实例,在这里我将使用阿里云的竞价实例来做演示,因为它对于短期使用GPU更加划算。

注意,本篇文章将教你手动进行GPU驱动的配置,所以在购买时选择系统的时候不要选择自动安装GPU驱动。

具体关于竞价实例如何购买和配置,请参考各个云平台的介绍,本文不再赘述。

主机配置

在这里我买了一台配有Ubuntu 22.04和一块T4显卡的实例作为演示。

显卡驱动安装

  1. 现在我们需要安装 NVIDIA 的驱动,在这里下载驱动
  2. 选择你的显卡和CUDA Toolkit版本,以及你的系统版本,就能得到相应的驱动下载。
  3. 在这个案例中我的显卡选择的是 Tesla T4 ,系统选择 Linux64-bit,CUDA Toolkit 选择 12.0。
  4. 点击搜索后就能得到对应的驱动,点击下载后就得到了对应的驱动。
  5. 把驱动文件上传到你的实例上,并用以下命令进行安装:
$chmod 755 NVIDIA-Linux-x86_64-525.85.12.run
$sudo ./NVIDIA-Linux-x86_64-525.85.12.run --no-cc-version-check

脚本中的版本号可能会随有所变化,请以你下载的驱动为准。

安装完后执行 nvidia-smi 命令显示如下就是安装完成了:

Fri Mar  3 15:17:34 2023
+-----------------------------------------------------------------------------+
| NVIDIA-SMI 525.85.12    Driver Version: 525.85.12    CUDA Version: 12.0     |
|-------------------------------+----------------------+----------------------+
| 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            Off  | 00000000:00:07.0 Off |                    0 |
| N/A   57C    P0    30W /  70W |      2MiB / 15360MiB |      7%      Default |
|                               |                      |                  N/A |
+-------------------------------+----------------------+----------------------+

+-----------------------------------------------------------------------------+
| Processes:                                                                  |
|  GPU   GI   CI        PID   Type   Process name                  GPU Memory |
|        ID   ID                                                   Usage      |
|=============================================================================|
|  No running processes found                                                 |
+-----------------------------------------------------------------------------+

Docker 安装

可以使用 Docker 的官方脚本在 Ubuntu 上设置 Docker-CE:

curl https://get.docker.com | sh \
  && sudo systemctl --now enable docker

请按照官方说明了解更多详细信息和安装后操作

安装 NVIDIA Container Toolkit

在线安装

设置软件包仓库和GPG密钥

$ distribution=$(. /etc/os-release;echo $ID$VERSION_ID) \
      && curl -fsSL https://nvidia.github.io/libnvidia-container/gpgkey | sudo gpg --dearmor -o /usr/share/keyrings/nvidia-container-toolkit-keyring.gpg \
      && curl -s -L https://nvidia.github.io/libnvidia-container/$distribution/libnvidia-container.list | \
            sed 's#deb https://#deb [signed-by=/usr/share/keyrings/nvidia-container-toolkit-keyring.gpg] https://#g' | \
            sudo tee /etc/apt/sources.list.d/nvidia-container-toolkit.list

在更新软件包列表之后,安装 nvidia-container-toolkit 包(以及依赖项)。

$ sudo apt-get update
$ sudo apt-get install -y nvidia-container-toolkit

离线安装

离线安装包都在以下仓库和分支下:
https://github.com/NVIDIA/libnvidia-container/tree/gh-pages

以 ubuntu22.04为例,点开对应的目录,如果显示的是 Symbolic Link,则表示是个软链,例如我这点开后是 stable/ubuntu22.04,则代表软链到这个目录,进行跳转后发现还是一个 Symbolic Link ,里面是 ubuntu18.04,继续跳转,现在出现了系统的选择,这里我选择 amd64,进去后的目录里就是对应的安装包了。

在这里我们需要选择如下的安装包:

nvidia-container-toolkit-base_xxxx-1_amd64
nvidia-container-toolkit_1.xxxx-1_amd64
libnvidia-container1_1.xxxx-1_amd64
libnvidia-container-tools_1.xxxx-1_amd64

xxxx代表对应的 CUDA 版本,在我的这个实例中 xxxx,就是12.0,按以下顺序安装:

 dpkg -i libnvidia-container1_1.12.0-1_amd64.deb 
 dpkg -i libnvidia-container-tools_1.12.0-1_amd64.deb
 dpkg -i nvidia-container-toolkit-base_1.12.0-1_amd64.deb
 dpkg -i nvidia-container-toolkit_1.12.0-1_amd64.deb

配置Docker守护程序,使其能够识别NVIDIA Container Runtime:

$ sudo nvidia-ctk runtime configure --runtime=docker

在设置默认 runtime 后,重新启动Docker守护程序以完成安装。

$ sudo systemctl restart docker

测试

最后,通过运行一个基本的CUDA容器来测试是否配置完成:

$ sudo docker run --rm --runtime=nvidia --gpus all  nvidia/cuda:12.0.1-runtime-ubuntu22.04 nvidia-smi

输出如下所示就代表你的容器以及支持GPU:

Fri Mar  3 07:47:04 2023       
+-----------------------------------------------------------------------------+
| NVIDIA-SMI 525.85.12    Driver Version: 525.85.12    CUDA Version: 12.0     |
|-------------------------------+----------------------+----------------------+
| 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            Off  | 00000000:00:07.0 Off |                    0 |
| N/A   37C    P0    27W /  70W |      2MiB / 15360MiB |      7%      Default |
|                               |                      |                  N/A |
+-------------------------------+----------------------+----------------------+
                                                                               
+-----------------------------------------------------------------------------+
| Processes:                                                                  |
|  GPU   GI   CI        PID   Type   Process name                  GPU Memory |
|        ID   ID                                                   Usage      |
|=============================================================================|
|  No running processes found                                                 |
+-----------------------------------------------------------------------------+

标签:sudo,container,amd64,配置,toolkit,nvidia,GPU,Docker
From: https://www.cnblogs.com/canyuexiang/p/17176108.html

相关文章

  • uwsgi安装及常用配置
    1.安装yuminstallpython39-develpip3installuwsgi常用指令:uwsgi--iniuwsgi.iniuwsgi--stopuwsgi.pidpkill-fuwsgi-9(也可以sodukill-9杀掉进程)......
  • [gradle] Ubuntu安装配置gradle
    环境Ubuntu18Java1.8参考教程安装配置安装解压gradle下载地址sudounzip-d#解压环境配置sudovim/etc/profile#打开配置文件exportGRADLE_HOME=/o......
  • Spring MVC 配置类 WebMvcConfigurerAdapter
    WebMvcConfigurerAdapter配置类是spring提供的一种配置方式,采用JavaBean的方式替代传统的基于xml的配置来对spring框架进行自定义的配置。因此,在springboot提倡的基于注解......
  • 软件工程日报九——SQLite的安装与配置
    安卓stuio的数据库连接需要SQLite,现在进行安装与配置一进官网下载sqlite—dll—win32—x86.zip和sqlite—tools—win32—x86.zip  二、在下载目录进行解压,出现以下......
  • deploy资源-配置节点亲和性以及污点容忍
    apiVersion:apps/v1kind:Deploymentmetadata:name:health-check-deploymentlabels:app:health-checkspec:replicas:1selector:matchLabels......
  • SAP 邮件配置 & 发送demo
    一、 修改参数(RZ11)SMTP协议标准端口号为25,部分服务器25端口已被占用,也可以使用其他端口,例如25000,25$$。$$为实例号执行事务码RZ11,修改参数is/SMTP/virt_host_0=*:25;......
  • 【Dockerfile】nvm-git-node-centos7镜像
    #依赖centos环境FROMcentos:7#安装vim、git和nvm环境RUNyuminstall-ywget\&&mv/etc/yum.repos.d/CentOS-Base.repo/etc/yum.repos.d/CentOS-Base.rep......
  • Linux下的samba服务配置详解
    (Linux下的samba服务配置详解)一、Samba介绍1.SMB(ServerMessagesBlock,信息服务块)是一种在局域网上共享文件和打印机的一种通信协议,它为局域网内的不同计算机之间提供文......
  • 7_Spring_使用外部属性配置文件
    ​ spring容器可以读取.properties属性配置文件,可以将文件中的信息注入给bean例如,引入Druid数据源,配置连接池信息1 导入Druid依赖和mysql-connector依赖<d......
  • 7_Spring_使用外部属性配置文件
    ​ spring容器可以读取.properties属性配置文件,可以将文件中的信息注入给bean例如,引入Druid数据源,配置连接池信息1 导入Druid依赖和mysql-connector依赖<d......