00306 为PyTorch训练模型并集成DeepSpeed的Dockerfile示例


前言

为PyTorch训练模型并集成DeepSpeed的Dockerfile示例。

Operating System: Ubuntu 22.04.4 LTS

参考文档

  1. pytorch/pytorch

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"]

关键配置说明

  1. 基础镜像选择
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(包含开发工具)
  1. DeepSpeed专属配置
  • 安装编译依赖(g++、openssh-server)
  • 明确指定deepspeed版本(建议与PyTorch版本匹配)
  • 包含分布式训练需要的SSH服务
  1. 性能优化
  • 使用清华镜像源加速下载
  • --no-cache-dir减少镜像体积
  • 合并apt-get命令减少层数

构建与使用指南

  1. 构建镜像
# 在包含Dockerfile的目录执行
docker build -t torch-deepspeed:1.0 .
  1. 运行容器(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
  1. 常用参数说明
--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

扩展建议

  1. 多阶段构建(适用于生产环境):
# 构建阶段
FROM pytorch/pytorch:2.0.1-cuda11.7-cudnn8-devel as builder
# ...(安装编译依赖)

# 运行阶段
FROM pytorch/pytorch:2.0.1-cuda11.7-cudnn8-runtime
COPY --from=builder /path/to/artifacts /app
  1. 定制DeepSpeed配置
  • ds_config.json配置文件复制到容器中
  • 使用环境变量动态配置参数
  1. 监控支持
# 安装监控工具
RUN pip install prometheus-client

这个配置已在以下环境验证:

  • NVIDIA A100/A10G GPU
  • CUDA 11.7/11.8
  • PyTorch 2.0+ 和 DeepSpeed 0.9+

结语

第三百零六篇博文写完,开心!!!!

今天,也是充满希望的一天。


文章作者: LuYF-Lemon-love
版权声明: 本博客所有文章除特別声明外,均采用 CC BY 4.0 许可协议。转载请注明来源 LuYF-Lemon-love !
  目录