Perguntas frequentes sobre o AWS Batch

Informações gerais

O AWS Batch é um conjunto de capacidades de gerenciamento de lote que permite a desenvolvedores, cientistas e engenheiros executar com facilidade e eficiência centenas de milhares de trabalhos de computação em lote na AWS. O AWS Batch provisiona dinamicamente a quantidade e o tipo ideais de recursos de computação (p. ex., recursos de computação otimizados para CPU ou memória) com base nos requisitos de volume e de recursos específicos dos trabalhos em lote enviados. Com o AWS Batch, não é necessário instalar e gerenciar clusters de servidores ou software de computação em lote, permitindo que você se concentre em analisar resultados e solucionar problemas. O AWS Batch planeja, programa e executa suas workloads de computação em lote usando o Amazon ECS. o AWS EKS e o AWS Fargate com a opção de usar instâncias spot.

A computação em lotes é a execução de uma série de programas (“trabalhos”) em um ou mais computadores sem intervenção manual. Os parâmetros de entrada são predefinidos por meio de scripts, argumentos de linha de comando, arquivos de controle ou linguagem de controle de trabalhos. Um determinado trabalho em lotes pode depender da conclusão de trabalhos anteriores ou da disponibilidade de determinadas entradas. Com isso, a sequência e a programação de vários trabalhos passam a ser importantes, inviabilizando o processamento interativo.

  • Permite deslocar o período de processamento de trabalhos para horários com disponibilidade de capacidade mais ou menos cara.
  • Evita recursos de computação ociosos, com intervenção e supervisão manuais frequentes.
  • Aumenta a eficiência promovendo maior utilização dos recursos de computação.
  • Permite priorizar trabalhos, alinhando a alocação de recursos aos objetivos empresariais.

Você deve executar seus trabalhos no Fargate quando quiser que o AWS Batch administre o provisionamento de computação de maneira completamente separada da infraestrutura do ECS. Execute seus trabalhos no ECS caso precise de acesso a configurações específicas de instância (processadores, GPUs ou arquiteturas específicos) ou para workloads muito grandes. Se você escolheu Kubernetes como a tecnologia de orquestração de contêineres, poderá padronizar as workloads de seus lotes usando a integração do Batch com o EKS.

Dependendo do seu caso de uso, os trabalhos atualmente no Fargate serão iniciados mais rapidamente em caso de escalonamento horizontal inicial do trabalho, já que não é necessário aguardar a instância ou os pods do EC2 para executar. No entanto, para workloads maiores, o EKS ou o ECS podem ser mais rápidos já que o Batch reutiliza as instâncias e imagens do contêiner para executar trabalhos subsequentes.

Você deve executar seus trabalhos no Fargate quando quiser que o AWS Batch administre o provisionamento de computação de maneira completamente separada da infraestrutura do EC2. Execute seus trabalhos no EC2 caso precise de acesso a configurações específicas de instância (processadores, GPUs ou arquiteturas específicos) ou para cargas de trabalho muito grandes.

Dependendo do seu caso de uso, seus trabalhos podem começar mais rapidamente usando o EC2 ou o Fargate. No Fargate, os trabalhos serão iniciados mais rapidamente em caso de escalonamento horizontal inicial do trabalho, já que não é necessário aguardar a execução da instância do EC2. No entanto, as instâncias do EC2 podem ser mais rápidas para cargas de trabalho maiores, já que o Batch reutiliza instâncias e imagens de contêiner na execução de trabalhos posteriores.

Sim. É possível definir o Compute Environment (CE – Ambiente de computação) do Fargate com uma quantidade máxima de vCPU, que é a quantidade total de vCPU de todos os trabalhos atualmente executados no respectivo CE. Quando sua quantidade de vCPU atingir o máximo de vCPU em um CE, o Batch começará a programar trabalhos no próximo CE do Fargate na ordem vinculada à fila, se houver uma. Isso é útil, por exemplo, caso deseje definir um CE do Fargate com algum requisito comercial mínimo e então executar o restante da sua carga de trabalho no Fargate Spot.

Por outro lado, ao configurar um CE do Fargate Spot como prioritário, seguido de um CE do Fargate, o Batch só realizará o transbordo para o Fargate quando a vCPU utilizada por seus trabalhos for maior que a quantidade máxima de vCPU para o respectivo CE. Caso o Fargate Spot seja recuperado, o máximo de vCPU não será atendido e o Batch não solicitará recursos do Fargate no CE subsequente para a execução de seus trabalhos.

