Usa el ajuste y la evaluación para mejorar el rendimiento de los modelos

En este documento, se muestra cómo crear un modelo remoto de BigQuery ML que hace referencia a un modelo de gemini-2.0-flash-001Vertex AI. Luego, debes usar ajuste supervisado para ajustar el modelo con nuevos datos de entrenamiento, seguido de la evaluación del modelo con la ML.EVALUATE función.

El ajuste puede ayudarte a abordar situaciones en las que necesitas personalizar el modelo alojado de Vertex AI, como cuando el comportamiento esperado del modelo es difícil de definir de forma concisa en un mensaje o cuando los mensajes no producen lo esperado resultados suficientes. El ajuste supervisado también influye en el modelo de las siguientes maneras:

  • Guía al modelo para que devuelva estilos de respuesta específicos, por ejemplo, ser más conciso o más detallado.
  • Enseña al modelo nuevos comportamientos, por ejemplo, responde a las instrucciones como un arquetipo específico.
  • Hace que el modelo se actualice con información nueva.

En este instructivo, el objetivo es que el modelo genere texto cuyo estilo y contenido se ajusten lo más posible al contenido de verdad fundamental proporcionado.

Roles obligatorios

Para ejecutar este instructivo, necesitas los siguientes roles de Identity and Access Management (IAM):

  • Crear y usar conjuntos de datos, conexiones y modelos de BigQuery: Administrador de BigQuery (roles/bigquery.admin).
  • Otorgar permisos a la cuenta de servicio de la conexión: Administrador de IAM del proyecto (roles/resourcemanager.projectIamAdmin).

Estos roles predefinidos contienen los permisos necesarios para realizar las tareas de este documento. Para ver los permisos exactos que son necesarios, expande la sección Permisos necesarios:

Permisos necesarios

  • Crear un conjunto de datos: bigquery.datasets.create
  • Crear una tabla: bigquery.tables.create
  • Crear, delegar y usar una conexión: bigquery.connections.*
  • Establecer la conexión predeterminada: bigquery.config.*
  • Establecer permisos de la cuenta de servicio: resourcemanager.projects.getIamPolicy y resourcemanager.projects.setIamPolicy
  • Crear un modelo y ejecutar la inferencia:
    • bigquery.jobs.create
    • bigquery.models.create
    • bigquery.models.getData
    • bigquery.models.updateData
    • bigquery.models.updateMetadata

También puedes obtener estos permisos con roles personalizados o con otros roles predefinidos.

Antes de comenzar

  1. En la Cloud de Confiance consola, en la página del selector de proyectos, selecciona o crea un Cloud de Confiance proyecto.

    Roles necesarios para seleccionar o crear un proyecto

    • Seleccionar un proyecto: Para seleccionar un proyecto, no se requiere un rol de IAM específico. Puedes seleccionar cualquier proyecto en el que se te haya otorgado un rol.
    • Crear un proyecto: Para crear un proyecto, necesitas el rol de Creador de proyectos (roles/resourcemanager.projectCreator), que contiene el resourcemanager.projects.create permiso. Obtén más información para otorgar roles.

    Ir al selector de proyectos

  2. Verifica que la facturación esté habilitada para tu Cloud de Confiance proyecto.

  3. Habilita las APIs de BigQuery, BigQuery Connection, Vertex AI y Compute Engine.

    Roles necesarios para habilitar las APIs

    Para habilitar las APIs, necesitas el rol de IAM de administrador de Service Usage (roles/serviceusage.serviceUsageAdmin), que contiene el permiso serviceusage.services.enable. Obtén más información para otorgar roles.

    Habilitar las API

Costos

En este documento, usarás los siguientes componentes facturables de Cloud de Confiance by S3NS:

  • BigQuery: You incur costs for the queries that you run in BigQuery.
  • BigQuery ML: You incur costs for the model that you create and the processing that you perform in BigQuery ML.
  • Vertex AI: You incur costs for calls to and supervised tuning of the gemini-2.0-flash-001 model.

Para obtener más información, consulta los siguientes recursos:

Crea un conjunto de datos

Crea un conjunto de datos de BigQuery para almacenar tu modelo de AA.

Console

  1. En la Cloud de Confiance consola de, ve a la página BigQuery.

    Ir a la página de BigQuery

  2. En el panel Explorador, haz clic en el nombre de tu proyecto.

  3. Haz clic en Ver acciones > Crear conjunto de datos.

  4. En la página Crear conjunto de datos, haz lo siguiente:

    • En ID del conjunto de datos, ingresa bqml_tutorial.

    • En Tipo de ubicación, selecciona Multirregión y, luego, selecciona EE.UU..

    • Deja la configuración predeterminada restante como está y haz clic en Crear conjunto de datos.

bq

