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.
-
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 API Amazon SageMaker AI (
com.amazonaws.) e os serviços de autenticação do Amazon EKS (com.amazonaws).aws-region.sagemaker.apiaws-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.
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.
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 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- 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/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-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