Instalar do operador de treinamento - SageMaker IA da Amazon

As traduções são geradas por tradução automática. Em caso de conflito entre o conteúdo da tradução e da versão original em inglês, a versão em inglês prevalecerá.

Instalar do operador de treinamento

Consulte as seções a seguir para saber como instalar o operador de treinamento.

Pré-requisitos

Antes de usar o operador HyperPod de treinamento, você deve ter preenchido os seguintes pré-requisitos:

  • Criou um HyperPod cluster com a orquestração do Amazon EKS.

  • Instalou a AMI mais recente em seu HyperPod cluster. Para obter mais informações, consulte SageMaker HyperPod Lançamentos da AMI para o Amazon EKS.

  • Instalar o Certificate Manager.

  • Configurar o Agente de Identidade de Pods do EKS usando o console. Se você quiser usar o AWS CLI, use o seguinte comando:

    aws eks create-addon \ --cluster-name my-eks-cluster \ --addon-name eks-pod-identity-agent \ --region Região da AWS
  • (Opcional) Se você executar seus nós de HyperPod cluster em uma VPC privada, deverá configurar endpoints de PrivateLinks VPC para a Amazon AI API (com.amazonaws.aws-region.sagemaker.api) e os serviços SageMaker Amazon EKS Auth (com.amazonaws). aws-region.eks-auth). Você também deve garantir que os nós do cluster estejam sendo executados com sub-redes que estão em um grupo de segurança que permite que o tráfego seja roteado pelos endpoints da VPC para se comunicar com a IA SageMaker e o Amazon EKS. Se eles não estiverem configurados corretamente, a instalação do complemento poderá falhar. Para saber mais sobre como configurar VPC endpoints, consulte Criar um VPC endpoint.

Instalar do operador de treinamento

Agora você pode instalar o operador de HyperPod treinamento por meio do console de SageMaker IA, do console do Amazon EKS ou com os métodos AWS CLI do console que oferecem experiências simplificadas que ajudam você a instalar o operador. O AWS CLI oferece uma abordagem programática que permite que você personalize mais de sua instalação.

Entre as duas experiências de console, a SageMaker IA fornece uma instalação com um clique, cria a função de execução do IAM, cria a associação de identidade do pod e instala o operador. A instalação do console do Amazon EKS é semelhante, mas esse método não cria automaticamente um perfil de execução do IAM. Durante esse processo, opte por criar um perfil de execução do IAM com informações que o console preenche previamente. Por padrão, esses perfis criados só têm acesso ao cluster atual no qual você está instalando o operador. A menos que você edite as permissões do perfil para incluir outros clusters, se você remover e reinstalar o operador, deverá criar outro perfil.

SageMaker AI console (recommended)
  1. Abra o console do Amazon SageMaker AI em https://console.aws.amazon.com/sagemaker/.

  2. Acesse a página de detalhes do seu cluster.

  3. Na guia Painel, localize o complemento chamado operador de SageMaker HyperPod treinamento da Amazon e escolha instalar. Durante o processo de instalação, a SageMaker IA cria uma função de execução do IAM com permissões semelhantes às da política AmazonSageMakerHyperPodTrainingOperatorAccessgerenciada e cria uma associação de identidade de pod entre seu cluster Amazon EKS e sua nova função de execução.

Amazon EKS console
nota

Se você instalar o complemento por meio do cluster Amazon EKS, primeiro certifique-se de ter marcado seu HyperPod cluster com o par de valores-chave. SageMaker:true Do contrário, a instalação falhará.

  1. Abra o console do Amazon EKS em https://console.aws.amazon.com/eks/home#/clusters.

  2. Acesse seu cluster do EKS, escolha Complementos e selecione Obter mais complementos.

  3. Escolha o operador SageMaker HyperPod de treinamento da Amazon e, em seguida, escolha Avançar.

  4. Em Versão, o console usa como padrão a versão mais recente, que recomendamos que você use.

  5. Em Acesso a complementos, escolha um perfil do IAM de Identidade de Pods para usar com o complemento do operador de treinamento. Se você ainda não tiver um perfil, escolha Criar perfil recomendado para criar um.

  6. Durante esse processo de criação da função, o console do IAM preenche previamente todas as informações necessárias, como o caso de uso, a política AmazonSageMakerHyperPodTrainingOperatorAccessgerenciada e outras permissões necessárias, o nome da função e a descrição. Ao seguir as etapas, analise as informações e escolha Criar perfil.

  7. No console EKS, analise as configurações do complemento e escolha Criar.

