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:
-
Configure seu HyperPod cluster com uma Amazon VPC personalizada
-
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.
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
-
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" ] } ] }
-
Anexe a seguinte política do IAM à sua função recém-criada. Certifique-se de especificar o ARN HyperPod do cluster.
-
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 \ --regionRegião da AWS
-
aws eks create-pod-identity-association \ --cluster-name
my-eks-cluster
\ --role-arnARN of your role
\ --namespace aws-hyperpod \ --service-account hp-training-operator-controller-manager \ --regionRegião da AWS
-
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 ElasticAgenthyperpodrun
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.
-
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"
-
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