Ce tutoriel vous explique comment déployer et diffuser un modèle de langage DeepSeek-V3.1-Base à l'aide du framework vLLM. Vous déployez ce modèle sur un cluster autopilot Google Kubernetes Engine (GKE) Enterprise et consommez une seule machine virtuelle A4 (VM) dotée de huit GPU B200.
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 gérer les charges de travail d'inférence.
Objectifs
- Accédez à DeepSeek-V3.1-Base à l'aide de Hugging Face.
- Préparez votre environnement.
- Créer un cluster GKE en mode Autopilot
- Créez un secret Kubernetes pour les identifiants Hugging Face.
- Déployez un conteneur vLLM sur votre cluster GKE.
- Interagissez avec DeepSeek-V3.1-Base à l'aide de curl.
- Effectuer un nettoyage.
Coûts
Ce tutoriel utilise des composants facturables de Google Cloud, dont :
Vous pouvez obtenir une estimation des coûts en fonction de votre utilisation prévue à l'aide du simulateur de coût.
Avant de commencer
- Connectez-vous à votre compte Google Cloud . Si vous débutez sur Google Cloud, créez un compte pour évaluer les performances de nos produits en conditions réelles. Les nouveaux clients bénéficient également de 300 $de crédits sans frais pour exécuter, tester et déployer des charges de travail.
-
Installez la Google Cloud CLI.
-
Si vous utilisez un fournisseur d'identité (IdP) externe, vous devez d'abord vous connecter à la gcloud CLI avec votre identité fédérée.
-
Pour initialiser la gcloud CLI, exécutez la commande suivante :
gcloud init -
Créez ou sélectionnez un projet Google Cloud .
Rôles requis pour sélectionner ou créer un projet
- Sélectionnez un projet : la sélection d'un projet ne nécessite pas de rôle IAM spécifique. Vous pouvez sélectionner n'importe quel projet pour lequel un rôle vous a été attribué.
-
Créer un projet : pour créer un projet, vous devez disposer du rôle Créateur de projet (
roles/resourcemanager.projectCreator), qui contient l'autorisationresourcemanager.projects.create. Découvrez comment attribuer des rôles.
-
Créez un projet Google Cloud :
gcloud projects create PROJECT_ID
Remplacez
PROJECT_IDpar le nom du projet Google Cloud que vous créez. -
Sélectionnez le projet Google Cloud que vous avez créé :
gcloud config set project PROJECT_ID
Remplacez
PROJECT_IDpar le nom de votre projet Google Cloud .
-
Vérifiez que la facturation est activée pour votre projet Google Cloud .
Activez l'API requise :
Rôles requis pour activer les API
Pour activer les API, vous avez besoin du rôle IAM Administrateur Service Usage (
roles/serviceusage.serviceUsageAdmin), qui contient l'autorisationserviceusage.services.enable. Découvrez comment attribuer des rôles.gcloud services enable container.googleapis.com
-
Installez la Google Cloud CLI.
-
Si vous utilisez un fournisseur d'identité (IdP) externe, vous devez d'abord vous connecter à la gcloud CLI avec votre identité fédérée.
-
Pour initialiser la gcloud CLI, exécutez la commande suivante :
gcloud init -
Créez ou sélectionnez un projet Google Cloud .
Rôles requis pour sélectionner ou créer un projet
- Sélectionnez un projet : la sélection d'un projet ne nécessite pas de rôle IAM spécifique. Vous pouvez sélectionner n'importe quel projet pour lequel un rôle vous a été attribué.
-
Créer un projet : pour créer un projet, vous devez disposer du rôle Créateur de projet (
roles/resourcemanager.projectCreator), qui contient l'autorisationresourcemanager.projects.create. Découvrez comment attribuer des rôles.
-
Créez un projet Google Cloud :
gcloud projects create PROJECT_ID
Remplacez
PROJECT_IDpar le nom du projet Google Cloud que vous créez. -
Sélectionnez le projet Google Cloud que vous avez créé :
gcloud config set project PROJECT_ID
Remplacez
PROJECT_IDpar le nom de votre projet Google Cloud .
-
Vérifiez que la facturation est activée pour votre projet Google Cloud .
Activez l'API requise :
Rôles requis pour activer les API
Pour activer les API, vous avez besoin du rôle IAM Administrateur Service Usage (
roles/serviceusage.serviceUsageAdmin), qui contient l'autorisationserviceusage.services.enable. Découvrez comment attribuer des rôles.gcloud services enable container.googleapis.com
-
Attribuez des rôles à votre compte utilisateur. Exécutez la commande suivante une fois pour chacun des rôles IAM suivants :
roles/container.admingcloud projects add-iam-policy-binding PROJECT_ID --member="user:USER_IDENTIFIER" --role=ROLE
Remplacez les éléments suivants :
PROJECT_ID: ID de votre projetUSER_IDENTIFIER: identifiant de votre compte d'utilisateur. Par exemple,myemail@example.com.ROLE: rôle IAM que vous accordez à votre compte utilisateur.
- Connectez-vous à votre compte Hugging Face ou créez-en un.
Accéder à DeepSeek à l'aide de Hugging Face
Pour utiliser Hugging Face afin d'accéder à DeepSeek, procédez comme suit :
- Connectez-vous à Hugging Face et explorez le modèle DeepSeek-V3.1-Base.
- Créez un jeton d'accès
readHugging Face. - Copiez et enregistrez la valeur du jeton
read access. Vous en aurez besoin dans la suite de ce tutoriel.
Préparer votre environnement
Pour préparer votre environnement, 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 RESERVATION_URL=RESERVATION_URL
export REGION=REGION
export CLUSTER_NAME=CLUSTER_NAME
export HUGGING_FACE_TOKEN=HUGGING_FACE_TOKEN
export NETWORK=NETWORK_NAME
export SUBNETWORK=SUBNETWORK_NAME
Remplacez les éléments suivants :
PROJECT_ID: ID du Google Cloud projet dans lequel vous souhaitez créer le cluster GKE.RESERVATION_URL: URL de la réservation que vous souhaitez utiliser pour créer votre cluster GKE. En fonction du projet dans lequel la réservation existe, spécifiez l'une des valeurs suivantes :La réservation existe dans votre projet :
RESERVATION_NAMELa réservation existe dans un autre projet et votre projet peut l'utiliser :
projects/RESERVATION_PROJECT_ID/reservations/RESERVATION_NAME
REGION: région dans laquelle vous souhaitez créer votre cluster GKE. Vous ne pouvez créer le cluster que dans la région où se trouve votre réservation.CLUSTER_NAME: nom du cluster GKE à créer.HUGGING_FACE_TOKEN: jeton d'accès Hugging Face que vous avez créé dans la section précédente.NETWORK_NAME: réseau utilisé par le cluster GKE. Spécifiez une des valeurs suivantes :Si vous avez créé un réseau personnalisé, spécifiez son nom.
Sinon, spécifiez
default.
SUBNETWORK_NAME: sous-réseau utilisé par le cluster GKE. Spécifiez une des valeurs suivantes :Si vous avez créé un sous-réseau personnalisé, spécifiez son nom. Vous ne pouvez spécifier qu'un sous-réseau situé dans la même région que la réservation.
Sinon, spécifiez
default.
Créer un cluster GKE en mode Autopilot
Pour créer un cluster GKE en mode Autopilot, exécutez la commande suivante :
gcloud container clusters create-auto $CLUSTER_NAME \
--project=$PROJECT_ID \
--region=$REGION \
--release-channel=rapid \
--network=$NETWORK \
--subnetwork=$SUBNETWORK
La création du cluster GKE peut prendre un certain temps. Pour vérifier que Google Cloud a terminé de créer votre cluster, accédez à Clusters Kubernetes dans la console Google Cloud .
Créer un secret Kubernetes pour les identifiants Hugging Face
Pour créer un secret Kubernetes pour les identifiants Hugging Face, procédez comme suit :
Configurez
kubectlpour communiquer avec votre cluster GKE :gcloud container clusters get-credentials $CLUSTER_NAME \ --location=$REGIONCréez un secret Kubernetes pour stocker votre jeton Hugging Face :
kubectl create secret generic hf-secret \ --from-literal=hf_token=${HUGGING_FACE_TOKEN} \ --dry-run=client -o yaml | kubectl apply -f -
Déployer un conteneur vLLM sur votre cluster GKE
Créez un fichier
vllm-deepseek3-1-base.yamlavec le déploiement vLLM de votre choix :apiVersion: apps/v1 kind: Deployment metadata: name: deepseek3-1-deploy spec: replicas: 1 selector: matchLabels: app: deepseek template: metadata: labels: app: deepseek ai.gke.io/model: deepseek-v3-1-base ai.gke.io/inference-server: vllm examples.ai.gke.io/source: user-guide spec: containers: - name: vllm-inference image: us-docker.pkg.dev/vertex-ai/vertex-vision-model-garden-dockers/pytorch-vllm-serve:20250819_0916_RC01 resources: requests: cpu: "10" memory: "1000Gi" ephemeral-storage: "1Ti" nvidia.com/gpu: "8" limits: cpu: "10" memory: "1000Gi" ephemeral-storage: "1Ti" nvidia.com/gpu: "8" command: ["python3", "-m", "vllm.entrypoints.openai.api_server"] args: - --model=$(MODEL_ID) - --tensor-parallel-size=8 - --host=0.0.0.0 - --port=8000 - --max-model-len=8192 - --max-num-seqs=4 env: - name: MODEL_ID value: deepseek-ai/DeepSeek-V3.1-Base - name: HUGGING_FACE_HUB_TOKEN valueFrom: secretKeyRef: name: hf-secret key: hf_token volumeMounts: - mountPath: /dev/shm name: dshm livenessProbe: httpGet: path: /health port: 8000 initialDelaySeconds: 1800 periodSeconds: 10 readinessProbe: httpGet: path: /health port: 8000 initialDelaySeconds: 1800 periodSeconds: 5 volumes: - name: dshm emptyDir: medium: Memory nodeSelector: cloud.google.com/gke-accelerator: nvidia-b200 cloud.google.com/reservation-name: RESERVATION_URL cloud.google.com/reservation-affinity: "specific" cloud.google.com/gke-gpu-driver-version: latest --- apiVersion: v1 kind: Service metadata: name: deepseek-service spec: selector: app: deepseek type: ClusterIP ports: - protocol: TCP port: 8000 targetPort: 8000 --- apiVersion: monitoring.googleapis.com/v1 kind: PodMonitoring metadata: name: deepseek-monitoring spec: selector: matchLabels: app: deepseek endpoints: - port: 8000 path: /metrics interval: 30sAppliquez le fichier
vllm-deepseek3-1-base.yamlà votre cluster GKE :kubectl apply -f vllm-deepseek3-1-base.yamlLors du processus de déploiement, le conteneur doit télécharger le modèle
deepseek-ai/DeepSeek-V3.1-Basedepuis Hugging Face. C'est pourquoi le déploiement du conteneur peut prendre jusqu'à 30 minutes.Pour afficher l'état d'achèvement, exécutez la commande suivante :
kubectl wait \ --for=condition=Available \ --timeout=1800s deployment/deepseek3-1-deployL'indicateur
--timeout=1800spermet à la commande de surveiller le déploiement pendant 30 minutes maximum.
Interagir avec DeepSeek V3.1 à l'aide de curl
Pour vérifier le modèle DeepSeek-V3.1-Base que vous avez déployé, procédez comme suit :
Configurez le transfert de port vers DeepSeek-V3.1-Base :
kubectl port-forward service/deepseek-service 8000:8000Ouvrez une nouvelle fenêtre de terminal. Vous pouvez ensuite discuter avec votre modèle à l'aide de
curl:curl http://127.0.0.1:8000/v1/chat/completions \ -X POST \ -H "Content-Type: application/json" \ -d '{ "model": "deepseek-ai/DeepSeek-V3.1-Base", "messages": [ { "role": "user", "content": "Describe how generative AI works in one short and easy to understand sentence" } ], "stream":false }'Le résultat renvoyé ressemble à ceci :
{ "id": "chatcmpl-1a47172070544a5d83199ed5548befca", "object": "chat.completion", "created": 1755891024, "model": "deepseek-ai/DeepSeek-V3.1-Base", "choices": [ { "index": 0, "message": { "role": "assistant", "content": "\nGenerative AI uses patterns from existing data to create new, similar content, like text, images, or music.\n", "refusal": null, "annotations": null, "audio": null, "function_call": null, "tool_calls": [], "reasoning_content": null }, "logprobs": null, "finish_reason": "stop", "stop_reason": null } ], "service_tier": null, "system_fingerprint": null, "usage": { "prompt_tokens": 17, "total_tokens": 42, "completion_tokens": 25, "prompt_tokens_details": null }, "prompt_logprobs": null, "kv_transfer_params": null }
Observer les performances du modèle
Si vous souhaitez observer les performances de votre modèle, vous pouvez utiliser l'intégration du tableau de bord vLLM dans Cloud Monitoring. Ce tableau de bord vous permet d'afficher des métriques de performances critiques pour votre modèle, comme le débit de jetons, la latence réseau et les taux d'erreur. Pour en savoir plus, consultez vLLM dans la documentation de Monitoring.
Effectuer un nettoyage
Pour éviter que les ressources utilisées dans ce tutoriel soient facturées sur votre compte Google Cloud, supprimez le projet contenant les ressources, ou conservez le projet et supprimez chaque ressource individuellement.
Supprimer votre projet
Supprimer un projet Google Cloud :
gcloud projects delete PROJECT_ID
Supprimer les ressources
Pour supprimer le déploiement et le service dans le fichier
vllm-deepseek3-1-base.yaml, ainsi que le secret Kubernetes du cluster GKE, exécutez la commande suivante :kubectl delete -f vllm-deepseek3-1-base.yaml kubectl delete secret hf-secretPour supprimer votre cluster GKE :
gcloud container clusters delete $CLUSTER_NAME \ --region=$REGION