Ce document explique comment configurer la passerelle d'inférence multicluster Google Kubernetes Engine (GKE) pour équilibrer intelligemment la charge de vos charges de travail d'inférence d'IA/de ML sur plusieurs clusters GKE, qui peuvent s'étendre sur différentes régions. Cette configuration utilise l'API Gateway, Multi Cluster Ingress et des ressources personnalisées telles que InferencePool et InferenceObjective pour améliorer la scalabilité, assurer une haute disponibilité et optimiser l'utilisation des ressources pour vos déploiements de diffusion de modèles.
Pour comprendre ce document, vous devez connaître les éléments suivants :
- Orchestration d'IA/ML sur GKE
- Terminologie de l'IA générative
- Concepts de mise en réseau GKE, y compris :
- Équilibrage de charge dansGoogle Cloud, en particulier l'interaction des équilibreurs de charge avec GKE.
Ce document s'adresse aux personas suivants :
- Ingénieurs en machine learning (ML), administrateurs et opérateurs de plate-forme, ou spécialistes des données et de l'IA qui souhaitent utiliser les fonctionnalités d'orchestration de conteneurs de GKE pour diffuser des charges de travail d'IA/ML.
- Architectes cloud ou spécialistes de la mise en réseau qui interagissent avec la mise en réseau GKE.
Pour en savoir plus sur les rôles courants et les exemples de tâches cités dans le contenuGoogle Cloud , consultez Rôles utilisateur et tâches courantes de l'utilisateur dans GKE Enterprise.
Avant de commencer
Avant de commencer, effectuez les tâches suivantes :
- Activez l'API Google Kubernetes Engine. Activer l'API Google Kubernetes Engine
- Si vous souhaitez utiliser la Google Cloud CLI pour cette tâche, installez et initialisez la gcloud CLI. Si vous avez déjà installé la gcloud CLI, obtenez la dernière version en exécutant la commande
gcloud components update. Il est possible que les versions antérieures de la gcloud CLI ne permettent pas d'exécuter les commandes de ce document.
Activez les API Compute Engine, Google Kubernetes Engine, Model Armor et Network Services.
Accédez à Activer l'accès aux API et suivez les instructions.
Activez l'API Autoscaling.
Accédez à l'API Autoscaling et suivez les instructions.
Prérequis Hugging Face :
- Créez un compte Hugging Face si vous n'en possédez pas.
- Demandez et obtenez l'autorisation d'accéder au modèle Llama 3.1 sur Hugging Face.
- Signez le contrat de consentement de la licence sur la page du modèle sur Hugging Face.
- Générez un jeton d'accès Hugging Face avec au moins les autorisations
Read.
Conditions requises
- Assurez-vous que votre projet dispose d'un quota suffisant pour les GPU H100. Pour en savoir plus, consultez Planifier le quota de GPU et Quotas d'allocation.
- Utilisez GKE version 1.34.1-gke.1127000 ou ultérieure.
- Utilisez gcloud CLI version 480.0.0 ou ultérieure.
- Vos comptes de service de nœud doivent être autorisés à écrire des métriques dans l'API Autoscaling.
- Vous devez disposer des rôles IAM suivants sur le projet :
roles/container.adminetroles/iam.serviceAccountAdmin.
Configurer une passerelle d'inférence multicluster
Pour configurer la passerelle d'inférence multicluster GKE, procédez comme suit :
Créer des clusters et des pools de nœuds
Pour héberger vos charges de travail d'inférence d'IA/ML et activer l'équilibrage de charge multirégional, créez deux clusters GKE dans des régions différentes, chacun avec un pool de nœuds GPU H100.
Créez le premier cluster :
gcloud container clusters create CLUSTER_1_NAME \ --region LOCATION \ --project=PROJECT_ID \ --gateway-api=standard \ --release-channel "rapid" \ --cluster-version=GKE_VERSION \ --machine-type="MACHINE_TYPE" \ --disk-type="DISK_TYPE" \ --enable-managed-prometheus --monitoring=SYSTEM,DCGM \ --hpa-profile=performance \ --async # Allows the command to return immediatelyRemplacez les éléments suivants :
CLUSTER_1_NAME: nom du premier cluster, par exemplegke-west.LOCATION: région du premier cluster (par exemple,europe-west3).PROJECT_ID: ID de votre projet.GKE_VERSION: version de GKE à utiliser, par exemple1.34.1-gke.1127000.MACHINE_TYPE: type de machine pour les nœuds du cluster, par exemplec2-standard-16.DISK_TYPE: type de disque pour les nœuds du cluster, par exemplepd-standard.
Créez un pool de nœuds H100 pour le premier cluster :
gcloud container node-pools create NODE_POOL_NAME \ --accelerator "type=nvidia-h100-80gb,count=2,gpu-driver-version=latest" \ --project=PROJECT_ID \ --location=CLUSTER_1_ZONE \ --node-locations=CLUSTER_1_ZONE \ --cluster=CLUSTER_1_NAME \ --machine-type=NODE_POOL_MACHINE_TYPE \ --num-nodes=NUM_NODES \ --spot \ --async # Allows the command to return immediatelyRemplacez les éléments suivants :
NODE_POOL_NAME: nom du pool de nœuds, par exempleh100.PROJECT_ID: ID de votre projet.CLUSTER_1_ZONE: zone du premier cluster, par exempleeurope-west3-c.CLUSTER_1_NAME: nom du premier cluster, par exemplegke-west.NODE_POOL_MACHINE_TYPE: type de machine du pool de nœuds, par exemplea3-highgpu-2g.NUM_NODES: nombre de nœuds dans le pool de nœuds, par exemple3.
Obtenez les identifiants :
gcloud container clusters get-credentials CLUSTER_1_NAME \ --location CLUSTER_1_ZONE \ --project=PROJECT_IDRemplacez les éléments suivants :
PROJECT_ID: ID de votre projet.CLUSTER_1_NAME: nom du premier cluster, par exemplegke-west.CLUSTER_1_ZONE: zone du premier cluster, par exempleeurope-west3-c.
Sur le premier cluster, créez un secret pour le jeton Hugging Face :
kubectl create secret generic hf-token \ --from-literal=token=HF_TOKENRemplacez
HF_TOKENpar votre jeton d'accès Hugging Face.Créez le deuxième cluster dans une région différente de celle du premier cluster :
gcloud container clusters create gke-east --region LOCATION \ --project=PROJECT_ID \ --gateway-api=standard \ --release-channel "rapid" \ --cluster-version=GKE_VERSION \ --machine-type="MACHINE_TYPE" \ --disk-type="DISK_TYPE" \ --enable-managed-prometheus \ --monitoring=SYSTEM,DCGM \ --hpa-profile=performance \ --async # Allows the command to return immediately while the cluster is created in the background.Remplacez les éléments suivants :
LOCATION: région du deuxième cluster. Cette région doit être différente de celle du premier cluster. Exemple :us-east4PROJECT_ID: ID de votre projet.GKE_VERSION: version de GKE à utiliser, par exemple1.34.1-gke.1127000.MACHINE_TYPE: type de machine pour les nœuds du cluster, par exemplec2-standard-16.DISK_TYPE: type de disque pour les nœuds du cluster, par exemplepd-standard.
Créez un pool de nœuds H100 pour le deuxième cluster :
gcloud container node-pools create h100 \ --accelerator "type=nvidia-h100-80gb,count=2,gpu-driver-version=latest" \ --project=PROJECT_ID \ --location=CLUSTER_2_ZONE \ --node-locations=CLUSTER_2_ZONE \ --cluster=CLUSTER_2_NAME \ --machine-type=NODE_POOL_MACHINE_TYPE \ --num-nodes=NUM_NODES \ --spot \ --async # Allows the command to return immediatelyRemplacez les éléments suivants :
PROJECT_ID: ID de votre projet.CLUSTER_2_ZONE: zone du deuxième cluster, par exempleus-east4-a.CLUSTER_2_NAME: nom du deuxième cluster, par exemplegke-east.NODE_POOL_MACHINE_TYPE: type de machine du pool de nœuds, par exemplea3-highgpu-2g.NUM_NODES: nombre de nœuds dans le pool de nœuds, par exemple3.
Pour le deuxième cluster, obtenez les identifiants et créez un secret pour le jeton Hugging Face :
gcloud container clusters get-credentials CLUSTER_2_NAME \ --location CLUSTER_2_ZONE \ --project=PROJECT_ID kubectl create secret generic hf-token --from-literal=token=HF_TOKENRemplacez les éléments suivants :
CLUSTER_2_NAME: nom du deuxième cluster, par exemplegke-east.CLUSTER_2_ZONE: zone du deuxième cluster, par exempleus-east4-a.PROJECT_ID: ID de votre projet.HF_TOKEN: votre jeton d'accès Hugging Face.
Enregistrer des clusters dans un parc
Pour activer les fonctionnalités multicluster, telles que la passerelle d'inférence multicluster GKE, enregistrez vos clusters dans un parc.
Enregistrez les deux clusters dans le parc de votre projet :
gcloud container fleet memberships register CLUSTER_1_NAME \ --gke-cluster CLUSTER_1_ZONE/CLUSTER_1_NAME \ --location=global \ --project=PROJECT_ID gcloud container fleet memberships register CLUSTER_2_NAME \ --gke-cluster CLUSTER_2_ZONE/CLUSTER_2_NAME \ --location=global \ --project=PROJECT_IDRemplacez les éléments suivants :
CLUSTER_1_NAME: nom du premier cluster, par exemplegke-west.CLUSTER_1_ZONE: zone du premier cluster, par exempleeurope-west3-c.PROJECT_ID: ID de votre projet.CLUSTER_2_NAME: nom du deuxième cluster, par exemplegke-east.CLUSTER_2_ZONE: zone du deuxième cluster, par exempleus-east4-a.
Pour permettre à une seule passerelle de gérer le trafic sur plusieurs clusters, activez la fonctionnalité d'Ingress multicluster et désignez un cluster de configuration :
gcloud container fleet ingress enable \ --config-membership=projects/PROJECT_ID/locations/global/memberships/CLUSTER_1_NAMERemplacez les éléments suivants :
PROJECT_ID: ID de votre projet.CLUSTER_1_NAME: nom du premier cluster, par exemplegke-west.
Créer des sous-réseaux proxy réservés
Pour une passerelle interne, créez un sous-réseau proxy réservé dans chaque région. Les proxys Envoy de la passerelle interne utilisent ces sous-réseaux dédiés pour gérer le trafic au sein de votre réseau VPC.
Créez un sous-réseau dans la région du premier cluster :
gcloud compute networks subnets create CLUSTER_1_REGION-subnet \ --purpose=GLOBAL_MANAGED_PROXY \ --role=ACTIVE \ --region=CLUSTER_1_REGION \ --network=default \ --range=10.0.0.0/23 \ --project=PROJECT_IDCréez un sous-réseau dans la région du deuxième cluster :
gcloud compute networks subnets create CLUSTER_2_REGION-subnet \ --purpose=GLOBAL_MANAGED_PROXY \ --role=ACTIVE \ --region=CLUSTER_2_REGION \ --network=default \ --range=10.5.0.0/23 \ --project=PROJECT_IDRemplacez les éléments suivants :
PROJECT_ID: ID de votre projet.CLUSTER_1_REGION: région du premier cluster, par exempleeurope-west3.CLUSTER_2_REGION: région du deuxième cluster, par exempleus-east4.
Installer les CRD requises
La passerelle d'inférence multicluster GKE utilise des ressources personnalisées telles que InferencePool et InferenceObjective. Le contrôleur de l'API GKE Gateway gère la définition de ressource personnalisée (CRD) InferencePool. Toutefois, vous devez installer manuellement le CRD InferenceObjective, qui est en version alpha, sur vos clusters.
Définissez des variables de contexte pour vos clusters :
CLUSTER1_CONTEXT="gke_PROJECT_ID_CLUSTER_1_ZONE_CLUSTER_1_NAME" CLUSTER2_CONTEXT="gke_PROJECT_ID_CLUSTER_2_ZONE_CLUSTER_2_NAME"Remplacez les éléments suivants :
PROJECT_ID: ID de votre projet.CLUSTER_1_ZONE: zone du premier cluster (par exemple,europe-west3-c).CLUSTER_1_NAME: nom du premier cluster (par exemple,gke-west).CLUSTER_2_ZONE: zone du deuxième cluster, par exempleus-east4-a.CLUSTER_2_NAME: nom du deuxième cluster, par exemplegke-east.
Installez le CRD
InferenceObjectivesur les deux clusters :kubectl apply -f https://raw.githubusercontent.com/kubernetes-sigs/gateway-api-inference-extension/v1.1.0/config/crd/bases/inference.networking.x-k8s.io_inferenceobjectives.yaml --context=CLUSTER1_CONTEXT kubectl apply -f https://raw.githubusercontent.com/kubernetes-sigs/gateway-api-inference-extension/v1.1.0/config/crd/bases/inference.networking.x-k8s.io_inferenceobjectives.yaml --context=CLUSTER2_CONTEXTRemplacez les éléments suivants :
CLUSTER1_CONTEXT: contexte du premier cluster, par exemplegke_my-project_europe-west3-c_gke-west.CLUSTER2_CONTEXT: contexte du deuxième cluster, par exemplegke_my-project_us-east4-a_gke-east.
Déployer des ressources sur les clusters cibles
Pour rendre vos charges de travail d'inférence d'IA/de ML disponibles sur chaque cluster, déployez les ressources requises, telles que les serveurs de modèle et les ressources personnalisées InferenceObjective.
Déployez les serveurs de modèle sur les deux clusters :
kubectl apply -f https://raw.githubusercontent.com/kubernetes-sigs/gateway-api-inference-extension/v1.1.0/config/manifests/vllm/gpu-deployment.yaml --context=CLUSTER1_CONTEXT kubectl apply -f https://raw.githubusercontent.com/kubernetes-sigs/gateway-api-inference-extension/v1.1.0/config/manifests/vllm/gpu-deployment.yaml --context=CLUSTER2_CONTEXTRemplacez les éléments suivants :
CLUSTER1_CONTEXT: contexte du premier cluster, par exemplegke_my-project_europe-west3-c_gke-west.CLUSTER2_CONTEXT: contexte du deuxième cluster (par exemple,gke_my-project_us-east4-a_gke-east).
Déployez les ressources
InferenceObjectivesur les deux clusters. Enregistrez l'exemple de fichier manifeste suivant dans un fichier nomméinference-objective.yaml:apiVersion: inference.networking.x-k8s.io/v1alpha2 kind: InferenceObjective metadata: name: food-review spec: priority: 10 poolRef: name: llama3-8b-instruct group: "inference.networking.k8s.io"Appliquez le fichier manifeste aux deux clusters :
kubectl apply -f inference-objective.yaml --context=CLUSTER1_CONTEXT kubectl apply -f inference-objective.yaml --context=CLUSTER2_CONTEXTRemplacez les éléments suivants :
CLUSTER1_CONTEXT: contexte du premier cluster, par exemplegke_my-project_europe-west3-c_gke-west.CLUSTER2_CONTEXT: contexte du deuxième cluster (par exemple,gke_my-project_us-east4-a_gke-east).
Déployez les ressources
InferencePoolsur les deux clusters à l'aide de Helm :helm install vllm-llama3-8b-instruct \ --kube-context CLUSTER1_CONTEXT \ --set inferencePool.modelServers.matchLabels.app=vllm-llama3-8b-instruct \ --set provider.name=gke \ --version v1.1.0 \ oci://registry.k8s.io/gateway-api-inference-extension/charts/inferencepoolhelm install vllm-llama3-8b-instruct \ --kube-context CLUSTER2_CONTEXT \ --set inferencePool.modelServers.matchLabels.app=vllm-llama3-8b-instruct \ --set provider.name=gke \ --set inferenceExtension.monitoring.gke.enabled=true \ --version v1.1.0 \ oci://registry.k8s.io/gateway-api-inference-extension/charts/inferencepoolRemplacez les éléments suivants :
CLUSTER1_CONTEXT: contexte du premier cluster, par exemplegke_my-project_europe-west3-c_gke-west.CLUSTER2_CONTEXT: contexte du deuxième cluster, par exemplegke_my-project_us-east4-a_gke-east.
Marquez les ressources
InferencePoolcomme exportées sur les deux clusters. Cette annotation permet auInferencePoold'être importé par le cluster de configuration, ce qui est une étape obligatoire pour le routage multicluster.kubectl annotate inferencepool vllm-llama3-8b-instruct networking.gke.io/export="True" \ --context=CLUSTER1_CONTEXTkubectl annotate inferencepool vllm-llama3-8b-instruct networking.gke.io/export="True" \ --context=CLUSTER2_CONTEXTRemplacez les éléments suivants :
CLUSTER1_CONTEXT: contexte du premier cluster, par exemplegke_my-project_europe-west3-c_gke-west.CLUSTER2_CONTEXT: contexte du deuxième cluster, par exemplegke_my-project_us-east4-a_gke-east.
Déployer des ressources sur le cluster de configuration
Pour définir la façon dont le trafic est acheminé et équilibré entre les ressources InferencePool de tous les clusters enregistrés, déployez les ressources Gateway, HTTPRoute et HealthCheckPolicy. Vous ne déployez ces ressources que sur le cluster de configuration désigné, qui est gke-west dans ce document.
Créez un fichier nommé
mcig.yamlavec le contenu suivant :--- apiVersion: gateway.networking.k8s.io/v1 kind: Gateway metadata: name: cross-region-gateway namespace: default spec: gatewayClassName: gke-l7-cross-regional-internal-managed-mc addresses: - type: networking.gke.io/ephemeral-ipv4-address/europe-west3 value: "europe-west3" - type: networking.gke.io/ephemeral-ipv4-address/us-east4 value: "us-east4" listeners: - name: http protocol: HTTP port: 80 --- apiVersion: gateway.networking.k8s.io/v1 kind: HTTPRoute metadata: name: vllm-llama3-8b-instruct-default spec: parentRefs: - name: cross-region-gateway kind: Gateway rules: - backendRefs: - group: networking.gke.io kind: GCPInferencePoolImport name: vllm-llama3-8b-instruct --- apiVersion: networking.gke.io/v1 kind: HealthCheckPolicy metadata: name: health-check-policy namespace: default spec: targetRef: group: "networking.gke.io" kind: GCPInferencePoolImport name: vllm-llama3-8b-instruct default: config: type: HTTP httpHealthCheck: requestPath: /health port: 8000Appliquez le fichier manifeste :
kubectl apply -f mcig.yaml --context=CLUSTER1_CONTEXTRemplacez
CLUSTER1_CONTEXTpar le contexte du premier cluster (le cluster de configuration), par exemplegke_my-project_europe-west3-c_gke-west.
Activer les rapports sur les métriques personnalisées
Pour activer le reporting des métriques personnalisées et améliorer l'équilibrage de charge multirégional, vous devez exporter les métriques d'utilisation du cache KV à partir de tous les clusters. L'équilibreur de charge utilise ces données d'utilisation du cache KV exportées comme signal de charge personnalisé. L'utilisation de ce signal de charge personnalisé permet de prendre des décisions d'équilibrage de charge plus intelligentes en fonction de la charge de travail réelle de chaque cluster.
Créez un fichier nommé
metrics.yamlavec le contenu suivant :apiVersion: autoscaling.gke.io/v1beta1 kind: AutoscalingMetric metadata: name: gpu-cache namespace: default spec: selector: matchLabels: app: vllm-llama3-8b-instruct endpoints: - port: 8000 path: /metrics metrics: - name: vllm:kv_cache_usage_perc # For vLLM versions v0.10.2 and newer exportName: kv-cache - name: vllm:gpu_cache_usage_perc # For vLLM versions v0.6.2 and newer exportName: kv-cache-oldAppliquez la configuration des métriques aux deux clusters :
kubectl apply -f metrics.yaml --context=CLUSTER1_CONTEXT kubectl apply -f metrics.yaml --context=CLUSTER2_CONTEXTRemplacez les éléments suivants :
CLUSTER1_CONTEXT: contexte du premier cluster, par exemplegke_my-project_europe-west3-c_gke-west.CLUSTER2_CONTEXT: contexte du deuxième cluster, par exemplegke_my-project_us-east4-a_gke-east.
Configurer la règle d'équilibrage de charge
Pour optimiser la façon dont vos requêtes d'inférence d'IA/de ML sont distribuées sur vos clusters GKE, configurez une règle d'équilibrage de charge. Choisir le bon mode d'équilibrage permet d'assurer une utilisation efficace des ressources, d'éviter de surcharger les clusters individuels et d'améliorer les performances et la réactivité globales de vos services d'inférence.
Configurer les délais avant expiration
Si vos requêtes sont censées avoir une longue durée, configurez un délai avant expiration plus long pour l'équilibreur de charge. Dans GCPBackendPolicy, définissez le champ timeoutSec sur au moins le double de la latence de requête P99 estimée.
Par exemple, le fichier manifeste suivant définit le délai avant expiration de l'équilibreur de charge sur 100 secondes.
apiVersion: networking.gke.io/v1
kind: GCPBackendPolicy
metadata:
name: my-backend-policy
spec:
targetRef:
group: "networking.gke.io"
kind: GCPInferencePoolImport
name: vllm-llama3-8b-instruct
default:
timeoutSec: 100
balancingMode: CUSTOM_METRICS
trafficDuration: LONG
customMetrics:
- name: gke.named_metrics.kv-cache
dryRun: false
Pour en savoir plus, consultez la section Limites des passerelles multiclusters.
Étant donné que les modes d'équilibrage de charge Métriques personnalisées et Requêtes en cours s'excluent mutuellement, ne configurez qu'un seul de ces modes dans votre GCPBackendPolicy.
Choisissez un mode d'équilibrage de charge pour votre déploiement.
Métriques personnalisées
Pour un équilibrage de charge optimal, commencez par une utilisation cible de 60 %. Pour atteindre cette cible, définissez maxUtilization: 60 dans la configuration customMetrics de votre GCPBackendPolicy.
Créez un fichier nommé
backend-policy.yamlavec le contenu suivant pour activer l'équilibrage de charge basé sur la métrique personnaliséekv-cache:apiVersion: networking.gke.io/v1 kind: GCPBackendPolicy metadata: name: my-backend-policy spec: targetRef: group: "networking.gke.io" kind: GCPInferencePoolImport name: vllm-llama3-8b-instruct default: balancingMode: CUSTOM_METRICS trafficDuration: LONG customMetrics: - name: gke.named_metrics.kv-cache dryRun: false maxUtilization: 60Appliquez la nouvelle règle :
kubectl apply -f backend-policy.yaml --context=CLUSTER1_CONTEXTRemplacez
CLUSTER1_CONTEXTpar le contexte du premier cluster, par exemplegke_my-project-europe-west3-c-gke-west.
Demandes en cours
Pour utiliser le mode d'équilibrage en cours de traitement, estimez le nombre de requêtes en cours de traitement que chaque backend peut gérer et configurez explicitement une valeur de capacité.
Créez un fichier nommé
backend-policy.yamlavec le contenu suivant pour activer l'équilibrage de charge en fonction du nombre de requêtes en cours :kind: GCPBackendPolicy apiVersion: networking.gke.io/v1 metadata: name: my-backend-policy spec: targetRef: group: "networking.gke.io" kind: GCPInferencePoolImport name: vllm-llama3-8b-instruct default: balancingMode: IN_FLIGHT trafficDuration: LONG maxInFlightRequestsPerEndpoint: 1000 dryRun: falseAppliquez la nouvelle règle :
kubectl apply -f backend-policy.yaml --context=CLUSTER1_CONTEXTRemplacez
CLUSTER1_CONTEXTpar le contexte du premier cluster, par exemplegke_my-project_europe-west3-c_gke-west.
Vérifier le déploiement
Pour vérifier l'équilibreur de charge interne, vous devez envoyer des requêtes depuis votre réseau VPC, car les équilibreurs de charge internes utilisent des adresses IP privées. Exécutez un pod temporaire dans l'un des clusters pour envoyer des requêtes depuis votre réseau VPC et vérifier l'équilibreur de charge interne :
Démarrez une session shell interactive dans un pod temporaire :
kubectl run -it --rm --image=curlimages/curl curly --context=CLUSTER1_CONTEXT -- /bin/shRemplacez
CLUSTER1_CONTEXTpar le contexte du premier cluster, par exemplegke_my-project_europe-west3-c_gke-west.À partir du nouveau shell, récupérez l'adresse IP de la passerelle et envoyez une requête de test :
GW_IP=$(kubectl get gateway/cross-region-gateway -n default -o jsonpath='{.status.addresses[0].value}') curl -i -X POST ${GW_IP}:80/v1/completions -H 'Content-Type: application/json' -d '{ "model": "food-review-1", "prompt": "What is the best pizza in the world?", "max_tokens": 100, "temperature": 0 }'Voici un exemple de réponse positive :
{ "id": "cmpl-...", "object": "text_completion", "created": 1704067200, "model": "food-review-1", "choices": [ { "text": "The best pizza in the world is subjective, but many argue for Neapolitan pizza...", "index": 0, "logprobs": null, "finish_reason": "length" } ], "usage": { "prompt_tokens": 10, "completion_tokens": 100, "total_tokens": 110 } }
Étapes suivantes
- En savoir plus sur l'API GKE Gateway
- En savoir plus sur la passerelle d'inférence multiclusters GKE
- En savoir plus sur Multi Cluster Ingress