Neste tutorial, mostramos como executar o ajuste supervisionado (SFT) em um cluster de Unidade de Processamento de Tensor (TPU) v6e de vários hosts usando o MaxText e o Cluster Toolkit. Use o Cluster Toolkit para executar uma carga de trabalho de treinamento de vários hosts e exportar os resultados de volta para o formato do Hugging Face para disponibilização.
Resumo da carga de trabalho
A execução dessa carga de trabalho de SFT no Cloud TPU e no GKE envolve os seguintes componentes:
- Modelo:Gemma 4 31B (
google/gemma-4-31b-it), um modelo avançado de pesos abertos. Neste tutorial, os pesos do modelo são baixados do Hugging Face, convertidos em um formato compatível com o MaxText e implantados em um cluster do GKE com infraestrutura do Cloud TPU v6e (v6e-32). - Método de treinamento:SFT usando o MaxText. A carga de trabalho executa um pipeline de ajuste fino escalonável na Cloud TPU v6e usando o JAX. Ele otimiza os parâmetros do modelo em 1.000 etapas usando o treinador de SFT integrado do MaxText (
maxtext.trainers.post_train.sft.train_sft) e conjuntos de dados de ajuste de instruções. - Conjunto de dados e modelo:UltraChat 200k (
HuggingFaceH4/ultrachat_200k), um conjunto de dados de diálogo de vários turnos de alta qualidade e em grande escala. A carga de trabalho usa esse conjunto de dados para ajustar o modelo e melhorar os recursos de conversação e seguimento de instruções. - Infraestrutura e framework:GKE, gerenciado usando o
Cluster Toolkit, no Cloud TPU v6e (
v6e-32, com uma topologia4x8). O framework é o MaxText (tpu_post_training:0.2.4) com um back-end do JAX.
Objetivos
- Instale o Cluster Toolkit e as dependências dele.
- Implantar um cluster do Cluster Toolkit.
- Converter um modelo do Hugging Face para o formato MaxText.
- Execute uma carga de trabalho de treinamento de SFT na TPU.
- Converta o modelo ajustado de volta para o formato do Hugging Face para disponibilização.
Custos
Neste documento, você vai usar os seguintes componentes faturáveis do Google Cloud:
Para gerar uma estimativa de custo baseada na sua projeção de uso,
use a calculadora de preços.
Ao concluir as tarefas descritas neste documento, é possível evitar o faturamento contínuo excluindo os recursos criados. Para mais informações, consulte Limpar.
Antes de começar
Você precisa de um token de acesso do Hugging Face para usar este tutorial. Você pode se inscrever em uma conta sem custo financeiro no Hugging Face. Depois de ter uma conta, gere um token de acesso:
- Na página Welcome to Hugging Face, clique no avatar da sua conta e selecione token de acesso.
- Na página Tokens de acesso, clique em Criar novo token.
- Selecione o tipo de token Read e insira um nome para ele.
- O token de acesso será exibido. Salve o token em um local seguro.
- No card do modelo
google/gemma-4-31b-itno Hugging Face, aceite o contrato de licença do modelo.
Para conseguir as permissões necessárias para concluir o tutorial, peça ao administrador para conceder a você os seguintes papéis do IAM no seu projeto:
-
Para concluir este tutorial:
- Administrador de TPU (
roles/tpu.admin) - Usuário da conta de serviço (
roles/iam.serviceAccountUser) - Administrador do Compute (
roles/compute.admin) - Administrador de armazenamento (
roles/storage.admin) - Administrador do Kubernetes Engine (
roles/container.admin) - Administrador da conta de serviço (
roles/iam.serviceAccountAdmin) - Administrador de projetos do IAM (
roles/resourcemanager.projectIamAdmin) - Administrador do Service Usage (
roles/serviceusage.serviceUsageAdmin)
- Administrador de TPU (
Para mais informações sobre a concessão de papéis, consulte Gerenciar o acesso a projetos, pastas e organizações.
Também é possível conseguir as permissões necessárias usando papéis personalizados ou outros papéis predefinidos.
Configurar as variáveis de ambiente
Configure as variáveis de ambiente:
Substitua:
YOUR_PROJECT_ID: ID do seu projeto do Google Cloud.YOUR_REGION: a região em que a reserva de TPU está localizada e em que você implanta o cluster.YOUR_ZONE: a zona em que a reserva de TPU está localizada e em que você implanta o cluster.YOUR_CLUSTER_NAME: o nome do cluster do GKE. O nome precisa começar com uma letra minúscula, conter apenas letras minúsculas, números e hifens e ter 20 caracteres ou menos, para que os IDs de conta de serviço baseados nele permaneçam dentro do limite de 30 caracteres.YOUR_BUCKET_NAME: um nome globalmente exclusivo para um bucket do Cloud Storage.YOUR_RESERVATION_NAME: o nome da reserva de TPU v6e.YOUR_HF_TOKEN: seu token de acesso do Hugging Face.
Por padrão, o script define MODEL_NAME como gemma4-31b (o nome do modelo MaxText para google/gemma-4-31b-it).
Instalar dependências do Cluster Toolkit
Para concluir este tutorial em um cliente ou estação de trabalho Linux ou macOS, siga as etapas relevantes em Instalar dependências na documentação do Cluster Toolkit.
Se você estiver usando o Cloud Shell, pule esta seção.
Instalar o Cluster Toolkit
Faça o download e extraia o pacote pré-criado para a versão específica do
Cluster Toolkit definida em CLUSTER_TOOLKIT_VERSION (v1.103.0) no
diretório de trabalho atual:
Autenticar seu ambiente
Para garantir que o Cluster Toolkit possa provisionar recursos e enviar imagens para o Artifact Registry em seu nome, autentique a Google Cloud CLI e defina as Application Default Credentials:
Criar o cluster do Cluster Toolkit
Para criar e implantar um cluster do Cluster Toolkit com 32 chips de TPU v6e,
siga estas etapas:
Crie um bucket do Cloud Storage:
Prepare a configuração do blueprint e copie o exemplo de blueprint de implantação para um diretório de trabalho isolado:
Atualize
tmp/gke-tpu-v6e-advanced.yamlpara conceder à conta de serviço do pool de nós do cluster (gke-np-sa) o papel de Administrador do Storage (roles/storage.admin) para gravar checkpoints no bucket do Cloud Storage, mude o tipo de máquina do pool de nós do sistema parae2-standard-8e fixe o pool de nós do sistema na zona de destino para evitar falta de estoque de tipos de máquina regionais:Use o comando
gcluster deploypara implantar o cluster do Cluster Toolkit usando o blueprinttmp/gke-tpu-v6e-advanced.yamle transmitindo as variáveis necessárias com a flag--vars:
Converter o modelo para o formato MaxText
Para treinar o modelo no formato MaxText, é necessário convertê-lo do formato Hugging Face para o formato MaxText.
Para simplificar os comandos subsequentes, use o comando
gcluster job configpara configurar o projeto, o cluster e o local padrão:Use o comando
gcluster job submitpara converter o modelo do formato Hugging Face para o formato MaxText e armazená-lo no bucket do Cloud Storage:O comando inclui a flag
--await-job-completion, o que significa que ele aguarda no terminal atual até que a conversão seja concluída.Opcional: para transmitir os registros de conversão enquanto o job está em execução, abra um terminal separado no diretório de trabalho em que você extraiu
gclustere execute o comandogcluster job logs:No terminal original, verifique se os arquivos de modelo convertidos estão disponíveis no bucket do Cloud Storage:
Iniciar a carga de trabalho de treinamento
Depois que o processo de conversão for concluído, inicie a carga de trabalho de SFT:
O comando inclui a flag
--await-job-completion, o que significa que ele aguarda no terminal atual até que o job de treinamento seja concluído.Opcional: para transmitir os registros de treinamento em tempo real enquanto o job está em execução, abra um terminal separado no diretório de trabalho em que você extraiu
gclustere execute o comandogcluster job logs:Depois que a compilação inicial do XLA é concluída, o coordenador registra o progresso da saída para cada etapa na execução de 1.000 etapas no formato
completed step: <step>, seconds: ..., TFLOP/s/device: ..., loss: ..., com a perda de treinamento diminuindo de aproximadamente1.57na etapa 5 para aproximadamente0.82na etapa 1.000. Antes de prosseguir para a próxima seção, aguarde até que a etapa 1000 seja concluída e a saída do comando./gcluster job listmostre o status desftcomoSucceeded.No terminal original, verifique se os checkpoints de treinamento de SFT foram gerados no bucket do Cloud Storage:
Converter o modelo treinado de volta para o formato do Hugging Face
Depois que a carga de trabalho de treinamento for concluída, converta o modelo de volta para o formato Hugging Face:
O comando inclui a flag
--await-job-completion, o que significa que ele aguarda no terminal atual até que a conversão seja concluída.Opcional: para transmitir os registros de conversão em tempo real enquanto o job está em execução, abra um terminal separado no diretório de trabalho em que você extraiu
gclustere execute o comandogcluster job logs:No terminal original, verifique se os pesos finais do Hugging Face Safetensors foram gerados no bucket do Cloud Storage:
Limpar
Para evitar cobranças extras, use o comando gcluster destroy para excluir os recursos criados durante este tutorial:
A seguir
- Para mais informações sobre o Cloud TPU, consulte Introdução ao Cloud TPU.
- Para detalhes sobre a arquitetura e a configuração da TPU
v6e-32, consulte TPU v6e.