Régler un modèle à l'aide de vos données

Ce document explique comment créer un modèle distant BigQuery ML faisant référence à une version du modèle de fondation de langage naturel de Vertex AI text-bison et le configure pour qu'il effectue le réglage supervisé. Après avoir créé le modèle distant, vous utilisez la fonction ML.EVALUATE pour évaluer le modèle et vérifier que ses performances conviennent à votre cas d'utilisation. Vous pouvez ensuite utiliser le modèle conjointement avec la fonction ML.GENERATE_TEXT pour analyser du texte dans une table BigQuery.

Autorisations requises

  • Pour créer une connexion, vous devez disposer du rôle IAM (Identity and Access Management) suivant :

    • roles/bigquery.connectionAdmin
  • Pour accorder des autorisations au compte de service de la connexion, vous devez disposer de l'autorisation suivante :

    • resourcemanager.projects.setIamPolicy
  • Pour créer le modèle à l'aide de BigQuery ML, vous devez disposer des autorisations IAM suivantes :

    • bigquery.jobs.create
    • bigquery.models.create
    • bigquery.models.getData
    • bigquery.models.updateData
    • bigquery.models.updateMetadata
  • Pour exécuter une inférence, vous devez disposer des autorisations suivantes :

    • bigquery.tables.getData sur la table
    • bigquery.models.getData sur le modèle
    • bigquery.jobs.create

Avant de commencer

  1. Dans Google Cloud Console, sur la page de sélection du projet, sélectionnez ou créez un projet Google Cloud.

    Accéder au sélecteur de projet

  2. Vérifiez que la facturation est activée pour votre projet Google Cloud.

  3. Activer les API BigQuery, BigQuery Connection,Vertex AI, and Compute Engine.

    Activer les API

Créer une connexion

Créez une connexion de ressource cloud et obtenez le compte de service de la connexion.

Sélectionnez l'une des options suivantes :

Console

  1. Accédez à la page BigQuery.

    Accéder à BigQuery

  2. Pour créer une connexion, cliquez sur Ajouter, puis sur Connexions aux sources de données externes.

  3. Dans la liste Type de connexion, sélectionnez Modèles distants Vertex AI, fonctions distantes et BigLake (ressource Cloud).

  4. Dans le champ ID de connexion, saisissez un nom pour votre connexion.

  5. Cliquez sur Créer une connexion.

  6. Cliquez sur Accéder à la connexion.

  7. Dans le volet Informations de connexion, copiez l'ID du compte de service à utiliser à l'étape suivante.

bq

  1. Dans un environnement de ligne de commande, créez une connexion :

    bq mk --connection --location=REGION --project_id=PROJECT_ID \
        --connection_type=CLOUD_RESOURCE CONNECTION_ID
    

    Le paramètre --project_id remplace le projet par défaut.

    Remplacez les éléments suivants :

    • REGION : votre région de connexion
    • PROJECT_ID : ID de votre projet Google Cloud
    • CONNECTION_ID : ID de votre connexion

    Lorsque vous créez une ressource de connexion, BigQuery crée un compte de service système unique et l'associe à la connexion.

    Dépannage : Si vous obtenez l'erreur de connexion suivante, mettez à jour le Google Cloud SDK :

    Flags parsing error: flag --connection_type=CLOUD_RESOURCE: value should be one of...
    
  2. Récupérez et copiez l'ID du compte de service pour l'utiliser lors d'une prochaine étape :

    bq show --connection PROJECT_ID.REGION.CONNECTION_ID
    

    Le résultat ressemble à ce qui suit :

    name                          properties
    1234.REGION.CONNECTION_ID     {"serviceAccountId": "connection-1234-9u56h9@gcp-sa-bigquery-condel.iam.gserviceaccount.com"}
    

Terraform

Ajoutez la section suivante à votre fichier main.tf.

 ## This creates a cloud resource connection.
 ## Note: The cloud resource nested object has only one output only field - serviceAccountId.
 resource "google_bigquery_connection" "connection" {
    connection_id = "CONNECTION_ID"
    project = "PROJECT_ID"
    location = "REGION"
    cloud_resource {}
}        
Remplacez les éléments suivants :

  • CONNECTION_ID : ID de votre connexion
  • PROJECT_ID : ID de votre projet Google Cloud
  • REGION : votre région de connexion

