View a markdown version of this page

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 concluído 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 de AMI para 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 API Amazon SageMaker AI (com.amazonaws.aws-region.sagemaker.api) e os serviços de autenticação do Amazon EKS (com.amazonaws). aws-region.eks-auth). Você também deve garantir que os nós do cluster estejam funcionando 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 SageMaker IA e o Amazon EKS. Se eles não estiverem configurados corretamente, a instalação do complemento poderá falhar. Para saber mais sobre como configurar endpoints de VPC, consulte Criar um endpoint de VPC.

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 AWS CLI os métodos do console que oferecem experiências simplificadas que ajudam a instalar o operador. O AWS CLI oferece uma abordagem programática que permite que você personalize mais 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 Amazon SageMaker HyperPod Training Operator 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 à política AmazonSageMakerHyperPodTrainingOperatorAccess gerenciada 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 chave-valor. 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 EKS Add-ons, escolha e escolha Obter mais Add-ons.

  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 Add-on Acesso, escolha uma função IAM de identidade de pod 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 AmazonSageMakerHyperPodTrainingOperatorAccess gerenciada 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 política de confiança a seguir. 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 DescribeAddonVersions operação.

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

Se você já tiver o operador de treinamento instalado em seu HyperPod cluster, poderá atualizar o complemento EKS para a versão desejada. Se você quiser usar o treinamento sem controle ou o 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 adicional do EKS, para que você possa fazer o upgrade de qualquer versão adicional 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, primeiro exclua os trabalhos existentes antes do downgrade e reenvie 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 Amazon SageMaker HyperPod Training Operator 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
hp TrainingControllerManager.manager.resources.requests.cpu Quantos processadores alocar ao controlador. 1
hp TrainingControllerManager.manager.resources.requests.memory Quantidade de memória a alocar ao controlador. 2 Gi
hp TrainingControllerManager.manager.resources.limits.cpu O limite de CPU para o controlador. 2
hp TrainingControllerManager.manager.resources.limits.memory O limite de memória para o controlador. 4Gi
hp TrainingControllerManager.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 PyTorch de ElasticAgent s. 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 https://docs.aws.amazon.com/sagemaker/latest/dg/sagemaker-eks-checkpointless.html 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 que especifica se o recurso inprocess_restart deve ser usado FALSE
--inprocesso-timeout 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 está 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/queue-nome: hyperpod-ns- -localqueue team-name

  • kueue.x-k8s. io/priority-classe: priority-class -nome-prioridade

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