Kosten mit Tokenkontingenten kontrollieren

In diesem Dokument wird beschrieben, wie Sie Tageslimits für die Anzahl der Eingabe- und Ausgabetokens festlegen und verwalten können, die von generativen KI-Funktionen verbraucht werden.

BigQuery-Funktionen für generative KI verwenden Large Language Models (LLMs), um erweiterte Analysen in Ihren SQL-Abfragen durchzuführen. Da die LLM-Nutzung in der Regel auf der Grundlage der Anzahl der verarbeiteten Tokens abgerechnet wird, bietet BigQuery Tokenkontingente, mit denen Sie die Kosten für die Nutzung dieser Funktionen verwalten und kontrollieren können.

Die Tokenkontingente gelten für BigQuery-SQL-Funktionen, die für generative KI-Inferenzaufgaben mit Gemini-LLMs entwickelt wurden, z. B. die Funktionen AI.CLASSIFY und AI.GENERATE_TEXT. Die Tokenkontingente gelten nicht für Funktionen zur Einbettungsgenerierung und semantischen Suche wie AI.EMBED, die andere Abrechnungsstrukturen haben.

Kontingentdetails

BigQuery bietet die folgenden täglichen Kontingente basierend auf der LLM-Tokennutzung. Die Tokennutzung korreliert direkt mit Ihrer Vertex AI-Abrechnung für generative BigQuery-KI-Funktionen, die Gemini-Modelle verwenden. Diese Kontingente werden global über alle Regionen hinweg erfasst. Die Kontingente werden jeden Tag um Mitternacht (Pacific Standard Time) zurückgesetzt.

Diese Tokenkontingente regeln die Anzahl der Eingabe- und Ausgabetokens, die von den LLMs für generative KI-Funktionen verarbeitet werden:

  • Eingabetokens: Tokens, die zur Verarbeitung an das Modell gesendet werden. Dazu gehören Tokens im Prompt-Text und alle anderen Daten, die dem Modell als Eingabe bereitgestellt werden.
  • Ausgabetokens: Tokens, die vom Modell in seiner Antwort generiert werden. Dazu gehören Tokens im generierten Text (Kandidatentokens) und Tokens, die während interner Begründungsschritte generiert werden (Denktokens).

Kontingent Messwert- und Kontingent-ID Standard Hinweise
KI-Eingabetokens pro Tag Messwert: bigquery.googleapis.com/quota/query/ai_input_tokens

Kontingent-ID: GenAiInputTokensPerDay
200.000.000.000 Vom LLM verwendete Eingabe-Tokens. Gilt pro Tag und Projekt.
KI-Eingabetokens pro Tag und Nutzer Messwert: bigquery.googleapis.com/quota/query/ai_input_tokens

Kontingent-ID: GenAiInputTokensPerUserPerDay
150.000.000.000 Vom LLM verwendete Eingabe-Tokens. Gilt pro Tag, Projekt und Nutzer.
KI-Ausgabetokens pro Tag Messwert: bigquery.googleapis.com/quota/query/ai_output_tokens

Kontingent-ID: GenAiOutputTokensPerDay
20.000.000.000 Vom LLM verwendete Ausgabe- und Thought-Tokens. Gilt pro Tag und Projekt.
KI-Ausgabetokens pro Tag und Nutzer Messwert: bigquery.googleapis.com/quota/query/ai_output_tokens

Kontingent-ID: GenAiOutputTokensPerUserPerDay
15.000.000.000 Vom LLM verwendete Ausgabe- und Thought-Tokens. Gilt pro Tag, Projekt und Nutzer.

Diese Kontingente werden in Schritten von Millionen von Tokens erfasst. Sie können zwar genaue Limits festlegen, Werte unter einigen Millionen Tokens werden jedoch aufgrund der Art der Tokenberichte und -aggregation möglicherweise nicht mit perfekter Genauigkeit wiedergegeben.