Accorder l'accès au compte de service de la connexion

Autorisez votre compte de service à accéder à Vertex AI. L'impossibilité de fournir des autorisations génère une erreur. Sélectionnez l'une des options suivantes :

Console

  1. Accédez à la page IAM et administration.

    Accéder à IAM et administration

  2. Cliquez sur Accorder l'accès.

  3. Dans le champ Nouveaux comptes principaux, saisissez l'ID du compte de service que vous avez copié précédemment.

  4. Cliquez sur Select a role (Sélectionner un rôle).

  5. Dans le champ Filtre, saisissez Vertex AI Service Agent, puis sélectionnez ce rôle.

  6. Cliquez sur Enregistrer.

gcloud

Exécutez la commande gcloud projects add-iam-policy-binding :

gcloud projects add-iam-policy-binding 'PROJECT_NUMBER' --member='serviceAccount:MEMBER' --role='roles/aiplatform.serviceAgent' --condition=None

Remplacez les éléments suivants :

  • PROJECT_NUMBER : votre numéro de projet.
  • MEMBER : ID du compte de service que vous avez copié précédemment

Le compte de service associé à votre connexion est une instance de l'agent de service de délégation de connexion BigQuery. Vous pouvez donc lui attribuer un rôle d'agent de service.

Accorder l'accès au compte de service Compute Engine par défaut

Lorsque vous activez l'API Compute Engine, le rôle Éditeur est automatiquement accordé au compte de service Compute Engine par défaut sur le projet, sauf si vous avez désactivé ce comportement pour votre projet. Dans ce cas, vous devez accorder à nouveau le rôle Éditeur au compte de service Compute Engine par défaut afin qu'il dispose des autorisations suffisantes pour créer et régler un modèle distant.

Console

  1. Accédez à la page IAM et administration.

    Accéder à IAM et administration

  2. Cliquez sur Accorder l'accès.

  3. Pour Nouveaux comptes principaux, saisissez l'ID du compte de service, soit PROJECT_NUMBER-compute@developer.gserviceaccount.com.

  4. Cliquez sur Select a role (Sélectionner un rôle).

  5. Dans Sélectionner un rôle, choisissez Basique, puis Éditeur.

  6. Cliquez sur Enregistrer.

gcloud

Exécutez la commande gcloud projects add-iam-policy-binding :

gcloud projects add-iam-policy-binding 'PROJECT_NUMBER' --member='serviceAccount:MEMBER' --role='roles/editor' --condition=None

Remplacez les éléments suivants :

  • PROJECT_NUMBER : votre numéro de projet.
  • MEMBER : ID du compte de service, soit PROJECT_NUMBER-compute@developer.gserviceaccount.com

