1. Einführung
In diesem Codelab habe ich die Schritte zur Zusammenfassung von Quellcode aus GitHub-Repositories und zur Identifizierung der Programmiersprache im Repository mit dem Vertex AI Large Language Model zur Textgenerierung ( text-bison) als gehostete Remote-Funktion in BigQuery aufgelistet. Dank des GitHub-Archivprojekts haben wir jetzt eine vollständige Übersicht von über 2, 8 Millionen Open-Source-GitHub-Repositories in öffentlichen Google BigQuery-Datasets. Folgende Dienste werden verwendet:
- BigQuery ML
- Vertex AI PaLM API
Aufgaben
Sie erstellen
- Ein BigQuery-Dataset, das das Modell enthält
- Ein BigQuery-Modell, das die Vertex AI PaLM API als Remote-Funktion hostet
- Eine externe Verbindung zum Herstellen der Verbindung zwischen BigQuery und Vertex AI
2. Voraussetzungen
3. Hinweis
- Wählen Sie in der Google Cloud Console auf der Seite für die Projektauswahl ein Google Cloud-Projekt aus oder erstellen Sie eines.
- Die Abrechnung für das Cloud-Projekt muss aktiviert sein. Prüfen, ob die Abrechnung für ein Projekt aktiviert ist
- Achten Sie darauf, dass alle erforderlichen APIs (BigQuery API, Vertex AI API, BigQuery Connection API) aktiviert sind
- Sie verwenden Cloud Shell, eine in Google Cloud ausgeführte Befehlszeilenumgebung mit vorinstalliertem bq. Informationen zu gcloud-Befehlen und deren Verwendung finden Sie in der Dokumentation.
Klicken Sie in der Cloud Console oben rechts auf „Cloud Shell aktivieren“:
Wenn Ihr Projekt noch nicht eingerichtet ist, verwenden Sie den folgenden Befehl, um es festzulegen:
gcloud config set project <YOUR_PROJECT_ID>
- Rufen Sie die BigQuery-Konsole direkt auf, indem Sie die folgende URL in Ihren Browser eingeben: https://console.cloud.google.com/bigquery
4. Daten vorbereiten
In diesem Anwendungsfall verwenden wir den Quellcodeinhalt aus dem Dataset "github_repos" in den öffentlichen Google BigQuery-Datasets. Suchen Sie dazu in der BigQuery-Konsole nach „github_repos“ und drücken Sie die Eingabetaste. Klicken Sie auf den Stern neben dem Datensatz, der als Suchergebnis aufgeführt ist. Klicken Sie dann auf die Schaltfläche können Sie dieses Dataset nur aus den öffentlichen Datasets anzeigen.
Erweitern Sie die Tabellen im Dataset, um das Schema und die Datenvorschau anzusehen. Wir verwenden den Parameter sample_contents, der nur eine Stichprobe (10%) der gesamten Daten in der Tabelle mit den Inhalten enthält. Hier ist eine Vorschau der Daten:
5. BigQuery-Dataset erstellen
Ein BigQuery-Dataset ist eine Sammlung von Tabellen. Alle Tabellen in einem Dataset werden am selben Datenspeicherort gespeichert. Sie können auch benutzerdefinierte Zugriffssteuerungen hinzufügen, um den Zugriff auf ein Dataset und dessen Tabellen einzuschränken.
Dataset in der Region „US“ erstellen (oder eine andere Region unserer Einstellung) mit dem Namen bq_llm.
Dieses Dataset enthält das ML-Modell, das wir in den nächsten Schritten erstellen werden. In der Regel speichern wir die Daten, die wir in der ML-Anwendung verwenden, auch in einer Tabelle in diesem Dataset. In unserem Anwendungsfall befinden sich die Daten jedoch bereits in einem öffentlichen BigQuery-Dataset, auf das wir bei Bedarf direkt aus dem neu erstellten Dataset verweisen. Wenn Sie dieses Projekt für Ihr eigenes Dataset ausführen möchten, das sich in einer CSV-Datei (oder einer anderen Datei) befindet, können Sie Ihre Daten in ein BigQuery-Dataset in eine Tabelle laden. Führen Sie dazu den folgenden Befehl über das Cloud Shell-Terminal aus:
bq load --source_format=CSV --skip_leading_rows=1 bq_llm.table_to_hold_your_data \
./your_file.csv \ text:string,label:string
6. Externe Verbindung wird erstellt
Erstellen Sie eine externe Verbindung (aktivieren Sie die BQ Connection API, falls noch nicht geschehen) und notieren Sie sich die Dienstkonto-ID aus den Details zur Verbindungskonfiguration:
- Klicken Sie im Bereich „BigQuery Explorer“ (links in der BigQuery-Konsole) auf die Schaltfläche „+ HINZUFÜGEN“ und dann auf „Verbindung zu externen Datenquellen“. beliebten Quellen aufgelistet sind,
- Wählen Sie als Verbindungstyp „BigLake and remote features“ (BigLake und Remote-Funktionen) aus. und geben Sie „llm-conn“ an, als Verbindungs-ID
- Notieren Sie sich nach dem Erstellen der Verbindung das Dienstkonto, das aus den Details zur Verbindungskonfiguration generiert wurde.
7. Berechtigungen erteilen
In diesem Schritt werden dem Dienstkonto Berechtigungen für den Zugriff auf den Vertex AI-Dienst gewährt:
Öffnen Sie IAM und fügen Sie das Dienstkonto hinzu, das Sie nach dem Erstellen der externen Verbindung als Hauptkonto kopiert haben. Wählen Sie dann „Vertex AI-Nutzer“ aus. Rolle
8. Remote-ML-Modell erstellen
Erstellen Sie das Remote-Modell, das ein gehostetes Vertex AI Large Language Model darstellt:
CREATE OR REPLACE MODEL bq_llm.llm_model
REMOTE WITH CONNECTION `us.llm-conn`
OPTIONS (remote_service_type = 'CLOUD_AI_LARGE_LANGUAGE_MODEL_V1');
Es wird ein Modell mit dem Namen llm_model im Dataset bq_llm erstellt, das die CLOUD_AI_LARGE_LANGUAGE_MODEL_V1 API von Vertex AI als Remote-Funktion verwendet. Dieser Vorgang kann einige Sekunden dauern.
9. Text mit dem ML-Modell generieren
Nachdem das Modell erstellt wurde, können Sie damit Text generieren, zusammenfassen oder kategorisieren.
SELECT
ml_generate_text_result['predictions'][0]['content'] AS generated_text,
ml_generate_text_result['predictions'][0]['safetyAttributes']
AS safety_attributes,
* EXCEPT (ml_generate_text_result)
FROM
ML.GENERATE_TEXT(
MODEL `bq_llm.llm_model`,
(
SELECT
CONCAT('Can you read the code in the following text and generate a summary for what the code is doing and what language it is written in:', content)
AS prompt from `bigquery-public-data.github_repos.sample_contents`
limit 5
),
STRUCT(
0.2 AS temperature,
100 AS max_output_tokens));
**Erläuterung:
ml_generate_text_result** ist die Antwort des Textgenerierungsmodells im JSON-Format, die sowohl Inhalts- als auch Sicherheitsattribute enthält: a. Der Inhalt stellt das generierte Textergebnis dar. b. Sicherheitsattribute stellen den integrierten Inhaltsfilter mit einem anpassbaren Schwellenwert dar, der in der Palm API von Vertex AI aktiviert ist, um unbeabsichtigte oder unvorhergesehene Antworten vom Large Language Model zu vermeiden. Die Antwort wird blockiert, wenn sie den Sicherheitsgrenzwert überschreitet.
ML.GENERATE_TEXT ist das Konstrukt, das Sie in BigQuery verwenden, um auf das Vertex AI LLM zuzugreifen und Textgenerierungsaufgaben auszuführen.
Mit CONCAT werden die PROMPT-Anweisung und der Datenbankeintrag angehängt.
github_repos ist der Name des Datasets und sample_contents ist der Name der Tabelle mit den Daten, die im Prompt-Entwurf verwendet werden.
Temperatur ist der Prompt-Parameter, mit dem die Zufälligkeit der Antwort gesteuert werden kann – je geringer die Relevanz ist, desto besser.
Max_output_tokens ist die Anzahl der Wörter, die als Antwort zurückgegeben werden sollen.
Die Abfrageantwort sieht so aus:
10. Abfrageergebnis vereinfachen
Wir vereinfachen das Ergebnis, damit wir das JSON-Format in der Abfrage nicht explizit decodieren müssen:
SELECT *
FROM
ML.GENERATE_TEXT(
MODEL `bq_llm.llm_model`,
(
SELECT
CONCAT('Can you read the code in the following text and generate a summary for what the code is doing and what language it is written in:', content)
AS prompt from `bigquery-public-data.github_repos.sample_contents`
limit 5
),
STRUCT(
0.2 AS temperature,
100 AS max_output_tokens,
TRUE AS flatten_json_output));
**Erläuterung:
Flatten_json_output** steht für den booleschen Wert. Wenn dieser Wert auf „true“ gesetzt ist, wird ein einfacher verständlicher Text zurückgegeben, der aus der JSON-Antwort extrahiert wurde.
Die Abfrageantwort sieht so aus:
11. Bereinigen
So vermeiden Sie, dass Ihrem Google Cloud-Konto die in diesem Beitrag verwendeten Ressourcen in Rechnung gestellt werden:
- Rufen Sie in der Google Cloud Console die Seite Ressourcen verwalten auf.
- Wählen Sie in der Projektliste das Projekt aus, das Sie löschen möchten, und klicken Sie auf „Löschen“.
- Geben Sie im Dialogfeld die Projekt-ID ein und klicken Sie dann auf „Beenden“, um das Projekt zu löschen.
12. Glückwunsch
Glückwunsch! Sie haben erfolgreich ein Vertex AI Text Generation LLM programmatisch verwendet, um nur mithilfe von SQL-Abfragen Textanalysen an Ihren Daten durchzuführen. Weitere Informationen zu verfügbaren Modellen finden Sie in der Produktdokumentation zu Vertex AI LLM.