Возможности AWS Batch

Для чего нужен Пакет AWS?

Пакет AWS позволяет создать пакет с кодом для выполнения заданий, указать все их зависимости и отправить готовое задание на выполнение с помощью Консоли управления AWS, интерфейса командной строки или SDK. После того, как вы определите все важные зависимости и параметры для выполнения, Пакет AWS возьмет на себя любую интеграцию с большим количеством популярных языков программирования и сервисов для пакетных вычислений (например, Pegasus WMS, Luigi, Nextflow, Metaflow, Apache Airflow и AWS Step Functions). Пакет AWS эффективно динамически выделяет и масштабирует вычислительные ресурсы Эластичный сервис контейнеров Amazon (ECS), Эластичный сервис Amazon Kubernetes (EKS) и AWS Fargate, а также предоставляет возможность использовать спотовые инстансы или инстансы по требованию зависимости от текущих потребностей. В Пакете AWS доступны готовые определения очередей заданий и вычислительных сред, которые позволяют без лишних усилий начать работу с сервисом.

Определения заданий

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

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

С Пакетом AWS вы можете настраивать для работы с заданиями конкретные требования к ресурсам, таким как память и виртуальные ЦПУ, роли Управления квалификацией и доступом AWS (AWS IAM), точки подключения томов, параметры контейнеров, а также переменные среды. Пакет AWS выполняет ваши задания в виде контейнерных приложений в Amazon ECS.  Также вы можете определить зависимости между заданиями. Например, пакетное задание может включать три этапа обработки, для которых требуются разные ресурсы. Можно определить три задания с разными требованиями к ресурсам и указать зависимость каждого последующего задания от результатов выполнения предыдущего.

Возможности интеграции

Пакет AWS можно интегрировать с сервисами управления рабочими процессами (как с коммерческими, так и с открытым исходным кодом), например с Pegasus WMS, Luigi, Nextflow, Metaflow, Apache Airflow и AWS Step Functions. Это позволяет использовать знакомые языки программирования для моделирования конвейеров пакетных вычислений.

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

 

AWS Batch отображает основные рабочие метрики заданий в Консоли управления AWS. Вы можете просматривать метрики по вычислительным ресурсам, а также по выполняемым, завершенным и ожидающим своей очереди заданиям. Журналы заданий (например, STDERR и STDOUT) доступны в Консоли управления AWS и сохраняются в сервисе «Журналы Amazon CloudWatch».

AWS Batch использует IAM для управления ресурсами AWS, доступными для заданий, например таблицами Amazon DynamoDB, а также для мониторинга таких ресурсов. IAM также позволяет создавать политики для разных пользователей в организации. Например, администраторам можно предоставить полный доступ к любым операциям API AWS Batch, разработчикам – ограниченные права для настройки вычислительных сред и регистрации заданий, а конечным пользователям – только права на отправку и удаление заданий.

Среды вычислений

Пакет AWS может выполнять пакетные задания в существующих кластерах Amazon EKS. Вы указываете для контейнеров требования по количеству виртуальных процессоров, объему памяти и наличию графического процессора, а затем отправляете их в очередь, подключенную к вычислительной среде с поддержкой кластера EKS. Пакет AWS управляет масштабированием узлов Kubernetes и размещением подов на этих узлах. Кроме того, Пакет AWS управляет очередями, отслеживанием зависимостей, повторными попытками выполнения заданий, приоритизацией и отправкой подов, а также обеспечивает поддержку инстансов по запросу и спотовых инстансов в Эластичное облако вычислений Amazon (EC2). Пакет AWS интегрируется с кластером EKS в отдельном пространстве имен, поэтому вам не нужно беспокоиться о том, что пакетные задания будут вмешиваться в существующие процессы. Наконец, Пакет AWS управляет за вас всеми ресурсами, включая поддержание «горячего» пула узлов, соблюдение максимального количества виртуальных ЦП, масштабирование узлов и выполнение заданий в одном кластере или в нескольких кластерах.

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