Créer un modèle avec réglage supervisé

  1. Dans la console Google Cloud, accédez à la page BigQuery.

    Accéder à BigQuery

  2. Dans l'éditeur de requête, exécutez la requête suivante pour créer un modèle distant :

    CREATE OR REPLACE MODEL
    `PROJECT_ID.DATASET_ID.MODEL_NAME`
    REMOTE WITH CONNECTION `PROJECT_ID.REGION.CONNECTION_ID`
    OPTIONS (
      ENDPOINT = 'ENDPOINT',
      MAX_ITERATIONS = MAX_ITERATIONS,
      EARLY_STOP = EARLY_STOP,
      LEARNING_RATE_MULTIPLIER = LEARNING_RATE_MULTIPLIER,
      ACCELERATOR_TYPE = 'ACCELERATOR_TYPE',
      DATA_SPLIT_METHOD = 'DATA_SPLIT_METHOD',
      DATA_SPLIT_EVAL_FRACTION = DATA_SPLIT_EVAL_FRACTION,
      DATA_SPLIT_COL = 'DATA_SPLIT_COL',
      EVALUATION_TASK = 'EVALUATION_TASK',
      PROMPT_COL = 'INPUT_PROMPT_COL',
      INPUT_LABEL_COLS = INPUT_LABEL_COLS)
    AS SELECT PROMPT_COLUMN, LABEL_COLUMN
    FROM `TABLE_PROJECT_ID.TABLE_DATASET.TABLE_NAME`;
    

    Remplacez les éléments suivants :

    • PROJECT_ID : ID du projet dans lequel créer le modèle
    • DATASET_ID : ID de l'ensemble de données pour contenir le modèle. Cet ensemble de données doit se trouver dans une région de job de pipeline et d'importation de modèle compatible.
    • MODEL_NAME : nom du modèle
    • REGION : région utilisée par la connexion.
    • CONNECTION_ID : ID de votre connexion BigQuery. Cette connexion doit se trouver dans le même emplacement que l'ensemble de données que vous utilisez.

      Lorsque vous affichez les détails de la connexion dans la console Google Cloud, il s'agit de la valeur de la dernière section de l'ID de connexion complet affiché dans ID de connexion (par exemple, projects/myproject/locations/connection_location/connections/myconnection).

    • ENDPOINT : valeur STRING spécifiant le nom du LLM de texte à utiliser. Dans ce cas, il doit s'agir de n'importe quelle version du modèle text-bison.
    • MAX_ITERATIONS : valeur INT64 qui spécifie le nombre d'étapes à exécuter pour le réglage supervisé. La valeur MAX_ITERATIONS doit être comprise entre 1 et 2400. En règle générale, 100 étapes prennent environ une heure. La valeur par défaut est 300.

      La valeur MAX_ITERATIONS combinée à la valeur ACCELERATOR_TYPE affecte la taille de lot utilisée dans l'entraînement de modèle. Pour plus de conseils sur le choix du nombre d'étapes d'entraînement, consultez la section Configurations recommandées.

      Pour en savoir plus, consultez la page MAX_ITERATIONS.

    • EARLY_STOP : valeur BOOL qui détermine si le réglage supervisé doit être arrêté avant d'effectuer toutes les étapes. Lorsque ce paramètre est défini sur TRUE, il arrête le réglage supervisé si les performances du modèle, mesurées par la justesse des jetons prévus, ne s'améliorent pas suffisamment entre les exécutions d'évaluation. Lorsque ce paramètre est défini sur FALSE, le réglage supervisé se poursuit jusqu'à ce que toutes les étapes de réglage soient terminées. La valeur par défaut est FALSE.
    • LEARNING_RATE_MULTIPLIER : FLOAT64, un multiplicateur à appliquer au taux d'apprentissage recommandé. La valeur par défaut est 1.0.
    • ACCELERATOR_TYPE : valeur STRING qui spécifie le type d'accélérateur à utiliser pour le réglage supervisé. Les options valides sont les suivantes :
      • GPU : utilise des GPU A100 de 80 Go pour le réglage supervisé.
      • TPU : utilise 64 cœurs du pod TPU v3 pour le réglage supervisé. Si vous choisissez cette option, les conditions suivantes s'appliquent :
        • Vous devez exécuter votre requête dans la région europe-west4. Pour en savoir plus sur la modification des options de requête telles que l'emplacement, consultez la section Exécuter une requête interactive.
        • Les calculs de réglage supervisé s'effectuent dans la région europe-west4, car il s'agit de l'emplacement où se trouvent les ressources TPU.

      La valeur par défaut est GPU. Quelle que soit l'option choisie, assurez-vous de disposer d'un quota suffisant.

    • DATA_SPLIT_METHOD : valeur STRING spécifiant la méthode utilisée pour scinder les données d'entrée en ensembles d'entraînement et d'évaluation. Les options valides sont les suivantes :
      • AUTO_SPLIT : BigQuery ML divise automatiquement les données. La manière dont les données sont réparties varie en fonction du nombre de lignes de la table d'entrée. Il s'agit de la valeur par défaut.
      • RANDOM : les données sont randomisées avant d'être divisées en ensembles. Pour personnaliser la répartition des données, vous pouvez utiliser cette option avec l'option DATA_SPLIT_EVAL_FRACTION.
      • CUSTOM : les données sont réparties à l'aide de la colonne fournie dans l'option DATA_SPLIT_COL. La valeur DATA_SPLIT_COL doit correspondre au nom d'une colonne de type BOOL. Les lignes dont la valeur est définie sur TRUE ou NULL sont utilisées en tant que données d'évaluation, tandis que les lignes dont la valeur est définie sur FALSE sont utilisées en tant que données d'entraînement.
      • SEQ : répartit les données à l'aide de la colonne fournie dans l'option DATA_SPLIT_COL. La valeur DATA_SPLIT_COL doit correspondre au nom d'une colonne de l'un des types suivants :
        • NUMERIC
        • BIGNUMERIC
        • STRING
        • TIMESTAMP

        Les données sont triées de la plus petite à la plus grande en fonction de la colonne spécifiée.

        Les n premières lignes sont utilisées en tant que données d'évaluation, où n est la valeur spécifiée pour DATA_SPLIT_EVAL_FRACTION. Les lignes restantes sont utilisées en tant que données d'entraînement.

      • NO_SPLIT : pas de répartition des données ; toutes les données d'entrée sont utilisées comme données d'entraînement.

      Pour en savoir plus sur ces options de répartition des données, consultez la page DATA_SPLIT_METHOD.

    • DATA_SPLIT_EVAL_FRACTION : valeur FLOAT64 spécifiant la fraction des données à utiliser en tant que données d'évaluation lors du réglage supervisé. La valeur doit être comprise dans la plage [0, 1.0]. La valeur par défaut est 0.2.

      Utilisez cette option lorsque vous spécifiez RANDOM ou SEQ comme valeur pour l'option DATA_SPLIT_METHOD. Pour personnaliser la répartition des données, vous pouvez utiliser l'option DATA_SPLIT_METHOD avec l'option DATA_SPLIT_EVAL_FRACTION.

    • DATA_SPLIT_COL : valeur STRING spécifiant le nom de la colonne à utiliser pour trier les données d'entrée dans l'ensemble d'entraînement ou d'évaluation. Utilisez-la lorsque vous spécifiez CUSTOM ou SEQ comme valeur pour l'option DATA_SPLIT_METHOD.
    • EVALUATION_TASK : valeur STRING spécifiant le type de tâche que le modèle doit effectuer. Les options valides sont les suivantes :
      • TEXT_GENERATION
      • CLASSIFICATION
      • SUMMARIZATION
      • QUESTION_ANSWERING
      • UNSPECIFIED

      La valeur par défaut est UNSPECIFIED.

    • INPUT_PROMPT_COL : valeur STRING contenant le nom de la colonne de requête de la table de données d'entraînement à utiliser lors du réglage supervisé. La valeur par défaut est prompt.
    • INPUT_LABEL_COLS : valeur ARRAY<<STRING> contenant le nom de la colonne d'étiquette de la table de données d'entraînement à utiliser dans le réglage supervisé. Vous ne pouvez spécifier qu'un seul élément dans le tableau. La valeur par défaut de cet attribut est un tableau vide. Ainsi, label devient la valeur par défaut de l'argument LABEL_COLUMN.
    • PROMPT_COLUMN : colonne de la table de données d'entraînement contenant la requête permettant d'évaluer le contenu de la colonne LABEL_COLUMN. Cette colonne doit être de type STRING ou castée vers STRING. Si vous spécifiez une valeur pour l'option INPUT_PROMPT_COL, vous devez spécifier la même valeur pour PROMPT_COLUMN. Sinon, cette valeur doit être prompt. Si votre table ne comporte pas de colonne prompt, utilisez un alias pour spécifier une colonne de table existante. Par exemple, AS SELECT hint AS prompt, label FROM mydataset.mytable.
    • LABEL_COLUMN : colonne de la table de données d'entraînement contenant les exemples avec lesquels entraîner le modèle. Cette colonne doit être de type STRING ou castée vers STRING. Si vous spécifiez une valeur pour l'option INPUT_LABEL_COLS, vous devez spécifier la même valeur pour LABEL_COLUMN. Sinon, cette valeur doit être label. Si votre table ne comporte pas de colonne label, utilisez un alias pour spécifier une colonne de table existante. Par exemple, AS SELECT prompt, feature AS label FROM mydataset.mytable.
    • TABLE_PROJECT_ID : ID du projet contenant la table de données d'entraînement
    • TABLE_DATASET : nom de l'ensemble de données contenant la table de données d'entraînement
    • TABLE_NAME : nom de la table contenant les données à utiliser pour entraîner le modèle