Im Cache gespeicherte Tokens werden nicht auf die Kontingente angerechnet.

Hinweis

Wenn Sie die Google Cloud CLI, die Cloud Quotas API-Clientbibliotheken oder Terraform verwenden, um Tokenkontingente programmatisch zu verwalten, aktivieren Sie die Cloud Quotas API (cloudquotas.googleapis.com) in Ihrem Google Cloud-Projekt:

gcloud services enable cloudquotas.googleapis.com --project=PROJECT_ID

Ersetzen Sie dabei PROJECT_ID durch die ID Ihres Projekts in Google Cloud .

Erforderliche Rollen

Bitten Sie Ihren Administrator, Ihnen die IAM-Rolle Cloud-Kontingente-Administrator (roles/cloudquotas.admin) für Ihr Projekt zuzuweisen, um die Berechtigungen zu erhalten, die Sie zum Aufrufen und Aktualisieren von Tokenkontingenten benötigen. Weitere Informationen zum Zuweisen von Rollen finden Sie unter Zugriff auf Projekte, Ordner und Organisationen verwalten.

Diese vordefinierte Rolle enthält die Berechtigungen, die zum Aufrufen und Aktualisieren von Tokenkontingenten erforderlich sind. Maximieren Sie den Abschnitt Erforderliche Berechtigungen, um die notwendigen Berechtigungen anzuzeigen:

Erforderliche Berechtigungen

Die folgenden Berechtigungen sind erforderlich, um Tokenkontingente aufzurufen und zu aktualisieren:

  • cloudquotas.quotas.get
  • cloudquotas.quotas.update

Sie können diese Berechtigungen auch mit benutzerdefinierten Rollen oder anderen vordefinierten Rollen erhalten.

Kontingente verwalten

Je nach Ressourcennutzung möchten Sie die Tokenkontingentwerte möglicherweise nach oben oder unten anpassen:

Wählen Sie eine der folgenden Optionen aus, um Ihre täglichen Tokenkontingente aufzurufen und zu aktualisieren:

Console

  1. Rufen Sie in der Google Cloud Console die Seite IAM & Verwaltung > Kontingente und Systemlimits auf.

    Zur Seite „Kontingente und Systemlimits“

  2. Filtern Sie die Kontingente, indem Sie Service: BigQuery API eingeben.

  3. Suchen Sie in der Liste der Kontingente nach einem bestimmten Kontingent, z. B. KI-Eingabetokens pro Tag (GenAiInputTokensPerDay), oder sortieren Sie die Spalte Name, um die KI-Tokenkontingente ganz oben in der Liste anzuzeigen.

  4. Klicken Sie auf more_vert Weitere Aktionen > Kontingent bearbeiten.

  5. Wenn Sie das Kontingent erhöhen oder verringern möchten, geben Sie im Bereich Kontingentänderungen im Feld Neuer Wert einen neuen Wert ein und klicken Sie dann auf Fertig. Das Herabsetzen eines Kontingents wird sofort wirksam, ohne dass eine Genehmigung erforderlich ist.

  6. Klicken Sie auf Anfrage senden.

gcloud

