Forme o Llama2 com o Megatron-LM em máquinas virtuais A3 Mega
Vista geral
Neste início rápido, vai saber como executar uma carga de trabalho Megatron-LM PyTorch baseada em contentores no A3 Mega. O código está disponível neste repositório do GitHub: megatron-gke.
Antes de começar
Siga os passos abaixo 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.
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
(
roles/resourcemanager.projectCreator
), which contains theresourcemanager.projects.create
permission. 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.enable
permission. 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
(
roles/resourcemanager.projectCreator
), which contains theresourcemanager.projects.create
permission. 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.enable
permission. Learn how to grant roles. -
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 column to see whether the list of roles includes the required roles.
Grant the roles
-
In the Google Cloud console, go to the IAM page.
Aceder ao IAM - Selecione o projeto.
- Clique em Conceder acesso.
-
No campo Novos responsáveis, introduza o identificador do utilizador. Normalmente, este é o endereço de email de uma Conta Google.
- Na lista Selecionar uma função, selecione uma função.
- Para conceder funções adicionais, clique em Adicionar outra função e adicione cada função adicional.
- Clique em Guardar.
Crie 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 o seguinte:
CLUSTER_NAME
: o nome do cluster do GKE A3 Mega que tem o GPUDirect-TCPXO e a rede múltipla ativados.CONTROL_PLANE_LOCATION
: a localização do Compute Engine do plano de controlo do seu cluster. Indique uma região para clusters regionais ou uma zona para clusters zonais.PROJECT_ID
: o ID do seu Google Cloud projeto.
Configure a Google Cloud CLI para usar as suas Google Cloud credenciais para autenticação:
gcloud auth login
Para mais informações, consulte o artigo Autentique-se para usar a CLI Google Cloud.
Instale o
kubectl
e o plug-in da CLI gcloud do GKE:sudo apt-get install kubectl sudo apt-get install google-cloud-sdk-gke-gcloud-auth-plugin
Obtenha as credenciais do seu cluster do GKE:
gcloud container clusters get-credentials ${CLUSTER_NAME} \ --location=${CONTROL_PLANE_LOCATION} \ --project=${PROJECT_ID}
Se ainda não estiver instalado, instale o Helm:
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
Configure 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 num 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 conjunto de daemons de etiquetas 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
Crie um contentor do Cloud Storage e um repositório do Docker. No
scripts/setup-and-configure-resources.sh script
, substitua os nomes do contentor e do repositório pelos que criou e, de seguida, execute o script:bash scripts/setup-and-configure-resources.sh
Crie e envie a imagem
pytorch-megatron:23.11-py3
para o seu repositório. Certifique-se de que o nome do repositório do Docker no ficheiroscripts/build-and-push-docker-image.sh
corresponde ao nome do repositório que usou no scriptscripts/setup-and-configure-resources.sh
. Também pode editar o nome da etiqueta da imagem do Docker antes de a enviar.bash scripts/build-and-push-docker-image.sh
Edite o ficheiro
helm/values.yaml
para especificar o contentor do Cloud Storage e a imagem do Docker criados nas secções anteriores. Para ver algumas configurações de exemplo, consulte sample-configurations.Opcional: também pode editar o ficheiro
selected-configuration.sh
para especificar as alterações que fez à configuração Helm predefinida.helm install HELM_EXPERIMENT_NAME helm/ --values helm/values.yaml
Substitua
HELM_EXPERIMENT_NAME
por um nome arbitrário para a sua experiência.- Selecione a caixa de verificação CLUSTER_NAME.
- Clique em Eliminar.
- Para confirmar a eliminação, escreva CLUSTER_NAME e clique em Eliminar.
Selecione a caixa de verificação do contentor do Cloud Storage que criou para este início rápido.
Clique em
Eliminar.Para confirmar a eliminação, escreva
DELETE
e clique em Eliminar.
Crie um cluster A3 Mega
Crie um cluster GKE A3 Mega com GPUDirect-TCPXO e várias redes. Para mais informações, consulte o artigo Maximize a largura de banda da rede da GPU com o GPUDirect e a rede múltipla.
Configure o seu ambiente
Use o programador com reconhecimento da topologia para implementar os seus pods
Pode usar o programador com reconhecimento da topologia para implementar os seus pods do GKE em nós com uma topologia de GPU especificada.
Nos seguintes comandos do
kubectl
, vai usar os ficheiros diretamente de um repositório. Em alternativa, pode clonar o repositório localmente e oskubectl
comandos podem referenciar os ficheiros locais.Para mais informações, consulte o artigo Programador de topologia.
Execute a carga de trabalho
Crie o Dockerfile e envie-o para o Google Cloud Artifact Registry
Inicie o benchmark Megatron-LM Llama2
A experiência escreve métricas da ferramenta de criação de perfis Nsight Systems no contentor do Cloud Storage especificado no diretório
megatron-experiments
.Limpar
Para evitar incorrer em cobranças na sua Google Cloud conta pelos recursos usados nesta página, siga estes passos.
Elimine o cluster do GKE:
Aceda à página Clusters:
Elimine o contentor do Cloud Storage
Aceda à página Recipientes:
O que se segue?
-