Treinar o Llama2 com o Megatron-LM nas máquinas virtuais A3 Mega
Visão geral
Neste guia de início rápido, você vai aprender a executar uma carga de trabalho PyTorch Megatron-LM baseado em contêiner no A3 Mega. O código está disponível neste repositório do GitHub: megatron-gke.
Antes de começar
Siga estas etapas para ativar a API Google Kubernetes Engine (GKE):
- Sign in to your Google Cloud account. If you're new to Google Cloud, create an account to evaluate how our products perform in real-world scenarios. New customers also get $300 in free credits to run, test, and deploy workloads.
-
In the Google Cloud console, on the project selector page, select or create a Google Cloud project.
-
Make sure that billing is enabled for your Google Cloud project.
-
Enable the GKE API.
-
In the Google Cloud console, on the project selector page, select or create a Google Cloud project.
-
Make sure that billing is enabled for your Google Cloud project.
-
Enable the GKE API.
-
Make sure that you have the following role or roles on the project: roles/container.admin, roles/compute.networkAdmin, roles/iam.serviceAccountUser
Check for the roles
-
In the Google Cloud console, go to the IAM page.
Go to IAM - Select the project.
-
In the Principal column, find all rows that identify you or a group that you're included in. To learn which groups you're included in, contact your administrator.
- For all rows that specify or include you, check the Role colunn to see whether the list of roles includes the required roles.
Grant the roles
-
In the Google Cloud console, go to the IAM page.
Acessar o IAM - Selecionar um projeto.
- Clique em CONCEDER ACESSO.
-
No campo Novos principais, insira seu identificador de usuário. Normalmente, é o endereço de e-mail de uma Conta do Google.
- Na lista Selecionar um papel, escolha um.
- Para conceder outros papéis, clique em Adicionar outro papel e adicione cada papel adicional.
- Clique em Salvar.
Criar um cluster do A3 Mega
Criar um cluster A3 Mega GKE com GPUDirect-TCPXO e várias redes. Para mais informações, consulte Maximizar a largura de banda da rede GPU com GPUDirect e várias redes.
-
Configurar o ambiente
Criar variáveis de ambiente para alguns parâmetros comuns
export CLUSTER_NAME=CLUSTER_NAME export REGION=REGION export ZONE=ZONE export PROJECT_ID=PROJECT_ID
Substitua:
CLUSTER_NAME
: o nome do cluster do A3 Mega GKE com GPUDirect-TCPXO e várias redes ativadas.REGION
: a região em que você criou o cluster.ZONE
: a zona em que você criou o cluster.PROJECT_ID
: é seu ID do projeto no Google Cloud.
Configurar a CLI do Google Cloud para usar suas credenciais do Google Cloud para autenticação:
gcloud auth login
Para mais informações, consulte Autenticar para usar a CLI do Google Cloud.
Instale
kubectl
e o plug-in gcloud CLI do GKE:sudo apt-get install kubectl sudo apt-get install google-cloud-sdk-gke-gcloud-auth-plugin
Busque credenciais para seu cluster do GKE:
gcloud container clusters get-credentials ${CLUSTER_NAME} \ --zone=${ZONE} \ --project=${PROJECT_ID}
Instale o Helm se ainda não tiver feito isso:
curl -fsSL -o get_helm.sh https://raw.githubusercontent.com/helm/helm/main/scripts/get-helm-3 chmod 700 get_helm.sh ./get_helm.sh && rm get_helm.sh sudo chmod +x /usr/local/bin/helm
Usar o programador com reconhecimento de topologia para implantar pods
É possível usar o programador com reconhecimento de topologia para implantar pods do GKE em nós com uma topologia de GPU especificada.
Nos comandos kubectl
a seguir, você usará os arquivos diretamente de um
repositório de dados. Como alternativa, é possível clonar o repositório localmente e os comandos kubectl
podem fazer referência aos arquivos locais.
Para mais informações, consulte Programador de topologia.
Configurar a conta de serviço:
kubectl apply -f https://raw.githubusercontent.com/GoogleCloudPlatform/container-engine-accelerators/master/gpudirect-tcpxo/topology-scheduler/service-account.yaml
Instale os scripts do programador de topologia em um configmap:
curl -OL https://raw.githubusercontent.com/GoogleCloudPlatform/container-engine-accelerators/master/gpudirect-tcpxo/topology-scheduler/schedule-daemon.py curl -OL https://raw.githubusercontent.com/GoogleCloudPlatform/container-engine-accelerators/master/gpudirect-tcpxo/topology-scheduler/label-nodes-daemon.py kubectl -n kube-system create configmap topology-scheduler-scripts \ --from-file=schedule-daemon.py=schedule-daemon.py \ --from-file=label-nodes-daemon.py=label-nodes-daemon.py
Instale o daemonset do rótulo de topologia e o pod do programador de topologia:
kubectl apply -f https://raw.githubusercontent.com/GoogleCloudPlatform/container-engine-accelerators/master/gpudirect-tcpxo/topology-scheduler/label-nodes-daemon.yaml $ kubectl apply -f https://raw.githubusercontent.com/GoogleCloudPlatform/container-engine-accelerators/master/gpudirect-tcpxo/topology-scheduler/schedule-daemon.yaml
Observe as ações do programador de topologia:
kubectl -n kube-system logs topology-scheduler-pod
Executar a carga de trabalho
Criar o Dockerfile e enviar para o Artifact Registry do Google Cloud
Crie um bucket do Cloud Storage e um repositório do Docker. No
scripts/setup-and-configure-resources.sh script
, substitua os nomes do bucket e do repositório criados por você e, em seguida, execute o script:bash scripts/setup-and-configure-resources.sh
Crie e envie a imagem
pytorch-megatron:23.11-py3
para seu repositório. Verifique se o nome do repositório do Docker no arquivoscripts/build-and-push-docker-image.sh
corresponde ao nome do repositório usado no scriptscripts/setup-and-configure-resources.sh
. Também é possível editar o nome da tag de imagem Docker antes do envio.bash scripts/build-and-push-docker-image.sh
Iniciar o comparativo de mercado Megatron-LM Llama2
Edite o arquivo
helm/values.yaml
para especificar o bucket do Cloud Storage e a imagem Docker criada nas seções anteriores. Para alguns exemplos de configurações, consulte sample-configurations.Opcional: também é possível editar o arquivo
selected-configuration.sh
para especificar quaisquer alterações feitas na configuração padrão do Helm.helm install HELM_EXPERIMENT_NAME helm/ --values helm/values.yaml
Substitua
HELM_EXPERIMENT_NAME
por um nome arbitrário para o experimento.
O experimento grava métricas da ferramenta de criação de perfil da Nsight Systems no bucket do Cloud Storage
especificado no diretório megatron-experiments
.
Limpar
Para evitar cobranças na conta do Google Cloud pelos recursos usados nesta página, siga estas etapas.
Exclua o cluster do GKE:
Acessar a página de clusters:
- Marque a caixa de seleção de CLUSTER_NAME.
- Clique em Excluir.
- Para confirmar a exclusão, digite CLUSTER_NAME e clique em Excluir.
Excluir o bucket do Cloud Storage
Acessar a página Buckets:
Marque a caixa de seleção do bucket do Cloud Storage que você criou para este guia de início rápido.
Clique em
Excluir.Para confirmar a exclusão, digite
DELETE
e clique em Excluir.