Neste tutorial, mostramos como implantar e disponibilizar o modelo de mix de especialistas
Qwen3-30B-A3B (Qwen/Qwen3-30B-A3B-FP8)
no Google Kubernetes Engine (GKE) usando um acelerador
TPU v6e (Trillium) de host único e o
framework de disponibilização de TPU vLLM
com o TorchTPU (torchtpu). Você executa a carga de trabalho em um único nó
ct6e-standard-4t, que contém quatro chips de TPU v6e em uma topologia 2x2,
com paralelismo de dados e paralelismo de especialistas ativados.
Para executar um fluxo de trabalho de disponibilização de TorchTPU vLLM de host único semelhante em aceleradores TPU7x (Ironwood) com o modelo Qwen3.5-397B maior, consulte Disponibilizar o Qwen3.5-397B no GKE com o vLLM TorchTPU em aceleradores TPU7x.
Objetivos
- Configure o cluster do GKE e o pool de nós da TPU v6e de host único.
- Implantar o servidor TorchTPU do vLLM de host único no GKE.
- Envie uma solicitação de inferência ao servidor vLLM TorchTPU.
- Executar uma carga de trabalho de comparativo de mercado de exibição.
- Fazer a limpeza.
Custos
Neste documento, você 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.
Ao concluir as tarefas descritas neste documento, é possível evitar o faturamento contínuo excluindo os recursos criados. Para mais informações, consulte Limpeza.
Antes de começar
Configure o ambiente para o tutorial:
Ative a API Kubernetes Engine no projeto do Google Cloud :
Ative a API Artifact Registry no projeto do Google Cloud :
Instale e inicialize a Google Cloud CLI e instale
kubectl. Se você usa o Cloud Shell, as duas ferramentas já estão pré-instaladas.Verifique se o projeto tem cota de SSD e cota de endereço IP externo suficientes na região em que a capacidade da TPU está localizada:
No console do Google Cloud , acesse a página Cotas e limites do sistema.
Filtre por SSD de disco permanente (GB) e verifique se você tem pelo menos 500 GB de cota disponível para o volume de cache do modelo.
Filtre por Endereços IPv4 externos regionais em uso e verifique se você tem cota de endereço IP suficiente na região de destino.
Receber um token de acesso do Hugging Face
Você precisa de um token de acesso do Hugging Face para usar este tutorial. Você pode se inscrever para uma conta sem custo financeiro no Hugging Face. Depois de criar uma conta, gere um token de acesso:
- Na página Welcome to Hugging Face, clique no avatar da sua conta e selecione Tokens 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.
- Seu token de acesso será exibido. Salve o token em um local seguro.
Funções exigidas
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:
- Administrador do Kubernetes Engine (
roles/container.admin) - Administrador do Compute (
roles/compute.admin) - Usuário da conta de serviço (
roles/iam.serviceAccountUser)
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 sua autenticação:
Configure as variáveis de ambiente:
Substitua:
YOUR_PROJECT_ID: ID do seu projeto do Google Cloud.YOUR_REGION: a região em que você quer implantar o cluster, comous-central1.YOUR_ZONE: a zona em que você quer implantar o pool de nós da TPU v6e, comous-central1-c.YOUR_CLUSTER_NAME: o nome do cluster do GKE, comotpu-v6e-tutorial-cluster.YOUR_RESERVATION_NAME: se você estiver usando uma reserva, o nome da sua reserva de TPU v6e.YOUR_HF_TOKEN: seu token de acesso do Hugging Face.YOUR_NETWORK_NAME: o nome da rede Google Cloud . Se você criou uma rede personalizada, especifique essa rede. Caso contrário, especifiquedefault.YOUR_SUBNETWORK_NAME: o nome da sub-rede Google Cloud . Se você criou uma sub-rede personalizada, especifique-a. Caso contrário, especifiquedefault.YOUR_VLLM_TPU_IMAGE: a imagem do TorchTPU do vLLM a ser usada. Para imagens públicas, consulte o repositório vLLM TorchTPU.
Criar o cluster do GKE
Para criar um cluster do GKE no modo padrão e anexar um pool de nós de TPU v6e de host único, siga estas etapas:
Crie um cluster regional do GKE:
O tipo de máquina padrão para clusters do GKE (
e2-medium) não tem capacidade de CPU suficiente para controladores de carga de trabalho. Por isso, esse comando especificae2-standard-4.O resultado será o seguinte:
NAME LOCATION MASTER_VERSION MASTER_IP MACHINE_TYPE NODE_VERSION NUM_NODES STATUS tpu-v6e-tutorial-cluster us-central1 1.35.7-gke.1027000 34.63.222.246 e2-standard-4 1.35.7-gke.1027000 3 RUNNINGCrie um pool de nós de TPU v6e de host único com um nó
ct6e-standard-4t(quatro chips de TPU v6e em uma topologia2x2) usando sua reserva:Em vez de usar uma reserva específica, também é possível criar o pool de nós usando a capacidade spot ou as VMs flex-start transmitindo as seguintes flags:
- VMs spot: substitua as flags
--reservation-affinitye--reservationpor--spotpara usar a capacidade de spot. As instâncias que usam a capacidade spot podem levar algum tempo para serem criadas após a criação do pool de nós e podem ser interrompidas durante as execuções da carga de trabalho. Se os pods demorarem para ser criados ou as cargas de trabalho pararem no meio da execução, essa pode ser a causa. - VMs flex-start: para provisionar o pool de nós usando a opção de consumo de início flexível, transmita a flag
--flex-start. Para mais informações, consulte Executar uma carga de trabalho em lote pequena com TPUs e VMs de início flexível.
O resultado será o seguinte:
NAME MACHINE_TYPE DISK_SIZE_GB NODE_VERSION np-0 ct6e-standard-4t 100 1.35.7-gke.1027000- VMs spot: substitua as flags
Configure as credenciais de
kubectlpara se comunicar com o cluster:
Configurar credenciais
Crie um Secret do Kubernetes chamado hf-secret para armazenar o token de acesso do Hugging Face:
Implantar o servidor TorchTPU do vLLM
O manifesto da carga de trabalho (qwen3_5_server.yaml) define os seguintes recursos:
Um StorageClass (
hyperdisk-balanced-qwen3) e um PersistentVolumeClaim de 500 GiB (hd-claim-qwen3) com suporte do armazenamento do Google Cloud Hyperdisk Balanced para armazenar os pesos do modelo baixado, o cache de compilação do XLA e o cache de compilação do PyTorch.Uma implantação (
vllm-qwen3) programada em um único nó de TPU v6e com uma topologia2x2(google.com/tpu: '4'). O contêiner executavllm serveparaQwen/Qwen3-30B-A3B-FP8com as seguintes flags:--data-parallel-size=4--tensor-parallel-size=1--enable-expert-parallel--kv-cache-dtype=fp8--max-model-len=9236--max-num-seqs=64.
Um serviço
ClusterIP(vllm-qwen3-service) que expõe a porta8000.
Para implantar e monitorar a carga de trabalho, siga estas etapas:
Busque o manifesto do servidor:
Como alternativa, você pode criar um arquivo chamado
qwen3_5_server.yamlcom o seguinte conteúdo:Aplique o manifesto do servidor vLLM TorchTPU ao cluster:
Monitore os registros de implantação do servidor até que a inicialização do aplicativo seja concluída:
A inicialização do serviço pode levar de 15 a 30 minutos enquanto o pod faz o download dos pesos do modelo e o compila.
Se você estiver usando capacidade preemptiva, como Spot ou início flexível, pode levar mais tempo após a criação do pool de nós para que os nós de fração de TPU sejam criados, e eles podem ser forçados a interrupção durante as execuções de carga de trabalho. Se os pods estiverem demorando mais do que o esperado para iniciar ou se as cargas de trabalho pararem no meio, essa pode ser a causa. Para mais informações, consulte Preempção de VMs spot. Para verificar se os nós de fração de TPU foram criados, consulte Verificar o status e as condições do nó.
Aguarde até que os registros informem
Application startup completeantes de enviar tráfego:(APIServer pid=1) INFO: Started server process [1] (APIServer pid=1) INFO: Waiting for application startup. (APIServer pid=1) INFO: Application startup complete.Abra uma segunda sessão de terminal.
Na segunda sessão do terminal, encaminhe a porta local
8000paravllm-qwen3-service:Deixe o encaminhamento de portas em execução nessa sessão do terminal.
Enviar solicitações de inferência
Volte para a primeira sessão do terminal e envie uma solicitação de conclusão de chat para o
endpoint /v1/chat/completions:
Executar uma carga de trabalho de comparativo de mercado
Para comparar o modelo Qwen3-30B-A3B implantado usando uma carga de trabalho de entrada de 8.192 tokens e saída de 1.024 tokens (8k/1k) com o conjunto de comparativos de mercado InferenceX, siga estas etapas:
Busque o manifesto de comparativo de mercado:
Como alternativa, crie um arquivo chamado
qwen3_5-benchmark-8k1k.yamlcom o seguinte conteúdo:Aplique o manifesto do pod de comparativo de mercado:
Monitore os registros de comparativo de mercado:
O comparativo de mercado leva aproximadamente de 25 a 30 minutos para ser concluído.
Depois que o comparativo de mercado for concluído, procure uma saída que contenha métricas como as seguintes:
Output token throughputTotal token throughputTTFTTPOT
Limpar
Para evitar cobranças extras na sua conta do Google Cloud pelos recursos usados neste tutorial, exclua as cargas de trabalho do Kubernetes, o pool de nós da TPU e o cluster do GKE:
Exclua a implantação, o serviço, o PersistentVolumeClaim e o secret do Hugging Face do servidor TorchTPU do vLLM:
Exclua o pool de nós da TPU v6e e o cluster do GKE:
A seguir
- Saiba mais sobre o vLLM no Cloud TPU.
- Saiba mais sobre a TPU v6e (Trillium).
- Saiba mais sobre o Cloud TPU.