Wenn Sie Tokenkontingente mit der gcloud CLI verwalten, geben Sie bigquery.googleapis.com als Dienstnamen an und verwenden Sie die folgenden Kontingent-IDs, bei denen die Groß-/Kleinschreibung beachtet werden muss:

  • KI-Eingabetokens pro Tag: GenAiInputTokensPerDay
  • KI-Eingabetokens pro Tag und Nutzer: GenAiInputTokensPerUserPerDay
  • KI-Ausgabetokens pro Tag: GenAiOutputTokensPerDay
  • KI-Ausgabetokens pro Tag und Nutzer: GenAiOutputTokensPerUserPerDay
  1. Optional: Wenn Sie die BigQuery-Kontingente für generative KI-Tokens und ihre aktuellen Werte auflisten möchten, verwenden Sie gcloud quotas info list:

    gcloud quotas info list \
        --service=bigquery.googleapis.com \
        --project=PROJECT_ID \
        --filter="quotaId:GenAi*"
    
  2. Wenn Sie Kontingenteinstellungen für Ihre täglichen Tokenlimits erstellen oder aktualisieren möchten, verwenden Sie gcloud quotas preferences update. Im folgenden Beispiel wird geprüft, ob für jedes Kontingent bereits eine Kontingenteinstellung vorhanden ist (z. B. wenn sie zuvor in derGoogle Cloud Console geändert wurde). Die Einstellung wird dann aktualisiert oder erstellt:

    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
    done
    

    Ersetzen Sie Folgendes:

    • PROJECT_ID: Projekt-ID in Google Cloud .
    • INPUT_TOKEN_LIMIT: Ihr tägliches Ziel-Eingabetokenlimit (z. B. 754000000).
    • OUTPUT_TOKEN_LIMIT: Ihr Ziel für das tägliche Ausgabelimit für Tokens (z. B. 8000000).

    Sie können auch die folgenden optionalen Flags mit gcloud quotas preferences update einfügen:

    • --allow-quota-decrease-below-usage: Ermöglicht das Senken eines Kontingentlimits unter Ihre aktuelle Nutzung für den Tag.
    • --email: Gibt eine Kontakt-E-Mail-Adresse an, die erforderlich ist, wenn Sie eine Kontingenterhöhung über das Standardlimit hinaus beantragen.
    • --justification: Gibt einen Grund für die Kontingentanpassung an.
  3. So prüfen Sie den Status Ihrer Kontingenteinstellungen mit gcloud quotas preferences list:

    gcloud quotas preferences list \
        --project=PROJECT_ID \
        --filter="quotaId:GenAiInputTokensPerDay OR quotaId:GenAiOutputTokensPerDay"
    

    Wenn reconciling den Wert false hat, wird der Wert in grantedValue aktiv erzwungen.

Python

Wenn Sie Tokenkontingente mit der Cloud Quotas-Clientbibliothek für Python verwalten, geben Sie bigquery.googleapis.com als Dienstnamen an und verwenden Sie die folgenden Kontingent-IDs (Groß-/Kleinschreibung beachten):

  • KI-Eingabetokens pro Tag: GenAiInputTokensPerDay
  • KI-Eingabetokens pro Tag und Nutzer: GenAiInputTokensPerUserPerDay
  • KI-Ausgabetokens pro Tag: GenAiOutputTokensPerDay
  • KI-Ausgabetokens pro Tag und Nutzer: GenAiOutputTokensPerUserPerDay
  1. Installieren Sie die Cloud Quotas-Clientbibliothek für Python:

    pip install --user google-cloud-quotas
    
  2. Führen Sie das folgende Python-Skript aus, um nach vorhandenen Ressourcen für Kontingenteinstellungen zu suchen und Ihre täglichen Tokenlimits zu erstellen oder zu aktualisieren:

    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")
    

    Ersetzen Sie Folgendes:

    • PROJECT_ID: Projekt-ID in Google Cloud .
    • INPUT_TOKEN_LIMIT: Ihr tägliches Ziel-Eingabe-Tokenlimit als Ganzzahl (z. B. 754000000).
    • OUTPUT_TOKEN_LIMIT: Ihr Ziel-Tokenlimit für die tägliche Ausgabe als Ganzzahl (z. B. 8000000).

Terraform