Para crear un conjunto de datos nuevo, usa el bq mk --dataset comando.

  1. Crea un conjunto de datos llamado bqml_tutorial con la ubicación de datos establecida en US.

    bq mk --dataset \
      --location=US \
      --description "BigQuery ML tutorial dataset." \
      bqml_tutorial
  2. Confirma que se haya creado el conjunto de datos:

    bq ls

API

Llama al datasets.insert método con un recurso de conjunto de datos definido.

{
  "datasetReference": {
     "datasetId": "bqml_tutorial"
  }
}

Crea tablas de prueba

Crea tablas de datos de entrenamiento y evaluación basadas en el conjunto de datos públicos task955_wiki_auto_style_transfer de Hugging Face.

  1. Abre Cloud Shell.

  2. En Cloud Shell, ejecuta los siguientes comandos para crear tablas de datos de prueba y evaluación:

    python3 -m pip install pandas pyarrow fsspec huggingface_hub
    
    python3 -c "import pandas as pd; df_train = pd.read_parquet('hf://datasets/Lots-of-LoRAs/task955_wiki_auto_style_transfer/data/train-00000-of-00001.parquet').drop('id', axis=1); df_train['output'] = [x[0] for x in df_train['output']]; df_train.to_json('wiki_auto_style_transfer_train.jsonl', orient='records', lines=True);"
    
    python3 -c "import pandas as pd; df_valid = pd.read_parquet('hf://datasets/Lots-of-LoRAs/task955_wiki_auto_style_transfer/data/valid-00000-of-00001.parquet').drop('id', axis=1); df_valid['output'] = [x[0] for x in df_valid['output']]; df_valid.to_json('wiki_auto_style_transfer_valid.jsonl', orient='records', lines=True);"
    
    bq rm -t bqml_tutorial.wiki_auto_style_transfer_train
    
    bq rm -t bqml_tutorial.wiki_auto_style_transfer_valid
    
    bq load --source_format=NEWLINE_DELIMITED_JSON bqml_tutorial.wiki_auto_style_transfer_train wiki_auto_style_transfer_train.jsonl input:STRING,output:STRING
    
    bq load --source_format=NEWLINE_DELIMITED_JSON bqml_tutorial.wiki_auto_style_transfer_valid wiki_auto_style_transfer_valid.jsonl input:STRING,output:STRING
    

Crea un modelo de referencia

Crea un modelo remoto sobre el modelo gemini-2.0-flash-001 de Vertex AI.

  1. En la Cloud de Confiance consola de, ve a la página BigQuery.

    Ir a BigQuery

  2. En el editor de consultas, ejecuta la siguiente declaración para crear un modelo remoto:

    CREATE OR REPLACE MODEL `bqml_tutorial.gemini_baseline`
    REMOTE WITH CONNECTION DEFAULT
    OPTIONS (ENDPOINT ='gemini-2.0-flash-001');

    La consulta tarda varios segundos en completarse, después de eso, el modelo gemini_baseline aparece en el conjunto de datos bqml_tutorial en el panel Explorador. Debido a que la consulta usa una declaración CREATE MODEL para crear un modelo, no hay resultados de consultas.

Verifica el rendimiento del modelo de referencia

Ejecuta la AI.GENERATE_TEXT función con el modelo remoto para ver cómo se desempeña en los datos de evaluación sin ningún ajuste.

  1. En la Cloud de Confiance consola de, ve a la página BigQuery.

    Ir a BigQuery

  2. En el editor de consultas, ejecuta la siguiente declaración:

    SELECT result, ground_truth
    FROM
      AI.GENERATE_TEXT(
        MODEL `bqml_tutorial.gemini_baseline`,
        (
          SELECT
            input AS prompt, output AS ground_truth
          FROM `bqml_tutorial.wiki_auto_style_transfer_valid`
          LIMIT 10
        ));

    Si examinas los datos de salida y comparas los valores result y ground_truth, verás que, si bien el modelo de referencia genera texto que refleja con precisión los hechos proporcionados en el contenido de verdad fundamental, el estilo del texto es bastante diferente.

Evalúa el modelo de referencia

Para realizar una evaluación más detallada del rendimiento del modelo, usa la ML.EVALUATE función. Esta función calcula las métricas del modelo que miden la exactitud y la calidad del texto generado para ver cómo se comparan las respuestas del modelo con las respuestas ideales.

  1. En la Cloud de Confiance consola de, ve a la página BigQuery.

    Ir a BigQuery

  2. En el editor de consultas, ejecuta la siguiente declaración:

    SELECT *
    FROM
      ML.EVALUATE(
        MODEL `bqml_tutorial.gemini_baseline`,
        (
          SELECT
            input AS input_text, output AS output_text
          FROM `bqml_tutorial.wiki_auto_style_transfer_valid`
        ),
        STRUCT('text_generation' AS task_type));

