Este tutorial disponibiliza o modelo Qwen/Qwen2-7B-Instruct usando o framework de veiculação de TPU vLLM em uma VM de TPU v6e.
Objetivos
- Prepare o ambiente.
- Execute o vLLM com o Qwen2-7B-Instruct.
- Envie uma solicitação de inferência.
- Execute uma carga de trabalho de comparação.
- Fazer a limpeza.
Custos
Neste tutorial, há componentes faturáveis do Google Cloud, entre eles:
Para gerar uma estimativa de custo baseada na projeção de uso deste tutorial, use a calculadora de preços.
Antes de começar
Antes de seguir este tutorial, siga as instruções na página Configurar o ambiente do Cloud TPU. As instruções orientam você pelas etapas necessárias para criar um Google Cloud projeto e configurá-lo para usar o Cloud TPU. Também é possível usar um projeto Google Cloud atual. Se você escolher fazer isso, pule a etapa de criação de um Google Cloud projeto e comece com Configurar o ambiente para usar o Cloud TPU.
Você precisa de um token de acesso do Hugging Face para usar este tutorial. É possível se inscrever em uma conta sem custo financeiro no Hugging Face. Depois de ter uma conta, gere um token de acesso:
- Na página "Bem-vindo ao 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 Ler e insira um nome para ele.
- Seu token de acesso será exibido. Salve o token em um local seguro.
Configurar o ambiente
Recursos na fila
Crie uma VM do Cloud TPU v6e usando a API de recursos em fila. Para o qwen2-7b-instruct, recomendamos o uso de uma TPU v6e-1.
Defina as variáveis:
- PROJECT - o nome do projeto.
- TPU_NAME - o nome da máquina virtual de TPU que você vai criar.
- ZONE - a zona do Cloud em que você cria a nova VM.
- TPU_TYPE - o tipo de VM de TPU que você cria. Por exemplo:
v6e-1ouv6e-4. - QR_ID - o nome do recurso em fila que você cria.
Crie a solicitação de recurso em fila:
Verifique se a VM de TPU está pronta.
Por exemplo, quando o status é ACTIVE:
name: projects/your-project-id/locations/your-zone/queuedResources/your-queued-resource-id
state:
state: ACTIVE
tpu:
nodeSpec:
- node:
acceleratorType: v6e-1
bootDisk: {}
networkConfig:
enableExternalIps: true
queuedResource: projects/your-project-number/locations/your-zone/queuedResources/your-queued-resource-id
runtimeVersion: v2-alpha-tpuv6e
schedulingConfig: {}
serviceAccount: {}
shieldedInstanceConfig: {}
useTpuVm: true
nodeId: your-node-id
parent: projects/your-project-number/locations/your-zone
Reserva
Crie uma VM do Cloud TPU v6e usando uma reserva. Para o qwen2-7b-instruct, recomendamos o uso de uma TPU v6e-1. Comece definindo variáveis de ambiente:
Defina as variáveis:
- PROJECT - o nome do projeto.
- TPU_NAME - o nome da máquina virtual de TPU que você vai criar.
- ZONE - a zona do Cloud em que você cria a nova VM.
- TPU_TYPE - o tipo de VM de TPU que você cria. Por exemplo:
v6e-1ouv6e-4. - RESERVATION - o nome da reserva com suas TPUs.
Crie a VM de TPU usando sua reserva:
Conecte-se à VM de TPU.
Executar o vLLM com o Qwen2-7B-instruct
Defina as variáveis de token e nome do modelo do Hugging Face.
export HF_TOKEN="YOUR_HF_TOKEN" export MODEL_NAME="Qwen/Qwen2-7B-Instruct"Na VM de TPU, execute o contêiner do Docker vLLM no modo desanexado e inicie o servidor vLLM. Esse comando usa um tamanho de memória compartilhada de 10 GB.
Verifique os registros do servidor para confirmar se ele está em execução.
Quando o servidor vLLM estiver em execução, você verá uma saída semelhante a esta. Depois que a saída for exibida, pressione
CTRL+Cpara retornar ao terminal.(APIServer pid=7) INFO: Started server process [7] (APIServer pid=7) INFO: Waiting for application startup. (APIServer pid=7) INFO: Application startup complete.
Enviar uma solicitação de inferência
Depois que o servidor vLLM estiver em execução, você poderá enviar solicitações para a API. Para mais informações, consulte a documentação de referência da API vLLM.
Envie uma solicitação de teste para o servidor usando
curl.
A resposta é retornada no formato JSON.
Executar uma carga de trabalho de comparação
É possível executar comparações com o servidor em execução no segundo terminal.
No contêiner, instale a biblioteca
datasets.No contêiner, execute o comando
vllm bench serve.
Os resultados da comparação são semelhantes a estes:
============ Serving Benchmark Result ============
Successful requests: 1000
Benchmark duration (s): 45.35
Total input tokens: 1024000
Total generated tokens: 126848
Request throughput (req/s): 22.05
Output token throughput (tok/s): 2797.15
Peak output token throughput (tok/s): 4258.00
Peak concurrent requests: 1000.00
Total Token throughput (tok/s): 25377.57
---------------Time to First Token----------------
Mean TTFT (ms): 21332.46
Median TTFT (ms): 21330.37
P99 TTFT (ms): 42436.47
-----Time per Output Token (excl. 1st token)------
Mean TPOT (ms): 37.36
Median TPOT (ms): 38.56
P99 TPOT (ms): 38.69
---------------Inter-token Latency----------------
Mean ITL (ms): 37.35
Median ITL (ms): 38.55
P99 ITL (ms): 39.43
==================================================
Fazer a limpeza
Para evitar cobranças na sua conta do Google Cloud pelos recursos usados neste tutorial, exclua o projeto que os contém ou mantenha o projeto e exclua os recursos individuais.
- No terminal, digite exit para se desconectar da VM de TPU.
Excluir os recursos
É possível excluir o projeto, o que vai excluir todos os recursos, ou manter o projeto e excluir os recursos.
Excluir o projeto
Para excluir o Google Cloud projeto e todos os recursos associados, execute:
gcloud projects delete $PROJECT_ID
Excluir recursos de TPU
Recursos na fila
Exclua os recursos do Cloud TPU. O comando a seguir exclui a solicitação de recurso em fila e a VM de TPU usando o parâmetro --force.
Reserva
Exclua a VM do Cloud TPU. Use o comando a seguir para encerrar a VM, liberando as TPUs de volta para sua reserva.
A seguir
- Saiba mais sobre o vLLM no Cloud TPU.
- Saiba mais sobre Cloud TPU.