Wenn Sie Tokenkontingente mit Terraform verwalten, geben Sie bigquery.googleapis.com als Dienstnamen an und verwenden Sie die folgenden Kontingent-IDs (Groß-/Kleinschreibung beachten):

  • KI-Eingabetokens pro Tag: GenAiInputTokensPerDay
  • KI-Eingabetokens pro Tag und Nutzer: GenAiInputTokensPerUserPerDay
  • KI-Ausgabetokens pro Tag: GenAiOutputTokensPerDay
  • KI-Ausgabetokens pro Tag und Nutzer: GenAiOutputTokensPerUserPerDay
  1. Prüfen Sie, ob für Ihr Projekt bereits Kontingenteinstellungen vorhanden sind. Cloud-Kontingente lassen nur eine Präferenzressource pro Kontingent in einem Projekt zu. Wenn ein Kontingent zuvor in derGoogle Cloud Console oder einem anderen Tool geändert wurde, müssen Sie die vorhandene Präferenz-ID verwenden:

    gcloud quotas preferences list \
        --project=PROJECT_ID \
        --filter="quotaId:GenAiInputTokensPerDay OR quotaId:GenAiOutputTokensPerDay" \
        --format="table(quotaId, name.basename():label=PREFERENCE_ID, quotaConfig.preferredValue)"
    
  2. Wenn Sie die täglichen Tokenlimits in Ihrer Terraform-Konfiguration (z. B. main.tf) konfigurieren möchten, verwenden Sie die Ressource google_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
        }
      }
    }
    

    Ersetzen Sie Folgendes:

    • PROJECT_ID: Projekt-ID in Google Cloud .
    • INPUT_TOKEN_LIMIT: Ihr tägliches Ziel-Eingabetokenlimit (z. B. 754000000).
    • OUTPUT_TOKEN_LIMIT: Ihr Ziel für das tägliche Ausgabelimit für Tokens (z. B. 8000000).
  3. Initialisieren Sie Ihre Terraform-Konfiguration und wenden Sie sie an:

    terraform init
    terraform apply
    

Kontingente überwachen

Um unerwartete Abfragefehler zu vermeiden, Nutzungsspitzen zu erkennen und Kosten zu verwalten, sollten Sie den Verbrauch Ihres Tokenkontingents in der Google Cloud Console überwachen. Gehen Sie dazu so vor:

  1. Rufen Sie in der Google Cloud Console die Seite IAM & Verwaltung > Kontingente und Systemlimits auf.

    Zur Seite „Kontingente und Systemlimits“

  2. Filtern Sie die Kontingente, indem Sie Service: BigQuery API eingeben.

  3. In den Spalten Aktuelle Nutzung in Prozent und Aktuelle Nutzung können Sie den täglichen Tokenverbrauch Ihres Projekts für die Kontingente KI-Eingabetokens pro Tag (GenAiInputTokensPerDay) und KI-Ausgabetokens pro Tag (GenAiOutputTokensPerDay) einsehen.

  4. Wenn Sie den bisherigen Tokenverbrauch im Zeitverlauf ansehen möchten, klicken Sie in der Zeile für ein Tokenkontingent auf Projektebene auf Monitoring Nutzungsdiagramm anzeigen.

    Auf der Nutzungskarte werden das konfigurierte Limit, der aktuelle Nutzungsprozentsatz und der Prozentsatz der Spitzennutzung angezeigt. Außerdem sehen Sie ein Diagramm zum bisherigen Verbrauch für die auswählbaren Zeiträume 7 Tage, 14 Tage, 30 Tage und Benutzerdefiniert:

    Nutzungsdiagramm für das Kontingent „KI-Eingabetokens pro Tag“ in der Google Cloud Console.

  5. Optional: Richten Sie grundlegende Benachrichtigungen zur Kontingentnutzung ein, um per E-Mail, SMS oder Pub/Sub benachrichtigt zu werden, wenn der Tokenverbrauch einen bestimmten Prozentsatz Ihres Tageslimits erreicht.

  6. Optional: Erstellen Sie Diagramme in Cloud Monitoring, um Trends bei der Tokennutzung zu visualisieren und benutzerdefinierte Dashboards zu erstellen. Weitere Informationen zum Überwachen von Kontingenten und zum Konfigurieren von Benachrichtigungsrichtlinien finden Sie unter Kontingentbenachrichtigungen und -monitoring einrichten.