El resultado es similar al siguiente:

   +---------------------+---------------------+-------------------------------------------+--------------------------------------------+
   | bleu4_score         | rouge-l_precision   | rouge-l_recall      | rouge-l_f1_score    | evaluation_status                          |
   +---------------------+---------------------+---------------------+---------------------+--------------------------------------------+
   | 0.23317359667074181 | 0.37809145226740043 | 0.45902937167791508 | 0.40956844061733139 | {                                          |
   |                     |                     |                     |                     |  "num_successful_rows": 176,               |
   |                     |                     |                     |                     |  "num_total_rows": 176                     |
   |                     |                     |                     |                     | }                                          |
   +---------------------+---------------------+ --------------------+---------------------+--------------------------------------------+
   

Puedes ver que el rendimiento del modelo de referencia no es malo, pero la similitud del texto generado con la verdad fundamental es baja, según las métricas de evaluación. Esto indica que vale la pena realizar un ajuste supervisado para ver si puedes mejorar el rendimiento del modelo para este caso de uso.

Crea un modelo ajustado

Crea un modelo remoto muy similar al que creaste en Crear un modelo, pero esta vez especificando la cláusula AS SELECT para proporcionar los datos de entrenamiento para ajustar el modelo.

  1. En la Cloud de Confiance consola de, ve a la página BigQuery.

    Ir a BigQuery

  2. En el editor de consultas, ejecuta la siguiente declaración para crear un modelo remoto:

    CREATE OR REPLACE MODEL `bqml_tutorial.gemini_tuned`
      REMOTE
        WITH CONNECTION DEFAULT
      OPTIONS (
        endpoint = 'gemini-2.0-flash-001',
        max_iterations = 500,
        data_split_method = 'no_split')
    AS
    SELECT
      input AS prompt, output AS label
    FROM `bqml_tutorial.wiki_auto_style_transfer_train`;

    La consulta tarda unos minutos en completarse. después de eso, el modelo gemini_tuned aparecerá en el conjunto de datos bqml_tutorial en el panel Explorador. Debido a que la consulta usa una declaración CREATE MODEL para crear un modelo, no hay resultados de consultas.

Verifica el rendimiento del modelo ajustado

Ejecuta la función AI.GENERATE_TEXT para ver el rendimiento del modelo ajustado en los datos de evaluación.

  1. En la Cloud de Confiance consola de, ve a la página BigQuery.

    Ir a BigQuery

  2. En el editor de consultas, ejecuta la siguiente declaración:

    SELECT result, ground_truth
    FROM
      AI.GENERATE_TEXT(
        MODEL `bqml_tutorial.gemini_tuned`,
        (
          SELECT
            input AS prompt, output AS ground_truth
          FROM `bqml_tutorial.wiki_auto_style_transfer_valid`
          LIMIT 10
        ));

    Si examinas los datos de salida, verás que el modelo ajustado produce texto que es mucho más similar en estilo al contenido de verdad fundamental.

Evalúa el modelo ajustado

Usa la función ML.EVALUATE para ver cómo se comparan las respuestas del modelo ajustado con las respuestas ideales.

  1. En la Cloud de Confiance consola de, ve a la página BigQuery.

    Ir a BigQuery

  2. En el editor de consultas, ejecuta la siguiente declaración:

    SELECT *
    FROM
      ML.EVALUATE(
        MODEL `bqml_tutorial.gemini_tuned`,
        (
          SELECT
            input AS prompt, output AS label
          FROM `bqml_tutorial.wiki_auto_style_transfer_valid`
        ),
        STRUCT('text_generation' AS task_type));

El resultado es similar al siguiente:

   +---------------------+---------------------+-------------------------------------------+--------------------------------------------+
   | bleu4_score         | rouge-l_precision   | rouge-l_recall      | rouge-l_f1_score    | evaluation_status                          |
   +---------------------+---------------------+---------------------+---------------------+--------------------------------------------+
   | 0.416868792119966   | 0.642001000843349   | 0.55910008048151372 | 0.5907226262084847  | {                                          |
   |                     |                     |                     |                     |  "num_successful_rows": 176,               |
   |                     |                     |                     |                     |  "num_total_rows": 176                     |
   |                     |                     |                     |                     | }                                          |
   +---------------------+---------------------+ --------------------+---------------------+--------------------------------------------+
   

Puedes ver que, aunque el conjunto de datos de entrenamiento usó solo 1,408 ejemplos, hay una mejora notoria en el rendimiento, como lo indican las métricas de evaluación más altas de.

Limpia

  1. En la Cloud de Confiance consola, ve a la página Administrar recursos.

    Ir a Administrar recursos

  2. En la lista de proyectos, elige el proyecto que tú quieres borrar y haz clic en Borrar.
  3. En el diálogo, escribe el ID del proyecto y, luego, haz clic en Cerrar para borrar el proyecto.