Este tutorial disponibiliza o modelo Qwen/Qwen2-7B-Instruct usando o framework de disponibilização de TPU vLLM em uma VM 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 comparativo de mercado.
- 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 projeto do Google Cloud e configurá-lo para usar o Cloud TPU. Também é possível usar um projeto doGoogle Cloud . Se preferir, pule a etapa de criação de um projetoGoogle Cloud 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. Você pode se inscrever para 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 Leitura e insira um nome para ele.
- Seu token de acesso vai aparecer. Salve o token em um local seguro.
Configurar o ambiente
Crie uma VM do Cloud TPU v6e usando a API de recursos em fila. Para qwen2-7b-instruct, recomendamos usar uma TPU v6e-1.
export PROJECT_ID=YOUR_PROJECT_ID export TPU_NAME=qwen2-7b-instruct-tutorial export ZONE=us-east5-a export QR_ID=qwen2-7b-instruct-qr gcloud alpha compute tpus queued-resources create $QR_ID \ --node-id $TPU_NAME \ --project $PROJECT_ID \ --zone $ZONE \ --accelerator-type v6e-1 \ --runtime-version v2-alpha-tpuv6eVerifique se a VM da TPU está pronta.
gcloud compute tpus queued-resources describe $QR_ID \ --project $PROJECT_ID \ --zone $ZONEQuando a VM de TPU for criada, o status da solicitação de recurso em fila será definido como
ACTIVE. Exemplo: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-zoneConecte-se à VM de TPU.
gcloud compute tpus tpu-vm ssh $TPU_NAME \ --project $PROJECT_ID \ --zone $ZONE
Executar o vLLM com o Qwen2-7B-instruct
Na VM de TPU, execute o contêiner do Docker vLLM. Esse comando usa um tamanho de memória compartilhada de 10 GB.
export DOCKER_URI=vllm/vllm-tpu:latest sudo docker run -it --rm --name $USER-vllm --privileged --net=host \ -v /dev/shm:/dev/shm \ --shm-size 10gb \ -p 8000:8000 \ --entrypoint /bin/bash ${DOCKER_URI}Dentro do contêiner, defina seu token do Hugging Face. Substitua
YOUR_HF_TOKENpelo seu token do Hugging Face.export HF_HOME=/dev/shm export HF_TOKEN=YOUR_HF_TOKENInicie o servidor vLLM usando o comando
vllm serve.export MAX_MODEL_LEN=4096 export TP=1 # number of chips vllm serve Qwen/Qwen2-7B-Instruct \ --seed 42 \ --disable-log-requests \ --gpu-memory-utilization 0.98 \ --max-num-batched-tokens 1024 \ --max-num-seqs 128 \ --tensor-parallel-size $TP \ --max-model-len $MAX_MODEL_LENQuando o servidor vLLM estiver em execução, você verá uma saída como esta:
(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 ele de um novo shell.
Abra um novo shell e conecte-se à VM da TPU.
export PROJECT_ID=YOUR_PROJECT_ID export TPU_NAME=qwen2-7b-instruct-tutorial export ZONE=us-east5-a gcloud compute tpus tpu-vm ssh $TPU_NAME \ --project $PROJECT_ID \ --zone=$ZONEAbra um shell no contêiner do Docker em execução.
sudo docker exec -it $USER-vllm /bin/bashEnvie uma solicitação de teste ao servidor usando
curl.curl http://localhost:8000/v1/completions \ -H "Content-Type: application/json" \ -d '{ "model": "Qwen/Qwen2-7B-Instruct", "prompt": "The future of AI is", "max_tokens": 200, "temperature": 0 }'
A resposta é retornada no formato JSON.
Executar uma carga de trabalho de comparativo
Você pode executar comparativos de mercado no servidor em execução no segundo terminal.
Dentro do contêiner, instale a biblioteca
datasets.pip install datasetsExecute o comando
vllm bench serve.export HF_HOME=/dev/shm cd /workspace/vllm vllm bench serve \ --backend vllm \ --model "Qwen/Qwen2-7B-Instruct" \ --dataset-name random \ --num-prompts 1000 \ --seed 100
Os resultados da comparação são parecidos com isto:
============ 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
==================================================
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.
- No segundo shell, digite exit para sair do contêiner vLLM.
- No segundo shell, digite o comando exit para fechar o terminal.
- No primeiro shell, digite Ctrl+C para interromper o servidor vLLM.
- No primeiro shell, digite exit para sair do contêiner vLLM.
- No primeiro shell, digite exit para se desconectar da VM de TPU.
Excluir os recursos
Você pode excluir o projeto, o que vai remover todos os recursos, ou manter o projeto e excluir os recursos.
Excluir o projeto
Para excluir o projeto Google Cloud e todos os recursos associados, execute:
gcloud projects delete $PROJECT_ID
Excluir recursos da TPU
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.
gcloud alpha compute tpus queued-resources delete $QR_ID \
--project=$PROJECT_ID \
--zone=$ZONE \
--force
A seguir
- Saiba mais sobre o vLLM no Cloud TPU.
- Saiba mais sobre o Cloud TPU.