Évaluer le modèle réglé

  1. Dans la console Google Cloud, accédez à la page BigQuery.

    Accéder à BigQuery

  2. Dans l'éditeur de requête, exécutez la requête suivante pour évaluer le modèle réglé:

    SELECT
    *
    FROM
    ML.EVALUATE(
      MODEL `PROJECT_ID.DATASET_ID.MODEL_NAME`,
      TABLE `TABLE_PROJECT_ID.TABLE_DATASET.TABLE_NAME`,
      STRUCT('TASK_TYPE' AS task_type, TOKENS AS max_output_tokens,
        TEMPERATURE AS temperature, TOP_K AS top_k,
        TOP_P AS top_p));
    

    Remplacez les éléments suivants :

    • PROJECT_ID : ID du projet contenant le modèle
    • DATASET_ID : ID de l'ensemble de données contenant le modèle.
    • MODEL_NAME : nom du modèle
    • TABLE_PROJECT_ID: ID du projet contenant la table de données d'évaluation.
    • TABLE_DATASET : nom de l'ensemble de données contenant la table de données d'évaluation
    • TABLE_NAME: nom de la table contenant les données d'évaluation.

      La table doit comporter une colonne dont le nom correspond au nom de la colonne de requête fournie lors de l'entraînement du modèle. Vous pouvez fournir cette valeur à l'aide de l'option prompt_col lors de l'entraînement du modèle. Si prompt_col n'est pas spécifié, la colonne prompt dans les données d'entraînement est utilisée. Une erreur est renvoyée s'il n'existe aucune colonne nommée prompt.

      La table doit comporter une colonne dont le nom correspond au nom de la colonne d'étiquette fournie lors de l'entraînement du modèle. Vous pouvez fournir cette valeur à l'aide de l'option input_label_cols lors de l'entraînement du modèle. Si input_label_cols n'est pas spécifié, la colonne label dans les données d'entraînement est utilisée. Une erreur est renvoyée s'il n'existe aucune colonne nommée label.

    • TASK_TYPE: valeur STRING spécifiant le type de tâche pour lequel vous souhaitez évaluer le modèle. Les options valides sont les suivantes :
      • TEXT_GENERATION
      • CLASSIFICATION
      • SUMMARIZATION
      • QUESTION_ANSWERING
      • UNSPECIFIED
    • TOKENS : valeur INT64 qui définit le nombre maximal de jetons pouvant être générés dans la réponse. Cette valeur doit être comprise dans la plage [1,1024]. Spécifiez une valeur inférieure pour obtenir des réponses plus courtes et une valeur supérieure pour des réponses plus longues. La valeur par défaut est 128.
    • TEMPERATURE : valeur FLOAT64 comprise dans la plage [0.0,1.0] qui contrôle le degré d'aléatoire dans la sélection des jetons. La valeur par défaut est 0.

      Des valeurs inférieures pour temperature conviennent aux requêtes qui nécessitent une réponse plus déterministe et moins ouverte ou créative, tandis que des valeurs plus élevées pour temperature peuvent entraîner des résultats plus diversifiés ou créative. Une valeur 0 pour temperature est déterministe, ce qui signifie que la réponse dont la probabilité est la plus élevée est toujours sélectionnée.

    • TOP_K : valeur INT64 comprise dans la plage [1,40] qui détermine le pool initial de jetons pris en compte par le modèle pour la sélection. Spécifiez une valeur inférieure pour les réponses moins aléatoires et une valeur plus élevée pour les réponses plus aléatoires. La valeur par défaut est 40.
    • TOP_P : une valeur FLOAT64 comprise dans la plage [0.0,1.0] permet de déterminer quels jetons du pool déterminés par TOP_K sont sélectionnés. Spécifiez une valeur inférieure pour les réponses moins aléatoires et une valeur plus élevée pour les réponses plus aléatoires. La valeur par défaut est 0.95.

