Optimizador de peticiones basado en datos

En este documento se describe cómo usar el optimizador basado en datos para optimizar automáticamente el rendimiento de las peticiones mejorando las instrucciones del sistema de un conjunto de peticiones.

El optimizador basado en datos puede ayudarte a mejorar tus peticiones rápidamente y a gran escala, sin tener que reescribir manualmente las instrucciones del sistema ni las peticiones individuales. Esto resulta especialmente útil cuando quieres usar instrucciones del sistema y peticiones que se han escrito para un modelo con otro modelo.

Ejemplo de optimización de una petición

Por ejemplo, para optimizar las instrucciones del sistema de un conjunto de peticiones que hacen referencia a información contextual para responder a preguntas sobre cocina, puedes usar el optimizador basado en datos. Para completar esta tarea, debes preparar las entradas de forma similar a la siguiente:

Instrucciones del sistema

You are a professional chef. Your goal is teaching how to cook healthy cooking recipes to your apprentice.

Given a question from your apprentice and some context, provide the correct answer to the question.
Use the context to return a single and correct answer with some explanation.

Plantilla de petición

Question: {input_question}
Facts: {input_context}

Peticiones de ejemplo

input_question input_context
¿Qué técnicas se pueden usar para cocinar carne roja y cerdo que maximicen el sabor y la ternura, y minimicen la formación de compuestos poco saludables? La carne de vacuno y de cerdo deben cocinarse hasta alcanzar una temperatura interna de 63 °C para que sean seguras. Marinar la carne en ingredientes ácidos, como zumo de limón o vinagre, puede ayudar a ablandarla, ya que descompone las fibras musculares duras. Los métodos de cocción a altas temperaturas, como la parrilla y el sellado en sartén, pueden crear un dorado y una caramelización deliciosos, pero es importante evitar que los alimentos se quemen, ya que pueden producir compuestos dañinos.
¿Cuáles son algunas formas creativas de añadir sabor y nutrientes a los batidos de proteínas sin usar azúcares añadidos ni ingredientes artificiales? Añadir verduras de hoja verde, como espinacas o col rizada, es una forma estupenda de aumentar el valor nutricional de tu batido sin alterar drásticamente el sabor. Si usas leche de almendras sin azúcar o agua de coco en lugar de leche normal, puedes añadir un toque dulce y un aporte de grasas saludables o electrolitos, respectivamente. ¿Sabías que si bates demasiado tu batido puede calentarse? Para que los ingredientes se mantengan frescos, bátelos en intervalos más cortos y deja descansar la batidora si es necesario.

Instrucciones del sistema optimizadas

As a highly skilled chef with a passion for healthy cooking, you love sharing your knowledge with
aspiring chefs. Today, a culinary intern approaches you with a question about healthy cooking. Given
the intern's question and some facts, provide a clear, concise, and informative answer that will help
the intern excel in their culinary journey.

Cómo funciona la optimización

El optimizador basado en datos usa los siguientes parámetros:

  • Modo de optimización: especifica si el optimizador basado en datos optimiza las instrucciones del sistema, selecciona peticiones de muestra para añadirlas a las instrucciones del sistema como ejemplos de pocos disparos o ambas cosas.
  • Métricas de evaluación: las métricas que usa el optimizador basado en datos para optimizar las instrucciones del sistema o seleccionar las peticiones de muestra.
  • Modelo de destino: el modelo de Google para el que el optimizador basado en datos optimiza las instrucciones del sistema y selecciona las peticiones de muestra.

Cuando ejecutas el optimizador basado en datos, optimiza las instrucciones del sistema en función de tus selecciones ejecutando un trabajo de entrenamiento personalizado en el que evalúa de forma iterativa tus peticiones de muestra y reescribe las instrucciones del sistema para encontrar la versión que produzca la mejor puntuación de evaluación para el modelo de destino.

Al final del trabajo, el optimizador basado en datos genera las instrucciones del sistema optimizadas junto con su puntuación de evaluación.

Métricas de evaluación

El optimizador basado en datos usa métricas de evaluación para optimizar las instrucciones del sistema y seleccionar peticiones de ejemplo. Puede usar las métricas de evaluación estándar o definir sus propias métricas de evaluación personalizadas. Nota: Todas las métricas de evaluación DEBEN tener la propiedad de que una puntuación más alta indica un mejor rendimiento.

Puedes usar varias métricas a la vez. Sin embargo, las métricas personalizadas solo se pueden usar de una en una. Si usa métricas estándar y personalizadas al mismo tiempo, solo una de ellas puede ser personalizada. Las demás deben ser métricas estándar.

Para saber cómo especificar métricas de una en una o combinadas, consulta la sección EVALUATION_METRIC_PARAMETERS de la pestaña SDK en Crear una plantilla de petición y las instrucciones del sistema.

Métricas de evaluación personalizadas

Las métricas personalizadas son útiles cuando las métricas estándar no se ajustan a su aplicación. Tenga en cuenta que el optimizador basado en datos solo admite una métrica personalizada a la vez.

Para saber cómo crear métricas personalizadas, consulte el artículo Crear métricas personalizadas.

Métricas de evaluación estándar

El optimizador basado en datos admite métricas de evaluación personalizadas y las siguientes métricas de evaluación:

