Use Capacity Blocks para workloads de machine learning. - Amazon EC2 Auto Scaling

Use Capacity Blocks para workloads de machine learning.

Capacity Blocks ajuda você a reservar instâncias GPU altamente requisitadas em uma data futura para suportar suas workloads de machine learning (ML) de curta duração.

Para obter uma visão geral dos Capacity Blocks e saber como eles funcionam, consulte Capacity Blocks para ML no Guia do Usuário do Amazon EC2.

Para começar a usar Capacity Blocks, você cria uma reserva de capacidade em uma zona de disponibilidade específica. Os Capacity Blocks são entregues como reservas de capacidade targeted em uma única zona de disponibilidade. Ao criar o modelo de inicialização, especifique o ID da reserva e o tipo de instância do bloco de capacidade. Em seguida, atualize o grupo do Auto Scaling para usar o modelo de inicialização que você criou e a zona de disponibilidade do bloco de capacidade. Quando a reserva do bloco de capacidade começar, use a escala programada para iniciar o mesmo número de instâncias que a reserva do bloco de capacidade.

Importante

Capacity Blocks estão disponíveis apenas para determinados tipos de instâncias do Amazon EC2 e Regiões da AWS Para mais informações, consulte Pré-requisitos no Guia do Usuário do Amazon EC2.

Diretrizes operacionais

As diretrizes operacionais básicas a seguir devem ser seguidas por você ao usar um bloco de capacidade com um grupo do Auto Scaling.

  • Reduza a escala horizontalmente do seu grupo do Auto Scaling até zero mais de 30 minutos antes do horário de término da reserva do bloco de capacidade. O Amazon EC2 encerrará todas as instâncias que ainda estiverem em execução 30 minutos antes do horário final do bloco de capacidade.

  • Recomendamos que você use o dimensionamento agendado para aumentar a capacidade (adicionar instâncias) e diminuir a capacidade (remover instâncias) nos horários de reserva apropriados. Para obter mais informações, consulte Escalabilidade programada para o Amazon EC2 Auto Scaling.

  • Adicione ganchos do ciclo de vida conforme necessário para realizar um desligamento suave da sua aplicação dentro das instâncias durante a redução da escala horizontalmente. Deixe tempo suficiente para que a ação do ciclo de vida seja concluída antes que o Amazon EC2 comece a encerrar forçosamente suas instâncias 30 minutos antes do horário de término da reserva do bloco de capacidade. Para obter mais informações, consulte Ganchos do ciclo de vida do Amazon EC2 Auto Scaling.

  • Certifique-se de que o grupo do Auto Scaling aponte para a versão correta do modelo de execução durante toda a duração da reserva. Recomendamos apontar para uma versão específica do modelo de execução em vez da versão $Default ou $Latest.

nota

Se você deixar uma instância do bloco de capacidade em execução até o final da reserva e o Amazon EC2 a recuperar, as atividades de escala do seu grupo do Auto Scaling indicarão que ela estava “taken out of service in response to an EC2 health check that indicated it had been terminated or stopped”, mesmo que tenha sido recuperada propositalmente no final do bloco de capacidade. Da mesma forma, o Amazon EC2 Auto Scaling tentará substituir a instância da mesma maneira que faz com qualquer instância que falhe em uma verificação de integridade. Para obter mais informações, consulte Verificações de integridade para instâncias em um grupo do Auto Scaling.

Especificar um bloco de capacidade em seu modelo de execução

Para criar um modelo de execução que vise a um bloco de capacidade específico para seu grupo do Auto Scaling, use um dos métodos a seguir:

Console
Para especificar um bloco de execução no seu modelo de execução (console)
  1. Abra o console do Amazon EC2 em https://console.aws.amazon.com/ec2/.

  2. Na barra de navegação superior, selecione o Região da AWS onde você criou o bloco de capacidade.

  3. No painel de navegação, escolha Instances e, em seguida, Launch Templates.

  4. Escolha Criar modelo de execução e crie o modelo de execução. Inclua o ID da Imagem de máquina da Amazon (AMI), o tipo de instância e quaisquer outras configurações de execução conforme necessário.

  5. Amplie a seção Detalhes avançados para ver as configurações avançadas.

  6. Para a Opção de compra, escolha Blocos de capacidade.

  7. Em Reserva de Capacidade, escolha Destino por ID e, em seguida, em Reserva de Capacidade - Destino por ID, escolha o ID de Reserva de Capacidade de um bloco de capacidade existente.

  8. Quando terminar, selecione Criar modelo de execução.

    Para obter ajuda na criação de um grupo de Auto Scaling com um modelo de inicialização, consulte.Criar um grupo do Auto Scaling usando um modelo de execução

