AWS представила управление квотами в AWS Batch для задач обучения Amazon SageMaker Training: администраторы делят общие мощности на доли квот по командам или проектам. Каждая доля получает лимит мощности и стратегию совместного использования, а простаивающие GPU автоматически передаются другим командам и возвращаются владельцу при появлении его задач. Функция рассчитана на среды обучения, где несколько команд делят ограниченные ресурсы.

AWS Batch добавил квоты для обучения моделей в SageMaker

Как доли квот делят мощности GPU

Доля квоты работает как виртуальная очередь внутри очереди заданий Batch. Администратор задает лимиты мощности для каждой команды или проекта и выбирает одну из трех стратегий: RESERVE удерживает простаивающие мощности, LEND передает их другим долям, а LEND_AND_BORROW одновременно отдает простаивающие мощности и занимает свободные мощности при наличии собственных задач. При планировании Batch отдает предпочтение долям, работающим ниже своих лимитов.

Когда задачи поступают в долю, ранее отдавшую мощности, Batch выполняет межквотное вытеснение и возвращает ресурсы без ручной остановки чужих заданий. Когда доля достигла лимита или превысила его, Batch проверяет доступные для займа простаивающие мощности и запускает задачи на них при наличии. Отдельная опция включает вытеснение внутри доли по приоритету: задания с низким приоритетом в состояниях SCHEDULED, STARTING или RUNNING вытесняются, чтобы приоритетные задачи из начала очереди стартовали раньше.

Для настройки нужны аккаунт AWS с правами на ресурсы Batch и SageMaker, а также SageMaker Python SDK v3. Администратор создает Scheduling Policy с quotaSharePolicy, Service Environment с лимитами в конкретных инстансах и очередь обучения SageMaker Training, связанную с ними, затем привязывает доли квот к очереди. Руководство содержит примеры для AWS CLI и консоли, а примерный ноутбук показывает сквозной сценарий через модуль aws_batch и вспомогательные функции.

Что общее планирование GPU меняет для бизнеса

Пример из публикации настраивает три доли квот, каждая с лимитом в один инстанс ml. g5.xlarge. QS1 предназначена для фоновых заданий с контрольными точками, использует LEND_AND_BORROW и включает вытеснение внутри доли, поэтому приоритетные задачи замещают менее важные. QS2 подходит для среднеприоритетной работы, где ожидание предпочтительнее лишних вытеснений, а QS3 резервирует мощности, не отдает и не занимает их, отключает внутреннее вытеснение ради минимальных прерываний.

Задания попадают в очередь с квотами через конструктор TrainingQueue в модуле aws_batch с использованием ModelTrainer и образа под конкретный регион. В пошаговом примере три задания с высоким, средним и низким приоритетом поступают в QS1, причем два самых приоритетных запускаются благодаря свободным мощностям QS2. Поздняя отправка задания в QS2 возвращает отданные мощности от QS1 через межквотное вытеснение, а мощности QS3 остаются нетронутыми.

Приоритеты можно менять после отправки через API UpdateServiceJob. В примере повышение приоритета ожидающего задания с низким приоритетом в QS1 запускает вытеснение внутри доли, когда свободных мощностей для займа нет. Компаниям перед внедрением стоит сопоставить устойчивость задач к прерываниям с тремя стратегиями, проверить контрольные точки там, где вытеснение включено, и протестировать схему приоритетов до перевода продуктивного обучения в общие очереди.