CLI
  1. Certifique-se de que a função de execução do IAM para seu HyperPod cluster tenha uma relação de confiança que permita ao EKS Pod Identity assumir a função ou criar uma nova função do IAM com a seguinte política de confiança. Ou você pode usar o console do Amazon EKS para instalar o complemento, o qual cria um perfil recomendado.

    JSON
    JSON
    { "Version":"2012-10-17", "Statement": [ { "Sid": "AllowEksAuthToAssumeRoleForPodIdentity", "Effect": "Allow", "Principal": { "Service": "pods.eks.amazonaws.com" }, "Action": [ "sts:AssumeRole", "sts:TagSession", "eks-auth:AssumeRoleForPodIdentity" ] } ] }
  2. Anexe a política AmazonSageMakerHyperPodTrainingOperatorAccess gerenciada à sua função criada.

  3. Em seguida, crie uma associação de Identidade de Pods entre o cluster do EKS, o perfil do IAM e o novo perfil do IAM.

    aws eks create-pod-identity-association \ --cluster-name my-eks-cluster \ --role-arn ARN of your execution role \ --namespace aws-hyperpod \ --service-account hp-training-operator-controller-manager \ --region Região da AWS
  4. Depois de concluir o processo, você pode usar a ListPodIdentityAssociations operação para ver a associação que você criou. A resposta de exemplo a seguir pode dar uma ideia dessa associação.

    aws eks list-pod-identity-associations --cluster-name my-eks-cluster { "associations": [{ "clusterName": "my-eks-cluster", "namespace": "aws-hyperpod", "serviceAccount": "hp-training-operator-controller-manager", "associationArn": "arn:aws:eks:us-east-2:123456789012:podidentityassociation/my-hyperpod-cluster/a-1a2b3c4d5e6f7g8h9", "associationId": "a-1a2b3c4d5e6f7g8h9" }] }
  5. Para instalar o operador de treinamento, use a operação create-addon. O parâmetro --addon-version é opcional. Se você não fornecer uma, o padrão é a versão mais recente. Para obter as versões possíveis, use a DescribeAddonVersionsoperação.

    aws eks create-addon \ --cluster-name my-eks-cluster \ --addon-name amazon-sagemaker-hyperpod-training-operator \ --resolve-conflicts OVERWRITE

Se você já tem o operador de treinamento instalado em seu HyperPod cluster, você pode atualizar o complemento EKS para a versão desejada. Se você quiser usar treinamento sem pontos de verificação ou treinamento elástico, considere o seguinte:

  • Tanto o treinamento sem ponto de verificação quanto o treinamento elástico exigem que o complemento EKS esteja na versão 1.2.0 ou superior.

  • O operador de SageMaker HyperPod treinamento da Amazon mantém a compatibilidade com versões anteriores de qualquer versão complementar do EKS, para que você possa atualizar de qualquer versão complementar para a 1.2.0 ou superior.

  • Se você fizer o downgrade das versões 1.2.0 ou superior para uma versão inferior, deverá primeiro excluir os trabalhos existentes antes do downgrade e reenviar os trabalhos após a conclusão do downgrade.

Amazon EKS Console
  1. Abra o console do Amazon EKS em https://console.aws.amazon.com/eks/home#/clusters.

  2. Acesse seu cluster EKS e escolha Add-ons. Em seguida, escolha o complemento do operador SageMaker HyperPod de treinamento da Amazon e escolha Editar.

  3. No menu Versão, escolha a versão do complemento que você deseja e escolha Salvar alterações.