AWS CLI
Para especificar um bloco de capacidade em seu modelo de execução (AWS CLI)

Use o comando create-launch-template a seguir para criar um modelo de execução que especifica um ID de reserva do bloco de capacidade existente. Substitua cada espaço reservado para entrada do usuário por suas próprias informações.

aws ec2 create-launch-template --launch-template-name my-template-for-capacity-block \ --version-description AutoScalingVersion1 --region us-east-2 \ --launch-template-data file://config.json
dica

Se esse comando lançar um erro, verifique se você atualizou a AWS CLI localmente para a versão mais recente.

Conteúdo de config.json.

{ "ImageId": "ami-04d5cc9b88example", "InstanceType": "p4d.24xlarge", "SecurityGroupIds": [ "sg-903004f88example" ], "KeyName": "MyKeyPair", "InstanceMarketOptions": { "MarketType": "capacity-block" }, "CapacityReservationSpecification": { "CapacityReservationTarget": { "CapacityReservationId": "cr-02168da1478b509e0" } } }

O seguinte é um exemplo de saída.

{ "LaunchTemplate": { "LaunchTemplateId": "lt-068f72b724example", "LaunchTemplateName": "my-template-for-capacity-block", "CreateTime": "2023-10-27T15:12:44.000Z", "CreatedBy": "arn:aws:iam::123456789012:user/Bob", "DefaultVersionNumber": 1, "LatestVersionNumber": 1 } }

Você pode usar o comando describe-launch-template-versions a seguir para verificar o ID de reserva do bloco de capacidade associado ao modelo de execução.

aws ec2 describe-launch-template-versions --launch-template-names my-template-for-capacity-block \ --region us-east-2

A seguir está um exemplo de saída de um modelo de execução que especifica uma reserva de bloco de capacidade.

{ "LaunchTemplateVersions": [ { "LaunchTemplateId": "lt-068f72b724example", "LaunchTemplateName": "my-template-for-capacity-block", "VersionNumber": 1, "CreateTime": "2023-10-27T15:12:44.000Z", "CreatedBy": "arn:aws:iam::123456789012:user/Bob", "DefaultVersion": true, "LaunchTemplateData": { "ImageId": "ami-04d5cc9b88example", "InstanceType": "p5.48xlarge", "SecurityGroupIds": [ "sg-903004f88example" ], "KeyName": "MyKeyPair", "InstanceMarketOptions": { "MarketType": "capacity-block" }, "CapacityReservationSpecification": { "CapacityReservationTarget": { "CapacityReservationId": "cr-02168da1478b509e0" } } } } ] }

Limitações

  • O suporte para Capacity Blocks só está disponível se seu grupo do Auto Scaling tiver uma configuração compatível. Não há suporte para grupos de instâncias mistas e pools ativos.

  • Você só pode selecionar um bloco de capacidade por vez.

  • Para obter os pré-requisitos e as recomendações para o uso de instâncias P5, consulte Introdução às instâncias P5 no Guia do usuário do Amazon EC2.

  • O Amazon EKS suporta o uso Capacity Blocks para cargas de trabalho de machine learning (ML) de curta duração em clusters do Amazon EKS. Para obter mais informações, consulte para ML Capacity Blocks, no Guia do usuário do Amazon EKS.

  • Você pode usar Capacity Blocks com tipos de instância e regiões compatíveis. No entanto, as reservas de capacidade sob demanda oferecem flexibilidade para reservar capacidade para outros tipos de instâncias e regiões. Para obter um tutorial que mostra como usar a opção Reserva de capacidade sob demanda, consulte Reservas de capacidade sob demanda para reservar capacidade em zonas de disponibilidade específicas .