AWS ограничивает количество контейнеров на одном хосте - PullRequest
0 голосов
/ 11 мая 2018

У меня есть несколько контейнеров с заданиями Tensorflow для графического процессора, и, если 2+ из них выполняются одновременно на одном хосте, только 1 будет успешным (2018-05-11 13:02:19.147869: E tensorflow/core/common_runtime/direct_session.cc:171] Internal: failed initializing StreamExecutor for CUDA device ordinal 0: Internal: failed call to cuDevicePrimaryCtxRetain: CUDA_ERROR_ECC_UNCORRECTABLE, то есть они не могут совместно использовать GPU).

Идеальный сценарий будет выглядеть следующим образом: у меня 10 заданий на GPU и максимум 5 контейнеров. Первые 5 выполняются, остальные 5 ждут (в данный момент они не ждут, но пытаются выполнить и терпят неудачу), когда один из них завершается, 6-й сразу запускается на том же хосте, затем 7-й, 8-й, 9-й, 10-й.

Я использую p2.xlarge и настраиваю 4 vCPU и 42000 памяти для работы gpu. Согласно ec2instances.info, эта машина имеет 61 ГБ памяти и 4 виртуальных ЦП. Но, в любом случае, похоже, что пакет выполняет планирование нескольких контейнеров одновременно, что приводит к описанному отказу.

До сих пор я пытался играть с параметрами vCPU и memory, но планировщик Batch, похоже, игнорирует их.

Интересно, что соответствующее определение задачи ECS имеет 1/-- в качестве значения для Hard/Soft memory limits (MiB), поэтому значения из пакета "определение задания" не передаются в определение задачи ECS .

Другой альтернативой является установка очень большого количества попыток, но

  • некрасиво
  • для длительных заданий может истощиться даже большое число
  • Я теряю защиту от вечно работающих заданий (например, неправильно настроен)
  • не уверен, как такое прерывание повлияет на уже запущенные задания Tensorflow

Ответы [ 2 ]

0 голосов
/ 15 мая 2018

Кажется, что у планировщика заданий Batch есть некоторые проблемы, когда память контейнера меньше максимально возможной. При этом иногда он пытается запустить два контейнера, где есть место только для одного, но с некоторым резервом (например, 42000/61000, который я пробовал изначально). Таким образом, обходной путь должен передать резервную почти всю память машины в контейнере.

0 голосов
/ 11 мая 2018

Каковы требования к vCPU и памяти для ваших заданий, какие типы экземпляров в вашей вычислительной среде?

Если вы обновите vCpu и память ваших заданий, чтобы в одном экземпляре могла поместиться только одна работа, Batch будет планировать ваши работы одну за другой и не будет пытаться запустить две работы одновременно.

Например, если ваша вычислительная среда имеет экземпляры p3.16xlarge ( 64vCpus, 488Gib ) и хотите, чтобы в экземпляре одновременно выполнялось только одно задание, убедитесь, чточто задание указывает vCPU> 32 и Память> 244 ГБ

...