CLI
  1. Primeiro, obtenha a lista das versões compatíveis do complemento para seu cluster.

    aws eks describe-addon-versions \ --kubernetes-version $(aws eks describe-cluster --name my-eks-cluster --query 'cluster.version' --output text) \ --addon-name amazon-sagemaker-hyperpod-training-operator \ --query 'addons[0].addonVersions[].addonVersion' \ --output table
  2. Em seguida, atualize o complemento para a versão desejada.

    aws eks update-addon \ --cluster-name my-eks-cluster \ --addon-name amazon-sagemaker-hyperpod-training-operator \ --addon-version target-version --resolve-conflicts OVERWRITE

O operador de treinamento vem com várias opções com valores padrão que podem se adequar ao seu caso de uso. Recomendamos que você teste o operador de treinamento com valores padrão antes de alterá-los. A tabela abaixo descreve todos os parâmetros e exemplos de quando é possível configurar cada parâmetro.

Parâmetro Description Padrão
hpTrainingControllermanager.manager.resources.requests.CPU Quantos processadores alocar ao controlador. 1
hpTrainingControllermanager.manager.resources.requests.Memory Quantidade de memória a alocar ao controlador. 2 Gi
hpTrainingControllermanager.manager.resources.limits.CPU O limite de CPU para o controlador. 2
hpTrainingControllermanager.manager.resources.limits.Memória O limite de memória para o controlador. 4Gi
hpTrainingControllerManager.nodeSelector Seletor de nós para os pods do controlador. O comportamento padrão é selecionar nós com o rótulo sagemaker.amazonaws.com/compute-type: "HyperPod".

HyperPod agente elástico

O agente HyperPod elástico é uma extensão de PyTorch's ElasticAgent. Ele orquestra os ciclos de vida dos trabalhadores de treinamento em cada contêiner e se comunica com o operador de treinamento. HyperPod Para usar o operador de HyperPod treinamento, você deve primeiro instalar o agente HyperPod elástico em sua imagem de treinamento antes de poder enviar e executar trabalhos usando o operador. A seguir é apresentado um arquivo do Docker que instala o agente elástico e o usa hyperpodrun para criar o inicializador de tarefas.

nota

Tanto o treinamento sem ponto de verificação quanto o treinamento elástico exigem que você use o agente HyperPod elástico versão 1.1.0 ou superior.

RUN pip install hyperpod-elastic-agent ENTRYPOINT ["entrypoint.sh"] # entrypoint.sh ... hyperpodrun --nnodes=node_count --nproc-per-node=proc_count \ --rdzv-backend hyperpod \ # Optional --inprocess-restart \ # Optional (in-process fault recovery with checkpointless training) ... # Other torchrun args # pre-traing arg_group --pre-train-script pre.sh --pre-train-args "pre_1 pre_2 pre_3" \ # post-train arg_group --post-train-script post.sh --post-train-args "post_1 post_2 post_3" \ training.py --script-args

Agora você pode enviar tarefas com o kubectl.

HyperPod argumentos do agente elástico

O agente HyperPod elástico suporta todos os argumentos originais e adiciona alguns argumentos adicionais. A seguir estão todos os argumentos disponíveis no agente HyperPod elástico. Para obter mais informações sobre PyTorch o Elastic Agent, consulte a documentação oficial.

Argumento Description Valor padrão
--shutdown-signal Sinal a ser enviado aos operadores para desligamento (SIGTERM ou SIGKILL) “SIGKILL”
--shutdown-timeout Tempo limite em segundos entre o sinal de desligamento e os sinais SIGKILL 15
--server-host Endereço do servidor do agente “0.0.0.0”
--server-port Porta do servidor do agente 8080
--server-log-level Nível de log do servidor do agente “info”
--server-shutdown-timeout Tempo limite de desligamento do servidor em segundos 300
--pre-train-script Caminho para o script de pré-treinamento Nenhum
--pre-train-args Argumentos para o script de pré-treinamento Nenhum
--post-train-script Caminho para o script de pós-treinamento Nenhum
--post-train-args Argumentos para o script de pós-treinamento Nenhum
--inprocess-restart Sinalizador especificando se o recurso inprocess_restart deve ser usado FALSE
--em processamento - tempo limite Tempo em segundos em que o agente espera que os trabalhadores atinjam uma barreira de sincronização antes de acionar uma reinicialização no nível do processo. Nenhum

