深度学习环境的配置过于繁琐,所以我制作了两个基础的镜像,希望可以帮助大家节省时间,你可以选择其中一种进行安装,版本说明:
- base 版本基于
pytorch/pytorch:2.5.1-cuda11.8-cudnn9-devel
,默认python
版本为 3.11.10,可以通过conda install python==版本号
直接修改版本。- dl 版本在 base 基础上,额外安装了深度学习框架和常用工具,具体查看附录的安装清单。
如果你已经配置好了Docker,只需两行命令即可完成深度学习环境的搭建。对于没有 Docker 的同学,也不用担心,本文将提供详细的安装指引,帮助你一步步完成环境配置
P.S. 所有命令在 Ubuntu 18.04/20.04/22.04 下可以顺利执行(其余系统可通过文内链接跳转安装)。
文章目录
- 镜像介绍
- 快速配置环境(两行命令)
-
- [1. 获取镜像(三选一)](#1. 获取镜像(三选一))
- [2. 运行容器](#2. 运行容器)
- [安装 Docker Engine](#安装 Docker Engine)
-
- 卸载旧版本
- [使用 `apt` 仓库安装](#使用
apt
仓库安装)
- [GPU 驱动安装](#GPU 驱动安装)
- [安装 NVIDIA Container Toolkit](#安装 NVIDIA Container Toolkit)
- [拉取并运行深度学习 Docker 镜像](#拉取并运行深度学习 Docker 镜像)
- 附录
镜像介绍
所有版本都预装了 sudo
、pip
、conda
、wget
、curl
和 vim
等常用工具,且已经配置好 pip
和 conda
的国内镜像源。同时,集成了 zsh
和一些实用的命令行插件(命令自动补全、语法高亮、以及目录跳转工具 z
)。此外,已预装 jupyter notebook
和 jupyter lab
,方便进行深度学习开发,并优化了容器内的中文显示,避免出现乱码问题。其中还预配置了 Hugging Face 的国内镜像地址。
如果想修改命令行风格,基于关键词「oh-my-zsh」进行搜寻。
链接:
- quickstart,位于 Docker Hub,对应于下方的 pull 命令。
- 百度云盘,直接下载对应的版本,跳过科学版的命令进行配置。
快速配置环境(两行命令)
如果遇到报错,查阅《Docker 基础命令介绍和常见报错解决》。
1. 获取镜像(三选一)
假设你已经安装并配置好了 Docker,那么只需两行命令即可完成深度学习的环境配置,以 dl 镜像为例,拉取:
国内镜像版
不可用的时候欢迎评论,我会对其进行替换。
bash
sudo docker pull dockerpull.org/hoperj/quickstart:dl-torch2.5.1-cuda11.8-cudnn9-devel
🪜科学上网版(直连)
bash
sudo docker pull hoperj/quickstart:dl-torch2.5.1-cuda11.8-cudnn9-devel
如果镜像有更新版本,可通过
docker pull
拉取最新镜像。
本地(网盘下载)
通过百度云盘下载文件(阿里云盘不支持分享大的压缩文件)。
同名文件内容相同,
.tar.gz
为压缩版本,下载后通过以下命令解压:
bashgzip -d dl.tar.gz
假设 dl.tar
被下载到了 ~/Downloads
中,那么切换至对应目录:
bash
cd ~/Downloads
然后加载镜像:
bash
sudo docker load -i dl.tar
2. 运行容器
bash
sudo docker run --gpus all -it --name ai hoperj/quickstart:dl-torch2.5.1-cuda11.8-cudnn9-devel /bin/zsh
如果需要使用 Jupyter,可以使用以下命令:
bash
sudo docker run --gpus all -it --name ai -p 8888:8888 hoperj/quickstart:dl-torch2.5.1-cuda11.8-cudnn9-devel /bin/zsh
常用操作提前看:
- 启动容器 :
docker start <容器名>
- 运行容器 :
docker exec -it <容器名> /bin/zsh
- 容器内退出 :
Ctrl + D
或exit
。- 停止容器 :
docker stop <容器名>
- 删除容器 :
docker rm <容器名>
如果还没有安装 Docker,继续阅读,可以根据实际情况通过目录快速跳转。
安装 Docker Engine
对于图形界面来说,可以跳过下面的命令直接安装 Desktop 版本(其中会提供 Docker Engine),这是最简单的方法。根据系统访问:
以下是命令行的安装命令,在 Ubuntu 上运行,其余系统参考官方文档。
卸载旧版本
在安装 Docker Engine 之前,需要卸载所有有冲突的包,运行以下命令:
bash
for pkg in docker.io docker-doc docker-compose docker-compose-v2 podman-docker containerd runc; do sudo apt-get remove $pkg; done
apt-get
可能会报告没有安装这些包,忽略即可。
注意,卸载 Docker 的时候,存储在 /var/lib/docker/ 中的镜像、容器、卷和网络不会被自动删除。如果你想从头开始全新安装,请阅读 Uninstall Docker Engine 部分。
使用 apt
仓库安装
首次安装 Docker Engine 之前,需要设置 Docker 的 apt
仓库。
-
设置 Docker 的
apt
仓库。bash# 添加 Docker 的官方 GPG 密钥: sudo apt-get update sudo apt-get install ca-certificates curl sudo install -m 0755 -d /etc/apt/keyrings sudo curl -fsSL https://download.docker.com/linux/ubuntu/gpg -o /etc/apt/keyrings/docker.asc sudo chmod a+r /etc/apt/keyrings/docker.asc # 将仓库添加到 Apt 源: echo \ "deb [arch=$(dpkg --print-architecture) signed-by=/etc/apt/keyrings/docker.asc] https://download.docker.com/linux/ubuntu \ $(. /etc/os-release && echo "$VERSION_CODENAME") stable" | \ sudo tee /etc/apt/sources.list.d/docker.list > /dev/null sudo apt-get update
如果你使用的是 Ubuntu 的衍生发行版,例如 Linux Mint,可能需要使用
UBUNTU_CODENAME
而不是VERSION_CODENAME
。如果
sudo curl -fsSL https://download.docker.com/linux/ubuntu/gpg -o /etc/apt/keyrings/docker.asc
执行失败,尝试以下命令:bashsudo wget -qO- https://download.docker.com/linux/ubuntu/gpg | sudo tee /etc/apt/keyrings/docker.asc
-
安装 Docker 包。
consolesudo apt-get install docker-ce docker-ce-cli containerd.io docker-buildx-plugin docker-compose-plugin
-
通过运行
hello-world
镜像来验证安装是否成功:consolesudo docker run hello-world
这个命令会下载测试镜像并运行,如果你看到以下输出,那么恭喜你安装成功:
GPU 驱动安装
如果需要使用 GPU 的话,先安装适用于你的系统的 NVIDIA GPU 驱动程序,访问任一链接进行:
这部分配置文章很多,偷个懒 😃 就不开新环境演示了,下面讲点可能不同的。
安装 NVIDIA Container Toolkit
为了在 Docker 容器中使用 GPU,需要安装 NVIDIA Container Toolkit。
注意,我们现在不再需要安装 nvidia-docker,官方在 2023.10.20 指出其已被 NVIDIA Container Toolkit 所取代,过去的配置命令可能已不再适用。
以下命令使用 Apt 完成,Yum 等其他命令访问参考链接:Installing the NVIDIA Container Toolkit。
-
设置仓库和 GPG 密钥
设置 NVIDIA 的软件源仓库和 GPG 密钥,确保我们可以从官方源安装 NVIDIA Container Toolkit。
bashcurl -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。
-
安装 NVIDIA Container Toolkit
bashsudo apt-get update sudo apt-get install -y nvidia-container-toolkit
-
配置 Docker
使用
nvidia-ctk
工具将 NVIDIA 容器运行时配置为 Docker 的默认运行时。bashsudo nvidia-ctk runtime configure --runtime=docker
-
重启 Docker
bashsudo systemctl restart docker
拉取并运行深度学习 Docker 镜像
现在可以拉取深度学习(dl)镜像,命令和之前一致。
-
拉取镜像
bashsudo docker pull hoperj/quickstart:dl-torch2.5.1-cuda11.8-cudnn9-devel
-
运行镜像
bashsudo docker run --gpus all -it hoperj/quickstart:dl-torch2.5.1-cuda11.8-cudnn9-devel
-
检查 GPU
在容器内运行:
bashnvidia-smi
如果正确显示代表成功。不过对于实际使用来说,还需要了解基础命令和报错的解决方法。使用
Ctrl + D
或者命令行输入exit
并回车退出容器,继续阅读《Docker 基础命令介绍和常见报错解决》。
附录
安装清单
base
基础环境:
- python 3.11.10
- torch 2.5.1 + cuda 11.8 + cudnn 9
Apt 安装:
wget
、curl
:命令行下载工具vim
、nano
:文本编辑器git
:版本控制工具git-lfs
:Git LFS(大文件存储)zip
、unzip
:文件压缩和解压工具htop
:系统监控工具tmux
、screen
:会话管理工具build-essential
:编译工具(如gcc
、g++
)iputils-ping
、iproute2
、net-tools
:网络工具(提供ping
、ip
、ifconfig
、netstat
等命令)ssh
:远程连接工具rsync
:文件同步工具tree
:显示文件和目录树lsof
:查看当前系统打开的文件aria2
:多线程下载工具
pip 安装:
jupyter notebook
、jupyter lab
:交互式开发环境virtualenv
:Python 虚拟环境管理工具,可以直接用 condatensorboard
:深度学习训练可视化工具ipywidgets
:Jupyter 小部件库,用以正确显示进度条
插件:
zsh-autosuggestions
:命令自动补全zsh-syntax-highlighting
:语法高亮z
:快速跳转目录
dl
dl (Deep Learning)版本在 base 基础上,额外安装了深度学习可能用到的基础工具和库:
Apt 安装:
ffmpeg
:音视频处理工具libgl1-mesa-glx
:图形库依赖(解决一些深度学习框架图形相关问题)
pip 安装:
- 数据科学库 :
numpy
、scipy
:数值计算和科学计算pandas
:数据分析matplotlib
、seaborn
:数据可视化scikit-learn
:机器学习工具
- 深度学习框架 :
tensorflow
、tensorflow-addons
:另一种流行的深度学习框架tf-keras
:Keras 接口的 TensorFlow 实现
- NLP 相关库 :
transformers
、datasets
:Hugging Face 提供的 NLP 工具nltk
、spacy
:自然语言处理工具
一些库在安装时被自动安装,如 tensorflow
中的 keras
。
如果需要额外的库,可以通过以下命令手动安装:
bash
pip install --timeout 120 <替换成库名>
这里 --timeout 120
设置了 120 秒的超时时间,确保在网络不佳的情况下仍然有足够的时间进行安装。如果不进行设置,在国内的环境下可能会遇到安装包因下载超时而失败的情况。