Tipo de métrica Caso práctico Métrica Descripción
Basado en modelos Creación de resúmenes summarization_quality Describe la capacidad del modelo para responder preguntas a partir de un cuerpo de texto de referencia.
Búsqueda de respuestas question_answering_correctness* Describe la capacidad del modelo para responder correctamente a una pregunta.
question_answering_quality Describe la capacidad del modelo para responder preguntas a partir de un cuerpo de texto de referencia.
Coherencia coherence Describe la capacidad del modelo para ofrecer una respuesta coherente y mide lo bien que fluye el texto generado de forma lógica y tiene sentido.
Seguridad safety Describe el nivel de seguridad del modelo, es decir, si la respuesta contiene texto inapropiado.
Fluidez fluency Describe el dominio del idioma del modelo.
Con los pies en la tierra groundedness Describe la capacidad del modelo para proporcionar o hacer referencia a información incluida solo en el texto de entrada.
Comet comet** Describe la capacidad del modelo para ofrecer traducciones de calidad en comparación con la referencia.
MetricX metricx** Describe la capacidad del modelo en cuanto a la calidad de una traducción.
Basado en el cálculo Uso de herramientas y llamadas a funciones tool_call_valid* Describe la capacidad del modelo para predecir una llamada a herramienta válida.
tool_name_match* Describe la capacidad del modelo para predecir una llamada a una herramienta con el nombre correcto de la herramienta. Solo se inspecciona la primera llamada a la herramienta.
tool_parameter_key_match* Describe la capacidad del modelo para predecir una llamada a herramienta con los nombres de parámetros correctos.
tool_parameter_kv_match* Describe la capacidad del modelo para predecir una llamada a herramienta con los nombres de los parámetros y los valores de las claves correctos.
Generación de texto general bleu* Contiene el resultado de un algoritmo para evaluar la calidad de la predicción, que se ha traducido de un lenguaje natural a otro. La calidad de la predicción se considera la correspondencia entre un parámetro de predicción y su parámetro de referencia.
exact_match* Calcula si un parámetro de predicción coincide exactamente con un parámetro de referencia.
rouge_1* Se usa para comparar el parámetro de predicción proporcionado con un parámetro de referencia.
rouge_2*
rouge_l*
rouge_l_sum*

* Si quieres optimizar tus peticiones mediante las evaluaciones basadas en question_answering_correctness o en cálculos, debes hacer una de las siguientes acciones:

  • Añade una variable que represente la respuesta validada en el terreno de tus peticiones a tu plantilla de petición.
  • Si no tienes respuestas de referencia para tus peticiones, pero has usado las peticiones con un modelo de Google y has conseguido los resultados que buscabas, puedes añadir el parámetro source_model a tu configuración en lugar de añadir respuestas de referencia. Cuando se define el parámetro source_model, el optimizador basado en datos ejecuta tus peticiones de muestra en el modelo de origen para generar las respuestas validadas en el terreno.

** Si quiere optimizar sus peticiones usando comet o metricx, debe proporcionar el parámetro translation_source_field_name a su configuración, que especifica el nombre del campo correspondiente del texto de origen en los datos. Además, el valor de MetricX se ha modificado para que esté entre 0 (el peor) y 25 (el mejor) para respetar la propiedad de que cuanto mayor sea el valor, mejor será el resultado.

Antes de empezar

Para asegurarte de que la cuenta de servicio predeterminada de Compute Engine tiene los permisos necesarios para optimizar las peticiones, pide a tu administrador que asigne a la cuenta de servicio predeterminada de Compute Engine los siguientes roles de gestión de identidades y accesos en el proyecto:

Para obtener más información sobre cómo conceder roles, consulta el artículo Gestionar el acceso a proyectos, carpetas y organizaciones.

Es posible que tu administrador también pueda conceder los permisos necesarios a la cuenta de servicio predeterminada de Compute Engine mediante roles personalizados u otros roles predefinidos.

Optimizar las peticiones

Puedes optimizar las peticiones de las siguientes formas:

Para optimizar las peticiones, elige el método que quieras usar y, a continuación, completa los pasos que se describen en detalle en las siguientes secciones:

  1. Crear una plantilla de petición e instrucciones del sistema
  2. Preparar peticiones de ejemplo
  3. Opcional: crear métricas personalizadas
  4. Crear una configuración
  5. Ejecutar el trabajo de optimización de la petición
  6. Analizar los resultados y hacer iteraciones

Crear una plantilla de petición e instrucciones del sistema

Las plantillas de peticiones definen el formato de todas tus peticiones mediante variables sustituibles. Cuando usas una plantilla de petición para optimizar las peticiones, las variables se sustituyen por los datos del conjunto de datos de la petición.

Las variables de plantilla de petición deben cumplir los siguientes requisitos:

  • Las variables deben incluirse entre llaves
  • Los nombres de las variables no deben contener espacios ni guiones -
  • Las variables que representan entradas multimodales deben incluir la cadena MIME_TYPE después de la variable:

    @@@MIME_TYPE
    

    Sustituye MIME_TYPE por un tipo MIME de imagen, vídeo, audio o documento que sea compatible con el modelo de destino.

Crea una plantilla de petición y unas instrucciones del sistema con uno de los siguientes métodos:

Cuaderno

