1. Introduction
Dans cet atelier de programmation, j'ai listé les étapes permettant de résumer le code source à partir de dépôts GitHub et d'identifier le langage de programmation dans le dépôt en utilisant le grand modèle de langage Vertex AI pour la génération de texte ( text-bison) en tant que fonction distante hébergée dans BigQuery. Grâce au projet Archive de GitHub, nous disposons à présent d'un instantané complet de plus de 2,8 millions de dépôts GitHub Open Source dans les ensembles de données publics Google BigQuery. Voici la liste des services utilisés:
- BigQuery ML
- API Vertex AI PaLM
Ce que vous allez faire
Vous allez créer
- Un ensemble de données BigQuery qui contiendra le modèle
- Un modèle BigQuery qui héberge l'API Vertex AI PaLM en tant que fonction distante
- Une connexion externe pour établir la connexion entre BigQuery et Vertex AI
2. Conditions requises
3. Avant de commencer
- Dans la console Google Cloud, sur la page de sélection du projet, sélectionnez ou créez un projet Google Cloud.
- Assurez-vous que la facturation est activée pour votre projet Cloud. Découvrez comment vérifier si la facturation est activée sur un projet.
- Assurez-vous que toutes les API nécessaires (API BigQuery, API Vertex AI, API BigQuery Connection) sont activées
- Vous allez utiliser Cloud Shell, un environnement de ligne de commande qui s'exécute dans Google Cloud et qui est préchargé avec bq. Consultez la documentation pour en savoir plus sur les commandes gcloud et leur utilisation.
Dans la console Cloud, cliquez sur "Activer Cloud Shell" en haut à droite :
Si votre projet n'est pas défini, utilisez la commande suivante pour le définir :
gcloud config set project <YOUR_PROJECT_ID>
- Accédez directement à la console BigQuery en saisissant l'URL suivante dans votre navigateur: https://console.cloud.google.com/bigquery.
4. Préparation des données…
Dans ce cas d'utilisation, nous utilisons le contenu du code source de l'ensemble de données github_repos dans les ensembles de données publics Google BigQuery. Pour l'utiliser, dans la console BigQuery, recherchez "github_repos". et appuyez sur Entrée. Cliquez sur l'étoile à côté de l'ensemble de données répertorié dans les résultats de recherche. Cliquez ensuite sur le bouton "AFFICHER LES FAVORIS UNIQUEMENT" pour afficher cet ensemble de données uniquement à partir des ensembles de données publics.
Développez les tables de l'ensemble de données pour afficher le schéma et l'aperçu des données. Nous allons utiliser sample_contents, qui ne contient qu'un échantillon (10%) des données complètes de la table de contenus. Voici un aperçu des données:
5. Créer un ensemble de données BigQuery
Un ensemble de données BigQuery est un ensemble de tables. Toutes les tables d'un ensemble de données sont stockées dans le même emplacement de données. Vous pouvez également associer des contrôles d'accès personnalisés pour limiter l'accès à un ensemble de données et à ses tables.
Créer un ensemble de données dans la région "US" (ou toute région de votre choix) nommée bq_llm.
Cet ensemble de données hébergera le modèle de ML que nous allons créer dans les prochaines étapes. En règle générale, nous stockons également les données utilisées dans l'application de ML dans une table de cet ensemble de données lui-même. Toutefois, dans notre cas d'utilisation, les données se trouvent déjà dans un ensemble de données public BigQuery, nous allons les référencer directement à partir du nouvel ensemble de données, si nécessaire. Si vous souhaitez réaliser ce projet sur votre propre ensemble de données stocké dans un fichier CSV (ou tout autre fichier), vous pouvez charger vos données dans un ensemble de données BigQuery dans une table en exécutant la commande ci-dessous depuis le terminal Cloud Shell:
bq load --source_format=CSV --skip_leading_rows=1 bq_llm.table_to_hold_your_data \
./your_file.csv \ text:string,label:string
6. Création de la connexion externe...
Créez une connexion externe (activez l'API BQ Connection si ce n'est pas déjà fait) et notez l'ID du compte de service dans les détails de la configuration de la connexion:
- Cliquez sur le bouton "+ AJOUTER" dans le volet "Explorateur BigQuery" (à gauche de la console BigQuery), puis cliquez sur "Connexion à des sources de données externes". dans les sources populaires listées
- Sélectionnez le type de connexion "BigLake et fonctions distantes". et indiquez "llm-conn" comme ID de connexion
- Une fois la connexion créée, notez le compte de service généré à partir des détails de la configuration de la connexion.
7. Octroyer des autorisations
Au cours de cette étape, nous allons autoriser le compte de service à accéder au service Vertex AI:
Ouvrez IAM et ajoutez le compte de service que vous avez copié après avoir créé la connexion externe en tant que compte principal, puis sélectionnez "Utilisateur Vertex AI" Rôle
8. Créer un modèle de ML distant
Créez le modèle distant qui représente un grand modèle de langage Vertex AI hébergé:
CREATE OR REPLACE MODEL bq_llm.llm_model
REMOTE WITH CONNECTION `us.llm-conn`
OPTIONS (remote_service_type = 'CLOUD_AI_LARGE_LANGUAGE_MODEL_V1');
Elle crée un modèle nommé llm_model dans l'ensemble de données bq_llm, qui exploite l'API CLOUD_AI_LARGE_LANGUAGE_MODEL_V1 de Vertex AI en tant que fonction distante. Cette opération prend quelques secondes.
9. Générer du texte à l'aide du modèle de ML
Une fois le modèle créé, utilisez-le pour générer, résumer ou catégoriser le texte.
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));
**Explication:
ml_generate_text_result** est la réponse du modèle de génération de texte au format JSON qui contient à la fois les attributs de contenu et de sécurité: a. "Contenu" représente le résultat textuel généré : b. Les attributs de sécurité représentent le filtre de contenu intégré avec un seuil ajustable activé dans l'API Vertex AI Palm pour éviter toute réponse inattendue ou imprévue du grand modèle de langage. La réponse est bloquée si elle ne respecte pas le seuil de sécurité.
ML.GENERATE_TEXT est la construction que vous utilisez dans BigQuery pour accéder au LLM Vertex AI afin d'effectuer des tâches de génération de texte.
CONCAT ajoute votre instruction PROMPT et l'enregistrement de la base de données
github_repos est le nom de l'ensemble de données et sample_contents est le nom de la table qui contient les données que nous utiliserons dans la conception de la requête.
La température est le paramètre d'invite permettant de contrôler le caractère aléatoire de la réponse. Plus la température est faible, mieux c'est en termes de pertinence.
Max_output_tokens correspond au nombre de mots que vous souhaitez inclure dans la réponse.
La réponse à la requête se présente comme suit:
10. Aplatir le résultat de la requête
Aplatissons le résultat pour ne pas avoir à décoder le JSON explicitement dans la requête:
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));
**Explication:
Flatten_json_output** représente la valeur booléenne qui, si elle est définie sur "true", renvoie un texte compréhensible plat extrait de la réponse JSON.
La réponse à la requête se présente comme suit:
11. Effectuer un nettoyage
Pour éviter que les ressources utilisées dans cet article soient facturées sur votre compte Google Cloud, procédez comme suit:
- Dans la console Google Cloud, accédez à la page Gérer les ressources.
- Dans la liste des projets, sélectionnez le projet que vous souhaitez supprimer, puis cliquez sur "Supprimer".
- Dans la boîte de dialogue, saisissez l'ID du projet, puis cliquez sur "Arrêter" pour supprimer le projet.
12. Félicitations
Félicitations ! Vous avez utilisé un LLM Vertex AI Text Generation de manière programmatique pour effectuer des analyses de texte sur vos données uniquement à l'aide de requêtes SQL. Pour en savoir plus sur les modèles disponibles, consultez la documentation sur les LLM de Vertex AI.