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:
-
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.
-
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-namemy-eks-cluster\ --addon-name eks-pod-identity-agent \ --regionRegiã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.) e os serviços SageMaker Amazon EKS Auth (com.amazonaws).aws-region.sagemaker.apiaws-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.
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.
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 ElasticAgenthyperpodrun 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- e team-name-localqueue da classe prioritária. Por exemplo, se você estiver usando o Kueue, os rótulos serão os seguintes:priority-class-name-priority
-
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-namelabels: 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.
-
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 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