【问题标题】:Multiple Containers Sharing Single GPU多个容器共享单个 GPU
【发布时间】:2020-04-28 10:24:55
【问题描述】:

我已经配置了一个运行在一个 g4dn.xlarge 实例上的 ECS 服务,该实例只有一个 GPU。在任务定义中,我指定了使用一个 GPU 的容器定义资源要求:

"resourceRequirements": [
  {
    "type":"GPU",
    "value": "1"
  }
]

在此实例上运行一个任务和一个容器可以正常工作。当我将服务的所需任务计数设置为 2 时,我在服务上收到一个事件,该事件表明:

服务无法放置任务,因为没有容器实例满足其所有要求。最接近的匹配容器实例没有足够的可用 GPU 资源。

根据AWS docs

Amazon ECS 将安排可用的支持 GPU 的容器实例,并将物理 GPU 固定到适当的容器以获得最佳性能。

是否有任何方法可以覆盖此默认行为并强制 ECS 允许多个容器实例共享单个 GPU?

我不相信我们会遇到共享性能问题,因为我们计划将每个容器用于 H264 编码 (nvenc),而不是 CUDA。如果有人可以指导我查看有关共享 GPU 的容器上 CUDA 性能的文档,我将不胜感激。

【问题讨论】:

    标签: amazon-web-services amazon-ec2 gpu amazon-ecs


    【解决方案1】:

    如果适合你的使用,技巧是默认为所有容器启用 nvidia docker runtime

    基于 Amazon AMI amazon/amzn2-ami-ecs-gpu-hvm-2.0.20200218-x86_64-ebs,连接到实例并添加以下配置:

    sudo cat <<"EOF" > /etc/docker/daemon.json
    {
      "default-runtime": "nvidia",
      "runtimes": {
          "nvidia": {
            "path": "/etc/docker-runtimes.d/nvidia"
          }
      }
    }
    EOF
    sudo pkill -SIGHUP dockerd
    tail -10 /var/log/messages
    

    创建一个新的 AMI,不要在 GPU 容器定义中指定任何值。

    【讨论】:

      猜你喜欢
      • 2013-05-10
      • 2018-11-23
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多