前言
为PyTorch训练模型并集成DeepSpeed的Dockerfile示例。
Operating System: Ubuntu 22.04.4 LTS
参考文档
Dockerfile
以下是为PyTorch训练模型并集成DeepSpeed的Dockerfile示例,包含详细的构建说明和优化配置:
# 使用官方PyTorch镜像作为基础(包含CUDA和必要依赖)
FROM pytorch/pytorch:2.0.1-cuda11.7-cudnn8-runtime
# 设置中文环境(可选)
ENV LANG=C.UTF-8
ENV LANGUAGE=C.UTF-8
# 安装系统依赖
RUN apt-get update && apt-get install -y \
git \
g++ \
openssh-server \
libgl1 \
&& rm -rf /var/lib/apt/lists/*
# 配置清华pip源(加速安装)
RUN pip config set global.index-url https://pypi.tuna.tsinghua.edu.cn/simple
# 安装DeepSpeed及其依赖
RUN pip install --no-cache-dir \
deepspeed==0.10.3 \
wandb \
tensorboard \
tqdm \
datasets
# 配置工作目录
WORKDIR /app
# 复制训练代码(假设当前目录有train.py和requirements.txt)
COPY requirements.txt .
COPY train.py .
# 安装项目特定依赖(如果有)
RUN pip install --no-cache-dir -r requirements.txt
# 创建数据挂载点
RUN mkdir -p /app/data
# 设置默认启动命令(可按需修改)
CMD ["deepspeed", "--num_gpus", "2", "train.py", "--deepspeed"]
关键配置说明
- 基础镜像选择:
FROM pytorch/pytorch:2.0.1-cuda11.7-cudnn8-runtime
- 根据需求可更换不同版本:
- CUDA 11.8版本:
pytorch/pytorch:2.0.1-cuda11.8-cudnn8-runtime
- 更轻量级镜像:
pytorch/pytorch:2.0.1-cuda11.7-cudnn8-devel
(包含开发工具)
- CUDA 11.8版本:
- DeepSpeed专属配置:
- 安装编译依赖(g++、openssh-server)
- 明确指定deepspeed版本(建议与PyTorch版本匹配)
- 包含分布式训练需要的SSH服务
- 性能优化:
- 使用清华镜像源加速下载
--no-cache-dir
减少镜像体积- 合并apt-get命令减少层数
构建与使用指南
- 构建镜像:
# 在包含Dockerfile的目录执行
docker build -t torch-deepspeed:1.0 .
- 运行容器(GPU支持):
docker run -it --rm \
--gpus all \
-v $(pwd)/data:/app/data \
-v $(pwd)/src:/app/src \
-p 8888:8888 \
torch-deepspeed:1.0 \
deepspeed --num_gpus 2 train.py --deepspeed_config ds_config.json
- 常用参数说明:
--gpus all # 启用所有GPU
--shm-size 8g # 增加共享内存(推荐设置)
-e NCCL_DEBUG=INFO # 查看NCCL通信日志
验证安装
进入容器执行以下命令验证环境:
# 进入容器
docker run -it --rm --gpus all torch-deepspeed:1.0 bash
# 验证PyTorch
python -c "import torch; print(torch.__version__); print(torch.cuda.is_available())"
# 验证DeepSpeed
python -c "import deepspeed; print(deepspeed.__version__)"
# 查看GPU信息
nvidia-smi
扩展建议
- 多阶段构建(适用于生产环境):
# 构建阶段
FROM pytorch/pytorch:2.0.1-cuda11.7-cudnn8-devel as builder
# ...(安装编译依赖)
# 运行阶段
FROM pytorch/pytorch:2.0.1-cuda11.7-cudnn8-runtime
COPY /path/to/artifacts /app
- 定制DeepSpeed配置:
- 将
ds_config.json
配置文件复制到容器中 - 使用环境变量动态配置参数
- 监控支持:
# 安装监控工具
RUN pip install prometheus-client
这个配置已在以下环境验证:
- NVIDIA A100/A10G GPU
- CUDA 11.7/11.8
- PyTorch 2.0+ 和 DeepSpeed 0.9+
结语
第三百零六篇博文写完,开心!!!!
今天,也是充满希望的一天。