Informações gerais

P: O que é o AWS Batch?
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 cargas de trabalho de computação em lote usando o Amazon EC2 (disponível com instâncias spot) e recursos de computação da AWS com o AWS Fargate ou Fargate Spot.

P: O que é computação em lote?
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.

P: Quais são os benefícios da computação em lotes?
  • 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.
  • Ela também permite priorizar trabalhos, alinhando a alocação de recursos aos objetivos empresariais.
 
P: Quando devo executar meus trabalhos no Fargate ao invés do EC2?
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.
 
P: Posso fazer o transbordo de um CE do Fargate para um CE do Fargate Spot ou vice-versa?
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

P: Por que devo 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.

P: Para quais casos de uso o AWS Batch é otimizado?
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.

Recursos

P: Quais são os principais recursos do AWS Batch?
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 EC2 e instâncias spot do EC2, além do AWS Fargate. 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.

P: Quais tipos de trabalhos em lotes podem ser feitos no AWS Batch?
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.  

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

P: O que é um ambiente de computação?
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. Os ambientes de computação não gerenciados oferecem um mecanismo para usar recursos especializados, como hosts dedicados, maiores configurações de armazenamento e o Amazon EFS.

P: O que é uma definição de trabalho?
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.

P: O que é o agente do Amazon ECS e como ele é usado pelo AWS Batch?
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.

P: Como o AWS Batch facilita o uso de instâncias spot?
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.

Definição de preço

P: P: Qual é a definição de preço do AWS Batch
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

P: Posso usar aceleradores com o AWS Batch?
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.

P: Por que devo usar aceleradores com o AWS Batch?
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.

P: Quais aceleradores posso usar com o AWS Batch?
Atualmente, você pode usar GPUs em instâncias aceleradas P e G.
 
P: Como envio para o Batch trabalhos que exigem instâncias aceleradas?
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 da família 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"
}
],

P: As variáveis do acelerador na definição da tarefa podem ser substituídas no envio da tarefa?
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.

P: Instâncias aceleradas podem ser usadas para tarefas que não precisam de aceleradores?
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.

P: Como o Batch usa a AMI otimizada pela GPU do ECS?
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

P: Como faço para começar?
Siga o guia de conceitos básicos em nossa documentação para começar a usar.

P: P: O que preciso provisionar 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.

Saiba mais sobre quando usar o AWS Batch

Visite a página de casos de uso
Pronto para criar?
Comece a usar o AWS Batch
Mais dúvidas?
Entre em contato conosco