Générer du texte

Générez du texte à l'aide de la fonction ML.GENERATE_TEXT :

Colonne de requête

Générer du texte à l'aide d'une colonne de table pour fournir la requête.

SELECT *
FROM ML.GENERATE_TEXT(
  MODEL `PROJECT_ID.DATASET_ID.MODEL_NAME`,
  TABLE PROJECT_ID.DATASET_ID.TABLE_NAME,
  STRUCT(TOKENS AS max_output_tokens, TEMPERATURE AS temperature,
  TOP_K AS top_k, TOP_P AS top_p, FLATTEN_JSON AS flatten_json_output,
  STOP_SEQUENCES AS stop_sequences)
);

Remplacez les éléments suivants :

  • PROJECT_ID : ID de votre projet.
  • DATASET_ID : ID de l'ensemble de données contenant le modèle.
  • MODEL_NAME : nom du modèle
  • TABLE_NAME : nom de la table contenant la requête. Cette table doit comporter une colonne dont le nom correspond au nom de la colonne de caractéristiques dans le LLM réglé. Le nom de la colonne de caractéristiques dans le LLM peut être défini à l'aide de l'option PROMPT_COL lors de la création du modèle. Sinon, le nom de la colonne de caractéristiques dans le LLM est prompt par défaut. Vous pouvez également utiliser un alias pour utiliser une colonne portant un nom différent.
  • TOKENS : valeur INT64 qui définit le nombre maximal de jetons pouvant être générés dans la réponse. Cette valeur doit être comprise dans la plage [1,1024]. Spécifiez une valeur inférieure pour obtenir des réponses plus courtes et une valeur supérieure pour des réponses plus longues. La valeur par défaut est 128.
  • TEMPERATURE : valeur FLOAT64 comprise dans la plage [0.0,1.0] qui contrôle le degré d'aléatoire dans la sélection des jetons. La valeur par défaut est 0.

    Des valeurs inférieures pour temperature conviennent aux requêtes qui nécessitent une réponse plus déterministe et moins ouverte ou créative, tandis que des valeurs plus élevées pour temperature peuvent entraîner des résultats plus diversifiés ou créative. Une valeur 0 pour temperature est déterministe, ce qui signifie que la réponse dont la probabilité est la plus élevée est toujours sélectionnée.

  • TOP_K : valeur INT64 comprise dans la plage [1,40] qui détermine le pool initial de jetons pris en compte par le modèle pour la sélection. Spécifiez une valeur inférieure pour les réponses moins aléatoires et une valeur plus élevée pour les réponses plus aléatoires. La valeur par défaut est 40.
  • TOP_P : une valeur FLOAT64 comprise dans la plage [0.0,1.0] permet de déterminer quels jetons du pool déterminés par TOP_K sont sélectionnés. Spécifiez une valeur inférieure pour les réponses moins aléatoires et une valeur plus élevée pour les réponses plus aléatoires. La valeur par défaut est 0.95.
  • FLATTEN_JSON : valeur BOOL qui détermine si le texte généré et les attributs de sécurité doivent être renvoyés dans des colonnes distinctes. La valeur par défaut est FALSE.
  • STOP_SEQUENCES : valeur ARRAY<STRING> qui supprime les chaînes spécifiées si elles sont incluses dans les réponses du modèle. Les chaînes correspondent exactement, y compris la casse. La valeur par défaut est un tableau vide.