Wenn Sie die Nutzung von Eingabe-Tokens vor dem Ausführen einer Abfrage schätzen möchten, verwenden Sie die Funktion AI.COUNT_TOKENS. Sie können sich auch die Anzahl der von einer einzelnen Abfrage verarbeiteten Tokens auf dem Tab Jobinformationen im Bereich Abfrageergebnisse ansehen.

Verhalten bei Kontingenterzwingung

BigQuery überwacht Ihren Tokenverbrauch in mehreren Phasen der Abfrageausführung:

  • Prüfung vor der Ausführung: BigQuery prüft das verfügbare Tokenkontingent, bevor eine Abfrage mit generativen KI-Funktionen ausgeführt wird. Wenn das entsprechende Kontingent (z. B. tägliche Eingabetokens für das Projekt) bereits erschöpft ist, wird die Abfrage mit dem Fehler QuotaExceeded abgelehnt.
  • Während der Ausführung: Wenn eine Abfrage ausgeführt wird und Tokens verbraucht, sodass eines der konfigurierten Kontingente (Eingabe oder Ausgabe, pro Projekt oder pro Nutzer) erschöpft ist, werden neue LLM-Aufrufe innerhalb dieser Abfrage abgelehnt.
    • Bei allen verbleibenden Zeilen, die von LLM-Aufrufen abhängen, tritt ein Fehler aufgrund eines erschöpften Kontingents auf.
    • Das Ergebnis der Abfrage hängt vom Argument max_error_ratio ab, wenn es in Funktionen wie AI.IF verwendet wird. Wenn die Fehlerquote innerhalb des zulässigen Limits bleibt, werden möglicherweise Teilergebnisse zurückgegeben. Andernfalls schlägt die gesamte Abfrage fehl.
    • Nachfolgende Abfragen, die versuchen, generative KI-Funktionen zu verwenden, schlagen mit dem Fehler QuotaExceeded fehl, bis das tägliche Kontingent zurückgesetzt wird.

Was Sie bedenken sollten

  • Globale Kontingente: Die definierten Kontingente sind global. Die Tokennutzung wird über alle Regionen hinweg aggregiert, in denen Ihr Projekt ausgeführt wird. So erhalten Sie einen einheitlichen Mechanismus zur Kostenkontrolle. So werden unerwartete Kosten durch die Nutzung in verschiedenen Regionen vermieden.
  • Bereitgestellter Durchsatz: Wenn Sie Modelle der Gemini Enterprise Agent Platform mit bereitgestelltem Durchsatz verwenden, basiert die Abrechnung nicht auf der Tokennutzung. Sie sollten diese BigQuery-Tokenkontingente auf einen hohen Wert festlegen, um zu vermeiden, dass Ihre Abfragen unnötig blockiert werden.
  • Sicherheitsprüfung für Kontingentreduzierung: Standardmäßig blockiert die Cloud Quotas API alle programmatischen Aktualisierungen, die ein effektives Kontingentlimit um mehr als 10 % auf einmal reduzieren. Da die Standard-Tokenlimits bei Hunderten von Milliarden liegen, führt das Festlegen einer strengeren täglichen Obergrenze in der Regel zu einer Reduzierung um mehr als 10 % und schlägt mit einem QUOTA_DECREASE_PERCENTAGE_TOO_HIGH-Fehler fehl, es sei denn, Sie überschreiben diese Sicherheitsprüfung:
    • gcloud CLI: Fügen Sie das Flag --allow-high-percentage-quota-decrease ein.
    • Python-Clientbibliothek: Übergeben Sie ignore_safety_checks=[cloudquotas_v1.QuotaSafetyCheck.QUOTA_DECREASE_PERCENTAGE_TOO_HIGH].
    • Terraform: Legen Sie ignore_safety_checks = "QUOTA_DECREASE_PERCENTAGE_TOO_HIGH" fest.

Nächste Schritte