Amazon web services 共享单个GPU的多个容器

Amazon web services 共享单个GPU的多个容器,amazon-web-services,amazon-ec2,gpu,amazon-ecs,Amazon Web Services,Amazon Ec2,Gpu,Amazon Ecs,我已经在g4dn.xlarge实例上配置了一个ECS服务,该实例只有一个GPU。在任务定义中,我指定容器定义资源要求,以使用一个GPU: "resourceRequirements": [ { "type":"GPU", "value": "1" } ] 在此实例上运行一个任务和一个容器可以正常工作。当我将服务的所需任务计数设置为2时,我在服务上收到一个事件,该事件表示: 服务无法放置任务,因为没有容器实例满足其所有要求。最近匹配的容器实例没有足够的可用GPU资源 根据

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

"resourceRequirements": [
  {
    "type":"GPU",
    "value": "1"
  }
]
在此实例上运行一个任务和一个容器可以正常工作。当我将服务的所需任务计数设置为2时,我在服务上收到一个事件,该事件表示:

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

根据报告:

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

是否有办法覆盖此默认行为并强制ECS允许多个容器实例共享一个GPU?


我不相信我们会遇到共享性能方面的问题,因为我们计划使用每个容器进行H264编码(nvenc),这不是CUDA。如果有人能告诉我有关CUDA在共享GPU的容器上的性能的文档,我也将不胜感激。

诀窍是默认为所有容器启用nvidia docker运行时,如果它适合您的使用

基于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
sudo猫