Questo tutorial mostra come pubblicare il modello Qwen/Qwen2-7B-Instruct utilizzando il framework di pubblicazione vLLM TPU su una VM TPU v6e.
Obiettivi
- Configurare l'ambiente.
- Eseguire vLLM con Qwen2-7B-Instruct.
- Inviare una richiesta di inferenza.
- Eseguire un carico di lavoro di benchmark.
- Liberare spazio.
Costi
Questo tutorial utilizza i componenti fatturabili di Google Cloud, tra cui:
Per generare una stima dei costi in base all'utilizzo previsto, utilizza il calcolatore prezzi.
Prima di iniziare
Prima di seguire questo tutorial, segui le istruzioni riportate nella pagina Configurare l'ambiente Cloud TPU. Le istruzioni ti guidano nei passaggi necessari per creare un Google Cloud progetto e configurarlo per l'utilizzo di Cloud TPU. Puoi anche utilizzare un progetto esistente Google Cloud In questo caso, puoi saltare il passaggio di creazione del Google Cloud progetto e iniziare con la configurazione dell'ambiente per utilizzare Cloud TPU.
Per utilizzare questo tutorial, devi disporre di un token di accesso a Hugging Face. Puoi registrarti per un account senza costi su Hugging Face. Una volta creato un account, genera un token di accesso:
- Nella pagina Benvenuto in Hugging Face, fai clic sull'avatar del tuo account e seleziona Token di accesso.
- Nella pagina Token di accesso, fai clic su Crea nuovo token.
- Seleziona il tipo di token Lettura e inserisci un nome per il token.
- Viene visualizzato il token di accesso. Salva il token in un luogo sicuro.
Configurare l'ambiente
Crea una VM Cloud TPU v6e utilizzando l'API Risorse in coda. Per qwen2-7b-instruct, ti consigliamo di utilizzare 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-tpuv6eAssicurati che la VM TPU sia pronta.
gcloud compute tpus queued-resources describe $QR_ID \ --project $PROJECT_ID \ --zone $ZONEAd esempio, quando lo stato è
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-zoneConnettiti alla VM TPU.
gcloud compute tpus tpu-vm ssh $TPU_NAME \ --project $PROJECT_ID \ --zone $ZONE
Eseguire vLLM con Qwen2-7B-instruct
Imposta il token di Hugging Face.
export HF_TOKEN="YOUR_HF_TOKEN"All'interno della VM TPU, esegui il container Docker vLLM in modalità detached e avvia il server vLLM. Questo comando utilizza una dimensione della memoria condivisa di 10 GB.
export DOCKER_URI="vllm/vllm-tpu:v0.18.0" export CONTAINER_NAME="${USER}-vllm" export MAX_MODEL_LEN=4096 export TP=1 # number of chips sudo docker run -d --name "${CONTAINER_NAME}" \ --privileged --net=host \ -v /dev/shm:/dev/shm \ --shm-size 10gb \ -e "HF_HOME=/dev/shm" \ -e "HF_TOKEN=${HF_TOKEN}" \ -p 8000:8000 "${DOCKER_URI}" \ vllm serve Qwen/Qwen2-7B-Instruct \ --seed 42 \ --gpu-memory-utilization 0.98 \ --max-num-batched-tokens 1024 \ --max-num-seqs 128 \ --tensor-parallel-size $TP \ --max-model-len $MAX_MODEL_LENControlla i log del server per verificare che sia in esecuzione.
sudo docker logs -f "${CONTAINER_NAME}"Quando il server vLLM è in esecuzione, visualizzi un output simile al seguente. Dopo aver visualizzato l'output, premi
CTRL+Cper tornare al terminale.(APIServer pid=7) INFO: Started server process [7] (APIServer pid=7) INFO: Waiting for application startup. (APIServer pid=7) INFO: Application startup complete.
Inviare una richiesta di inferenza
Una volta avviato il server vLLM, puoi inviare richieste all'API. Per saperne di più, consulta la documentazione di riferimento dell'API vLLM.
Invia una richiesta di test al server utilizzando
curl.sudo docker exec -ti "${CONTAINER_NAME}" \ 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 risposta viene restituita in formato JSON.
Eseguire un carico di lavoro di benchmark
Puoi eseguire benchmark sul server in esecuzione dal secondo terminale.
All'interno del container, installa la libreria
datasets.sudo docker exec -it "${CONTAINER_NAME}" pip install datasetsAll'interno del container, esegui il comando
vllm bench serve.sudo docker exec -it "${CONTAINER_NAME}" \ vllm bench serve \ --backend vllm \ --model "Qwen/Qwen2-7B-Instruct" \ --dataset-name random \ --num-prompts 1000 \ --seed 100
I risultati del benchmark sono simili ai seguenti:
============ 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
==================================================
Liberare spazio
Per evitare che al tuo account Google Cloud vengano addebitati costi relativi alle risorse utilizzate in questo tutorial, elimina il progetto che contiene le risorse oppure mantieni il progetto ed elimina le singole risorse.
- Nel terminale, digita exit per disconnetterti dalla VM TPU.
Eliminare le risorse
Puoi eliminare il progetto, che eliminerà tutte le risorse, oppure puoi mantenere il progetto ed eliminare le risorse.
Eliminare il progetto
Per eliminare il tuo Google Cloud progetto e tutte le risorse associate, esegui:
gcloud projects delete $PROJECT_ID
Eliminare le risorse TPU
Elimina le risorse Cloud TPU. Il comando seguente elimina sia la richiesta di risorse in coda sia la VM TPU utilizzando il parametro --force.
gcloud alpha compute tpus queued-resources delete $QR_ID \
--project=$PROJECT_ID \
--zone=$ZONE \
--force
Passaggi successivi
- Scopri di più su vLLM su Cloud TPU.
- Scopri di più su Cloud TPU.