Si quieres ejecutar el optimizador basado en datos a través del cuaderno, crea instrucciones del sistema y una plantilla de petición siguiendo estos pasos:

  1. En Colab Enterprise, abre el cuaderno de Vertex AI Prompt Optimizer.

    Ir al cuaderno del optimizador de peticiones de Vertex AI

  2. En la sección Crea una plantilla de petición e instrucciones del sistema, haz lo siguiente:

    1. En el campo SYSTEM_INSTRUCTION, introduce las instrucciones del sistema. Por ejemplo:

      Based on the following images and articles respond to the questions.'\n' Be concise,
      and answer \"I don't know\" if the response cannot be found in the provided articles or images.
      
    2. En el campo PROMPT_TEMPLATE, introduce tu plantilla de petición. Por ejemplo:

      Article 1:\n\n{article_1}\n\nImage 1:\n\n{image_1} @@@image/jpeg\n\nQuestion: {question}
      
    3. Si quieres optimizar tus peticiones mediante las evaluaciones basadas en question_answering_correctness o en cálculos, debes hacer una de las siguientes acciones:

    • Añade la variable {target} a la plantilla de petición para representar la respuesta validada de la petición. Por ejemplo:

      Article 1:\n\n{article_1}\n\nImage 1:\n\n{image_1} @@@image/jpeg\n\nQuestion: {question}\n\n Answer: {target}
      
    • Si no tienes respuestas de referencia para tus peticiones, pero has usado las peticiones con un modelo de Google y has conseguido los resultados que buscabas, puedes añadir el parámetro source_model a tu configuración en lugar de añadir respuestas de referencia. Cuando se define el parámetro source_model, el optimizador basado en datos ejecuta tus peticiones de muestra en el modelo de origen para generar las respuestas validadas en el terreno.

SDK

Si quieres ejecutar el optimizador basado en datos a través del SDK sin usar el cuaderno, crea archivos de texto para tu plantilla de petición y las instrucciones del sistema haciendo lo siguiente:

  1. Crea un archivo de texto para las instrucciones del sistema.

  2. En el archivo de texto, define las instrucciones del sistema. Por ejemplo:

    Based on the following images and articles respond to the questions.'\n' Be concise, and answer \"I don't know\" if the response cannot be found in the provided articles or images.
    
  3. Crea un archivo de texto para tu plantilla de petición.

  4. En el archivo de texto, define una plantilla de petición que incluya una o varias variables. Por ejemplo:

    Article 1:\n\n{article_1}\n\nImage 1:\n\n{image_1} @@@image/jpeg\n\nQuestion: {question}
    
  5. Si quieres optimizar tus peticiones mediante las evaluaciones basadas en question_answering_correctness o en cálculos, debes hacer una de las siguientes acciones:

    • Añade la variable {target} a la plantilla de petición para representar la respuesta validada de la petición. Por ejemplo:

      Article 1:\n\n{article_1}\n\nImage 1:\n\n{image_1} @@@image/jpeg\n\nQuestion: {question}\n\n Answer: {target}
      
    • Si no tienes respuestas de referencia para tus peticiones, pero has usado las peticiones con un modelo de Google y has conseguido los resultados que buscabas, puedes añadir el parámetro source_model a tu configuración en lugar de añadir respuestas de referencia. Cuando se define el parámetro source_model, el optimizador basado en datos ejecuta tus peticiones de muestra en el modelo de origen para generar las respuestas validadas en el terreno.

Preparar peticiones de ejemplo

Para obtener los mejores resultados del optimizador basado en datos, usa entre 50 y 100 peticiones de muestra.

  • La herramienta puede seguir siendo eficaz con tan solo 5 peticiones de ejemplo.
  • Las mejores muestras incluyen ejemplos en los que el modelo de destino tiene un rendimiento bajo y ejemplos en los que tiene un buen rendimiento.

Las peticiones de ejemplo contienen los datos que sustituyen a las variables de la plantilla de petición. Puedes usar un archivo JSONL o CSV para almacenar tus peticiones de ejemplo.

Archivo JSONL

  1. Crea un archivo JSONL.
  2. En el archivo JSONL, añade los datos de la petición que sustituyen a cada variable. Por ejemplo:

    {"article_1": "The marine life …", "image_1": "gs://path_to_image", "Question": "What are some most effective ways to reduce ocean pollution?", "target": "The articles and images don't answer this question."}
    
    {"article_1": "During the year …", "image_1": "gs://path_to_image", "Question": "Who was the president in 2023?", "target": "Joe Biden"}
    
  3. Sube el archivo JSONL a un segmento de Cloud Storage.

Archivo CSV

  1. Crea un archivo CSV.
  2. En la primera fila, añade las variables de tu plantilla de petición.
  3. En las filas siguientes, añade los datos de muestra que sustituyen a cada variable.
  4. Sube el archivo CSV a un depósito de Cloud Storage.

Opcional: Crear métricas personalizadas

independientes.

