Совместное использование нескольких контейнеров в одном графическом процессоре - PullRequest
0 голосов
/ 10 января 2020

Я настроил службу ECS, работающую на экземпляре g4dn.xlarge, который имеет один графический процессор. Внутри определения задачи я указываю требование к ресурсу определения контейнера для использования одного графического процессора следующим образом:

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

Выполнение одной задачи и одного контейнера в этом экземпляре работает нормально. Когда я устанавливаю желаемое количество заданий для службы равным 2, я получаю в службе событие, в котором говорится:

службе не удалось разместить задачу, поскольку ни один экземпляр контейнера не удовлетворял всем ее требованиям. У ближайшего соответствующего экземпляра контейнера недостаточно ресурсов GPU.

Согласно AWS документам :

Amazon ECS запланирует доступность Экземпляры контейнеров с поддержкой графического процессора и привязка физических графических процессоров к соответствующим контейнерам для оптимальной производительности.

Если есть какой-либо способ переопределить это поведение по умолчанию и заставить ECS разрешить нескольким экземплярам контейнера совместно использовать один графический процессор ?

Не думаю, что у нас возникнут проблемы с производительностью при совместном использовании, поскольку мы планируем использовать каждый контейнер для кодирования H264 (nven c), который не является CUDA. Если кто-нибудь может направить меня к документации, касающейся производительности CUDA для контейнеров, совместно использующих графический процессор, это также будет оценено.

1 Ответ

0 голосов
/ 12 марта 2020

Хитрость заключается в том, чтобы включить 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

Создайте новый AMI и не указывайте никаких значений в определении контейнера GPU.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...