Neste tutorial, você vai aprender a ajustar um modelo de linguagem grande (LLM) Gemma 3 em um cluster do GKE com vários nós e GPUs no Google Cloud. Esse cluster usa uma instância de máquina virtual (VM) A4, que tem 8 GPUs NVIDIA B200.
Os dois processos principais descritos neste tutorial são os seguintes:
- Implante um cluster do GKE de alta performance usando o Autopilot do GKE. Como parte dessa implantação, você cria uma imagem de VM personalizada com o software necessário pré-instalado.
- Depois que o cluster for implantado, execute um job de ajuste refinado distribuído usando o conjunto de scripts que acompanham este tutorial. O job usa a biblioteca Accelerate do Hugging Face.
Este tutorial é destinado a engenheiros de machine learning (ML), pesquisadores, administradores e operadores de plataforma, além de especialistas em dados e IA interessados em implantar clusters do GKE em Google Cloud para treinar LLMs.
Objetivos
Acesse o modelo Gemma 3 usando o Hugging Face.
Prepare seu ambiente.
Crie e implante um cluster do GKE A4.
Ajuste o modelo Gemma 3 usando a biblioteca Accelerate do Hugging Face com paralelismo de dados totalmente fragmentados (FSDP).
Monitorar o job.
Fazer a limpeza.
Custos
Neste documento, você vai usar os seguintes componentes faturáveis do Google Cloud:
Para gerar uma estimativa de custo baseada na projeção de uso deste tutorial, use a calculadora de preços.
Antes de começar
- Faça login na sua conta do Google Cloud . Se você começou a usar o Google Cloud, crie uma conta para avaliar o desempenho de nossos produtos em situações reais. Clientes novos também recebem US$ 300 em créditos para executar, testar e implantar cargas de trabalho.
-
Instale a CLI do Google Cloud.
-
Ao usar um provedor de identidade (IdP) externo, primeiro faça login na CLI gcloud com sua identidade federada.
-
Para inicializar a CLI gcloud, execute o seguinte comando:
gcloud init -
Crie ou selecione um Google Cloud projeto.
Funções necessárias para selecionar ou criar um projeto
- Selecionar um projeto: não é necessário um papel específico do IAM para selecionar um projeto. Você pode escolher qualquer projeto em que tenha recebido um papel.
-
Criar um projeto: para criar um projeto, é necessário ter o papel de Criador de projetos
(
roles/resourcemanager.projectCreator), que contém a permissãoresourcemanager.projects.create. Saiba como conceder papéis.
-
Crie um projeto do Google Cloud :
gcloud projects create PROJECT_ID
Substitua
PROJECT_IDpor um nome para o projeto Google Cloud que você está criando. -
Selecione o projeto Google Cloud que você criou:
gcloud config set project PROJECT_ID
Substitua
PROJECT_IDpelo nome do projeto do Google Cloud .
-
Verifique se o faturamento está ativado para o projeto do Google Cloud .
Ative as APIs necessárias:
Funções necessárias para ativar APIs
Para ativar APIs, você precisa da permissão
serviceusage.services.enable. Se você criou o projeto, provavelmente já tem essa permissão com o papel de Proprietário (roles/owner). Caso contrário, é possível receber essa permissão com o papel de Administrador do Service Usage (roles/serviceusage.serviceUsageAdmin). Saiba como conceder papéis.gcloud services enable compute.googleapis.com
container.googleapis.com file.googleapis.com logging.googleapis.com cloudresourcemanager.googleapis.com servicenetworking.googleapis.com -
Instale a CLI do Google Cloud.
-
Ao usar um provedor de identidade (IdP) externo, primeiro faça login na CLI gcloud com sua identidade federada.
-
Para inicializar a CLI gcloud, execute o seguinte comando:
gcloud init -
Crie ou selecione um Google Cloud projeto.
Funções necessárias para selecionar ou criar um projeto
- Selecionar um projeto: não é necessário um papel específico do IAM para selecionar um projeto. Você pode escolher qualquer projeto em que tenha recebido um papel.
-
Criar um projeto: para criar um projeto, é necessário ter o papel de Criador de projetos
(
roles/resourcemanager.projectCreator), que contém a permissãoresourcemanager.projects.create. Saiba como conceder papéis.
-
Crie um projeto do Google Cloud :
gcloud projects create PROJECT_ID
Substitua
PROJECT_IDpor um nome para o projeto Google Cloud que você está criando. -
Selecione o projeto Google Cloud que você criou:
gcloud config set project PROJECT_ID
Substitua
PROJECT_IDpelo nome do projeto do Google Cloud .
-
Verifique se o faturamento está ativado para o projeto do Google Cloud .
Ative as APIs necessárias:
Funções necessárias para ativar APIs
Para ativar APIs, você precisa da permissão
serviceusage.services.enable. Se você criou o projeto, provavelmente já tem essa permissão com o papel de Proprietário (roles/owner). Caso contrário, é possível receber essa permissão com o papel de Administrador do Service Usage (roles/serviceusage.serviceUsageAdmin). Saiba como conceder papéis.gcloud services enable compute.googleapis.com
container.googleapis.com file.googleapis.com logging.googleapis.com cloudresourcemanager.googleapis.com servicenetworking.googleapis.com -
Atribua papéis à sua conta de usuário. Execute uma vez o seguinte comando para cada um dos seguintes papéis do IAM:
roles/compute.admin, roles/iam.serviceAccountUser, roles/cloudbuild.builds.editor, roles/artifactregistry.admin, roles/storage.admin, roles/serviceusage.serviceUsageAdmingcloud projects add-iam-policy-binding PROJECT_ID --member="user:USER_IDENTIFIER" --role=ROLE
Substitua:
PROJECT_ID: o ID do projeto.USER_IDENTIFIER: o identificador da sua conta de usuário . Por exemplo,myemail@example.com.ROLE: o papel do IAM concedido à sua conta de usuário.
- Ative a conta de serviço padrão para seu projeto do Google Cloud :
export PROJECT_NUMBER="$(gcloud projects describe "PROJECT_ID" --format "value(project_number)")" gcloud iam service-accounts enable "${PROJECT_NUMBER}-compute@developer.gserviceaccount.com \ --project=PROJECT_ID
- Conceda o papel de editor (
roles/editor) à conta de serviço padrão:gcloud projects add-iam-policy-binding PROJECT_ID \ --member="serviceAccount:PROJECT_NUMBER-compute@developer.gserviceaccount.com" \ --role=roles/editor
- Crie as credenciais de autenticação local para sua conta de usuário:
gcloud auth application-default login
- Ative o Login do SO no seu projeto:
gcloud compute project-info add-metadata --metadata=enable-oslogin=TRUE
- Faça login ou crie uma conta do Hugging Face.
Acessar o Gemma 3 usando o Hugging Face
Para usar o Hugging Face e acessar o Gemma 3, faça o seguinte:
- Fazer login no Hugging Face
- Crie um token de acesso
writedo Hugging Face.
Clique em Seu perfil > Configurações > Tokens de acesso > +Criar novo token - Copie e salve o valor do token
write access. Você vai usar esse valor mais tarde neste tutorial.
Preparar o ambiente
Para preparar o ambiente, defina o seguinte:
Substitua:
PROJECT_ID: o nome do Google Cloud projeto em que você quer criar o cluster do GKE.RESERVATION: o identificador da capacidade reservada.CLUSTER_NAME: o nome do cluster do GKE a ser criado.CLUSTER_REGION: a região em que você quer criar o cluster do GKE. Só é possível criar o cluster na região em que a reserva está.HF_TOKEN: o token de acesso do Hugging Face que você criou na seção anterior.ARTIFACT_REPO_LOCATION: o local em que você quer criar o repositório do Artifact Registry.
Criar um cluster do GKE no modo Autopilot
Para criar um cluster do GKE no modo Autopilot, execute o seguinte comando:
A criação do cluster do GKE pode levar algum tempo. Para verificar se o Google Cloud terminou de criar o cluster, acesse Clusters do Kubernetes no console Google Cloud .
Criar um secret do Kubernetes para as credenciais do Hugging Face
Para criar um secret do Kubernetes para as credenciais do Hugging Face, siga estas etapas:
Configure
kubectlpara se comunicar com o cluster do GKE:Crie um secret do Kubernetes para armazenar seu token do Hugging Face:
Preparar sua carga de trabalho
Para preparar sua carga de trabalho, faça o seguinte:
Criar scripts de carga de trabalho
Para criar os scripts que sua carga de trabalho de ajuste refinado usa, faça o seguinte:
Crie um diretório para os scripts de carga de trabalho. Use esse diretório como seu diretório de trabalho.
Crie o arquivo
cloudbuild.yamlpara usar o Google Cloud Build. Esse arquivo cria o contêiner de carga de trabalho e o armazena no Artifact Registry:Crie um arquivo
Dockerfilepara executar o job de ajuste:Crie o arquivo
accel_fsdp_gemma3_config.yaml. Esse arquivo de configuração orienta o Hugging Face Accelerate a dividir o job de ajuste em várias GPUs.Crie o arquivo
finetune.yaml:Crie o arquivo
finetune.py:
Usar o Docker e o Cloud Build para criar um contêiner de ajuste fino
Crie um repositório Docker do Artifact Registry:
No diretório
llm-finetuning-gemmaque você criou em uma etapa anterior, execute o comando a seguir para criar a imagem de ajuste refinado e enviá-la ao Artifact Registry.Exporte o URL da imagem. Você vai usá-lo em uma etapa posterior deste tutorial:
Iniciar a carga de trabalho de ajuste refinado
Para iniciar sua carga de trabalho de ajuste refinado, faça o seguinte:
Aplique o manifesto de ajuste para criar o job de ajuste:
Como você está usando clusters no modo Autopilot do GKE, pode levar alguns minutos para iniciar o nó habilitado para GPU.
Monitore o job executando o seguinte comando:
Verifique os registros do job executando o seguinte comando:
O recurso de job faz o download dos dados do modelo e, em seguida, ajusta o modelo em todas as oito GPUs. O download leva cerca de cinco minutos para ser concluído. Depois que o download é concluído, o processo de ajuste fino leva aproximadamente duas horas e 30 minutos para ser concluído.
Monitore sua carga de trabalho
É possível monitorar o uso das GPUs no cluster do GKE para verificar se o job de ajuste refinado está sendo executado de maneira eficiente. Para fazer isso, abra o seguinte link no navegador:
Ao monitorar sua carga de trabalho, você pode ver o seguinte:
- Uso de GPUs: para um job de ajuste refinado saudável, espere ver o uso de todas as oito GPUs aumentar e se estabilizar em um nível alto durante todo o treinamento.
- Duração do job: o job leva aproximadamente 10 minutos para ser concluído no cluster A4 especificado.
Limpar
Para evitar cobranças na sua conta do Google Cloud pelos recursos usados no tutorial, exclua o projeto que os contém ou mantenha o projeto e exclua os recursos individuais.
Excluir os recursos
Para excluir seu job de ajuste refinado, execute o seguinte comando:
Para excluir o cluster do GKE, execute o seguinte comando:
Excluir o projeto
Excluir um projeto do Google Cloud :
gcloud projects delete PROJECT_ID