Вопросы и ответы по AWS Batch

Общая информация

AWS Batch – это набор функций пакетного управления, позволяющий разработчикам, ученым и инженерам легко и эффективно выполнять сотни тысяч заданий пакетных вычислений на AWS. Сервис AWS Batch динамически выделяет оптимальные объемы и типы вычислительных ресурсов (например, оптимизированных для работы с ЦПУ или памятью) на основании объемов и особых требований к ресурсам отправленных в сервис заданий пакетной обработки. Благодаря сервису Пакет AWS не нужно устанавливать и обслуживать вычислительное ПО или кластеры серверов, что позволяет пользователю сосредоточиться на анализе результатов и решении проблем. Пакет AWS планирует, составляет расписание и выполняет ваши рабочие нагрузки для пакетных вычислений с помощью Amazon ECS, Amazon EKS и AWS Fargate с возможностью использования спотовых инстансов.

Пакетные вычисления – это исполнение серии программ (заданий) на одном или нескольких компьютерах без ручного вмешательства. Входные параметры предопределяются с помощью скриптов, аргументов командной строки, управляющих файлов или языка управления заданиями. Выполнение конкретного пакетного задания зависит от завершения предыдущих заданий или наличия соответствующих входных данных, поэтому особую важность приобретает соблюдение очередности и планирование графика выполнения множества заданий. Соответственно, выполнение пакетных заданий и интерактивная обработка несовместимы.

  • Пакетные вычисления помогают сместить обработку заданий по времени, чтобы воспользоваться доступными ресурсами в большем объеме или по меньшей стоимости.
  • Они позволяют избежать простоя вычислительных ресурсов и регулярного ручного вмешательства в процессы управления ими.
  • Они позволяют повысить эффективность за счет более интенсивного использования вычислительных ресурсов.
  • Они определяют приоритеты выполнения заданий, сопоставляют распределение ресурсов с бизнес-целями.

Задания следует запускать на Fargate, если ресурсы для вычислений в Пакете AWS нужно выделять без какой-либо привязки к инфраструктуре ECS. Задания следует запускать на ECS, если нужен доступ к определенным конфигурациям инстансов (с конкретными ЦПУ или графическими процессорами либо особой архитектурой), а также в случае особо масштабных рабочих нагрузок. Если в качестве технологии оркестрации контейнеров вы выбрали Kubernetes, то можете стандартизировать пакетные рабочие нагрузки, используя интеграцию сервиса Пакет с EKS.

В зависимости от примера использования, задания на Fargate запускаются быстрее в случае изначального расширения масштабов работы, так как при этом не нужно дожидаться запуска инстанса EC2 или подов. Однако большие рабочие нагрузки могут быстрее выполняться на инстансах EKS или ECS, поскольку Batch повторно использует инстансы и образы контейнеров для запуска последующих заданий.

Задания следует запускать на Fargate, если ресурсы для вычислений в AWS Batch нужно выделять без какой-либо привязки к инфраструктуре EC2. Задания следует запускать на EC2, если нужен доступ к определенным конфигурациям инстансов (с конкретными ЦПУ или графическими процессорами либо особой архитектурой), а также в случае особо масштабных рабочих нагрузок.

В зависимости от сценария использования задания могут запускаться быстрее на EC2 или Fargate. Задания на Fargate запускаются быстрее в случае изначального расширения масштабов работы, так как при этом не нужно дожидаться запуска инстанса EC2. Однако большие рабочие нагрузки могут быстрее выполняться на инстансах EC2, поскольку Batch повторно использует инстансы и образы контейнеров для запуска последующих заданий.

Да. Для ядра вычислений Fargate можно установить максимальное количество виртуальных ЦПУ, равное общему количеству виртуальных ЦПУ всех заданий, в настоящий момент выполняющихся на этом ядре вычислений. Когда количество виртуальных ЦПУ достигнет максимального в ядре вычислений, Batch начнет планировать задания на следующем ядре вычислений Fargate в порядке очереди, если таковая имеется. Это полезно в тех случаях, когда ядро вычислений нужно настроить в соответствии с минимальными требованиями для бизнеса, а остаток рабочей нагрузки предполагается запускать на Fargate Spot.