Não é permitido conectar uma fila de trabalho do AWS Batch a um CE do Fargate/Fargate Spot e a um CE do EC2 ou spot.

Por que usar o AWS Batch

O AWS Batch se encarrega da execução de trabalhos e do gerenciamento de recursos computacionais, permitindo que você se concentre no desenvolvimento de aplicações ou na análise de resultados, em vez de na configuração e gerenciamento de infraestrutura. Se você está considerando a execução ou migração de cargas de trabalho na AWS, deve considerar o uso do AWS Batch.

O AWS Batch é otimizado para computação em lotes e aplicações que permitem alterar a escala por meio da execução de vários trabalhos em paralelo. Aprendizado profundo, análises genômicas, modelos de riscos financeiros, simulações de Monte Carlo, renderização de animações, transcodificação de mídia, processamento de imagens e simulações de engenharia são exemplos excelente de aplicações de computação em lotes.

Trabalhos de vários contêineres

Você deverá usar o recurso de trabalhos de vários contêineres se quiser modelar sua workload do AWS Batch como um conjunto de elementos logicamente distintos, por exemplo, o ambiente de simulação e o sistema em teste (SUT), a aplicação principal ou o sidecar de telemetria. O uso desse recurso simplificará suas operações, facilitará o cumprimento das melhores práticas de arquitetura e permitirá que você alinhe as simulações com a arquitetura de vários contêineres do seu sistema de sistemas de produção. Se você deseja executar contêineres separados para seus SUTs e ambiente de simulação ou precisa adicionar um sidecar auxiliar, não precisa mais combinar todos os elementos da workload em um contêiner monolítico e reconstruí-lo após cada alteração de código. Como resultado, você pode simplificar o DevOps, manter os contêineres pequenos e rápidos de baixar e facilitar a paralelização do trabalho.

O AWS Batch oferece suporte à execução de vários contêineres em todos os tipos de trabalho, incluindo trabalhos regulares de um único nó, trabalhos de matriz e trabalhos paralelos de vários nós (MNP).

Você pode executar trabalhos de vários contêineres em todos os ambientes de computação do AWS Batch, incluindo o Amazon ECS, o Amazon EC2, o AWS Fargate e o Amazon EKS.

Recursos

O AWS Batch gerencia ambientes de computação e filas de trabalho, permitindo que você execute facilmente milhares de trabalhos em qualquer escala usando o Amazon ECS, Amazon EKS e AWS Fargate com uma opção entre spot e recursos sob demanda. Basta definir e enviar os trabalhos em lote para uma fila. Como resposta, o AWS Batch escolhe onde executar os trabalhos, iniciando capacidade adicional da AWS quando necessário. O AWS Batch monitora com cuidado o andamento dos seus trabalhos. Quando a capacidade deixar de ser necessária, o AWS Batch a removerá. Além disso, o AWS Batch oferece a capacidade de enviar trabalhos como parte de um fluxo ou fluxo de trabalho, permitindo exprimir todas as interdependências existentes entre os trabalhos durante o seu envio.

O AWS Batch é compatível com qualquer trabalho que possa ser executado como um contêiner de docker. Os trabalhos especificam os requisitos de memória e o número de vCPUs.  

Um recurso de computação do AWS Batch é uma instância do EC2 ou um recurso de computação do AWS Fargate.

Um ambiente de computação do AWS Batch é uma coleção de recursos de computação onde os trabalhos são executados. O AWS Batch permite dois tipos de ambientes de computação: ambientes de computação gerenciados, que são provisionados e gerenciados pela AWS, e ambientes de computação não gerenciados, que são gerenciados pelos clientes. Ambientes não gerenciados de computação oferecem um mecanismo para usar recursos especializados, como hosts dedicados, maiores configurações de armazenamento e o Amazon EFS.

Uma definição de trabalho descreve a atividade a ser executada, os parâmetros, as variáveis ambientais, os requisitos de computação e outras informações usadas para otimizar a execução de um trabalho. As definições de trabalho são estabelecidas antes de enviar um trabalho e podem ser compartilhadas com outros.