L'exemple suivant montre une requête avec ces caractéristiques :

  • Elle utilise la colonne prompt de la table prompts pour la requête.
  • Elle renvoie une réponse courte et relativement probable.
  • Elle renvoie le texte généré et les attributs de sécurité dans des colonnes distinctes.
SELECT *
FROM
  ML.GENERATE_TEXT(
    MODEL `mydataset.llm_model`,
    TABLE mydataset.prompts,
    STRUCT(
      0.4 AS temperature, 100 AS max_output_tokens, 0.5 AS top_p,
      40 AS top_k, TRUE AS flatten_json_output));

Requête à partir d'une recherche

Générer du texte à l'aide d'une recherche pour fournir la requête.

SELECT *
FROM ML.GENERATE_TEXT(
  MODEL `PROJECT_ID.DATASET_ID.MODEL_NAME`,
  (PROMPT_QUERY),
  STRUCT(TOKENS AS max_output_tokens, TEMPERATURE AS temperature,
  TOP_K AS top_k, TOP_P AS top_p, FLATTEN_JSON AS flatten_json_output,
  STOP_SEQUENCES AS stop_sequences)
);

Remplacez les éléments suivants :

  • PROJECT_ID : ID de votre projet.
  • DATASET_ID : ID de l'ensemble de données contenant le modèle.
  • MODEL_NAME : nom du modèle
  • PROMPT_QUERY : fournit les données de la requête.
  • TOKENS : valeur INT64 qui définit le nombre maximal de jetons pouvant être générés dans la réponse. Cette valeur doit être comprise dans la plage [1,1024]. Spécifiez une valeur inférieure pour obtenir des réponses plus courtes et une valeur supérieure pour des réponses plus longues. La valeur par défaut est 128.
  • TEMPERATURE : valeur FLOAT64 comprise dans la plage [0.0,1.0] qui contrôle le degré d'aléatoire dans la sélection des jetons. La valeur par défaut est 0.

    Des valeurs inférieures pour temperature conviennent aux requêtes qui nécessitent une réponse plus déterministe et moins ouverte ou créative, tandis que des valeurs plus élevées pour temperature peuvent entraîner des résultats plus diversifiés ou créative. Une valeur 0 pour temperature est déterministe, ce qui signifie que la réponse dont la probabilité est la plus élevée est toujours sélectionnée.

  • TOP_K : valeur INT64 comprise dans la plage [1,40] qui détermine le pool initial de jetons pris en compte par le modèle pour la sélection. Spécifiez une valeur inférieure pour les réponses moins aléatoires et une valeur plus élevée pour les réponses plus aléatoires. La valeur par défaut est 40.
  • TOP_P : une valeur FLOAT64 comprise dans la plage [0.0,1.0] permet de déterminer quels jetons du pool déterminés par TOP_K sont sélectionnés. Spécifiez une valeur inférieure pour les réponses moins aléatoires et une valeur plus élevée pour les réponses plus aléatoires. La valeur par défaut est 0.95.
  • FLATTEN_JSON : valeur BOOL qui détermine si le texte généré et les attributs de sécurité doivent être renvoyés dans des colonnes distinctes. La valeur par défaut est FALSE.
  • STOP_SEQUENCES : valeur ARRAY<STRING> qui supprime les chaînes spécifiées si elles sont incluses dans les réponses du modèle. Les chaînes correspondent exactement, y compris la casse. La valeur par défaut est un tableau vide.

