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

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.xdnf.cn/news/15661.html

相关文章:

  • OSPF路由协议的协商过程
  • Java全栈面试实录:从电商场景到AIGC的深度技术考察
  • 基于现代R语言【Tidyverse、Tidymodel】的机器学习方法与案例分析
  • Maven私服仓库,发布jar到私服仓库,依赖的版本号如何设置,规范是什么
  • 精通 triton 使用 MLIR 的源码逻辑 - 第002节:再掌握一些 triton 语法 — 通过 02 softmax
  • 生成式引擎优化(GEO)核心解析:下一代搜索技术的演进与落地策略
  • Python包发布与分发全指南:从PyPI到企业私有仓库
  • LiteCloud超轻量级网盘项目基于Spring Boot
  • Solr7升级Solr8全攻略:从Core重命名到IK分词兼容,零业务中断实战指南
  • css样式中的选择器和盒子模型
  • 《汇编语言:基于X86处理器》第8章 高级过程(2)
  • QT跨平台应用程序开发框架(10)—— Qt窗口
  • PyCharm 高效入门指南(引言 + 核心模块详解)
  • C++拷贝构造
  • 【数据结构】栈和队列
  • 李宏毅《生成式人工智能导论》 | 第15讲-第18讲:生成的策略-影像有关的生成式AI
  • 【读论文】AgentOrchestra 解读:LLM 智能体学会「团队协作」去解决复杂任务
  • 河南萌新联赛2025第一场-河南工业大学
  • Python--plist文件的读取
  • 【Linux】LVS(Linux virual server)
  • python-字典、集合、序列切片、字符串操作(笔记)
  • 大型语言模型的白日梦循环
  • Git简介与特点:从Linux到分布式版本控制的革命
  • Python 网络爬虫 —— 代理服务器
  • github不能访问怎么办
  • echart设置trigger: ‘axis‘不显示hover效果
  • C 语言基础第 08 天:数组与冒泡排序
  • HTTPS的工作原理及DNS的工作过程
  • 相位中心偏置天线的SAR动目标检测
  • 基于Echarts的气象数据可视化网站系统的设计与实现(Python版)