跳转到主内容
趣航编程网 - 趣学编程,启航技术之路!

怎么在Docker中运行深度学习环境及GPU支持教程

在Docker中启用GPU支持需宿主机安装兼容NVIDIA驱动(≥525)、配置nvidia-container-toolkit并重启Docker服务,再使用NGC官方CUDA镜像(如nvcr.io/nvidia/pytorch)运行容器,通过--gpus all参数调用GPU,容器内无需装驱动。 在Docker中运行深度学习环境并启用GPU支持,核心是使用NVIDIA官方提供的
nvidia-container-toolkit
(替代旧版nvidia-docker2),配合支持CUDA的镜像(如
nvcr.io/nvidia/pytorch
或
nvcr.io/nvidia/tensorflow
)。关键前提是宿主机已正确安装NVIDIA驱动和CUDA Toolkit(仅驱动即可,Docker容器内自带CUDA运行时)。 宿主机环境准备:驱动与工具链 确保以下三项已就绪,否则GPU无法被容器识别: NVIDIA显卡驱动已安装且版本兼容(建议≥525,可通过
nvidia-smi
验证) 安装
nvidia-container-toolkit
(Ubuntu/Debian示例):
curl -sL https://nvidia.github.io/nvidia-docker/gpgkey | sudo apt-key add -
curl -sL https://nvidia.github.io/nvidia-docker/ubuntu20.04/nvidia-docker.list | sudo tee /etc/apt/sources.list.d/nvidia-docker.list
sudo apt-get update && sudo apt-get install -y nvidia-container-toolkit
重启docker daemon:
sudo systemctl restart docker
拉取并运行预编译的GPU镜像 无需自己构建,直接使用NVIDIA NGC官方镜像最稳妥。例如启动PyTorch环境: 查看可用镜像:
docker run --rm --gpus all nvcr.io/nvidia/pytorch:23.10-py3 nvidia-smi
(测试GPU可见性) 交互式运行带Jupyter的容器:
docker run --gpus all -it --rm -p 8888:8888 \
-v $(pwd)/notebooks:/workspace/notebooks \
nvcr.io/nvidia/pytorch:23.10-py3
进入后执行
jupyter notebook --ip=0.0.0.0 --no-browser --allow-root --port=8888
,浏览器访问
localhost:8888
自定义Dockerfile(需GPU支持) 若需添加特定库(如detectron2、wandb),基于NGC基础镜像扩展: 首行必须为NGC镜像:
FROM nvcr.io/nvidia/pytorch:23.10-py3
禁用
CUDA_HOME
覆盖(NGC镜像已设好),避免破坏CUDA路径 安装Python包时用
pip install --no-cache-dir
减小镜像体积 构建命令:
docker build -t my-dl-env .
;运行:
docker run --gpus all -it my-dl-env
验证GPU是否真正生效 容器内运行以下命令确认深度学习框架调用的是GPU而非CPU: PyTorch:
python -c "import torch; print(torch.cuda.is_available()); print(torch.cuda.device_count())"
TensorFlow:
python -c "import tensorflow as tf; print(tf.config.list_physical_devices('GPU'))"
常见失败原因:宿主机驱动版本过低、
--gpus all
未加、容器内误装了CPU-only的PyTorch(如用pip重装) 不复杂但容易忽略:每次更新宿主机NVIDIA驱动后,必须重启docker服务;容器内无需安装驱动,只依赖宿主机驱动 + 容器内CUDA运行时(由NGC镜像提供)。

相关文章