Exemple 1

L'exemple suivant montre une requête avec ces caractéristiques :

  • Elle demande le résumé du texte dans la colonne body de la table articles.
  • Elle renvoie une réponse relativement longue et plus probable.
  • Elle renvoie le texte généré et les attributs de sécurité dans des colonnes distinctes.
SELECT *
FROM
  ML.GENERATE_TEXT(
    MODEL `mydataset.llm_model`,
    (
      SELECT CONCAT('Summarize this text', body) AS prompt
      FROM mydataset.articles
    ),
    STRUCT(
      0.2 AS temperature, 650 AS max_output_tokens, 0.2 AS top_p,
      15 AS top_k, TRUE AS flatten_json_output));

Exemple 2

L'exemple suivant montre une requête avec ces caractéristiques :

  • Elle utilise une requête pour créer les données de requête en concaténant les chaînes qui fournissent des préfixes de requête avec des colonnes de table.
  • Elle renvoie une réponse courte et relativement probable.
  • Elle ne renvoie pas le texte généré et les attributs de sécurité dans des colonnes distinctes.
SELECT *
FROM
  ML.GENERATE_TEXT(
    MODEL `mydataset.llm_tuned_model`,
    (
      SELECT CONCAT(question, 'Text:', description, 'Category') AS prompt
      FROM mydataset.input_table
    ),
    STRUCT(
      0.4 AS temperature, 100 AS max_output_tokens, 0.5 AS top_p,
      30 AS top_k, FALSE AS flatten_json_output));