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 estão disponíveis apenas para determinados tipos de instância do Amazon EC2 e para 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 um cluster de produção. Normalmente, você também vai querer um script de bootstrapping 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.
-
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
comMarketType
definido como"capacity-block"
-
CapacityReservationSpecification: CapacityReservationTarget
comCapacityReservationId
definido como bloco de capacidade (por exemplo:cr-
)02168da1478b509e0
-
InstanceType
definido como um tipo de instância que oferece suporte a 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
eUserData
.NodeLaunchTemplate: Type: "AWS::EC2::LaunchTemplate" Properties: LaunchTemplateData: InstanceMarketOptions: MarketType: "capacity-block" CapacityReservationSpecification: CapacityReservationTarget: CapacityReservationId: "cr-02168da1478b509e0" InstanceType: p5.48xlarge
-
-
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
os valores de exemplo
pelos valores 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 odesiredSize
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
-
-
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.
-
Caso defina
desiredSize
como0
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
.
-
-
O grupo de nós agora está pronto para workloads e Pods para ser programado.
-
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á denominadaAmazon 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.