In dieser Anleitung wird gezeigt, wie Sie mit BigQuery, Cloud Run und dem Gemma-LLM Erkenntnisse aus großen Datenmengen gewinnen. In dieser Anleitung stellen Sie eine Beispielanwendung in der Google Kubernetes Engine (GKE) bereit. Die Beispiel-App nutzt BigQuery für die Datenspeicherung und ‑verarbeitung, Cloud Run für die Anfrageabarbeitung und die Gemma-LLM für die Analyse von Daten und die Generierung von Vorhersagen auf der Grundlage eingehender Prompts.
Diese Anleitung richtet sich an Administratoren und Architekten der Cloud-Plattform, Spezialisten für Daten und KI, ML-Entwickler und MLOps-Experten (DevOps). Machen Sie sich vor dem Lesen dieser Seite mit Kubernetes und einer Notebook-Umgebung wie Jupyter vertraut.
Für diese Anleitung müssen Sie die Anleitung Offene Gemma-Modelle mit GPUs in GKE mit Hugging Face TGI bereitstellen durcharbeiten. Das TGI-Framework erleichtert die Bereitstellung von Modellen.
Vorteile von GKE und BigQuery
BigQuery ist ein vollständig verwaltetes, serverloses Data Warehouse im PaaS-Modell (Platform as a Service (PaaS)), das skalierbare Analysen von Petabytes an Daten ermöglicht. Mit BigQuery können Sie sich auf die Analyse von Daten konzentrieren, um aussagekräftige Informationen zu erhalten. Dabei können Sie vertrautes SQL und integriertes maschinelles Lernen verwenden.
Mit GPUs in GKE und TGI können Sie ein Gemma-Sprachmodell bereitstellen, um Nutzerinteraktionen in natürlicher Sprache zu analysieren und zusammenzufassen. Wenn Sie BigQuery dann in GKE einbinden, können Sie mit BigQuery große Datenmengen (z. B. aus Google Analytics) effizient verarbeiten und mithilfe der Funktionen zur Verarbeitung natürlicher Sprache des Modells aussagekräftige Informationen gewinnen.
Als Data Scientist oder Analyst oder als Entscheidungsträger in einem E-Commerce-Unternehmen möchten Sie beispielsweise das Nutzerverhalten auf Ihrer Website oder in Ihrer App besser verstehen. Diese Informationen können Ihnen helfen, den Kaufprozess zu optimieren und zu personalisieren sowie fundierte Geschäftsentscheidungen zu treffen, um den Umsatz zu steigern.
In diesem Szenario könnten Sie Roh-Google Analytics-Daten aus BigQuery in das Gemma-Modell einspeisen und Zusammenfassungen von Seitenaufrufen und Statistiken in natürlicher Sprache erhalten. Das Gemma-Modell, das auf einer skalierbaren Infrastruktur mit GPU-Beschleunigung von GKE ausgeführt wird, verarbeitet User Journey-Daten schnell und identifiziert Muster und Trends. So können Sie beispielsweise beliebte Produktkombinationen ermitteln, häufige Abbrüche beim Bezahlvorgang aufdecken und erfolgreiche Marketingkampagnen hervorheben, die Zugriffe auf bestimmte Landingpages generieren.
Vorteile
Diese Lösung bietet einen optimierten Workflow mit den folgenden Vorteilen:
- BigQuery-Integration: Mit BigQuery können Sie große Datensätze wie die Google Analytics-Daten in diesem Tutorial speichern und verarbeiten. So können Sie die für die Analyse des Modells erforderlichen Daten abfragen und zusammenfassen.
- GPU-Beschleunigung: Das Gemma-Modell wird in einem GKE-Cluster mit GPU-Unterstützung ausgeführt, um den Inferenzprozess zu beschleunigen und Vorhersagen viel schneller als mit CPU-basierten Prozessoren zu generieren.
- Kosten und Zeit sparen: Mit dem Open-Source-Gemma-Sprachmodell, das bereits trainiert wurde, sparen Sie Zeit und Ressourcen, da Sie kein benutzerdefiniertes Modell von Grund auf neu erstellen müssen.
Lernziele
In dieser Anleitung erfahren Sie mehr über die folgenden Themen:
- Modell bereitstellen und veröffentlichen: Erstellen Sie eine YAML-Datei für den Dienst, um einen internen Load Balancer für den Zugriff auf das Gemma-Modell zu definieren.
- BigQuery-Remotefunktion erstellen: Führen Sie Python-Code aus, um eine Remotefunktion zu definieren, die Google Analytics-Daten verwendet, Prompts für das Modell erstellt, Anfragen über den Load Balancer an den Endpunkt des Modells sendet und die Antwort des Modells zurückgibt.
- VPC-Netzwerk (Virtual Private Cloud) konfigurieren: Richten Sie ein VPC-Netzwerk und einen VPC-Connector ein, um eine sichere Kommunikation zwischen BigQuery und dem GKE-Cluster zu ermöglichen. Dies ist wichtig, damit die Remote-Funktion auf den Modellendpunkt zugreifen kann.
- Daten analysieren: Sie können die Daten mit BigQuery-DataFrames oder direkt in SQL mit dem
bq
-Befehlszeilentool analysieren. Führen Sie die bereitgestellten Code-Snippets in einem Colab Enterprise-Notebook aus, um Folgendes zu tun:- Google Analytics-Daten mit SQL aus BigQuery abfragen
- Wenden Sie die Remote-Funktion auf die Daten an, um Statistiken aus dem Gemma-Modell zu generieren.
- Ergebnisse anzeigen
Architektur
Das folgende Architekturdiagramm zeigt die beteiligten Komponenten und ihre Interaktion:
- Verwenden Sie ein Colab Enterprise-Notebook, um Ihren Python-Code auszuführen. Mit Python können Sie die Bigframes-Bibliothek verwenden, um Ihre SQL-Interaktionen zu vereinfachen.
- BigQuery dient als Big-Data-Verarbeitungs-Engine und ermöglicht die Verwendung von SQL, um mit den Daten zu interagieren.
- Die Remote-Funktion ruft eine Cloud Run-Funktion auf. Die Daten werden automatisch an die Remote-Funktion weitergeleitet, wo sie für die Inferenz vorbereitet und an GKE gesendet werden.
- Die Ergebnisse werden zurück an BigQuery gesendet und in einer Tabelle angezeigt.
Kosten
In diesem Dokument verwenden Sie die folgenden kostenpflichtigen Komponenten von Google Cloud:
- Compute Engine instances used by GKE
- GPU resources used by GKE
- BigQuery
- Cloud Load Balancing
- Cloud Run functions
Mit dem Preisrechner können Sie eine Kostenschätzung für Ihre voraussichtliche Nutzung vornehmen.
Nach Abschluss der in diesem Dokument beschriebenen Aufgaben können Sie weitere Kosten vermeiden, indem Sie die erstellten Ressourcen löschen. Weitere Informationen finden Sie unter Bereinigen.
Hinweise
Die folgenden Voraussetzungen müssen erfüllt sein:
Projekt auswählen oder erstellen
Sie können ein vorhandenes Projekt verwenden oder für diese Anleitung ein neues erstellen.
- Sign in to your Google Cloud account. If you're new to Google Cloud, create an account to evaluate how our products perform in real-world scenarios. New customers also get $300 in free credits to run, test, and deploy workloads.
-
In the Google Cloud console, on the project selector page, select or create a Google Cloud project.
-
Make sure that billing is enabled for your Google Cloud project.
-
In the Google Cloud console, on the project selector page, select or create a Google Cloud project.
-
Make sure that billing is enabled for your Google Cloud project.
APIs aktivieren
Enable the Artifact Registry, Compute Engine, GKE, IAM Service Account Credentials, Cloud Functions, Cloud Build, Cloud Run Admin, Cloud Logging, Serverless VPC Access, BigQuery, Dataform, Vertex AI APIs.
Cloud Shell einrichten
In dieser Anleitung verwenden Sie Cloud Shell zum Ausführen von gcloud
- und kubectl
-Befehlen. Cloud Shell ist eine Shell-Umgebung für die Verwaltung von Ressourcen, die in Google Cloudgehostet werden. Sie ist bei Google Cloud CLI und dem kubectl-Befehlszeilentool vorinstalliert.
In the Google Cloud console, activate Cloud Shell.
In einem Frame im unteren Teil der Console wird eine Cloud Shell-Sitzung geöffnet.
Achten Sie vor dem Ausführen von Befehlen in dieser Anleitung darauf, dass Ihr Standardprojekt auf die Projekt-ID festgelegt ist, in der Sie die Beispielanwendung bereitstellen möchten. Führen Sie den folgenden Befehl in Cloud Shell aus, falls sie noch nicht festgelegt ist:
gcloud config set project PROJECT_ID
Ersetzen Sie PROJECT_ID
durch Ihre Projekt-ID.
IAM-Rollen zuweisen
Ihr Nutzerkonto und das Compute Engine-Standarddienstkonto in Ihrem Projekt müssen die erforderlichen IAM-Rollen (Identity and Access Management) für diese Anleitung haben.
Grant roles to your user account. Run the following command once for each of the following
IAM roles:
roles/aiplatform.colabEnterpriseAdmin, roles/run.invoker, roles/container.admin, roles/iam.serviceAccountAdmin, roles/logging.logWriter
gcloud projects add-iam-policy-binding PROJECT_ID --member="user:USER_IDENTIFIER" --role=ROLE
- Replace
PROJECT_ID
with your project ID. -
Replace
USER_IDENTIFIER
with the identifier for your user account. For example,user:myemail@example.com
. - Replace
ROLE
with each individual role.
Weisen Sie Ihrem Compute Engine-Standarddienstkonto Rollen zu. Führen Sie den folgenden Befehl für jede der folgenden IAM-Rollen einmal aus: roles/logging.logWriter, roles/artifactregistry.writer, roles/storage.objectViewer
gcloud projects add-iam-policy-binding PROJECT_ID --member="serviceAccount:PROJECT_NUMBER-compute@developer.gserviceaccount.com" --role=ROLE
- Ersetzen Sie
PROJECT_ID
durch Ihre Projekt-ID. - Ersetzen Sie
PROJECT_NUMBER
durch Ihre Projektnummer, um die Domain des Compute Engine-Standarddienstkontos für Ihr Projekt zu erstellen. Beispiel:123456789012-compute@developer.gserviceaccount.com
- Ersetzen Sie
ROLE
durch jede einzelne Rolle.
Gemma-Modell bereitstellen
Rufen Sie die Anleitung Offene Gemma-Modelle mit GPUs in GKE mit Hugging Face TGI bereitstellen auf und folgen Sie der Anleitung von Vorab bis Mit dem Modell über curl interagieren, damit Ihr Gemma-Modell erfolgreich bereitgestellt wird und Sie damit interagieren können.
Stellen Sie für diese Anleitung das Modell Gemma 2B-it bereit.
VPC-Netzwerk einrichten
Erstellen oder verwenden Sie das VPC-Netzwerk in der Region us-central1
, damit Ihre Remotefunktion eine Verbindung zum GKE-Cluster herstellen kann.
Verwenden Sie in dieser Anleitung die VPC Default
.
Damit Ihr BigQuery-Dataset, Ihre Remote-Funktion und die zugrunde liegenden Cloud Run-Funktionen an kompatiblen Standorten bereitgestellt werden, muss sich das VPC-Netzwerk in derselben Region wie Ihre BigQuery-Remote-Funktion befinden.
In diesem Tutorial geben Sie US
als Speicherort für Ihr Dataset an, wenn Sie BigQuery DataFrames-Optionen beim Erstellen einer Remote-Funktion festlegen. Standardmäßig ist dies die Region us-central1
für Ihre Cloud Run-Funktionen. Erstellen oder verwenden Sie das VPC daher in der Region us-central1
.
Load-Balancer erstellen
So erstellen Sie einen internen Load Balancer in Ihrem GKE-Cluster:
Erstellen Sie das folgende
tgi-2b-lb-service.yaml
-Manifest:apiVersion: v1 kind: Service metadata: name: llm-lb-service annotations: networking.gke.io/load-balancer-type: "Internal" spec: selector: app: gemma-server type: LoadBalancer ports: - protocol: TCP port: 8000 targetPort: 8000
Öffnen Sie ein neues Cloud Shell-Terminal und führen Sie den folgenden Befehl aus, um das Manifest anzuwenden:
kubectl apply -f tgi-2b-lb-service.yaml
Rufen Sie die IP-Adresse des Load Balancers ab. Es kann 1 bis 2 Minuten dauern, bis diese IP-Adresse abgerufen werden kann:
kubectl get service llm-lb-service --output yaml | grep ip:
Sie verwenden diese IP-Adresse, um mit Ihrer gemma-server
-Anwendung zu kommunizieren, die hinter dem Load Balancer ausgeführt wird.
Connector erstellen
Mit einem Connector für Serverloser VPC-Zugriff können Sie Anfragen über Ihr VPC-Netzwerk senden und empfangen, ohne das öffentliche Internet zu verwenden. Weitere Informationen finden Sie unter Serverloser VPC-Zugriff.
In dieser Anleitung erstellen Sie einen Connector mit einem neuen, dedizierten Subnetz, um IP-Adresskonflikte mit vorhandenen Ressourcen in der VPC zu vermeiden. Eine Anleitung finden Sie im Abschnitt Connector erstellen. Folgen Sie der Anleitung unter gcloud
für den Abschnitt Connector und neues Subnetz erstellen.
Wenn Sie stattdessen ein vorhandenes Subnetz verwenden möchten, folgen Sie der Anleitung im Abschnitt Connector mit einem vorhandenen Subnetz erstellen.
Weitere Informationen finden Sie unter Anforderungen an Connector-Subnetze.
Notebook erstellen
In dieser Anleitung verwenden Sie ein Colab Enterprise-Notebook, um den gesamten Code zum Definieren der BigQuery-Remote-Funktion und Ausführen der Analyse auszuführen.
So erstellen Sie ein Colab Enterprise-Notebook mithilfe der Google Cloud Console:
Rufen Sie in der Google Cloud -Konsole die Seite Colab Enterprise-Notebooks auf:
Wählen Sie im Menü Region die Option
us-central1
aus. Dies ist dieselbe Region, in der Sie alle Dienste in dieser Anleitung erstellen.Klicken Sie neben Dateien auf Notebook erstellen.
Ihr neues Notebook wird auf dem Tab Meine Notebooks angezeigt.
Wenn Sie Code in Ihrem neuen Notebook ausführen möchten, fügen Sie für jeden Befehl oder jedes Code-Snippet, das Sie ausführen möchten, eine neue Codezelle in das Notebook ein.
BigQuery-Remote-Funktion erstellen
Eine BigQuery-Remote-Funktion lässt sich unter anderem mithilfe der bigframes
-Bibliothek definieren. In diesem Abschnitt erstellen Sie mit bigframes
eine Remote-Funktion namens process_incoming
. Diese Remote-Funktion nimmt Google Analytics-Daten als Eingabe, erstellt einen Prompt und sendet ihn zur Analyse an Ihr Gemma-Modell.
Im von Ihnen erstellten Colab Enterprise-Notebook:
- Klicken Sie auf + Code, um eine neue Codezelle einzufügen.
Kopieren Sie den folgenden Code in die neue Codezelle:
# Install the necessary packages on the notebook runtime %pip install --upgrade bigframes --quiet import bigframes.pandas as bpd import os import ast import requests # Replace the following variables # Use the format ip:port # For example, "10.128.05:8000" lb_url = "LOADBALANCER_IP_ADDRESS:8000" # Set BigQuery DataFrames options bpd.options.bigquery.project = "PROJECT_ID" bpd.options.bigquery.location = "US" # Update the VPC connector name with the one you created vpc_connector_name = "VPC_CONNECTOR_NAME" # Create a remote function using bigframes # https://cloud.google.com/bigquery/docs/remote-functions#bigquery-dataframes @bpd.remote_function( [str], str, dataset="ga_demo", name="ga_explain_example", bigquery_connection="bigframes-rf-conn", reuse=True, packages=["requests"], cloud_function_vpc_connector=VPC_CONNECTOR_NAME ) def process_incoming(data): ga_data = ast.literal_eval(data) USER_PROMPT = """ 'The following are the results from Google Analytics. They are reverse ranked. reverse_event_number 1 is the last page visited. reverse_event_number 2 is the second last page visited. You are given the following data. {} Can you summarize what was the most popular page people landed on and what page they came from? """.format(ga_data) url = 'http://{}/generate'.format(lb_url) myobj = { "inputs": USER_PROMPT, "temperature": 0.90, "top_p": 0.95, "max_tokens": 2048 } x = requests.post(url, json=myobj) result = x.text return (result) function_name = process_incoming.bigframes_remote_function print (f"The function name is: {function_name}")
Ersetzen Sie Folgendes:
LOADBALANCER_IP_ADDRESS
: IP-Adresse und Port des internen Load Balancers, den Sie zuvor erstellt haben, z. B.10.128.05:8000
.PROJECT_ID
: Ihre Projekt-ID.VPC_CONNECTOR_NAME
: der Name des zuvor erstellten Connectors für serverlosen VPC-Zugriff.
In dieser Anleitung ist der Speicherort Ihres BigQuery-Datasets auf
US
festgelegt, was der Standardregionus-central1
entspricht.Klicken Sie auf Zelle ausführen.
In der Ausgabe wird der Name der Funktion angezeigt, z. B.
The function name is: PROJECT_ID.ga_demo.ga_explain_example
Nutzerverhalten analysieren
In diesem Abschnitt analysieren Sie das Nutzerverhalten auf Ihrer Website mithilfe der Remote-Funktion process_incoming
auf zwei Arten:
- BigQuery DataFrames verwenden
- mit dem
bq
-Befehlszeilentool eine Abfrage direkt in SQL ausführen.
BigQuery DataFrames verwenden
So führen Sie die Remote-Funktion mit BigQuery DataFrames im von Ihnen erstellten Colab Enterprise-Notebook aus:
- Klicken Sie auf + Code, um eine neue Codezelle einzufügen.
- Kopieren Sie den folgenden Code in die neue Codezelle und klicken Sie auf Zelle ausführen.
# Generate a list of all matchups and their histories as a JSON
grouping_sql = """
with
data_table as (
SELECT
distinct
user_pseudo_id,
events.value.string_value,
event_timestamp,
rank() over (partition by user_pseudo_id order by event_timestamp desc) as reverse_event_number
FROM
`bigquery-public-data.ga4_obfuscated_sample_ecommerce.events_20210131` as events20210131,
unnest (events20210131.event_params) as events
where events.key = 'page_location'
qualify reverse_event_number < 3
)
select
*,TO_JSON_STRING (data_table) as ga_history
from data_table
limit 10;
"""
ga_df = bpd.read_gbq(grouping_sql)
post_processed = ga_df.assign(results=ga_df['ga_history'].apply(process_incoming),axis=1)
post_processed.head(10)
Die folgende Ausgabe zeigt die Beispielergebnisse der Abfrage:
user_pseudo_id | string_value | event_timestamp | reverse_event_number | ga_history | Ergebnisse | Achse |
---|---|---|---|---|---|---|
0 | 2342103247.0307162928 | https://shop.googlemerchandisestore.com/Google... | 1612096237169825 | 2 | {"user_pseudo_id":"2342103247.0307162928","str... | {"generated_text":"\n 'Die folgenden... |
1 | 48976087.6959390698 | https://www.googlemerchandisestore.com/ | 1612056537823270 | 2 | {"user_pseudo_id":"48976087.6959390698","strin... | {"generated_text":"\n \n ```python\n imp... |
bq
-Befehlszeilentool verwenden
Alternativ können Sie das bq
-Befehlszeilentool verwenden, um Analysen direkt mit SQL auszuführen.
So führen Sie die Remotefunktion mit dem bq
-Befehlszeilentool im von Ihnen erstellten Colab Enterprise-Notebook aus:
- Klicken Sie auf + Code, um eine neue Codezelle einzufügen.
Kopieren Sie den folgenden Code in die neue Codezelle und ersetzen Sie
PROJECT_ID
durch Ihre Projekt-ID.# Update with your PROJECT_ID function_name = 'PROJECT_ID.ga_demo.ga_explain_example' new_sql = """'with \ data_table as ( \ SELECT \ distinct \ user_pseudo_id, \ events.value.string_value, \ event_timestamp, \ rank() over (partition by user_pseudo_id order by event_timestamp desc) as reverse_event_number \ FROM \ `bigquery-public-data.ga4_obfuscated_sample_ecommerce.events_20210131` as events20210131, \ unnest (events20210131.event_params) as events \ where events.key = "page_location" \ qualify reverse_event_number < 3 \ ) \ select \ *, `{}`(TO_JSON_STRING (data_table)) as result \ from data_table \ limit 10;' \ """.format(function_name) # Run query using bq cli directly in a notebook cell !bq query --use_legacy_sql=false \ {new_sql}
Klicken Sie auf Zelle ausführen.
Die folgende Ausgabe zeigt die Beispielergebnisse der Abfrage:
user_pseudo_id | string_value | event_timestamp | reverse_event_number | result |
---|---|---|---|---|
86037838.0267811614 | https://shop.googlemerchandisestore.com/Google+Redesign/Apparel/Google+Dino+Game+Tee | 1612128627715585 | 1 | {"generated_text":"Antwort:\n Die beliebteste Seite war https://shop.googlemerchandisestore.com/Google+Redesign/Apparel/Google+Dino+Game+Tee\n Die zweitbeliebteste Seite war die Seite, von der aus der Nutzer weitergeleitet wurde.\n\n Erläuterung\n\nDie bereitgestellten Daten zeigen, dass der aktuelle Nutzer den Merchandise-Shop von Google speziell wegen des Produkts „Google Dino Game Tee“ besucht hat. \n \nWichtige Überlegungen:\n\n* Dateninterpretation: Sie können nicht mit Sicherheit sagen, dass"} |
4024190.3037653934 | https://shop.googlemerchandisestore.com/Google+Redesign/Apparel/Google+Black+Cloud+Zip+Hoodie | 1612085948486438 | 1 | {"generated_text":"\n ```python\n import pandas as pd\n\n data = {'user_pseudo_id': ['4024190.3037653934', '4024190.3037653934', '4024190.3037653934'],\n 'string_value': ['https://shop.googlemerchandisestore.com"} |
Bereinigen
Damit Ihrem Google Cloud-Konto die in dieser Anleitung verwendeten Ressourcen nicht in Rechnung gestellt werden, löschen Sie entweder das Projekt, das die Ressourcen enthält, oder Sie behalten das Projekt und löschen die einzelnen Ressourcen.
Löschen Sie die einzelnen Ressourcen, damit Ihrem Google Cloud -Konto die in dieser Anleitung verwendeten Ressourcen nicht in Rechnung gestellt werden.
- Löschen Sie Ihr Colab Enterprise-Notebook.
- Löschen Sie die Colab Enterprise-Laufzeit.
- Löschen Sie die BigQuery-Funktion.
Prüfen Sie, ob Ihr Dienstkonto die Berechtigung
bigquery.routines.delete
hat. Weitere Informationen finden Sie unter BigQuery-Berechtigungen. - Löschen Sie die externe BigQuery-Verbindung.
- Löschen Sie Ihre Cloud Run-Funktionen.
- Löschen Sie den GKE-Cluster.
- Löschen Sie den VPC-Connector.
Nächste Schritte
- In einem praktischen Codelab können Sie sich mit einem Anwendungsfall für die Analyse strukturierter und unstrukturierter Daten vertraut machen.
- Weitere Informationen finden Sie unter Best Practices zum Ausführen von Batch-Arbeitslasten in GKE.
- Weitere Informationen zu Anwendungsfällen für KI/ML in BigQuery
- Weitere Informationen zu Anwendungsfällen für KI/ML in GKE