Para crear una métrica personalizada, siga estos pasos:

  1. Crea un archivo de texto llamado requirements.txt.

  2. En el archivo requirements.txt, define las bibliotecas necesarias para la función de métrica de evaluación personalizada. Todas las funciones requieren el functions-framework paquete.

    Por ejemplo, el archivo requirements.txt de una métrica personalizada que calcule ROUGE-L sería similar al siguiente:

    functions-framework==3.*
    rouge-score
    
  3. Crea un archivo de Python llamado main.py.

  4. En el archivo main.py, escribe tu función de evaluación personalizada. La función debe aceptar lo siguiente:

    • Solicitudes HTTP POST
    • Entrada JSON que contiene el response, que es el resultado del LLM, y el reference, que es la respuesta correcta de la petición si se proporciona en el conjunto de datos de la petición.

    Por ejemplo, el archivo main.py de una métrica personalizada que calcula ROUGE-L sería similar al siguiente:

    from typing import Any
    import json
    import functions_framework
    from rouge_score import rouge_scorer
    
    # Register an HTTP function with the Functions Framework
    @functions_framework.http
    def main(request):
       request_json = request.get_json(silent=True)
       if not request_json:
           raise ValueError('Can not find request json.')
    
       """Extract 'response' and 'reference' from the request payload. 'response'
       represents the model's response, while 'reference' represents the ground
       truth response."""
       response = request_json['response']
       reference = request_json['reference']
    
       # Compute ROUGE-L F-measure
       scorer = rouge_scorer.RougeScorer(['rougeL'], use_stemmer=True)
       scores = scorer.score(reference, response)
       final_score = scores['rougeL'].fmeasure
    
       # Return the custom score in the response
       return json.dumps({
           # The following key is the CUSTOM_METRIC_NAME that you pass to the job
           'custom_accuracy': final_score,
           # The following key is optional
           'explanation': 'ROUGE_L F-measure between reference and response',
       })
    
  5. Despliega tu función de evaluación personalizada como una función de Cloud Run ejecutando el comando gcloud functions deploy:

    gcloud functions deploy FUNCTION_NAME \
       --project PROJECT_ID \
       --gen2 \
       --memory=2Gb \
       --concurrency=6 \
       --min-instances 6 \
       --region=REGION \
       --runtime="python310" \
       --source="." \
       --entry-point main \
       --trigger-http \
       --timeout=3600 \
       --quiet
    

    Haz los cambios siguientes:

    • FUNCTION_NAME: nombre de la métrica de evaluación personalizada.
    • PROJECT_ID: tu ID de proyecto.
    • REGION: la región en la que quieras implementar la función. Debe ser la misma región que la del modelo de destino.

Crear una configuración

La configuración del optimizador basado en datos especifica los parámetros que quieres definir para tu tarea de optimización de la petición.

Crea una configuración con una de las siguientes opciones:

Cuaderno

Si quiere ejecutar el optimizador basado en datos a través del cuaderno, cree una configuración siguiendo estos pasos:

  1. En Colab Enterprise, abre el cuaderno del optimizador basado en datos.

    Ir al cuaderno del optimizador de peticiones de Vertex AI

  2. En la sección Configurar ajustes del proyecto, haga lo siguiente:

    1. En el campo PROJECT_ID, introduce el ID de tu proyecto.
    2. En el campo UBICACIÓN, introduce la ubicación en la que quieres ejecutar el optimizador basado en datos.
    3. En el campo OUTPUT_PATH, introduce el URI del segmento de Cloud Storage en el que quieras que el optimizador basado en datos escriba las instrucciones del sistema optimizadas o los ejemplos de pocas respuestas. Por ejemplo, gs://bucket-name/output-path.
    4. En el campo INPUT_PATH, introduce el URI de las peticiones de ejemplo de tu segmento de Cloud Storage. Por ejemplo, gs://bucket-name/sample-prompts.jsonl.
  3. En la sección Configurar ajustes de optimización, haga lo siguiente:

    1. En el campo TARGET_MODEL, introduce el modelo para el que quieras optimizar las peticiones.
    2. En el campo THINKING_BUDGET, introduce el presupuesto de reflexión del modelo objetivo para el que quieras optimizar las peticiones. El valor predeterminado es -1, lo que significa que no se aplica ningún pensamiento a los modelos que no lo usan y que se aplica automáticamente a los modelos que sí lo usan, como Gemini 2.5. Consulta la sección Reflexión para obtener información sobre la configuración manual del presupuesto.
    3. En OPTIMIZATION_MODE, introduce el modo de optimización que quieras usar. Debe ser instruction, demonstration o instruction_and_demo.
    4. En el campo EVAL_METRIC, introduce una métrica de evaluación para la que quieras optimizar tus peticiones.
    5. Opcional: En el campo SOURCE_MODEL, introduce el modelo de Google con el que se usaron anteriormente las instrucciones y las peticiones del sistema. Cuando se define el parámetro source_model, el optimizador basado en datos ejecuta tus peticiones de muestra en el modelo de origen para generar las respuestas validadas en el terreno, que se usarán en las métricas de evaluación que las requieran. Si no has ejecutado tus peticiones con un modelo de Google anteriormente o no has conseguido los resultados que esperabas, añade respuestas de referencia a tu petición. Para obtener más información, consulta la sección Crear una petición e instrucciones del sistema de este documento.
  4. Opcional: En la sección Configurar ajustes de optimización avanzados, puede añadir cualquiera de los parámetros opcionales a su configuración.

  5. Ver parámetros opcionales
    • En el campo NUM_INST_OPTIMIZATION_STEPS, introduzca el número de iteraciones que utiliza el optimizador basado en datos en el modo de optimización de instrucciones. El tiempo de ejecución aumenta linealmente a medida que aumentas este valor. Debe ser un número entero entre 10 y 20. Si no se define ningún valor, el valor predeterminado es 10.
    • En el campo NUM_DEMO_OPTIMIZATION_STEPS, introduce el número de demostraciones que evalúa el optimizador basado en datos. Se usa con los modos de optimización demonstration y instruction_and_demo. Debe ser un número entero entre 10 y 30. Si no se define ningún valor, el valor predeterminado es 10.
    • En el campo NUM_DEMO_PER_PROMPT, introduce el número de demostraciones generadas por cada petición. Debe ser un número entero entre 2 y el número total de peticiones de muestra menos 1. Si no se define ningún valor, el valor predeterminado es 3.
    • En el campo TARGET_MODEL_QPS, introduzca las consultas por segundo (CPS) que el optimizador basado en datos envía al modelo de destino. El tiempo de ejecución disminuye de forma lineal a medida que aumenta este valor. Debe ser un número de coma flotante 3.0 o superior, pero inferior a la cuota de consultas por segundo que tengas en el modelo de destino. Si no se define ningún valor, el valor predeterminado es 3.0.
    • En el campo SOURCE_MODEL_QPS, introduce las consultas por segundo (QPS) que el optimizador basado en datos envía al modelo de origen. Debe ser un número decimal igual o superior a 3.0, pero inferior a la cuota de consultas por segundo que tengas en el modelo de origen. Si no se define ningún valor, el valor predeterminado es 3.0.
    • En el campo EVAL_QPS, introduce las consultas por segundo (QPS) que el optimizador basado en datos envía al servicio de evaluación de IA generativa o a la función de Cloud Run.
      • En el caso de las métricas basadas en modelos, debe ser un número flotante que sea 3.0 o mayor. Si no se define ningún valor, el valor predeterminado es 3.0.
      • En el caso de las métricas personalizadas, debe ser un valor float igual o superior a 3.0. Esto determina la frecuencia con la que el optimizador basado en datos llama a las funciones de Cloud Run de tu métrica personalizada.
    • Si quieres usar más de una métrica de evaluación, haz lo siguiente:
      1. En el campo EVAL_METRIC_1, introduce una métrica de evaluación que quieras usar.
      2. En el campo EVAL_METRIC_1_WEIGHT, introduzca el peso que quiera que use el optimizador basado en datos cuando ejecute la optimización.
      3. En el campo EVAL_METRIC_2, introduce la métrica de evaluación que quieras usar.
      4. En el campo EVAL_METRIC_2_WEIGHT, introduzca el peso que quiera que use el optimizador basado en datos cuando ejecute la optimización.
      5. En el campo EVAL_METRIC_3, puedes introducir una métrica de evaluación que quieras usar.
      6. En el campo EVAL_METRIC_3_WEIGHT, puedes introducir el peso que quieres que use el optimizador basado en datos cuando ejecute la optimización.
      7. En el campo METRIC_AGGREGATION_TYPE, introduce el peso que quieres que use el optimizador basado en datos cuando ejecute la optimización.
    • En el campo PLACEHOLDER_TO_VALUE, introduce la información que sustituya a las variables de las instrucciones del sistema. La información incluida en esta marca no se optimiza con el optimizador basado en datos.
    • En el campo RESPONSE_MIME_TYPE, introduce el tipo de respuesta MIME que usa el modelo de destino. Debe ser text/plain o application/json. Si no se define ningún valor, el valor predeterminado es text/plain.
    • En el campo TARGET_LANGUAGE, introduce el idioma de las instrucciones del sistema. Si no se define ningún valor, el valor predeterminado es el inglés.