Для тех, кто уже пользуется Пакетом AWS, Fargate обеспечивает дополнительный уровень изоляции от инстансов EC2. У вас нет необходимости управлять Образами машины Amazon (AMI) или исправлять их. При отправке в Пакет заданий, совместимых с Fargate, не нужно беспокоиться о поддержке двух разных сервисов, если одни рабочие нагрузки запускаются на Amazon EC2, а другие – на Fargate.

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

Кроме того, Fargate обеспечивает преимущества безопасности, не требующие дополнительных усилий (например, соответствие стандартам SOX и PCI), а также изоляцию вычислительных ресурсов для каждого задания.

Планирование

Пакет AWS позволяет настроить несколько очередей заданий с разными уровнями приоритета. Пакетные задания находятся в очереди до тех пор, пока не появятся доступные для их выполнения вычислительные ресурсы. Планировщик заданий AWS Batch определяет, где, когда и как можно запускать поставленные в очередь задания, на основании требований к ресурсам для каждого задания. Планировщик определяет приоритет каждой очереди и запускает задания, используя оптимальный набор вычислительных ресурсов (например, с оптимизацией по объему памяти или по нагрузке на ЦП), при условии, что у заданий нет невыполненных зависимостей.

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

Масштабирование

При использовании Fargate или AWS Fargate Spot с Пакетом AWS достаточно лишь задать в Пакете несколько значений (вычислительная среда, очередь заданий и определение задания), и вы получите полную архитектуру с очередью, планировщиком и вычислительными ресурсами, и вам не придется управлять элементами этой вычислительной инфраструктуры.

Тем, кому нужны инстансы EC2, Пакет AWS предоставляет управляемые вычислительные среды для динамического выделения вычислительных ресурсов и их масштабирования в зависимости от объема и требований отправленных на обработку заданий. Для управляемых вычислительных сред можно настраивать такие требования, как тип инстансов EC2, конфигурации подсети VPC, максимальное / минимальное / желательное количество виртуальных ЦПУ на всех инстансах, а также сумму, которую вы готовы заплатить за спотовые инстансы в виде процента от цены на инстанс по требованию.

Кроме того, если вам нужна не поддерживаемая конфигурация (например, более крупные тома EBS или другая операционная система), для инстансов EC2 можно выделять собственные вычислительные ресурсы за пределами, управляемой Пакетом AWS. Достаточно только выделить инстансы EC2, на которых установлены агент Amazon ECS и поддерживаемые версии Linux и Docker. После этого AWS Batch будет запускать пакетные задания в этих инстансах EC2.

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

Наилучшее соответствие: Пакет AWS выбирает тип инстанса, который наилучшим образом отвечает требованиям заданий, отдавая предпочтение типу с наименьшей стоимостью. Если дополнительные инстансы выбранного типа недоступны, Пакет AWS будет ожидать появления дополнительных инстансов. Если инстансов не будет хватать или вы достигнете лимитов сервисов Amazon EC2, выполнение дополнительных заданий начнется после завершения текущих. Эта стратегия распределения позволяет удерживать затраты на низком уровне, но может ограничивать масштабирование.

Наилучшее соответствие по принципу возрастания: Пакет AWS выбирает дополнительные типы инстансов, достаточно большие для выполнения требований заданий в очереди, отдавая предпочтение типам с более низкой стоимостью единицы виртуальных ЦПУ. Если дополнительные инстансы ранее выбранных типов недоступны, AWS Batch выберет новые типы инстансов.

Оптимизация спотовых ресурсов: Пакет AWS выбирает один или несколько типов инстансов, достаточно больших для выполнения требований заданий в очереди, отдавая предпочтение типам с меньшей вероятностью прерывания. Эта стратегия распределения доступна только для вычислительных ресурсов типа «спотовый инстанс».