O AWS Batch usa o Amazon ECS para executar trabalhos em contêineres e, portanto, exige a instalação do agente do ECS nos recursos computacionais dentro dos ambientes de computação do AWS Batch. O agente do ECS é pré-instalado em ambientes de computação gerenciados.

Os ambientes de computação do AWS Batch podem ser compostos por Instâncias Spot EC2. Durante a criação de um ambiente de computação gerenciado, basta especificar que você gostaria de usar a Instâncias Spot EC2 e fornecer uma porcentagem de definição de preço sob demanda que você está disposto a propor e o AWS Batch se encarregará do resto. Os ambientes de computação não gerenciados também podem incluir Instâncias Spot que você executou, incluindo as executadas pela Frota Spot EC2.

Preços

Não há cobrança adicional para o AWS Batch. Você paga apenas pelos recursos da AWS (p. ex., instâncias do EC2 ou AWS Fargate) criados para armazenar e executar seus trabalhos em lote.

Programação de GPUs

Sim, você pode usar o Batch para especificar o número e o tipo de aceleradores necessários para as tarefas, como variáveis de entrada de definição de tarefa, juntamente com as opções atuais de vCPU e memória. O AWS Batch aumentará as instâncias para o nível adequado para as tarefas com base nos aceleradores necessários e isolará os aceleradores de acordo com as necessidades de cada tarefa para que somente os contêineres adequados possam acessá-los.

Ao usar aceleradores com o Batch, você pode programar e provisionar dinamicamente suas tarefas segundo as necessidades dos respectivos aceleradores, e o Batch garantirá que o número adequado de aceleradores seja reservado para suas tarefas. O Batch aumentará as instâncias aceleradas do EC2 quando você precisar delas e as diminuirá quando você terminar, permitindo que você se concentre nos seus aplicativos. O Batch tem uma integração nativa com o Spot do EC2, o que significa que suas tarefas aceleradas podem se beneficiar de uma economia de até 90% quando usarem instâncias aceleradas.

Atualmente, você pode usar GPUs em instâncias aceleradas P e G.

Você pode especificar o número e o tipo de aceleradores na definição da tarefa. Você especifica o acelerador descrevendo o tipo de acelerador (por exemplo, GPU - atualmente, o único acelerador suportado) e o número do tipo de que sua tarefa necessita. O tipo de acelerador que você tiver especificado deve estar presente em um dos tipos de instância especificados nos seus ambientes de computação. Por exemplo, se sua tarefa precisar de 2 GPUs, certifique-se também de ter especificado uma instância P no seu ambiente de computação.

Da API:
{
"containerProperties": {
"vcpus": 1,
"image": "nvidia/cuda:9.0-base",
"memory": 2048,
"resourceRequirements" : [
{
"type" : "GPU",
"value" : "1"
}
],

De forma similar aos requisitos de vCPU e memória, você pode substituir o número e o tipo dos aceleradores no envio da tarefa.

Com o comportamento atual, o Batch evitará programar tarefas que não necessitam de aceleração em instâncias aceleradas, quando possível. Isso servirá para evitar casos em que tarefas de longa execução ocupem a instância acelerada sem aproveitar o acelerador, aumentando o custo. Em raros casos, com a definição de preço do Spot e com instâncias aceleradas como tipo permitido, é possível que o Batch determine que uma instância acelerada é a maneira menos dispendiosa para executar sua tarefa, independentemente da necessidade de acelerador.

Se você enviar uma tarefa a uma CE que só permita que o Batch inicie instâncias aceleradas, o Batch executará as tarefas nestas instâncias, independentemente da necessidade de acelerador.

Daqui por diante, instâncias do tipo p serão iniciadas, por padrão, com a AMI otimizada pela GPU do ECS. Essa AMI contém bibliotecas e tempos de execução necessários para executar aplicativos baseados na GPU. Você sempre pode indicar uma AMI personalizada, se necessário, quando criar uma CE.

Conceitos básicos

Siga o Guia de conceitos básicos em nossa documentação para começar a usar.

Não é necessário lançar manualmente seus próprios recursos de computação para começar a usar. O console web do AWS Batch oferece orientação durante o processo de criação do primeiro ambiente de computação e da primeira fila de trabalhos, permitindo que você envie seu primeiro trabalho. A escala dos recursos no ambiente de computação será aumentada conforme trabalhos adicionais fiquem prontos para execução, e será diminuída com a redução do número de trabalhos executáveis.