SDK

Si quieres ejecutar el optimizador basado en datos a través del SDK, crea un archivo JSON con los parámetros que quieras usar para optimizar las peticiones siguiendo estos pasos:

  1. Crea un archivo JSON con los parámetros que quieras usar para optimizar tus peticiones. Cada archivo de configuración requiere los siguientes parámetros:

    {
     "project": "PROJECT_ID",
     "system_instruction": "SYSTEM_INSTRUCTION",
     "prompt_template": "PROMPT_TEMPLATE",
     "target_model": "TARGET_MODEL",
     "thinking_budget": "THINKING_BUDGET,
     EVALUATION_METRIC_PARAMETERS,
     "optimization_mode": "OPTIMIZATION_MODE",
     "input_data_path": "SAMPLE_PROMPT_URI",
     "output_path": "OUTPUT_URI"
    }
    

    Haz los cambios siguientes:

    • PROJECT_ID: tu ID de proyecto.
    • SYSTEM_INSTRUCTION: las instrucciones del sistema que quieras optimizar.
    • PROMPT_TEMPLATE: la plantilla de petición.
    • TARGET_MODEL: el modelo para el que quieres optimizar las peticiones.
    • THINKING_BUDGET: el presupuesto de pensamiento del modelo objetivo para el que quieres optimizar las peticiones. El valor predeterminado es -1, lo que significa que no se aplica ningún pensamiento a los modelos que no lo usan y que se aplica automáticamente a los modelos que sí lo usan, como Gemini 2.5. Consulta la sección Reflexión para obtener información sobre la configuración manual del presupuesto.
    • EVALUATION_METRIC_PARAMETERS: los parámetros que especifique dependerán del número de métricas de evaluación que utilice y de si son estándar o personalizadas:

      Métrica estándar única

      Si utiliza una sola métrica de evaluación estándar, use el siguiente parámetro:

       "eval_metric": "EVALUATION_METRIC",
       

      Sustituye EVALUATION_METRIC por la métrica para la que quieras optimizar tus peticiones.

      Métrica personalizada única

      Si usas una sola métrica de evaluación personalizada, usa los siguientes parámetros:

      "eval_metric": "custom_metric",
      "custom_metric_name": "CUSTOM_METRIC_NAME",
      "custom_metric_cloud_function_name": "FUNCTION_NAME",
      

      Haz los cambios siguientes:

      • CUSTOM_METRIC_NAME: el nombre de la métrica, tal como se define en la clave que corresponde a final_score. Por ejemplo, custom_accuracy.
      • FUNCTION_NAME: el nombre de la función de Cloud Run que desplegaste anteriormente.

      Varias métricas estándar

      Si utiliza varias métricas de evaluación estándar, use los siguientes parámetros:

      "eval_metrics_types": [EVALUATION_METRIC_LIST],
      "eval_metrics_weights": [EVAL_METRICS_WEIGHTS],
      "aggregation_type": "METRIC_AGGREGATION_TYPE",
      

      Haz los cambios siguientes:

      • EVALUATION_METRIC_LIST: lista de métricas de evaluación. Debe ser una matriz. Por ejemplo, "bleu", "summarization_quality".
      • EVAL_METRICS_WEIGHTS: el peso de cada métrica. Debe ser una matriz y tener la misma longitud que EVALUATION_METRIC_LIST.
      • METRIC_AGGREGATION_TYPE: el tipo de agregación que se ha usado en las métricas de evaluación. Debe ser uno de los siguientes: weighted_sum o weighted_average. Si no se define ningún valor, el valor predeterminado es weighted_sum.

      Varias métricas estándar y personalizadas

      Si usa varias métricas de evaluación que incluyen una combinación de una métrica personalizada y una o varias métricas estándar, utilice los siguientes parámetros:

      "eval_metrics_types": ["custom_metric", EVALUATION_METRIC_LIST],
      "eval_metrics_weights": [EVAL_METRICS_WEIGHTS],
      "aggregation_type": "METRIC_AGGREGATION_TYPE",
      "custom_metric_name": "CUSTOM_METRIC_NAME",
      "custom_metric_cloud_function_name": "FUNCTION_NAME",
      

      Haz los cambios siguientes:

      • EVALUATION_METRIC_LIST: lista de métricas de evaluación estándar. Debe ser una matriz. Por ejemplo, "bleu", "summarization_quality".
      • EVAL_METRICS_WEIGHTS: el peso de cada métrica. Debe ser una matriz.
      • METRIC_AGGREGATION_TYPE: el tipo de agregación que se ha usado en las métricas de evaluación. Debe ser uno de los siguientes: weighted_sum o weighted_average. Si no se define ningún valor, el valor predeterminado es weighted_sum.
      • CUSTOM_METRIC_NAME: el nombre de la métrica, tal como se define en la clave que corresponde a final_score. Por ejemplo, custom_accuracy.
      • FUNCTION_NAME: el nombre de la función de Cloud Run que desplegaste anteriormente.
    • OPTIMIZATION_MODE: el modo de optimización. Debe ser instruction, demonstration o instruction_and_demo.

    • SAMPLE_PROMPT_URI: el URI de las peticiones de muestra de tu segmento de Cloud Storage. Por ejemplo, gs://bucket-name/sample-prompts.jsonl.

    • OUTPUT_URI: el URI del bucket de Cloud Storage en el que quieres que el optimizador basado en datos escriba las instrucciones del sistema optimizadas o los ejemplos de pocos disparos. Por ejemplo, gs://bucket-name/output-path.

  2. También puedes añadir cualquiera de los parámetros opcionales al archivo de configuración.

    Los parámetros opcionales se dividen en cinco categorías:

    • Parámetros del proceso de optimización. Estos parámetros controlan el proceso de optimización general, incluida su duración y el número de iteraciones de optimización que se ejecutan, lo que influye directamente en la calidad de las optimizaciones.
    • Parámetros de selección de modelo y de ubicación. Estos parámetros especifican qué modelos usa el optimizador basado en datos y en qué ubicaciones los usa.
    • Parámetros de latencia (CPS). Estos parámetros controlan las QPS, lo que influye en la velocidad del proceso de optimización.
    • Otro. Otros parámetros que controlan la estructura y el contenido de las peticiones.

      Ver parámetros opcionales
      "num_steps": NUM_INST_OPTIMIZATION_STEPS,
      "num_demo_set_candidates": "NUM_DEMO_OPTIMIZATION_STEPS,
      "demo_set_size": NUM_DEMO_PER_PROMPT,
      "target_model_location": "TARGET_MODEL_LOCATION",
      "source_model": "SOURCE_MODEL",
      "source_model_location": "SOURCE_MODEL_LOCATION",
      "target_model_qps": TARGET_MODEL_QPS,
      "eval_qps": EVAL_QPS,
      "source_model_qps": SOURCE_MODEL_QPS,
      "response_mime_type": "RESPONSE_MIME_TYPE",
      "language": "TARGET_LANGUAGE",
      "placeholder_to_content": "PLACEHOLDER_TO_CONTENT",
      "data_limit": DATA_LIMIT
      

      Haz los cambios siguientes:

      • Parámetros del proceso de optimización:

        • NUM_INST_OPTIMIZATION_STEPS: número de iteraciones que usa el optimizador basado en datos en el modo de optimización de instrucciones. El tiempo de ejecución aumenta linealmente a medida que aumentas este valor. Debe ser un número entero entre 10 y 20. Si no se define, el valor predeterminado es 10.
        • NUM_DEMO_OPTIMIZATION_STEPS: número de demostraciones que evalúa el optimizador basado en datos. Se usa con los modos de optimización demonstration y instruction_and_demo. Debe ser un número entero entre 2 y el número total de peticiones de muestra menos 1. Si no se define ningún valor, el valor predeterminado es 10.
        • NUM_DEMO_PER_PROMPT: número de demostraciones generadas por cada petición. Debe ser un número entero entre 3 y 6. Si no se define ningún valor, el valor predeterminado es 3.
      • Parámetros de selección y ubicación del modelo:

        • TARGET_MODEL_LOCATION: la ubicación en la que quieres ejecutar el modelo de destino. Si no se define ningún valor, el valor predeterminado es us-central1.
        • SOURCE_MODEL: el modelo de Google con el que se usaban anteriormente las instrucciones y las peticiones del sistema. Cuando se define el parámetro source_model, el optimizador basado en datos ejecuta tus peticiones de muestra en el modelo de origen para generar las respuestas validadas en el terreno, que se usarán en las métricas de evaluación que las requieran. Si no has ejecutado tus peticiones con un modelo de Google anteriormente o no has conseguido los resultados que esperabas, añade respuestas de referencia a tu petición. Para obtener más información, consulta la sección Crear una petición e instrucciones del sistema de este documento.
        • SOURCE_MODEL_LOCATION: la ubicación en la que quieres ejecutar el modelo de origen. Si no se define ningún valor, el valor predeterminado es us-central1.
      • Parámetros de latencia (QPS):

        • TARGET_MODEL_QPS: las consultas por segundo (CPS) que el optimizador basado en datos envía al modelo de destino. El tiempo de ejecución disminuye linealmente a medida que aumentas este valor. Debe ser un número decimal que sea igual o superior a 3.0, pero inferior a la cuota de QPS que tengas en el modelo de destino. Si no se define ningún valor, el valor predeterminado es 3.0.
        • EVAL_QPS: las consultas por segundo (CPS) que el optimizador basado en datos envía al servicio de evaluación de la IA generativa o a la función de Cloud Run.
          • En el caso de las métricas basadas en modelos, debe ser un número flotante que sea 3.0 o mayor. Si no se define ningún valor, el valor predeterminado es 3.0.
          • En el caso de las métricas personalizadas, debe ser un valor float igual o superior a 3.0. Esto determina la frecuencia con la que el optimizador basado en datos llama a las funciones de Cloud Run de tu métrica personalizada.
        • SOURCE_MODEL_QPS: las consultas por segundo (QPS) que el optimizador basado en datos envía al modelo de origen. Debe ser un número decimal igual o superior a 3.0, pero inferior a la cuota de consultas por segundo que tengas en el modelo de origen. Si no se define ningún valor, el valor predeterminado es 3.0.
      • Otros parámetros:

        • RESPONSE_MIME_TYPE: el tipo de respuesta MIME que usa el modelo de destino. Debe ser text/plain o application/json. Si no se define ningún valor, el valor predeterminado es text/plain.
        • TARGET_LANGUAGE: el idioma de las instrucciones del sistema. Si no se define ningún valor, el valor predeterminado es el inglés.
        • PLACEHOLDER_TO_CONTENT: la información que sustituye a las variables de las instrucciones del sistema. La información incluida en esta marca no está optimizada por el optimizador de peticiones basado en datos.
        • DATA_LIMIT: la cantidad de datos utilizados para la validación. El tiempo de ejecución aumenta de forma lineal con este valor. Debe ser un número entero comprendido entre 5 y 100. Si no se define ningún valor, el valor predeterminado es 100.
  3. Sube el archivo JSON a un segmento de Cloud Storage.

