Ajudar a melhorar esta página
Para contribuir com este guia de usuário, escolha o link Editar esta página no GitHub, disponível no painel direito de cada página.
Gerenciar recursos computacionais para workloads de IA/ML no Amazon EKS com grupos de nós
dica
Registre-se
Esta seção aborda como gerenciar a computação acelerada (AWS Trainium, GPUs da NVIDIA) para workloads de treinamento e inferência de IA usando nós autogerenciados ou grupos de nós gerenciados pelo Amazon EKS.
Os grupos de nós gerenciados pelo EKS e os nós autogerenciados usam grupos do Auto Scaling (ASG) do EC2. Os grupos de nós gerenciados pelo EKS têm APIs dedicadas do EKS para criar, atualizar e excluir nós, e também têm a funcionalidade de reparo de nós e hooks de encerramento do ciclo de vida integrados. Os nós autogerenciados do EKS são implantados e gerenciados diretamente por meio de APIs do EC2.
Com essas opções, você define antecipadamente o tipo de instância, a contagem desejada, os limites de escalabilidade e o modelo de inicialização do EC2. Considere usar grupos de nós gerenciados pelo EKS ou nós autogerenciados se você também tiver workloads não EKS e preferir a consistência da configuração por meio de modelos de inicialização do EC2. Os grupos de nós do EKS são adequados para workloads de treinamento e ajuste fino em que a capacidade de computação acelerada é conhecida com antecedência. Observe que tanto o Modo Automático do EKS quanto o Karpenter também são compatíveis com o provisionamento de capacidade estática; consulte Gerenciar a computação para workloads de IA/ML com o Modo Automático do EKS e o Karpenter para obter mais informações.
Os nós autogerenciados e os grupos de nós gerenciados pelo EKS são compatíveis com todas as opções de compra de computação acelerada (sob demanda, spot, reservas de capacidade sob demanda, Blocos de Capacidade para ML). Você cria um grupo de nós gerenciados ou autogerenciados separado por tipo de capacidade, cada um com seu próprio modelo de inicialização, tipos de instância e configuração de escalabilidade. Isso proporciona um controle explícito, apoiado pelo ASG, sobre cada grupo de capacidade sem uma lógica heterogênea de provisionamento dinâmico.
Grupos de nós gerenciados pelo EKS vs nós autogerenciados
A escolha entre grupos de nós gerenciados pelo EKS e nós autogerenciados depende do nível de personalização e controle de que você precisa. Os grupos de nós gerenciados pelo EKS permitem a personalização de um subconjunto de modelos de inicialização do EC2, enquanto os nós autogerenciados são compatíveis com toda a extensão de modelos de inicialização do EC2. Se você não tiver um motivo específico para personalizar e gerenciar o ciclo de vida do nó por conta própria, comece com os grupos de nós gerenciados pelo EKS e passe para os nós autogerenciados somente quando um requisito específico exigir.
Use grupos de nós gerenciados quando: você quiser que o EKS gerencie a seleção de AMIs, a inicialização de nós, as atualizações contínuas, o reparo de nós e os fluxos de trabalho de drenagem suave em seu nome. Os grupos de nós gerenciados pelo EKS são o ponto de partida recomendado se você não preferir usar o Modo Automático do EKS ou o Karpenter para workloads de treinamento e inferência. Ao usar os Blocos de Capacidade para ML, os grupos de nós gerenciados pelo EKS criam automaticamente uma política de escalabilidade programada que drena o grupo de nós 40 minutos antes do término da reserva, eliminando a necessidade de usar o AWS Node Termination Handler
Use grupos de nós autogerenciados quando: você precisar de controle total sobre o modelo de inicialização do EC2, as AMIs, os parâmetros do kernel, a configuração do runtime do contêiner ou os scripts de inicialização personalizados. Os cenários comuns de ML incluem o ajuste das configurações do kernel e da NIC para treinamento distribuído com o Elastic Fabric Adapter (EFA) ou a integração com um controlador de ciclo de vida de nós personalizado. Os nós autogerenciados oferecem a flexibilidade de disponibilizar todos os dados do usuário e o perfil de instância do IAM de que você precisa, mas você assume a responsabilidade por atualizações, políticas de escalabilidade programada e ganchos do ciclo de vida, como o AWS Node Termination Handler
Reservar GPUs com Blocos de Capacidade para ML
Os Blocos de Capacidade para machine learning (ML) permitem que você reserve instâncias de GPU para uma data futura, a fim de executar workloads de treinamento ou inferência por tempo limitado. Para obter mais informações, consulte Blocos de Capacidade para ML no Guia do usuário do Amazon EC2.
Você pode usar as reservas do Bloco de Capacidade por meio dos grupos de nós gerenciados pelo EKS e dos nós autogerenciados. A configuração do modelo de inicialização do EC2 é a mesma nos dois casos. O fluxo de trabalho de criação de nós, o comportamento de redução vertical da escala e os ganchos do ciclo de vida para o encerramento das workloads diferem entre as opções de provisionamento.
Considerações
-
Os blocos de capacidade estão disponíveis apenas para determinados tipos de instância do Amazon EC2 e para regiões da AWS. Consulte Pré-requisitos para trabalhar com Blocos de Capacidade para obter mais informações.
-
Os Blocos de Capacidade são zonais. Durante a criação do grupo de nós, você deve usar a sub-rede na mesma zona de disponibilidade (AZ) da reserva do Bloco de Capacidade.
-
Se você criar um grupo de nós antes que a reserva do Bloco de Capacidade se torne ativa, defina a capacidade desejada como
0durante a criação do grupo de nós. -
Para dar tempo para uma drenagem suave da workload, programe a redução para zero mais de 30 minutos antes do término da reserva do Bloco de Capacidade. O Amazon EC2 começa a encerrar as instâncias 30 minutos antes do término da reserva.
Criar grupos de nós com Blocos de Capacidade para ML
Os nós autogerenciados e os grupos de nós gerenciados pelo EKS exigem o uso de um modelo de inicialização personalizado do EC2 direcionado à reserva do Bloco de Capacidade. A seguir, são mostrados os campos mínimos obrigatórios para nós autogerenciados e grupos de nós gerenciados pelo EKS. Campos adicionais são necessários para nós autogerenciados, conforme mostrado nas etapas de nós autogerenciados abaixo.
O LaunchTemplateData deve incluir:
-
InstanceMarketOptionscomMarketTypedefinido como"capacity-block" -
CapacityReservationSpecification: CapacityReservationTargetcomCapacityReservationIddefinido como o ID do Bloco de Capacidade. Por exemplo,cr-0123456789abcdef0. -
InstanceTypedefinido como o tipo de instância da sua reserva do Bloco de Capacidade. Por exemplo,p5.48xlarge.
Esses requisitos são mostrados nos exemplos abaixo para criar o modelo de inicialização para nós autogerenciados e grupos de nós gerenciados pelo EKS.