Governança de tarefas (opcional)

O operador de treinamento é integrado à governança de HyperPod tarefas, um sistema de gerenciamento robusto projetado para simplificar a alocação de recursos e garantir a utilização eficiente dos recursos computacionais entre equipes e projetos para seus clusters do Amazon EKS. Para configurar a governança de HyperPod tarefas, consulteConfiguração para governança de SageMaker HyperPod tarefas.

nota

Ao instalar o complemento de governança de HyperPod tarefas, você deve usar a versão v1.3.0-eksbuild.1 ou superior.

Ao enviar um trabalho, inclua o nome da fila e os rótulos hyperpod-ns-team-name-localqueue e priority-class-name-priority da classe prioritária. Por exemplo, se você estiver usando o Kueue, os rótulos serão os seguintes:

  • kueue.x-k8s.io/nome da fila: hyperpod-ns- -localqueue team-name

  • kueue.x-k8s.io/priority-class: -name-priority priority-class

Confira o seguinte exemplo para ver como o arquivo de configuração se apresenta:

apiVersion: sagemaker.amazonaws.com/v1 kind: HyperPodPytorchJob metadata: name: hp-task-governance-sample namespace: hyperpod-ns-team-name labels: kueue.x-k8s.io/queue-name: hyperpod-ns-team-name-localqueue kueue.x-k8s.io/priority-class: priority-class-priority spec: nprocPerNode: "1" runPolicy: cleanPodPolicy: "None" replicaSpecs: - name: pods replicas: 4 spares: 2 template: spec: containers: - name: ptjob image: XXXX imagePullPolicy: Always ports: - containerPort: 8080 resources: requests: cpu: "2"

Em seguida, use o comando kubectl a seguir para aplicar o arquivo YAML.

kubectl apply -f task-governance-job.yaml

Kueue (opcional)

Embora você possa executar tarefas diretamente, sua organização também pode integrar o operador de treinamento ao Kueue para alocar recursos e agendar tarefas. Siga as etapas abaixo para instalar o Kueue em seu HyperPod cluster.

  1. Siga o guia de instalação na documentação oficial do Kueue. Ao chegar à etapa de configuração controller_manager_config.yaml, adicione a seguinte configuração:

    externalFrameworks: - "HyperPodPytorchJob.v1.sagemaker.amazonaws.com"
  2. Siga o restante das etapas no guia de instalação oficial. Depois de concluir a instalação do Kueue, você pode criar algumas filas de amostra com o comando kubectl apply -f sample-queues.yaml. Use o arquivo YAML a seguir.

    apiVersion: kueue.x-k8s.io/v1beta1 kind: ClusterQueue metadata: name: cluster-queue spec: namespaceSelector: {} preemption: withinClusterQueue: LowerPriority resourceGroups: - coveredResources: - cpu - nvidia.com/gpu - pods flavors: - name: default-flavor resources: - name: cpu nominalQuota: 16 - name: nvidia.com/gpu nominalQuota: 16 - name: pods nominalQuota: 16 --- apiVersion: kueue.x-k8s.io/v1beta1 kind: LocalQueue metadata: name: user-queue namespace: default spec: clusterQueue: cluster-queue --- apiVersion: kueue.x-k8s.io/v1beta1 kind: ResourceFlavor metadata: name: default-flavor --- apiVersion: kueue.x-k8s.io/v1beta1 description: High priority kind: WorkloadPriorityClass metadata: name: high-priority-class value: 1000 --- apiVersion: kueue.x-k8s.io/v1beta1 description: Low Priority kind: WorkloadPriorityClass metadata: name: low-priority-class value: 500