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):
-
In the Cloud de Confiance console, on the project selector page, select or create a Cloud de Confiance project.
Roles required to select or create a project
- Select a project: Selecting a project doesn't require a specific IAM role—you can select any project that you've been granted a role on.
-
Create a project: To create a project, you need the Project Creator role
(
roles/resourcemanager.projectCreator), which contains theresourcemanager.projects.createpermission. Learn how to grant roles.
-
Verify that billing is enabled for your Cloud de Confiance project.
Enable the GKE API.
Roles required to enable APIs
To enable APIs, you need the Service Usage Admin IAM role (
roles/serviceusage.serviceUsageAdmin), which contains theserviceusage.services.enablepermission. Learn how to grant roles.-
Verifique se você tem os seguintes papéis no projeto: roles/container.admin, roles/compute.networkAdmin, roles/iam.serviceAccountUser
Verificar os papéis
-
No console do Cloud de Confiance , acesse a página IAM.
Acessar IAM - Selecione o projeto.
-
Na coluna Principal, encontre todas as linhas que identificam você ou um grupo no qual você está incluído. Para saber em quais grupos você está incluído, entre em contato com o administrador.
- Em todas as linhas que especificam ou incluem você, verifique a coluna Papel para ver se a lista de papéis inclui os papéis necessários.
Conceder os papéis
-
No console do Cloud de Confiance , acesse a página IAM.
Acessar IAM - Selecione o projeto.
- Clique em Conceder acesso.
-
No campo Novos principais, digite seu identificador de usuário. Normalmente, é o identificador de um usuário em um pool de identidades de força de trabalho. Saiba mais em Representar usuários do pool de força de trabalho nas políticas do IAM ou entre em contato com seu administrador.
- Clique em Selecionar um papel e pesquise o papel.
- Para conceder outros papéis, adicione-os clicando em Adicionar outro papel.
- 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 CONTROL_PLANE_LOCATION=CONTROL_PLANE_LOCATION export PROJECT_ID=PROJECT_ID
Substitua:
CLUSTER_NAME: o nome do cluster do A3 Mega GKE com GPUDirect-TCPXO e várias redes ativadas.CONTROL_PLANE_LOCATION: o local do Compute Engine do plano de controle do cluster. Forneça uma região para clusters regionais ou uma zona para clusters zonais.PROJECT_ID: o ID do projeto Cloud de Confiance .
Configure a Google Cloud CLI para usar suas credenciais do Cloud de Confiance by S3NS para autenticação:
gcloud auth login
Para mais informações, consulte Autenticar para a Google Cloud CLI.
Instale
kubectle 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} \ --location=${CONTROL_PLANE_LOCATION} \ --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.pyInstale 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.yamlObserve 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 Cloud de Confiance by S3NS Artifact Registry
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-py3para seu repositório. Verifique se o nome do repositório do Docker no arquivoscripts/build-and-push-docker-image.shcorresponde 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.yamlpara 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.shpara 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_NAMEpor 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 Cloud de Confiance pelos recursos usados nesta página, siga as etapas abaixo.
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
DELETEe clique em Excluir.