Instalando o operador de treinamento - SageMaker Inteligência Artificial 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á.

Instalando o 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:

A instalação do operador de HyperPod treinamento exige que você primeiro instale outros componentes. Consulte as seções a seguir sobre como fazer isso.

Etapa 1: configurar o Amazon EKS Pod Identity Agent

  1. Certifique-se de que a função de execução do IAM para seu HyperPod cluster tenha a AssumeRoleForPodIdentity permissão eks-auth: ou crie uma nova função do IAM com as seguintes permissões para usar com o operador de treinamento.

    { "Version": "2012-10-17", "Statement": [ { "Sid": "AllowEksAuthToAssumeRoleForPodIdentity", "Effect": "Allow", "Principal": { "Service": "pods.eks.amazonaws.com" }, "Action": [ "sts:AssumeRole", "sts:TagSession" ] } ] }
  2. Anexe a seguinte política do IAM à sua função recém-criada. Certifique-se de especificar o ARN HyperPod do cluster.

    JSON
    { "Version": "2012-10-17", "Statement": [ { "Effect": "Allow", "Action": [ "sagemaker:DescribeClusterNode" ], "Resource": "arn:aws:sagemaker:us-east-1:111122223333:cluster/cluster_name" } ] }
  3. Configure o EKS Pod Identity Agent usando o console. Se você quiser usar o AWS CLI, use o comando a seguir.

    aws eks create-addon \ --cluster-name my-eks-cluster \ --addon-name eks-pod-identity-agent \ --region Região da AWS
  4. Em seguida, crie uma associação de identidade de pod entre seu cluster EKS, sua função do IAM e sua nova função do IAM.

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

    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" }] }

Etapa 2: instalar o operador HyperPod de treinamento

Agora você pode instalar o operador de HyperPod treinamento por meio do console do Amazon EKS ou com a operação da CreateAddOnAPI. Se você estiver usando o console, pesquise o complemento chamado Amazon SageMaker HyperPod Training Operator.

Abaixo está um exemplo de como você pode instalar o operador com a API e a CLI. O parâmetro --addon-version é opcional. Se você não fornecer uma, o padrão será a versão mais recente. Para obter as versões possíveis, use a DescribeAddonVersionsoperação.

nota

A governança de SageMaker HyperPod tarefas da Amazon não é suportada pelo operador de treinamento.

aws eks create-addon \ --cluster-name my-eks-cluster \ --addon-name amazon-sagemaker-hyperpod-training-operator \ --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 você pode querer configurar cada parâmetro.

Parameter Descrição Padrão
hpTrainingControllermanager.manager.resources.requests.CPU Quantos processadores alocar para o controlador 1
hpTrainingControllermanager.manager.resources.requests.Memory Quanta memória alocar para o controlador 2Gi
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"

Etapa 3: instalar o agente HyperPod 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 está um arquivo docker que instala o agente elástico e o usa hyperpodrun para criar o inicializador de tarefas.

RUN pip install hyperpod-elastic-agent ENTRYPOINT ["entrypoint.sh"] # entrypoint.sh ... hyperpodrun --nnodes=node_count --nproc-per-node=proc_count \ --rdzv-backend hyperpod \ # Optional ... # 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 trabalhos comkubectl.

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 Descrição Valor padrão
--sinal de desligamento Sinal a ser enviado aos trabalhadores para desligamento (SIGTERM ou SIGKILL) “SIGKILL”
--tempo limite de desligamento Tempo limite em segundos entre os sinais SIGTERM e SIGKILL 30
--servidor-host Endereço do servidor do agente “0.0.0.0"
--porta do servidor Porta do servidor do agente 8080
--server-log-level Nível de log do servidor do agente “informação”
--server-shutdown-timeout Tempo limite de desligamento do servidor em segundos 300
--pre-train-script Caminho para o roteiro de pré-treinamento Nenhum
--pre-train-args Argumentos para o roteiro de pré-treinamento Nenhum
--post-train-script Caminho para o roteiro de pós-treinamento Nenhum
--post-train-args Argumentos para o roteiro de pós-treinamento Nenhum

Kueue (opcional)

Embora você possa executar trabalhos diretamente, sua organização também pode integrar o operador de treinamento com o Kueue para alocar recursos e agendar trabalhos. 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çãocontroller_manager_config.yaml, adicione a seguinte configuração:

    externalFrameworks: - "HyperPodPytorchJob.v1.sagemaker.amazonaws.com"
  2. Siga o restante das etapas no guia oficial de instalação. 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 seguinte arquivo YAML.

    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