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):
- Faça login na sua Google Cloud conta do. Se você começou a usar o Google Cloudagora, crie uma conta para avaliar o desempenho dos nossos produtos em situações reais. Clientes novos também recebem US $300 em créditos para executar, testar e implantar cargas de trabalho.
-
In the Google Cloud console, on the project selector page, select or create a Google Cloud 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 Google Cloud 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.-
In the Google Cloud console, on the project selector page, select or create a Google Cloud 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 Google Cloud 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 Google Cloud console, 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 Google Cloud console, 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 endereço de e-mail de uma Conta do Google.
- 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 Google Cloud projeto.
Configure a Google Cloud CLI para usar suas Google Cloud credenciais para autenticação:
gcloud auth login
Para mais informações, consulte Autenticar para usar 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 Google Cloud 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.
Liberar espaço
Para evitar cobranças na conta do Google Cloud 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.