Criar um grupo de nós gerenciados com blocos de capacidade para ML - Amazon EKS

Ajudar a melhorar esta página

Quer contribuir para este guia do usuário? Role até o final desta página e selecione Editar esta página no GitHub. Suas contribuições ajudarão a tornar nosso guia do usuário melhor para todos.

Criar um grupo de nós gerenciados com blocos de capacidade para ML

Os blocos de capacidade para machine learning (ML) permitem que você reserve instâncias com GPU para uma data futura, a fim de dar suporte a workloads de ML de curta duração. Para obter mais informações, consulte Blocos de capacidade para ML no Guia do Usuário do Amazon EC2 para Instâncias Linux.

Considerações

Importante
  • Os blocos de capacidade só estão disponíveis para determinados tipos de instância do Amazon EC2 e Regiões da AWS. Para obter informações sobre compatibilidade, consulte Trabalhar com pré-requisitos de blocos de capacidade no Guia do usuário do Amazon EC2 para instâncias Linux.

  • Para obter mais informações, consulte Usar blocos de capacidade para workloads de machine learning no Guia do usuário do Amazon EC2 Auto Scaling.

  • Grupos de nós gerenciados com blocos de capacidade só podem ser criados com modelos de lançamento personalizados.

  • Ao atualizar grupos de nós gerenciados com blocos de capacidade, certifique-se de que o tamanho desejado do grupo de nós esteja definido como 0.

Criar um grupo de nós gerenciados com blocos de capacidade do Amazon EC2

Você pode usar blocos de capacidade com grupos de nós gerenciados do Amazon EKS para provisionar e escalar os nós de processamento acelerados por GPU. Os exemplos de modelos do AWS CloudFormation a seguir não abrangem todos os aspectos necessários em clusters de produção. Normalmente, também convém um script de inicialização para unir o nó ao cluster e especificar a AMI acelerada do Amazon EKS. Para ter mais informações, consulte Criar um grupo de nós gerenciados para seu cluster.

  1. Crie um modelo de execução apropriado para as workloads e que funcione com grupos de nós gerenciados do Amazon EKS. Para ter mais informações, consulte Personalizar nós gerenciados com modelos de execução.

    Além dos requisitos dos procedimentos acima, certifique-se de que LaunchTemplateData inclua o seguinte:

    • InstanceMarketOptions com MarketType definido como "capacity-block"

    • CapacityReservationSpecification: CapacityReservationTarget com CapacityReservationId definido como bloco de capacidade (por exemplo:cr-02168da1478b509e0)

    • InstanceType definido como um tipo de instância compatível com blocos de capacidade (por exemplo: p5.48xlarge)

    Veja a seguir um trecho de um modelo do CloudFormation para criar um modelo de execução direcionado a um bloco de capacidade. Para criar um grupo personalizado de nós gerenciados da AMI, você também pode adicionar os parâmetros ImageId e UserData.

    NodeLaunchTemplate: Type: "AWS::EC2::LaunchTemplate" Properties: LaunchTemplateData: InstanceMarketOptions: MarketType: "capacity-block" CapacityReservationSpecification: CapacityReservationTarget: CapacityReservationId: "cr-02168da1478b509e0" InstanceType: p5.48xlarge
  2. Use o modelo de execução para criar um grupo de nós gerenciados.

    Veja a seguir um exemplo de comando para criar grupos de nós para blocos de capacidade. Substitua example-values pelos aplicáveis ao seu cluster.

    Ao criar o grupo de nós gerenciados do bloco de capacidade, faça o seguinte:

    • Defina capacity-type como "CAPACITY_BLOCK" . Se o tipo de capacidade não estiver definido como "CAPACITY_BLOCK" ou se algum dos outros valores obrigatórios do modelo de execução acima estiver ausente, a solicitação de criação será rejeitada.

    • Ao especificar subnets na solicitação de criação, certifique-se de especificar somente a sub-rede na mesma zona de disponibilidade como a reserva de capacidade.

    • Se você especificar um desiredSize diferente de zero na solicitação de criação, o Amazon EKS atenderá a essa especificação ao criar o grupo do Auto Scaling (ASG). No entanto, se a solicitação de criação for feita antes que a reserva de capacidade esteja ativa, o ASG não poderá executar instâncias do Amazon EC2 até que elas se tornem ativas. Como resultado, as atividades de escalabilidade do ASG terão erros de execução. Sempre que a reserva se tornar ativa, a execução das instâncias terá êxito e o ASG terá a escala aumentada verticalmente para o desiredSize mencionado no momento da criação.

    aws eks create-nodegroup \ --cluster-name my-cluster \ --nodegroup-name my-mng \ --node-role node-role-arn \ --region region-code \ --subnets subnet-id \ --scaling-config minSize=node-group-min-size,maxSize=node-group-max-size,desiredSize=node-group-desired-size \ --capacity-type "CAPACITY_BLOCK" \ --launch-template id="lt-id",version=1
  3. Verifique se os nós se unem após o aumento da escala verticalmente. Os clusters do Amazon EKS que usam grupos de nós gerenciados com blocos de capacidade não realizam nenhuma validação de que as instâncias executadas realmente se juntam e se registram no cluster.

  4. Caso defina desiredSize como 0 no momento da criação, você terá opções diferentes para aumentar a escala verticalmente do grupo de nós quando a reserva de capacidade ficar ativa:

    • Crie uma política de escalabilidade programada para o ASG que se alinhe ao horário de início da reserva do bloco de capacidade. Para obter mais informações, consulte Escalabilidade agendada para o Amazon EC2 Auto Scaling no Manual do usuário do Amazon EC2 Auto Scaling.

    • Use o console do Amazon EKS ou eks update-nodegroup-config para atualizar a configuração de escalabilidade e defina o tamanho desejado do grupo de nós.

    • Use o Autoscaler do cluster do Kubernetes. Para obter mais informações, consulte Autoscaler do cluster na AWS.

  5. O grupo de nós agora está pronto para workloads e Pods para ser programado.

  6. Para que os Pods sejam facilmente drenados antes do término da reserva, o Amazon EKS usa uma política de escalabilidade programada para reduzir a escala verticalmente do tamanho do grupo de nós para 0. Essa escalabilidade programada será denominada Amazon EKS Node Group Capacity Scaledown Before Reservation End. Recomendamos não editar ou excluir essa ação.

    O Amazon EC2 começa a encerrar as instâncias 30 minutos antes do horário de término da reserva. Como resultado, o Amazon EKS vai configurar uma redução vertical da escala programada no grupo de nós 40 minutos antes do final da reserva, a fim de remover Pods com segurança e facilidade.