在docker中构建深度学习环境

本文详细指导了如何在Ubuntu22.04上安装Nvidia显卡驱动、Docker,以及使用NVIDIAContainerToolkit在Docker中配置深度学习开发环境,包括CUDA、cuDNN的安装和PyTorch的部署步骤。
摘要由CSDN通过智能技术生成

零、安装前的一些说明

在docker中搭建开发环境,具有显著的优势:

  • 可以单独配置开发环境,防止不同项目使用的环境配置不同而发生环境冲突问题(PS:环境冲突真的是第一头大、浪费开发时间且有时候很难的debug发现的问题)
  • 充分保护主机环境不会因为环境搭建失误而发生系统崩溃
  • 便于项目迁移和部署

    在docker中搭建深度学习开发环境,需要使用Nvidia提供的工具Nvidia Container Toolikit,根据官网给出的架构图,可以分析出以下内容:
  • 主机需要正常运行Nvidia GPU,即在主机上要安装好显卡驱动(Nvidia Driver)
  • 通过docker来调用Nvidia Driver,在容器中虚拟出了Nvidia Driver
  • 在容器中安装CUDA和cuDNN

一、安装Nvidia Driver

Ubuntu22.04安装Nvidia驱动、CUDA和cuDNN

二、安装docker

参考资料https://docs.docker.com/engine/install/ubuntu/

2.1 卸载旧版本

旧版本的 Docker 称为 docker 或者 docker-engine,使用以下命令卸载旧版本

sudo apt-get remove docker docker-engine docker.io

2.2 添加源

由于 apt 源使用 HTTPS 以确保软件下载过程中不被篡改。因此,我们首先需要添加使用 HTTPS 传输的软件包以及 CA 证书。

sudo apt-get update
sudo apt-get install \
	apt-transport-https \
    ca-certificates \
    curl \
    gnupg \
    lsb-release

为了确认所下载软件包的合法性,需要添加软件源的 GPG 密钥。

curl -fsSL https://mirrors.aliyun.com/docker-ce/linux/ubuntu/gpg | sudo gpg --dearmor -o /usr/share/keyrings/docker-archive-keyring.gpg

然后,向 sources.list 中添加 Docker 软件源

echo \
  "deb [arch=amd64 signed-by=/usr/share/keyrings/docker-archive-keyring.gpg] https://mirrors.aliyun.com/docker-ce/linux/ubuntu \
  $(lsb_release -cs) stable" | sudo tee /etc/apt/sources.list.d/docker.list > /dev/null

2.3 安装 Docker

更新 apt 软件包缓存,并安装 docker-ce

sudo apt-get update
sudo apt-get install docker-ce docker-ce-cli containerd.io

三、安装NVIDIA Container Toolkit

参考资料https://docs.nvidia.com/datacenter/cloud-native/container-toolkit/latest/install-guide.html#next-steps

3.1 安装

3.1.1 配置存储库

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/stable/deb/nvidia-container-toolkit.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

3.1.2 更新包列表

sudo apt-get update

3.1.3 安装包

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

3.2 配置Docker

3.2.1 使用nvidia-ctk命令配置container runtime

nvidia-ctk命令用于修改主机上的/etc/docker/daemon.json文件,该文件的更新使得Docker能够使用NVIDIA Container Runtime

sudo nvidia-ctk runtime configure --runtime=docker

3.2.2 重启docker服务

sudo systemctl restart docker

3.3 测试

拉取Nvidia提供的镜像,产看在镜像中是否能够使用nvidia-smi

sudo docker run --rm --gpus all nvidia/cuda:11.6.1-devel-ubuntu20.04 nvidia-smi

在终端输出以下结果,说明安装成功

四、拉取镜像构建容器

4.1 构建容器

sudo docker run --gpus all -it nvidia/cuda:11.6.1-devel-ubuntu20.04 bash

关于Nvidia提供的镜像版本的说明
Dockerhub官网上面,Nvidia官方提供了一些特定CUDA版本的镜像,地址为https://hub.docker.com/r/nvidia/cuda/tags?page=1&ordering=last_updated可以直接拉取相关镜像。
查询CUDA12.2.0的版本,可以发现Nvidia提供的镜像有三个版本,分别是base、runtime和devel,从镜像大小可以发现,baseKaTeX parse error: Undefined control sequence: \textless at position 1: \̲t̲e̲x̲t̲l̲e̲s̲s̲runtimeKaTeX parse error: Undefined control sequence: \textless at position 1: \̲t̲e̲x̲t̲l̲e̲s̲s̲devel,三种镜像的区别如下:

  • base:这个版本从CUDA9.0开始,包含了部署预构建CUDA应用程序的最低限度。如果你想自己安装需要的CUDA包,可以选择使用这个镜像版本,但如果想省事,不建议使用该镜像
  • runtime:这个版本通过添加CUDA工具包中的所有共享库来扩展base镜像,如果使用多个CUDA库的预构建应用程序(也就是已经编译好的程序),可使用此镜像。但是如果想借助CUDA中的头文件对自己的工程进行编译,则会出现找不到头文件的错误。
  • devel:这个版本通过添加编译器工具链、测试工具、头文件和静态库来扩展runtime镜像,使用此镜像可以从源代码编译CUDA应用程序,如果想用docker镜像做开发环境,建议使用devel版本的镜像。
    一般都使用devel镜像

4.2 在容器中安装常用的包

# 获取最新软件包
apt-get update
# 安装vim
apt-get install vim
# 安装ping命令
apt-get install iputils-ping
# 安装wget
apt-get install wget
# 安装ps
apt-get install procps

五、在容器中安装Pytorch

5.1 确定cuda版本

在容器中输入nvcc -V确定CUDA版本

5.2 安装miniconda

进入miniconda官网,选择命令行下载,获取命令行下载的指令。

Screenshot from 2024-01-18 10-17-46

新建终端输入如下指令。

mkdir -p /home/miniconda3
wget https://repo.anaconda.com/miniconda/Miniconda3-latest-Linux-x86_64.sh -O /home/miniconda3/miniconda.sh
bash /home/miniconda3/miniconda.sh -b -u -p /home/miniconda3/

安装完成后,初始化miniconda和shell

/home/miniconda3/bin/conda init bash
/home/miniconda3/bin/conda init zsh

(可选)取消每次启动自动激活miniconda的基础环境base

conda config --set auto_activate_base false

5.3 安装Pytorch

创建Pytorch虚拟环境,这里选择Python3.8,大于等于Python3.8均可。

conda create -n pytorch python=3.8

激活Pytorch环境

conda activate pytorch

Pytorch官网查看安装指令,这里可以看到最新版的pytorch支持到CUDA12.1,而docker中的的CUDA11.6,安装CUDA11.6对应的pytorch版本

conda install pytorch==1.13.1 torchvision==0.14.1 torchaudio==0.13.1 pytorch-cuda=11.6 -c pytorch -c nvidia

5.4 测试Pytorch

安装完成后输入“python”启动Python交互式界面。
输入以下Python程序,显示版本信息和TRUE,则表明安装成功。

import torch
print(torch.__version__)
print(torch.cuda.is_available())
print(torch.backends.cudnn.version())

  • 20
    点赞
  • 17
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 2
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

Aitotra01

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值