使用 Compose 启用 GPU 访问

484 阅读1分钟

1、使用docker命令行启动GPU 加速

在 docker run 命令中使用 --gpus all 选项是为了在容器内启用 GPU 加速。这通常用于运行需要 GPU 资源的深度学习或图形处理任务。

docker run --gpus all -it --name my_gpu_container nvidia/cuda:11.0-base /bin/bash

2、docker-compose

Docker Compose v1.27.0+

切换为使用 Compose 规范架构,该架构是 2.x 和 3.x 版本中所有属性的组合

services:
  test:
    image: nvidia/cuda:10.2-base
    command: nvidia-smi
    runtime: nvidia

runtime: nvidia 表示gpu加速

Docker Compose v1.28.0+

允许使用 Compose 规范中定义的 device 结构来定义 GPU 预留。

  • capabilities - 值指定为字符串列表(例如 capabilities: [gpu] )。您必须在 Compose 文件中设置此字段。否则,它会返回服务部署错误。
  • count - 指定为 int 的值或表示应保留的 GPU 设备数量的值 all (假设主机拥有该数量的 GPU)。
  • device_ids - 指定为表示主机 GPU 设备 ID 的字符串列表的值。您可以在主机上 nvidia-smi 的输出中找到设备 ID。
  • driver - 指定为字符串的值(例如 driver: 'nvidia' )
  • options - 表示驱动程序特定选项的键值对。
# 用于运行可访问 1 个 GPU 设备的服务的 Compose 文件示例:
services:
  test:
    image: nvidia/cuda:10.2-base
    command: nvidia-smi
    deploy:
      resources:
        reservations:
          devices:
            - driver: nvidia
              count: 1
              capabilities: [gpu]
# 如果未设置 `count` 或 `device_ids` ,则默认情况下将使用主机上所有可用的 GPU。
services:
  test:
    image: tensorflow/tensorflow:latest-gpu
    command: python -c "import tensorflow as tf;tf.test.gpu_device_name()"
    deploy:
      resources:
        reservations:
          devices:
# 要仅启用对 GPU-0 和 GPU-3 设备的访问:        
services:
  test:
    image: tensorflow/tensorflow:latest-gpu
    command: python -c "import tensorflow as tf;tf.test.gpu_device_name()"
    deploy:
      resources:
        reservations:
          devices:
          - driver: nvidia
            device_ids: ['0', '3']
            capabilities: [gpu]