Ce tutoriel explique comment diffuser le modèle Qwen/Qwen2-7B-Instruct à l'aide du framework de diffusion vLLM TPU sur une VM TPU v6e.
Objectifs
- configurer votre environnement ;
- Exécutez vLLM avec Qwen2-7B-Instruct.
- Envoyez une requête d'inférence.
- Exécutez une charge de travail de benchmark.
- Effectuer un nettoyage.
Coûts
Ce tutoriel utilise des composants facturables de Google Cloud, dont :
Obtenez une estimation des coûts en fonction de votre utilisation prévue à l'aide du simulateur de coût.
Avant de commencer
Avant de suivre ce tutoriel, suivez les instructions de la page Configurer l'environnement Cloud TPU. Les instructions vous guident à travers les étapes nécessaires pour créer un projet Google Cloudet le configurer pour utiliser Cloud TPU. Vous pouvez également utiliser un projetGoogle Cloud existant. Si vous le souhaitez, vous pouvez ignorer l'étape de création d'un projetGoogle Cloud et commencer par Configurer votre environnement pour qu'il utilise Cloud TPU.
Vous avez besoin d'un jeton d'accès Hugging Face pour suivre ce tutoriel. Vous pouvez créer un compte sans frais sur Hugging Face. Une fois que vous avez un compte, générez un jeton d'accès :
- Sur la page Bienvenue sur Hugging Face, cliquez sur l'avatar de votre compte, puis sélectionnez Jetons d'accès.
- Sur la page Jetons d'accès, cliquez sur Créer un jeton.
- Sélectionnez le type de jeton Lecture et saisissez un nom pour votre jeton.
- Votre jeton d'accès s'affiche. Enregistrez le jeton dans un endroit sûr.
Configurer votre environnement
Ressources en file d'attente
Créez une VM Cloud TPU v6e à l'aide de l'API des ressources en file d'attente. Pour qwen2-7b-instruct, nous vous recommandons d'utiliser un TPU v6e-1.
Définissez les variables :
- PROJECT : nom de votre projet.
- TPU_NAME : nom de la machine VM TPU que vous allez créer.
- ZONE : zone cloud dans laquelle vous créez la VM.
- TPU_TYPE : type de VM TPU que vous créez. Par exemple,
v6e-1ouv6e-4. - QR_ID : nom de la ressource mise en file d'attente que vous créez.
Créez la demande de ressource mise en file d'attente :
Vérifiez que votre VM TPU est prête.
Par exemple, lorsque l'état est 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
Réservation
Créez une VM Cloud TPU v6e à l'aide d'une réservation. Pour qwen2-7b-instruct, nous vous recommandons d'utiliser un TPU v6e-1. Commencez par définir les variables d'environnement :
Définissez les variables :
- PROJECT : nom de votre projet.
- TPU_NAME : nom de la machine VM TPU que vous allez créer.
- ZONE : zone cloud dans laquelle vous créez la VM.
- TPU_TYPE : type de VM TPU que vous créez. Par exemple,
v6e-1ouv6e-4. - RESERVATION : nom de la réservation avec vos TPU.
Créez la VM TPU à l'aide de votre réservation :
Connectez-vous à la VM TPU.
Exécuter vLLM avec Qwen2-7B-instruct
Définissez vos variables de jeton Hugging Face et de nom de modèle.
export HF_TOKEN="YOUR_HF_TOKEN" export MODEL_NAME="Qwen/Qwen2-7B-Instruct"Dans la VM TPU, exécutez le conteneur Docker vLLM en mode dissocié et démarrez le serveur vLLM. Cette commande utilise une taille de mémoire partagée de 10 Go.
Consultez les journaux du serveur pour vérifier qu'il est en cours d'exécution.
Lorsque le serveur vLLM est en cours d'exécution, un résultat semblable à celui-ci s'affiche. Une fois le résultat affiché, appuyez sur
CTRL+Cpour revenir au terminal.(APIServer pid=7) INFO: Started server process [7] (APIServer pid=7) INFO: Waiting for application startup. (APIServer pid=7) INFO: Application startup complete.
Envoyer une requête d'inférence
Une fois le serveur vLLM en cours d'exécution, vous pouvez envoyer des requêtes à l'API. Pour en savoir plus, consultez la documentation de référence de l'API vLLM.
Envoyez une requête de test au serveur à l'aide de
curl.
La réponse est renvoyée au format JSON.
Exécuter une charge de travail de benchmark
Vous pouvez exécuter des benchmarks sur le serveur en cours d'exécution à partir de votre deuxième terminal.
À l'intérieur du conteneur, installez la bibliothèque
datasets.Dans le conteneur, exécutez la commande
vllm bench serve.
Les résultats du benchmark se présentent comme suit :
============ 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
==================================================
Effectuer un nettoyage
Pour éviter que les ressources utilisées lors de ce tutoriel soient facturées sur votre compte Google Cloud, supprimez le projet contenant les ressources, ou conservez le projet et supprimez les ressources individuelles.
- Dans votre terminal, saisissez exit pour vous déconnecter de la VM TPU.
Supprimer vos ressources
Vous pouvez supprimer le projet, ce qui supprimera toutes les ressources, ou vous pouvez conserver le projet et supprimer les ressources.
Supprimer votre projet
Pour supprimer votre projet Google Cloud et toutes les ressources associées, exécutez la commande suivante :
gcloud projects delete $PROJECT_ID
Supprimer des ressources TPU
Ressources en file d'attente
Supprimez vos ressources Cloud TPU. La commande suivante supprime à la fois la demande de ressource en file d'attente et la VM TPU à l'aide du paramètre --force.
Réservation
Supprimez votre VM Cloud TPU. Utilisez la commande suivante pour arrêter la VM et libérer les TPU pour votre réservation.
Étapes suivantes
- En savoir plus sur vLLM sur Cloud TPU
- En savoir plus sur Cloud TPU