При настройке ядра вычислений Fargate Spot как основного, а Fargate как вспомогательного, Batch будет переносить рабочие нагрузки в Fargate лишь тогда, когда количество виртуальных ЦПУ, используемое для заданий, превысит максимальное для такого ядра вычислений. Если же ядро вычислений Fargate Spot будет отозвано, максимальное количество виртуальных ЦПУ не будет достигнуто, а Batch не будет запрашивать ресурсы Fargate для выполнения заданий в следующем ядре вычислений.

Подключать очередь заданий AWS Batch к ядру вычислений Fargate / Fargate Spot и к ядру вычислений EC2 или Spot запрещается.

Для чего нужен AWS Batch?

AWS Batch обеспечивает выполнение заданий и управляет вычислительными ресурсами, позволяя пользователю сфокусироваться на разработке приложений или анализе результатов, а не тратить время на настройку инфраструктуры и управление ею. Когда требуется выполнить пакетные рабочие нагрузки или переместить их на платформу AWS, рекомендуется использовать сервис AWS Batch.

Сервис AWS Batch оптимизирован для пакетных вычислений и приложений, которые масштабируются в результате параллельного исполнения нескольких заданий. Показательные примеры пакетных вычислений – это глубокое обучение, анализ генома, моделирование финансовых рисков, моделирование по методу Монте-Карло, рендеринг анимации, перекодирование мультимедийных данных, обработка изображений и инженерное моделирование.

Многоконтейнерные задания

Функция многоконтейнерных заданий полезна, если вы хотите создать рабочую нагрузку Пакета AWS в виде набора логически разделенных элементов, например среды моделирования и тестируемой системы, основного приложения или боковой панели телеметрии. Использование этой функции упростит операции, упростит применение современных рекомендаций по архитектуре и позволит согласовать моделирование с многоконтейнерной архитектурой производственной «системы систем». Независимо от того, хотите ли вы запускать отдельные контейнеры для своих SUT и среды моделирования или добавить в систему дополнительную рабочую нагрузку, теперь вы не обязаны объединять все элементы рабочей нагрузки в монолитный контейнер и каждый раз заново компилировать его после изменения кода. Это позволяет упростить процессы DevOps, сохранить контейнеры компактными для быстрой загрузки, а также упростить параллелизацию работы.

Пакет AWS поддерживает выполнение нескольких контейнеров для заданий любых типов, включая обычные задания с одним узлом, массивы задач и параллельные задания в нескольких узлах (MNP).

Многоконтейнерные задания можно выполнять во всех вычислительных средах Пакета AWS, включая Amazon ECS, Amazon EC2, AWS Fargate и Amazon EKS.

Функции

Пакет AWS управляет средами вычислений и очередями заданий, позволяя легко выполнять тысячи заданий любого масштаба с помощью сервисов Amazon ECS, Amazon EKS и AWS Fargate с возможностью выбора спотовых ресурсов или ресурсов по требованию. Нужно лишь определить пакетные задания и отправить их в очередь. В ответ сервис AWS Batch выберет место исполнения заданий и запустит соответствующие ресурсы AWS при необходимости. AWS Batch тщательно отслеживает процесс выполнения заданий. Когда потребность в ресурсах отпадает, AWS Batch удаляет их. AWS Batch также предлагает возможность отправлять задания, являющиеся частью конвейера или рабочего процесса, позволяя по мере отправки заданий выразить все существующие взаимозависимости.

AWS Batch поддерживает любые задания, которые можно исполнять как контейнеры Docker. В соответствии с заданиями определяются требования к памяти и количеству виртуальных ЦПУ.  

Вычислительный ресурс AWS Batch – это инстанс EC2 или вычислительный ресурс AWS Fargate.

Вычислительная среда AWS Batch – это набор вычислительных ресурсов, на которых исполняются задания. AWS Batch поддерживает два типа вычислительных сред: управляемые вычислительные среды, за выделение которых и последующее управление отвечает AWS, и неуправляемые вычислительные среды, за управление которыми отвечают клиенты. Неуправляемые вычислительные среды позволяют использовать специализированные ресурсы, например выделенный хостинг, укрупненные конфигурации хранилищ и Amazon EFS.

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

AWS Batch использует сервис Amazon ECS для выполнения заданий из контейнеров и поэтому требует установки агента ECS на ресурсах вычислительных сред AWS Batch. В управляемых вычислительных средах агент ECS уже предустановлен.

