Ce tutoriel explique comment déployer et diffuser un grand modèle de langage (LLM) Llama 4 à l'aide de GPU sur Google Kubernetes Engine (GKE) avec le framework de diffusion vLLM. Vous disposerez ainsi des bases nécessaires pour comprendre et explorer le déploiement pratique de LLM pour l'inférence dans un environnement Kubernetes géré. Vous déployez un conteneur prédéfini exécutant vLLM sur GKE. Vous configurez également GKE pour charger Llama depuis Hugging Face.
Ce tutoriel est destiné aux ingénieurs en machine learning (ML), aux administrateurs et opérateurs de plate-forme, ainsi qu'aux spécialistes des données et de l'IA qui souhaitent utiliser les fonctionnalités d'orchestration de conteneurs Kubernetes pour diffuser des charges de travail d'IA/de ML sur du matériel GPU H200, H100, A100 et L4. Pour en savoir plus sur les rôles courants et les exemples de tâches que nous citons dans le contenu Google Cloud , consultez Rôles utilisateur et tâches courantes de GKE.
Si vous avez besoin d'une plate-forme d'IA gérée unifiée conçue pour créer et diffuser rapidement des modèles de ML à moindre coût, nous vous recommandons d'essayer notre solution de déploiement Vertex AI.
Avant de lire cette page, assurez-vous de connaître les éléments suivants :
Arrière-plan
Cette section décrit les principales technologies utilisées dans ce guide.
Llama
Llama est un grand modèle de langage de Meta conçu pour diverses tâches de traitement du langage naturel, y compris la génération de texte, la traduction et les systèmes de questions-réponses. GKE offre l'infrastructure requise pour répondre aux besoins d'entraînement et de diffusion distribués des modèles de cette envergure. Pour en savoir plus, consultez la documentation Llama.
GPU
Les GPU vous permettent d'accélérer des charges de travail spécifiques exécutées sur vos nœuds, telles que le machine learning et le traitement de données. GKE fournit toute une gamme d'options de types de machines pour la configuration des nœuds, y compris les types de machines avec des GPU NVIDIA H200, H100, L4 et A100.
vLLM
vLLM est un framework de diffusion LLM Open Source hautement optimisé qui peut augmenter le débit de diffusion sur les GPU, avec des fonctionnalités telles que les suivantes :
- Implémentation optimisée du transformateur avec PagedAttention
- Traitement par lots continu pour améliorer le débit global de diffusion
- Parallélisme des Tensors et diffusion distribuée sur plusieurs GPU
Pour en savoir plus, consultez la documentation vLLM.
Accéder au modèle
Pour accéder au modèle via Hugging Face, vous avez besoin d'un jeton Hugging Face.
Pour générer un nouveau jeton si vous n'en possédez pas, procédez comme suit:
- Cliquez sur Your Profile > Settings > Access Tokens (Votre profil > Paramètres > Jetons d'accès).
- Sélectionnez New Token (Nouveau jeton).
- Spécifiez le nom de votre choix et un rôle d'au moins
Read
. - Sélectionnez Générer un jeton.
- Copiez le jeton dans votre presse-papiers.
Préparer votre environnement
Dans ce tutoriel, vous utilisez Cloud Shell pour gérer les ressources hébergées surGoogle Cloud. Les logiciels dont vous avez besoin pour ce tutoriel sont préinstallés sur Cloud Shell, y compris kubectl
et gcloud CLI.
Pour configurer votre environnement avec Cloud Shell, procédez comme suit :
Dans la console Google Cloud , lancez une session Cloud Shell en cliquant sur
Activer Cloud Shell dans la consoleGoogle Cloud . Une session s'ouvre dans le volet inférieur de la console Google Cloud .
Définissez les variables d'environnement par défaut :
gcloud config set project PROJECT_ID gcloud config set billing/quota_project PROJECT_ID export PROJECT_ID=$(gcloud config get project) export REGION=REGION export CLUSTER_NAME=CLUSTER_NAME export HF_TOKEN=HF_TOKEN
Remplacez les valeurs suivantes :
PROJECT_ID
: ID de votre projet Google Cloud.REGION
: région compatible avec le type d'accélérateur que vous souhaitez utiliser, par exempleus-central1
pour les GPU L4.CLUSTER_NAME
: nom du clusterHF_TOKEN
: jeton Hugging Face que vous avez généré précédemment.
Créer et configurer des ressources Google Cloud
Suivez les instructions ci-dessous pour créer les ressources requises.
Créer un cluster GKE et un pool de nœuds
Vous pouvez diffuser des modèles Llama 4 sur des GPU dans un cluster GKE Autopilot ou Standard. Nous vous recommandons d'utiliser un cluster GKE Autopilot pour une expérience Kubernetes entièrement gérée. Pour choisir le mode de fonctionnement GKE le mieux adapté à vos charges de travail, consultez la section Choisir un mode de fonctionnement GKE.
Autopilot
Dans Cloud Shell, exécutez la commande suivante :
gcloud container clusters create-auto CLUSTER_NAME \
--project=PROJECT_ID \
--location=CONTROL_PLANE_LOCATION \
--release-channel=rapid
Remplacez les valeurs suivantes :
PROJECT_ID
: ID de votre projet Google Cloud.CONTROL_PLANE_LOCATION
: région Compute Engine du plan de contrôle de votre cluster. Indiquez une région compatible avec le type d'accélérateur que vous souhaitez utiliser, par exempleus-central1
pour les GPU L4.CLUSTER_NAME
: nom du cluster
GKE crée un cluster Autopilot avec des nœuds de processeur et de GPU, à la demande des charges de travail déployées.
Standard
Dans Cloud Shell, exécutez la commande suivante pour créer un cluster GKE Standard :
gcloud container clusters create CLUSTER_NAME \ --project=PROJECT_ID \ --location=CONTROL_PLANE_LOCATION \ --workload-pool=PROJECT_ID.svc.id.goog \ --release-channel=rapid \ --num-nodes=1
Remplacez les valeurs suivantes :
PROJECT_ID
: ID de votre projet Google Cloud.CONTROL_PLANE_LOCATION
: région Compute Engine du plan de contrôle de votre cluster. Indiquez une région compatible avec le type d'accélérateur que vous souhaitez utiliser, par exempleus-central1
pour les GPU H100.CLUSTER_NAME
: nom du cluster
La création du cluster peut prendre plusieurs minutes.
Pour créer un pool de nœuds pour votre cluster avec la taille de disque appropriée, exécutez la commande suivante :
gcloud container node-pools create gpupool \ --accelerator type=nvidia-h100-80gb,count=1,gpu-driver-version=latest \ --project=PROJECT_ID \ --location=REGION \ --node-locations=REGION-a \ --cluster=CLUSTER_NAME \ --machine-type=a3-highgpu-8g \ --disk-type=pd-ssd \ --num-nodes=1 \ --disk-size=256
GKE crée un pool de nœuds unique contenant huit GPU H100 de 80 Go.
Créer un secret Kubernetes pour les identifiants Hugging Face
Dans Cloud Shell, procédez comme suit :
Configurez
kubectl
pour qu'il puisse communiquer avec votre cluster :gcloud container clusters get-credentials CLUSTER_NAME \ --location=REGION
Remplacez les valeurs suivantes :
REGION
: région compatible avec le type d'accélérateur que vous souhaitez utiliser, par exempleus-central1
pour les GPU L4.CLUSTER_NAME
: nom du cluster
Créez un secret Kubernetes contenant le jeton Hugging Face:
kubectl create secret generic hf-secret \ --from-literal=hf_api_token=${HF_TOKEN} \ --dry-run=client -o yaml | kubectl apply -f -
Remplacez
HF_TOKEN
par le jeton Hugging Face que vous avez généré précédemment.
Déployer vLLM
Dans cette section, vous allez déployer le conteneur vLLM pour diffuser les modèles Llama 4 que vous souhaitez utiliser :
- Llama 4 Maverick 17B-128E
- Llama 4 Scout 17B-16E
Pour déployer le modèle, ce tutoriel utilise des déploiements Kubernetes. Un déploiement est un objet de l'API Kubernetes qui vous permet d'exécuter plusieurs instances dupliquées de pods répartis entre les nœuds d'un cluster.
Llama 4 Maverick 17B-128e
Pour déployer le modèle Llama 4 Maverick 17B-128E, suivez ces instructions :
Créez le fichier manifeste
vllm-llama4-maverick-17b-128e.yaml
suivant :Appliquez le fichier manifeste :
kubectl apply -f vllm-llama4-maverick-17b-128e.yaml
Dans notre exemple, nous limitons la fenêtre de contexte à 128 K en utilisant l'option
--max-model-len=131072
de vLLM.
Llama 4 Maverick 17B-128e-it
Pour déployer le modèle adapté aux instructions Llama 4 Maverick 17B-128e, suivez ces instructions :
Créez le fichier manifeste
vllm-llama4-maverick-17b-128e-instruct.yaml
suivant :Appliquez le fichier manifeste :
kubectl apply -f vllm-llama4-maverick-17b-128e-instruct.yaml
Dans notre exemple, nous limitons la fenêtre de contexte à 128 K en utilisant l'option
--max-model-len=131072
de vLLM.
Llama 4 Maverick 17B-128e-it-fp8
Pour déployer le modèle Llama 4 Maverick 17B-128e-Instruct-FP8, suivez ces instructions :
Créez le fichier manifeste
vllm-llama4-maverick-17b-128e-instruct-fp8.yaml
suivant :Appliquez le fichier manifeste :
kubectl apply -f vllm-llama4-maverick-17b-128e-instruct-fp8.yaml
Dans notre exemple, nous limitons la fenêtre de contexte à 512 Ko en utilisant l'option
--max-model-len=524288
de vLLM.
Llama 4 Scout 17B-16e
Pour déployer le modèle Llama 4 Scout 17B-16E, suivez ces instructions :
Créez le fichier manifeste
vllm-llama4-scout-17b-16e.yaml
suivant :Appliquez le fichier manifeste :
kubectl apply -f vllm-llama4-scout-17b-16e.yaml
Dans notre exemple, nous limitons la fenêtre de contexte à 256 K en utilisant l'option
--max-model-len=262144
de vLLM.
Llama 4 Scout 17B-16e-it
Pour déployer le modèle adapté aux instructions Llama 4 Scout 17B-16e Instruct, suivez ces instructions :
Créez le fichier manifeste
vllm-llama4-scout-17b-16e-instruct.yaml
suivant :Appliquez le fichier manifeste :
kubectl apply -f vllm-llama4-scout-17b-16e-instruct.yaml
Dans notre exemple, nous limitons la fenêtre de contexte à 1 280 K en utilisant l'option
--max-model-len=1310720
de vLLM.
Attendez que le déploiement soit disponible :
kubectl wait --for=condition=Available --timeout=1800s deployment/llama-deployment
Affichez les journaux du déploiement en cours d'exécution :
kubectl logs -f -l app=llama-server
La ressource Déploiement télécharge les données du modèle. Ce processus peut prendre quelques minutes. Le résultat ressemble à ce qui suit :
INFO: Started server process [145]
INFO: Waiting for application startup.
INFO: Application startup complete.
...
INFO 04-07 13:36:29 [async_llm.py:228] Added request chatcmpl-4149ea4cf35e48559f9f819dcdbbb23e.
INFO: 127.0.0.1:44018 - "POST /v1/chat/completions HTTP/1.1" 200 OK
Assurez-vous que le modèle est entièrement téléchargé avant de passer à la section suivante.
Diffuser le modèle
Dans cette section, vous allez interagir avec le modèle.
Configurer le transfert de port
Pour configurer le transfert de port sur le modèle, exécutez la commande suivante :
kubectl port-forward service/llama-service 8080:8000
Le résultat ressemble à ce qui suit :
Forwarding from 127.0.0.1:8080 -> 7080
Interagir avec le modèle à l'aide de curl
Cette section explique comment effectuer un test de fumée de base pour vérifier le modèle Llama adapté aux instructions déployé.
Pour les autres modèles, remplacez meta-llama/Llama-4-Scout-17B-16E
par le nom du modèle concerné.
Cet exemple montre comment tester le modèle Llama 4 Scout 17B-16E avec une entrée de texte uniquement.
Dans une nouvelle session de terminal, utilisez curl
pour discuter avec votre modèle :
curl http://localhost:8080/v1/chat/completions \
-H "Content-Type: application/json" \
-d '{
"model": "meta-llama/Llama-4-Scout-17B-16E",
"messages": [{"role": "user", "content": "San Francisco is a"}],
"max_tokens": 7,
"temperature": 0
}'
Le résultat ressemble à ce qui suit :
"message":{"role":"assistant","reasoning_content":null,"content":"San Francisco is a city","tool_calls":[]}
Résoudre les problèmes
- Si le message
Empty reply from server
s'affiche, il est possible que le conteneur n'ait pas terminé le téléchargement des données du modèle. Vérifiez à nouveau dans les journaux du pod le messageConnected
indiquant que le modèle est prêt à être diffusé. - Si le message
Connection refused
s'affiche, vérifiez que le transfert de port est actif.
Observer les performances du modèle
Pour afficher les tableaux de bord des métriques d'observabilité d'un modèle, procédez comme suit :
Dans la console Google Cloud , accédez à la page Modèles déployés.
Pour afficher des informations sur un déploiement spécifique, y compris ses métriques, ses journaux et ses tableaux de bord, cliquez sur le nom du modèle dans la liste.
Sur la page d'informations sur le modèle, cliquez sur l'onglet Observabilité pour afficher les tableaux de bord suivants. Si vous y êtes invité, cliquez sur Activer pour activer la collecte de métriques pour le cluster.
- Le tableau de bord Utilisation de l'infrastructure affiche les métriques d'utilisation.
- Le tableau de bord DCGM affiche les métriques DCGM.
- Si vous utilisez vLLM, le tableau de bord Performances du modèle est disponible et affiche les métriques de performances du modèle vLLM.
Vous pouvez également afficher les métriques dans l'intégration du tableau de bord vLLM dans Cloud Monitoring. Ces métriques sont agrégées pour tous les déploiements vLLM sans filtres prédéfinis.
Pour utiliser le tableau de bord dans Cloud Monitoring, vous devez activer Google Cloud Managed Service pour Prometheus, qui collecte les métriques de vLLM, dans votre cluster GKE. vLLM expose les métriques au format Prometheus par défaut. Vous n'avez pas besoin d'installer d'exportateur supplémentaire. Pour savoir comment utiliser Google Cloud Managed Service pour Prometheus afin de collecter des métriques à partir de votre modèle, consultez les conseils d'observabilité vLLM dans la documentation Cloud Monitoring.