Contrôler les coûts avec des quotas de jetons
Ce document explique comment définir et gérer des limites quotidiennes pour le nombre de jetons d'entrée et de sortie consommés par les fonctions d'IA générative.Les fonctions d'IA générative de BigQuery utilisent des grands modèles de langage (LLM) pour effectuer des analyses avancées dans vos requêtes SQL. Étant donné que l'utilisation des LLM est généralement facturée en fonction du nombre de jetons traités, BigQuery fournit des quotas de jetons pour vous aider à gérer et à contrôler les coûts associés à l'utilisation de ces fonctions.
Les quotas de jetons s'appliquent aux fonctions SQL BigQuery conçues pour les tâches d'inférence d'IA générative qui utilisent des LLM Gemini, telles que les fonctions AI.CLASSIFY et AI.GENERATE_TEXT. Les quotas de jetons ne s'appliquent pas aux fonctions de génération d'embeddings et de recherche sémantique, telles que AI.EMBED, qui ont des structures de facturation différentes.
Détails des quotas
BigQuery fournit les quotas quotidiens suivants en fonction de l'utilisation des jetons LLM. L'utilisation des jetons est directement liée à votre facturation Vertex AI pour les fonctions d'IA générative BigQuery qui utilisent des modèles Gemini. Ces quotas sont suivis de manière globale dans toutes les régions. Les quotas quotidiens sont réinitialisés à minuit, heure du Pacifique.
Ces quotas de jetons régissent le nombre de jetons d'entrée et de sortie traités par les LLM pour les fonctions d'IA générative :
- Jetons d'entrée : jetons envoyés au modèle pour traitement. Cela inclut les jetons du texte de la requête et toutes les autres données fournies au modèle en entrée.
- Jetons de sortie : jetons générés par le modèle dans sa réponse. Cela inclut les jetons dans le texte généré (jetons candidats) et les jetons générés lors des étapes de raisonnement interne (jetons de réflexion).
| Quota | ID de métrique et de quota | Par défaut | Remarques |
|---|---|---|---|
| Jetons d'entrée d'IA par jour |
Métrique : bigquery.googleapis.com/quota/query/ai_input_tokensID de quota : GenAiInputTokensPerDay
|
200 000 000 000 | Jetons d'entrée utilisés par le LLM. S'applique par jour et par projet. |
| Jetons d'entrée d'IA par jour et par utilisateur |
Métrique : bigquery.googleapis.com/quota/query/ai_input_tokensID de quota : GenAiInputTokensPerUserPerDay
|
150 000 000 000 | Jetons d'entrée utilisés par le LLM. S'applique par jour, par projet et par utilisateur. |
| Jetons de sortie d'IA par jour |
Métrique : bigquery.googleapis.com/quota/query/ai_output_tokensID de quota : GenAiOutputTokensPerDay
|
20 000 000 000 | Jetons de sortie et de pensée utilisés par le LLM. S'applique par jour et par projet. |
| Jetons de sortie d'IA par jour et par utilisateur |
Métrique : bigquery.googleapis.com/quota/query/ai_output_tokensID de quota : GenAiOutputTokensPerUserPerDay
|
15 000 000 000 | Jetons de sortie et de pensée utilisés par le LLM. S'applique par jour, par projet et par utilisateur. |
Ces quotas sont suivis par incréments de millions de jetons. Bien que vous puissiez définir des limites précises, les valeurs inférieures à quelques millions de jetons peuvent ne pas être reflétées avec une précision parfaite en raison de la nature des rapports et de l'agrégation des jetons.
Les jetons mis en cache ne sont pas comptabilisés dans les quotas.
Avant de commencer
Si vous utilisez la Google Cloud CLI, les bibliothèques clientes de l'API Cloud Quotas ou Terraform pour gérer les quotas de jetons de manière programmatique, activez l'API Cloud Quotas (cloudquotas.googleapis.com) sur votre projet Google Cloud :
gcloud services enable cloudquotas.googleapis.com --project=PROJECT_ID
Remplacez PROJECT_ID par l'ID du projet Google Cloud .
Rôles requis
Pour obtenir les autorisations nécessaires pour afficher et mettre à jour les quotas de jetons, demandez à votre administrateur de vous accorder le rôle IAM Administrateur Cloud Quotas (roles/cloudquotas.admin) sur votre projet.
Pour en savoir plus sur l'attribution de rôles, consultez Gérer l'accès aux projets, aux dossiers et aux organisations.
Ce rôle prédéfini contient les autorisations requises pour afficher et mettre à jour les quotas de jetons. Pour connaître les autorisations exactes requises, développez la section Autorisations requises :
Autorisations requises
Les autorisations suivantes sont requises pour afficher et mettre à jour les quotas de jetons :
-
cloudquotas.quotas.get -
cloudquotas.quotas.update
Vous pouvez également obtenir ces autorisations avec des rôles personnalisés ou d'autres rôles prédéfinis.
Gérer les quotas
Selon l'utilisation de vos ressources, vous pouvez afficher ou ajuster les valeurs de quota de jetons à la hausse ou à la baisse :
- Si vos charges de travail nécessitent une capacité supérieure à la limite par défaut, vous pouvez demander une augmentation de quota.
- Si vous souhaitez limiter plus strictement votre utilisation pour éviter les dépassements de budget, vous pouvez créer un remplacement de quota pour plafonner votre utilisation.
Pour afficher et mettre à jour vos quotas de jetons quotidiens, sélectionnez l'une des options suivantes :
Console
Dans la console Google Cloud , accédez à la page IAM et administration > Quotas et limites du système.
Filtrez les quotas en saisissant
Service: BigQuery API.Recherchez un quota spécifique dans la liste des quotas, par exemple Jetons d'entrée d'IA par jour (
GenAiInputTokensPerDay), ou triez la colonne Nom pour placer les quotas de jetons d'IA en haut de la liste.Cliquez sur more_vert Autres actions > Modifier le quota.
Pour augmenter ou diminuer le quota, dans le volet Modifications de quota, saisissez une nouvelle valeur dans le champ Nouvelle valeur, puis cliquez sur OK. La réduction d'un quota prend effet immédiatement, sans nécessiter d'approbation.
Cliquez sur Envoyer la requête.
gcloud
Lorsque vous gérez les quotas de jetons avec la gcloud CLI, spécifiez bigquery.googleapis.com comme nom de service et utilisez les ID de quota suivants (sensibles à la casse) :
- Jetons d'entrée d'IA par jour :
GenAiInputTokensPerDay - Jetons d'entrée d'IA par jour et par utilisateur :
GenAiInputTokensPerUserPerDay - Jetons de sortie d'IA par jour :
GenAiOutputTokensPerDay - Jetons de sortie d'IA par jour et par utilisateur :
GenAiOutputTokensPerUserPerDay
Facultatif : Pour lister les quotas de jetons d'IA générative BigQuery et leurs valeurs actuelles, utilisez
gcloud quotas info list:gcloud quotas info list \ --service=bigquery.googleapis.com \ --project=PROJECT_ID \ --filter="quotaId:GenAi*"Pour créer ou mettre à jour les préférences de quota pour vos limites de jetons quotidiennes, utilisez
gcloud quotas preferences update. L'exemple suivant vérifie si une préférence de quota existe déjà pour chaque quota (par exemple, s'il a déjà été modifié dans la consoleGoogle Cloud ) et met à jour ou crée la préférence :PROJECT_ID="PROJECT_ID" for ITEM in \ "GenAiInputTokensPerDay:INPUT_TOKEN_LIMIT" \ "GenAiOutputTokensPerDay:OUTPUT_TOKEN_LIMIT"; do QUOTA_ID="${ITEM%:*}" NEW_LIMIT="${ITEM#*:}" PREF_ID=$(gcloud quotas preferences list \ --project="${PROJECT_ID}" \ --filter="quotaId:${QUOTA_ID}" \ --format="value(name.basename())") PREF_ID="${PREF_ID:-custom-${QUOTA_ID}}" gcloud quotas preferences update "${PREF_ID}" \ --project="${PROJECT_ID}" \ --service=bigquery.googleapis.com \ --quota-id="${QUOTA_ID}" \ --preferred-value="${NEW_LIMIT}" \ --allow-high-percentage-quota-decrease \ --allow-missing doneRemplacez les éléments suivants :
PROJECT_ID: ID de votre projet Google Cloud .INPUT_TOKEN_LIMIT: votre limite quotidienne de jetons d'entrée cible (par exemple,754000000).OUTPUT_TOKEN_LIMIT: limite de jetons de sortie quotidienne cible (par exemple,8000000).
Vous pouvez également inclure les options facultatives suivantes avec
gcloud quotas preferences update:--allow-quota-decrease-below-usage: permet de réduire une limite de quota en dessous de votre utilisation actuelle pour la journée.--email: spécifie une adresse e-mail de contact, qui est requise lorsque vous demandez une augmentation de quota au-delà de la limite par défaut.--justification: indique la raison de l'ajustement du quota.
Pour vérifier l'état de vos préférences de quota, utilisez
gcloud quotas preferences list:gcloud quotas preferences list \ --project=PROJECT_ID \ --filter="quotaId:GenAiInputTokensPerDay OR quotaId:GenAiOutputTokensPerDay"Lorsque
reconcilingest défini surfalse, la valeur degrantedValueest appliquée de manière active.
Python
Lorsque vous gérez des quotas de jetons avec la bibliothèque cliente Cloud Quotas pour Python, spécifiez bigquery.googleapis.com comme nom de service et utilisez les ID de quota suivants (sensibles à la casse) :
- Jetons d'entrée d'IA par jour :
GenAiInputTokensPerDay - Jetons d'entrée d'IA par jour et par utilisateur :
GenAiInputTokensPerUserPerDay - Jetons de sortie d'IA par jour :
GenAiOutputTokensPerDay - Jetons de sortie d'IA par jour et par utilisateur :
GenAiOutputTokensPerUserPerDay
Installez la bibliothèque cliente Cloud Quotas pour Python :
pip install --user google-cloud-quotasPour vérifier les ressources de préférence de quota existantes et créer ou mettre à jour vos limites de jetons quotidiennes, exécutez le script Python suivant :
from google.cloud import cloudquotas_v1 PROJECT_ID = "PROJECT_ID" QUOTA_LIMITS = { "GenAiInputTokensPerDay": INPUT_TOKEN_LIMIT, "GenAiOutputTokensPerDay": OUTPUT_TOKEN_LIMIT, } # Initialize the client with quota_project_id (required by the Cloud Quotas API). client = cloudquotas_v1.CloudQuotasClient( client_options={"quota_project_id": PROJECT_ID} ) parent = f"projects/{PROJECT_ID}/locations/global" for quota_id, new_limit in QUOTA_LIMITS.items(): # Check for an existing preference ID, or fall back to a default name. list_request = cloudquotas_v1.ListQuotaPreferencesRequest( parent=parent, filter=f"quotaId:{quota_id}", ) prefs = list(client.list_quota_preferences(request=list_request)) pref_name = ( prefs[0].name if prefs else f"{parent}/quotaPreferences/custom-{quota_id}" ) # Update the existing preference or create it if missing (allow_missing=True). update_request = cloudquotas_v1.UpdateQuotaPreferenceRequest( quota_preference=cloudquotas_v1.QuotaPreference( name=pref_name, service="bigquery.googleapis.com", quota_id=quota_id, quota_config=cloudquotas_v1.QuotaConfig(preferred_value=new_limit), ), allow_missing=True, ignore_safety_checks=[ cloudquotas_v1.QuotaSafetyCheck.QUOTA_DECREASE_PERCENTAGE_TOO_HIGH ], ) response = client.update_quota_preference(request=update_request) print(f"Quota ID: {quota_id}") print(f"Preference Name: {response.name}") print(f"Preferred Value: {response.quota_config.preferred_value}") print(f"Granted Value: {response.quota_config.granted_value}") print(f"Reconciling: {response.reconciling}\n")Remplacez les éléments suivants :
PROJECT_ID: ID de votre projet Google Cloud .INPUT_TOKEN_LIMIT: limite quotidienne de jetons d'entrée cible sous forme d'entier (par exemple,754000000).OUTPUT_TOKEN_LIMIT: limite de jetons de sortie quotidienne cible sous forme d'entier (par exemple,8000000).
Terraform
Lorsque vous gérez les quotas de jetons avec Terraform, spécifiez bigquery.googleapis.com comme nom de service et utilisez les ID de quota suivants (sensibles à la casse) :
- Jetons d'entrée d'IA par jour :
GenAiInputTokensPerDay - Jetons d'entrée d'IA par jour et par utilisateur :
GenAiInputTokensPerUserPerDay - Jetons de sortie d'IA par jour :
GenAiOutputTokensPerDay - Jetons de sortie d'IA par jour et par utilisateur :
GenAiOutputTokensPerUserPerDay
Vérifiez si des préférences de quota existent déjà dans votre projet. Cloud Quotas n'autorise qu'une seule ressource de préférence par quota sur un projet. Si un quota a déjà été modifié dans la consoleGoogle Cloud ou un autre outil, vous devez utiliser son ID de préférence existant :
gcloud quotas preferences list \ --project=PROJECT_ID \ --filter="quotaId:GenAiInputTokensPerDay OR quotaId:GenAiOutputTokensPerDay" \ --format="table(quotaId, name.basename():label=PREFERENCE_ID, quotaConfig.preferredValue)"Pour configurer vos limites de jetons quotidiennes dans votre configuration Terraform (par exemple,
main.tf), utilisez la ressourcegoogle_cloud_quotas_quota_preference:terraform { required_providers { google = { source = "hashicorp/google" version = ">= 5.30.0" } } } locals { project_id = "PROJECT_ID" # If you previously modified a quota in the console or another # tool, replace `name` with the existing PREFERENCE_ID from # `gcloud quotas preferences list` and uncomment the `import` block. bq_genai_quotas = { GenAiInputTokensPerDay = { name = "custom-GenAiInputTokensPerDay" preferred_value = "INPUT_TOKEN_LIMIT" # Default: 200,000,000,000 } GenAiOutputTokensPerDay = { name = "custom-GenAiOutputTokensPerDay" preferred_value = "OUTPUT_TOKEN_LIMIT" # Default: 20,000,000,000 } } } # If quota preferences already exist on your project, uncomment this `import` # block so that Terraform imports the existing preferences instead of # attempting to create duplicates. # # import { # for_each = local.bq_genai_quotas # to = google_cloud_quotas_quota_preference.bq_genai[each.key] # id = "projects/${local.project_id}/locations/global/quotaPreferences/${each.value.name}" # } resource "google_cloud_quotas_quota_preference" "bq_genai" { for_each = local.bq_genai_quotas parent = "projects/${local.project_id}" name = each.value.name service = "bigquery.googleapis.com" quota_id = each.key justification = "Managing BigQuery GenAI daily token budget" # Allows decreases greater than 10% when setting a stricter cost cap. ignore_safety_checks = "QUOTA_DECREASE_PERCENTAGE_TOO_HIGH" quota_config { preferred_value = each.value.preferred_value } } output "quota_status" { value = { for k, v in google_cloud_quotas_quota_preference.bq_genai : k => { preferred_value = v.quota_config[0].preferred_value granted_value = v.quota_config[0].granted_value reconciling = v.reconciling } } }Remplacez les éléments suivants :
PROJECT_ID: ID de votre projet Google Cloud .INPUT_TOKEN_LIMIT: votre limite quotidienne de jetons d'entrée cible (par exemple,754000000).OUTPUT_TOKEN_LIMIT: limite de jetons de sortie quotidienne cible (par exemple,8000000).
Initialisez et appliquez votre configuration Terraform :
terraform init terraform apply
Surveiller les quotas
Pour éviter les échecs de requêtes inattendus, détecter les pics d'utilisation et gérer les coûts, surveillez votre consommation de quota de jetons dans la console Google Cloud en procédant comme suit :
Dans la console Google Cloud , accédez à la page IAM et administration > Quotas et limites du système.
Filtrez les quotas en saisissant
Service: BigQuery API.Consultez les colonnes Pourcentage d'utilisation actuel et Utilisation actuelle pour vérifier la consommation quotidienne de jetons de votre projet pour les quotas Jetons d'entrée d'IA par jour (
GenAiInputTokensPerDay) et Jetons de sortie d'IA par jour (GenAiOutputTokensPerDay).Pour afficher l'historique de la consommation de jetons au fil du temps, dans la ligne d'un quota de jetons au niveau du projet, cliquez sur monitoring Afficher le graphique d'utilisation.
La fiche d'utilisation affiche la limite configurée, le pourcentage d'utilisation actuel et le pourcentage d'utilisation maximal, ainsi qu'un graphique de l'historique de consommation pour les périodes sélectionnables de 7 jours, 14 jours, 30 jours et Personnalisé :
Facultatif : Configurez des alertes d'utilisation de quota de base pour être averti par e-mail, SMS ou Pub/Sub lorsque la consommation de jetons atteint un pourcentage spécifié de votre limite quotidienne.
Facultatif : Créez des graphiques dans Cloud Monitoring pour visualiser les tendances d'utilisation des jetons et créer des tableaux de bord personnalisés. Pour en savoir plus sur la surveillance des quotas et la configuration des règles d'alerte, consultez Configurer des alertes de quota et une surveillance.
Pour estimer l'utilisation des jetons d'entrée avant d'exécuter une requête, utilisez la fonction AI.COUNT_TOKENS.
Vous pouvez également afficher le nombre de jetons traités par une requête individuelle dans l'onglet Informations sur le job du volet Résultats de la requête.
Comportement d'application des quotas
BigQuery surveille votre consommation de jetons à plusieurs étapes de l'exécution de la requête :
- Vérification avant exécution : BigQuery vérifie le quota de jetons disponible avant d'exécuter une requête contenant des fonctions d'IA générative. Si le quota concerné (par exemple, les jetons d'entrée quotidiens du projet) est déjà épuisé, la requête est rejetée avec une erreur
QuotaExceeded. - Pendant l'exécution : si une requête est en cours d'exécution et consomme des jetons de manière à épuiser l'un des quotas configurés (entrée ou sortie, par projet ou par utilisateur), les nouveaux appels de LLM dans cette requête sont rejetés.
- Toutes les lignes restantes qui dépendent d'appels de LLM rencontrent une erreur d'épuisement du quota.
- Le résultat de la requête dépend de l'argument
max_error_ratios'il est utilisé dans des fonctions telles queAI.IF. Si le taux d'erreur reste dans la limite autorisée, des résultats partiels peuvent être renvoyés. Sinon, l'ensemble de la requête échoue. - Les requêtes suivantes qui tentent d'utiliser des fonctions d'IA générative échoueront avec une erreur
QuotaExceededjusqu'à la réinitialisation du quota quotidien.
Remarques importantes
- Quotas globaux : les quotas définis sont globaux. L'utilisation des jetons est agrégée dans toutes les régions où votre projet est actif, ce qui fournit un mécanisme unifié de contrôle des coûts. Cela permet d'éviter des frais inattendus liés à l'utilisation dans différentes régions.
- Débit provisionné : si vous utilisez des modèles Gemini Enterprise Agent Platform avec un débit provisionné, la facturation n'est pas basée sur l'utilisation des jetons. Vous devez définir ces quotas de jetons BigQuery sur une valeur élevée pour éviter de bloquer inutilement vos requêtes.
- Contrôle de sécurité de la réduction des quotas : par défaut, l'API Cloud Quotas bloque toute mise à jour programmatique qui réduit une limite de quota effective de plus de 10 % à la fois. Étant donné que les limites de jetons par défaut se comptent en centaines de milliards, la définition d'un plafond quotidien plus strict dépasse généralement une réduction de 10 % et échoue avec une erreur
QUOTA_DECREASE_PERCENTAGE_TOO_HIGH, sauf si vous ignorez cette vérification de sécurité :- gcloud CLI : incluez l'option
--allow-high-percentage-quota-decrease. - Bibliothèque cliente Python : transmettez
ignore_safety_checks=[cloudquotas_v1.QuotaSafetyCheck.QUOTA_DECREASE_PERCENTAGE_TOO_HIGH]. - Terraform : définissez
ignore_safety_checks = "QUOTA_DECREASE_PERCENTAGE_TOO_HIGH".
- gcloud CLI : incluez l'option
Étapes suivantes
- En savoir plus sur l'optimisation des coûts des fonctions AI
- Consultez la présentation de l'IA générative dans BigQuery.
- Découvrez comment configurer des alertes de quota et une surveillance.