Вычислительные среды AWS Batch могут состоять из спотовых инстансов EC2. При создании управляемой вычислительной среды просто укажите, что хотите использовать спотовые инстансы EC2, задайте цену, которую вы готовы заплатить, в виде процентной доли от цены по требованию, и AWS Batch выполнит всю остальную работу самостоятельно. В неуправляемых вычислительных средах также можно использовать спотовые инстансы, запускаемые пользователем, включая те, что запускаются в спотовом парке EC2.

Цены

Дополнительная плата за AWS Batch отсутствует. Пользователь оплачивает только стоимость ресурсов AWS (например, инстансов EC2 или AWS Fargate), которые создаются для хранения и выполнения пакетных заданий.

Планирование инстансов с графическим процессором (GPU)

Да, можно использовать Batch, чтобы указать количество и тип необходимых для выполнения ваших заданий бизнес-акселераторов, а также варианты виртуального ЦП и памяти. Все это можно сделать в графе определения задания, изменив входные переменные. AWS Batch масштабирует подходящие для ваших заданий инстансы с учетом необходимых бизнес-акселераторов. Затем они изолируются в соответствии с требованиями для каждого задания, так чтобы только соответствующие контейнеры могли получить к ним доступ.

Используя бизнес-акселераторы с AWS Batch, вы можете в динамическом режиме планировать и распределять задания с учетом всех требований. Batch гарантирует, что для каждого задания будет зарезервировано соответствующее количество бизнес-акселераторов. Batch позволяет при необходимости масштабировать инстансы в сторону увеличения для ускоренной работы EC2, а также масштабировать их в сторону уменьшения после завершения работы, чтобы вы могли спокойно сосредоточиться на своих приложениях. Batch имеет встроенную интеграцию со спотовыми инстансами EC2, что означает, что ускоренное выполнение заданий может обеспечить до 90 % экономии при использовании ускоренных инстансов.

В настоящее время можно использовать бизнес-акселераторы графического процессора на ускоренных инстансах серий P и G.

Количество и тип бизнес-акселераторов можно указать в графе определения задания. Вы должны уточнить тип бизнес-акселератора (например, графический процессор – единственный на данный момент поддерживаемый акселератор), а также какое количество акселераторов необходимо для выполнения вашего задания. Выбранный тип бизнес-акселератора должен быть среди типов инстансов, указанных в вычислительных средах. Например, если ваша работа требует 2 графических процессора, то необходимо также указать инстанс семейства P в своей вычислительной среде.

Пример из API:
{
«свойства_контейнеров»: {
«виртуальные ЦПУ»: 1,
«изображение»: «nvidia/cuda: версия 9.0»,
«память»: 2048,
«ресурсные_требования»: [
{
«тип»: «графический процессор»,
«значение» : «1»
}
],

При отправке задания вы можете изменить количество и тип бизнес-акселераторов. Вы также можете изменить виртуальные ЦПУ и требования к памяти.

В нынешних условиях Batch по возможности не будет планировать задания, которые не требуют ускорения с помощью ускоренных инстансов. Это делается для того, чтобы избежать случаев, когда долгосрочные задания занимают ускоренные инстансы без использования бизнес-акселератора, что приводит к увеличению расходов. В редких случаях при спотовой цене и наличии ускоренных инстансов необходимого типа Batch может решить, что для выполнения ваших заданий наименее затратным будет применение ускоренного инстанса. При этом неважно, будет использоваться бизнес-акселератор или нет.

Если вы отправите задание в CE, для которого только Batch может запускать ускоренные инстансы, то он будет выполнять задания на указанных инстансах, независимо от необходимости использования бизнес-акселератора.

С этого момента инстансы типа P будут запускаться по умолчанию вместе с ECS AMI, оптимизированным под графические процессоры. AMI содержит библиотеки и среды выполнения, необходимые для запуска приложений на базе графических процессоров. При создании CE вы всегда при необходимости сможете указать пользовательский AMI.

Начало работы

Для начала ознакомьтесь с Руководством по началу работы в разделе документации.

Чтобы начать работу, запускать вычислительные ресурсы вручную не требуется. Веб-консоль AWS Batch поможет создать первую вычислительную среду и очередь заданий, в которую можно отправить свое первое задание. Ресурсы вычислительной среды будут масштабироваться соответствующим образом по мере увеличения или уменьшения количество заданий, готовых к исполнению.