En este instructivo, se entrega el modelo Qwen/Qwen2-7B-Instruct con el framework de entrega de vLLM TPU en una VM de TPU v6e.
Objetivos
- Configura el entorno.
- Ejecuta vLLM con Qwen2-7B-Instruct.
- Envía una solicitud de inferencia.
- Ejecuta una carga de trabajo de comparativa.
- Realizar una limpieza
Costos
En este instructivo, se usan componentes facturables de Google Cloud, que incluyen lo siguiente:
Para generar una estimación de costos en función del uso previsto, usa la calculadora de precios.
Antes de comenzar
Antes de seguir este instructivo, sigue las instrucciones de la página Configura el entorno de Cloud TPU. Las instrucciones te guían por los pasos necesarios para crear un proyecto de Google Cloudy configurarlo para usar Cloud TPU. También puedes usar un proyectoGoogle Cloud existente. Si decides hacerlo, puedes omitir el paso para crear un proyecto deGoogle Cloud y comenzar con Configura tu entorno para usar Cloud TPU.
Para usar este instructivo, necesitas un token de acceso de Hugging Face. Puedes registrarte para obtener una cuenta gratuita en Hugging Face. Una vez que tengas una cuenta, genera un token de acceso:
- En la página Welcome to Hugging Face, haz clic en el avatar de tu cuenta y selecciona Access tokens.
- En la página Tokens de acceso, haz clic en Crear token nuevo.
- Selecciona el tipo de token Read y, luego, ingresa un nombre para el token.
- Se mostrará tu token de acceso. Guarda el token en un lugar seguro.
Configura tu entorno
Crea una VM de Cloud TPU v6e con la API de Queued Resources. Para qwen2-7b-instruct, recomendamos usar una 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-tpuv6eVerifica que tu VM de TPU esté lista.
gcloud compute tpus queued-resources describe $QR_ID \ --project $PROJECT_ID \ --zone $ZONECuando se cree tu VM de TPU, el estado de la solicitud de recurso en cola se establecerá en
ACTIVE. Por ejemplo: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-zoneConéctate a la VM de TPU.
gcloud compute tpus tpu-vm ssh $TPU_NAME \ --project $PROJECT_ID \ --zone $ZONE
Ejecuta vLLM con Qwen2-7B-instruct
Dentro de la VM de TPU, ejecuta el contenedor de Docker de vLLM. Este comando usa un tamaño de memoria compartida 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 del contenedor, configura tu token de Hugging Face. Reemplaza
YOUR_HF_TOKENpor tu token de Hugging Face.export HF_HOME=/dev/shm export HF_TOKEN=YOUR_HF_TOKENInicia el servidor de vLLM con el 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_LENCuando el servidor de vLLM esté en ejecución, verás un resultado como el siguiente:
(APIServer pid=7) INFO: Started server process [7] (APIServer pid=7) INFO: Waiting for application startup. (APIServer pid=7) INFO: Application startup complete.
Envía una solicitud de inferencia
Una vez que se ejecute el servidor de vLLM, podrás enviarle solicitudes desde un shell nuevo.
Abre una shell nueva y conéctate a tu VM de 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=$ZONEAbre una shell en el contenedor de Docker en ejecución.
sudo docker exec -it $USER-vllm /bin/bashEnvía una solicitud de prueba al servidor con
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 }'
La respuesta se devuelve en formato JSON.
Ejecuta una carga de trabajo de comparativa
Puedes ejecutar comparativas con el servidor en ejecución desde tu segunda terminal.
Dentro del contenedor, instala la biblioteca
datasets.pip install datasetsEjecuta el 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
Los resultados de la comparativa se verán de la siguiente manera:
============ 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
==================================================
Realiza una limpieza
Para evitar que se apliquen cargos a tu cuenta de Google Cloud por los recursos usados en este instructivo, borra el proyecto que contiene los recursos o conserva el proyecto y borra los recursos individuales.
- En la segunda shell, escribe exit para salir del contenedor de vLLM.
- En la segunda shell, escribe el comando exit para cerrar la terminal.
- En el primer shell, escribe Ctrl + C para detener el servidor de vLLM.
- En la primera shell, escribe exit para salir del contenedor de vLLM.
- En la primera shell, escribe exit para desconectarte de la VM de TPU.
Borra tus recursos
Puedes borrar el proyecto, lo que borrará todos los recursos, o bien puedes conservar el proyecto y borrar los recursos.
Borra tu proyecto
Para borrar tu proyecto Google Cloud y todos los recursos asociados, ejecuta el siguiente comando:
gcloud projects delete $PROJECT_ID
Borra recursos de TPU
Borra tus recursos de Cloud TPU. El siguiente comando borra la solicitud del recurso en cola y la VM de TPU con el parámetro --force.
gcloud alpha compute tpus queued-resources delete $QR_ID \
--project=$PROJECT_ID \
--zone=$ZONE \
--force
¿Qué sigue?
- Obtén más información sobre vLLM en Cloud TPU.
- Más información sobre Cloud TPU.