当前位置: 首页 > news >正文

Docker 与 GPU 训练

以下是 Docker 与 GPU 训练 相关的核心命令和操作指南,涵盖容器启动、资源监控和调试技巧:


1. 启用 GPU 支持的 Docker

安装 NVIDIA 容器工具包(必须步骤)
# 添加源并安装
distribution=$(. /etc/os-release;echo $ID$VERSION_ID) \
&& curl -s -L https://nvidia.github.io/nvidia-docker/gpgkey | sudo apt-key add - \
&& curl -s -L https://nvidia.github.io/nvidia-docker/$distribution/nvidia-docker.list | sudo tee /etc/apt/sources.list.d/nvidia-docker.listsudo apt update
sudo apt install -y nvidia-docker2
sudo systemctl restart docker
验证安装
docker run --rm --gpus all nvidia/cuda:11.0-base nvidia-smi

若看到与宿主机相同的 GPU 信息输出,则配置成功。


2. 启动带 GPU 的容器

基础命令
# 使用所有GPU
docker run --gpus all -it nvidia/cuda:11.0-base bash# 指定GPU数量(如2卡)
docker run --gpus 2 -it nvidia/cuda:11.0-base bash# 指定具体GPU设备(如仅用第0,1号卡)
docker run --gpus '"device=0,1"' -it nvidia/cuda:11.0-base bash
完整训练示例(PyTorch)
docker run -d --name pytorch_train \--gpus all \-v $(pwd)/data:/data \-v $(pwd)/code:/code \pytorch/pytorch:1.9.0-cuda11.1-cudnn8-runtime \python /code/train.py

3. 监控 GPU/CPU 资源

查看容器内 GPU 使用
# 进入容器后直接运行
nvidia-smi# 或宿主机查看所有容器GPU占用
docker stats --format "table {{.Name}}\t{{.CPUPerc}}\t{{.MemUsage}}\t{{.NetIO}}"
实时监控工具
# 安装nvtop(推荐)
sudo apt install nvtop
nvtop  # 类似htop的GPU监控界面
查看容器绑定的 GPU 设备
docker inspect <容器ID> | grep -i nvidia

4. 调试与常见问题

问题1:容器内找不到 GPU
  • 现象nvidia-smi 报错或无输出。
  • 解决
    # 检查Docker是否支持GPU
    docker info | grep -i runtime
    # 应显示:runtimes: nvidia, runc# 重新加载驱动
    sudo modprobe nvidia
    
问题2:GPU 显存不足
  • 优化方案
    # 启动时限制显存(如每卡最多8G)
    docker run --gpus all --cpuset-cpus 0-3 --memory 16g -it ...
    
问题3:多容器共享 GPU
  • 使用 MIG 技术(仅限A100/H100等显卡):
    # 将GPU划分为多个实例
    nvidia-smi mig -cgi 1g.5gb -C
    # 启动容器时指定MIG实例
    docker run --gpus device=0:0 ...
    

5. 高级配置

指定 CUDA 版本
# 使用特定CUDA版本的镜像
docker run --gpus all nvidia/cuda:11.3.0-base nvcc --version
限制 CPU 核心
# 绑定到0-3号CPU核心
docker run --gpus all --cpuset-cpus 0-3 ...
容器内启用 GPU 计算验证
docker run --gpus all -it tensorflow/tensorflow:2.6.0-gpu \python -c "import tensorflow as tf; print(tf.config.list_physical_devices('GPU'))"

6. 实战示例

启动 Jupyter Lab 并启用 GPU
docker run -d --name jupyter_gpu \--gpus all \-p 8888:8888 \-v $(pwd):/workspace \tensorflow/tensorflow:2.6.0-gpu-jupyter \jupyter lab --ip=0.0.0.0 --allow-root

访问 http://localhost:8888 并运行 !nvidia-smi 验证 GPU。


附:命令速查表

场景命令
启用GPU支持docker run --gpus all ...
指定GPU数量docker run --gpus 2 ...
监控GPUnvidia-smi / nvtop
调试驱动`docker info
限制显存--gpus all --memory 16g

掌握这些命令后,即可在 Docker 中高效运行 GPU 训练任务!

http://www.dtcms.com/a/286248.html

相关文章:

  • 排序【各种题型+对应LeetCode习题练习】
  • 线程控制:互斥与同步
  • IDEA高效开发:Database Navigator插件安装与核心使用指南
  • Python趣味算法:抓交通肇事犯(车牌号谜题解析)
  • nginx定制http头信息
  • 腾讯云云服务器深度介绍
  • 面试150 克隆图
  • 通缩期的 “反脆弱” 研发:新启航逆势投入 30% 营收突破 3D 白光干涉测量技术
  • 深孔加工的方法及检测方法探究 —— 激光频率梳 3D 轮廓检测
  • 29、鸿蒙Harmony Next开发:深浅色适配和应用主题换肤
  • 计算机网络基础:从协议到通信全解析(大致框架)
  • 基于 WinForm 与虹软实现人脸识别功能:从理论到实践
  • VisualXML全新升级 | 新增BusLoad计算
  • python控制linux命令反馈
  • 二刷 黑马点评 附近商户
  • 如何更改 SQLserver 数据库存储的位置 想从C盘换到D盘
  • Delphi EDI 需求分析与对接指南
  • Springboot3整合Elasticsearch8(elasticsearch-java)
  • 智和信通赋能:北京某高校校园网交换机全维度智能管控
  • 洛谷 P10112 [GESP202312 八级] 奖品分配-普及/提高-
  • 基于SpringBoot 投票系统 【源码+LW+PPT+部署】
  • Gemini Function Calling 和 Qwen3 Embedding和ReRanker模型
  • 40.限流规则
  • 用线性代数推导码分多址(CDMA)
  • 第16章 基于AB实验的增长实践——验证想法:AB实验实践
  • 【Python】一些PEP提案(三):with 语句、yield from、虚拟环境
  • 智象科技赋能金融、证券行业 IT 运维
  • Fluent许可有效期查询
  • 堆的实现,堆排序,咕咕咕
  • 几款开源的安全监控与防御工具分享