当前位置: 首页 > 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.lryc.cn/news/591921.html

相关文章:

  • 【Docker】在Linux环境下使用Dockerfile打包镜像(图文示例)
  • 深入浅出MyBatis缓存:如何让数据库交互飞起来
  • 无标记点动捕:如何突破传统娱乐边界,打造沉浸式交互体验
  • vscode的终端运行目录修改为当前文件的路径下
  • C#通过HslCommunication连接西门子PLC1200,并防止数据跳动的通用方法
  • 异世界历险之数据结构世界(排序(插入,希尔,堆排))
  • CentOS7下的ElasticSearch部署
  • 2025年6月电子学会全国青少年软件编程等级考试(Python一级)真题及答案
  • TL1A靶点:自免炎症领域的“潜力之星”
  • chainlink VRF中文教程(含mock),解决error: Arithmetic Underflow in createSubscription
  • Elasticsearch 和 solr 的区别
  • Prometheus错误率监控与告警实战:如何自定义规则精准预警服务器异常
  • 大数据时代下的时序数据库选型指南:基于工业场景的IoTDB技术优势与适用性研究
  • LiteCloud超轻量级网盘项目基于Spring Boot
  • 如何解决pip安装报错ModuleNotFoundError: No module named ‘django’问题
  • 第2章通用的高并发架构设计——2.5 高并发读场景总结:CQRS
  • JavaScript中的Window对象
  • 个人笔记(初级Linux运维设计脚本编写任务)
  • 微信小程序151~160
  • stl-string模拟
  • Solr7升级Solr8全攻略:从Core重命名到IK分词兼容,零业务中断实战指南
  • Java零基础快速入门
  • 闲庭信步使用图像验证平台加速FPGA的开发:第二十一课——高斯下采样后图像还原的FPGA实现
  • 缓存雪崩、缓存穿透,缓存击穿
  • 神经网络构建
  • 【Reinforcement Learning】强化学习常用算法
  • python爬虫入门(小白五分钟从入门到精通)
  • Leetcode 494. 目标和
  • FFmpeg 直播推流
  • java-字符串和集合