Ejecutar el optimizador de peticiones

Ejecute el optimizador basado en datos con una de las siguientes opciones:

Cuaderno

Ejecuta el optimizador basado en datos a través del cuaderno siguiendo estos pasos:

  1. En Colab Enterprise, abre el cuaderno de Vertex AI Prompt Optimizer.

    Ir al cuaderno del optimizador basado en datos

  2. En la sección Ejecutar optimizador de peticiones, haz clic en play_circle Ejecutar celda.

    Se ejecuta el optimizador basado en datos.

REST

Antes de usar los datos de la solicitud, haz las siguientes sustituciones:

  • LOCATION: la ubicación en la que quieres ejecutar el optimizador de peticiones de Vertex AI.
  • PROJECT_ID: tu ID de proyecto.
  • JOB_NAME: nombre del trabajo de optimización de la petición de Vertex AI.
  • PATH_TO_CONFIG: el URI del archivo de configuración en tu segmento de Cloud Storage. Por ejemplo, gs://bucket-name/configuration.json.

Método HTTP y URL:

POST https://LOCATION-aiplatform.googleapis.com/v1/projects/PROJECT_ID/locations/LOCATION/customJobs

Cuerpo JSON de la solicitud:

{
  "displayName": "JOB_NAME",
  "jobSpec": {
    "workerPoolSpecs": [
      {
        "machineSpec": {
          "machineType": "n1-standard-4"
        },
        "replicaCount": 1,
        "containerSpec": {
          "imageUri": "us-docker.pkg.dev/vertex-ai-restricted/builtin-algorithm/apd:preview_v1_0",
          "args": ["--config=PATH_TO_CONFIG""]
        }
      }
    ]
  }
}

Para enviar tu solicitud, elige una de estas opciones:

curl

Guarda el cuerpo de la solicitud en un archivo llamado request.json y ejecuta el siguiente comando:

curl -X POST \
-H "Authorization: Bearer $(gcloud auth print-access-token)" \
-H "Content-Type: application/json; charset=utf-8" \
-d @request.json \
"https://LOCATION-aiplatform.googleapis.com/v1/projects/PROJECT_ID/locations/LOCATION/customJobs"

PowerShell

Guarda el cuerpo de la solicitud en un archivo llamado request.json y ejecuta el siguiente comando:

$cred = gcloud auth print-access-token
$headers = @{ "Authorization" = "Bearer $cred" }

Invoke-WebRequest `
-Method POST `
-Headers $headers `
-ContentType: "application/json; charset=utf-8" `
-InFile request.json `
-Uri "https://LOCATION-aiplatform.googleapis.com/v1/projects/PROJECT_ID/locations/LOCATION/customJobs" | Select-Object -Expand Content

La respuesta tiene un aspecto similar al siguiente:

SDK

Ejecuta el optimizador basado en datos a través del SDK añadiendo las siguientes secciones de código a tu Colab o Notebook.

Haz las siguientes sustituciones:

  • LOCATION: la ubicación en la que quiere ejecutar el optimizador basado en datos.
  • PROJECT_ID: el ID de tu proyecto.
  • PROJECT_NUMBER: el número de tu proyecto, disponible en la consola de Cloud.
  • PATH_TO_CONFIG: el URI del archivo de configuración en Cloud Storage. Por ejemplo, gs://bucket-name/configuration.json.
# Authenticate
from google.colab import auth
auth.authenticate_user(project_id=PROJECT_ID)

# Set the Service Account
SERVICE_ACCOUNT = f"{PROJECT_NUMBER}-compute@developer.gserviceaccount.com"

# Import Vertex AI SDK and Setup
import vertexai
vertexai.init(project=PROJECT_ID, location=LOCATION)

#Create the Vertex AI Client
client = vertexai.Client(project=PROJECT_ID, location=LOCATION)

# Setup the job dictionary
vapo_config = {
  'config_path': PATH_TO_CONFIG,
  'service_account': SERVICE_ACCOUNT,
  'wait_for_completion': True,
}

#Start the Vertex AI Prompt Optimizer
client = client.prompt_optimizer.optimize(method="vapo", config=vapo_config)

Una vez que se haya completado la optimización, examine los artefactos de salida en la ubicación especificada en la configuración.

Analizar los resultados e iterar

Después de ejecutar el optimizador basado en datos, revisa el progreso del trabajo con una de las siguientes opciones:

Cuaderno

Si quiere ver los resultados del optimizador basado en datos a través del cuaderno, siga estos pasos:

  1. Abre el cuaderno del optimizador de peticiones de Vertex AI.

  2. En la sección Inspeccionar los resultados, haga lo siguiente:

    1. En el campo RESULT_PATH, añade el URI del segmento de Cloud Storage en el que has configurado el optimizador basado en datos para escribir los resultados. Por ejemplo, gs://bucket-name/output-path.

    2. Haz clic en play_circle Ejecutar celda.

Consola

  1. En la Google Cloud consola, en la sección Vertex AI, ve a la página Flujos de procesamiento de entrenamiento.

    Ir a Flujos de procesamiento de entrenamiento

  2. Haga clic en la pestaña Tareas personalizadas. La tarea de entrenamiento personalizada del optimizador basado en datos aparecerá en la lista junto con su estado.

Cuando el trabajo haya finalizado, revisa las optimizaciones haciendo lo siguiente:

  1. En la Google Cloud consola, ve a la página Segmentos de Cloud Storage:

    Ir a Contenedores

  2. Haz clic en el nombre de tu segmento de Cloud Storage.

  3. Ve a la carpeta que tenga el mismo nombre que el modo de optimización que hayas usado para evaluar las peticiones, es decir, instruction o demonstration. Si has usado el modo instruction_and_demo, aparecerán ambas carpetas. La carpeta instruction contiene los resultados de la optimización de las instrucciones del sistema, mientras que la carpeta demonstration contiene los resultados de la optimización de demonstration y las instrucciones del sistema optimizadas.

    La carpeta contiene los siguientes archivos:

    • config.json: la configuración completa que ha usado el optimizador de peticiones de Vertex AI.
    • templates.json: cada conjunto de instrucciones del sistema o ejemplos de pocos disparos que ha generado el optimizador basado en datos y su puntuación de evaluación.
    • eval_results.json: la respuesta del modelo de destino a cada petición de muestra a cada conjunto de instrucciones del sistema generadas o ejemplos de pocos disparos y su puntuación de evaluación.
    • optimized_results.json: las instrucciones del sistema y/o los ejemplos de few-shot con mejor rendimiento, así como su puntuación de evaluación.
  4. Para ver las instrucciones del sistema optimizadas, consulta el archivo optimized_results.json.

Prácticas recomendadas

  • Los modelos de vista previa solo se admiten en la región global, y el trabajo personalizado de Vertex no admite global como región. Por lo tanto, no uses VAPO para optimizar los modelos de vista previa como modelo de destino.

  • En los modelos de GA, los usuarios pueden seleccionar ubicaciones específicas de la región, como us-central1 o europe-central2, en lugar de global para cumplir sus requisitos de residencia de datos.

Siguientes pasos