Optimizador de instrucciones basado en datos

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

El optimizador basado en datos puede ayudarte a mejorar tus instrucciones rápidamente a gran escala, sin tener que volver a escribir instrucciones del sistema ni instrucciones individuales de forma manual. Esto es especialmente útil cuando deseas usar indicaciones e instrucciones del sistema que se escribieron para un modelo con uno diferente.

Ejemplo de optimización de instrucciones

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

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 instrucciones

 Question: {input_question} Facts: {input_context} 

Ejemplos de instrucciones

input_question input_context
¿Cuáles son algunas técnicas para cocinar carne roja y de cerdo que maximicen el sabor y la blandura y, al mismo tiempo, minimicen la formación de compuestos no saludables? La carne roja y de cerdo deben cocinarse a una temperatura interna de 63 grados centígrados (145 grados Fahrenheit) para garantizar la seguridad. Marinar la carne en ingredientes ácidos, como jugo de limón o vinagre, puede ayudar a ablandarla, ya que descompone las fibras musculares duras. Los métodos de cocción a alta temperatura, como la parrilla y la sartén, pueden crear un dorado y una caramelización deliciosos, pero es importante evitar que se quemen, ya que pueden producir compuestos dañinos.
¿Cuáles son algunas formas creativas de agregar sabor y nutrición a los batidos de proteínas sin usar azúcares agregados ni ingredientes artificiales? Agregar verduras de hoja verde, como espinaca o col rizada, es una excelente manera de aumentar el valor nutricional de tu batido sin alterar drásticamente el sabor. El uso de leche de almendras sin endulzar o agua de coco en lugar de leche común puede agregar un sabor dulce sutil y un aumento de grasas saludables o electrolitos, respectivamente. ¿Sabías que si bates demasiado el batido, se puede calentar? Para mantener la frescura, bate en intervalos más cortos y dale un descanso a la licuadora 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 toma los siguientes parámetros:

  • Modo de optimización: Especifica si el optimizador basado en datos optimiza las instrucciones del sistema, selecciona instrucciones de muestra para agregarlas a las instrucciones del sistema como ejemplos de pocas instrucciones o ambas.
  • Métricas de evaluación: Son las métricas que usa el optimizador basado en datos para optimizar las instrucciones del sistema o seleccionar instrucciones de muestra.
  • Modelo objetivo: Es el modelo de Google para el que el optimizador basado en datos optimiza las instrucciones del sistema y selecciona instrucciones de muestra.

Cuando ejecutas el optimizador basado en datos, este optimiza las instrucciones del sistema según tus selecciones ejecutando un trabajo de entrenamiento personalizado en el que evalúa de forma iterativa tus instrucciones de muestra y vuelve a escribir tus instrucciones del sistema para encontrar la versión que produce la mejor puntuación de evaluación para el modelo objetivo.

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

Métricas de evaluación

El optimizador basado en datos utiliza métricas de evaluación para optimizar las instrucciones del sistema y seleccionar instrucciones de muestra. Puedes usar las métricas de evaluación estándar o definir tus 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 a una por vez. Si usas métricas estándar y personalizadas juntas, solo una de las métricas puede ser personalizada. Las demás deben ser métricas estándar.

Para obtener información sobre cómo especificar métricas de una en una o en combinación, consulta EVALUATION_METRIC_PARAMETERS en la pestaña del SDK en Crea una plantilla de instrucciones y del sistema.

Métricas de evaluación personalizadas

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

Para obtener información sobre cómo crear métricas personalizadas, consulta Crea métricas personalizadas.

Métricas de evaluación estándar

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

Tipo de métrica Caso de uso Métrica Descripción
Basado en modelos Resúmenes summarization_quality Describe la capacidad del modelo para responder preguntas con un cuerpo de texto al cual hacer referencia.
Búsqueda de respuestas question_answering_correctness* Describe la capacidad del modelo para responder correctamente una pregunta.
question_answering_quality Describe la capacidad del modelo para responder preguntas con un cuerpo de texto al cual hacer referencia.
Coherencia coherence Describe la capacidad del modelo para proporcionar una respuesta coherente y mide cuán bien el texto generado fluye de forma lógica y tiene sentido.
Seguridad safety Describe el nivel de seguridad del modelo, es decir, si la respuesta contiene texto no seguro.
Fluidez fluency Describe el dominio del idioma del modelo.
Fundamentación groundedness Describe la capacidad del modelo de proporcionar o hacer referencia a información incluida solo en el texto de entrada.
Comet comet** Describe la capacidad del modelo en cuanto a la calidad de una traducción en comparación con la referencia.
MetricX metricx** Describe la capacidad del modelo en cuanto a la calidad de una traducción.
Basada en procesamiento Uso de herramientas y llamadas a funciones tool_call_valid* Describe la capacidad del modelo para predecir una llamada a la herramienta válida.
tool_name_match* Describe la capacidad del modelo de predecir una llamada a la 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 la herramienta con los nombres de parámetros correctos.
tool_parameter_kv_match* Describe la capacidad del modelo de predecir una llamada a la herramienta con los nombres de parámetros y los valores de clave correctos.
Generación de texto general bleu* Contiene el resultado de un algoritmo para evaluar la calidad de la predicción, que se tradujo 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 deseas optimizar tus instrucciones con las evaluaciones question_answering_correctness o basadas en el procesamiento, debes hacer una de las siguientes acciones:

  • Agrega una variable que represente la respuesta de verdad fundamental de tus instrucciones a la plantilla de instrucciones.
  • Si no tienes respuestas de verdad fundamental para tus instrucciones, pero anteriormente las usaste con un modelo de Google y conseguiste los resultados segmentados, puedes agregar el parámetro source_model a tu configuración en lugar de agregar respuestas de verdad fundamental. Cuando se establece el parámetro source_model, el optimizador basado en datos ejecuta tus instrucciones de muestra en el modelo de origen para generar las respuestas de verdad fundamental por ti.

** Si deseas optimizar tus instrucciones con comet o metricx, debes proporcionar el parámetro translation_source_field_name a tu configuración, que especifica el nombre del campo correspondiente del texto fuente en los datos. Además, el valor de MetricX se modificó para que esté entre 0 (peor) y 25 (mejor) para respetar la propiedad de cuanto más grande, mejor.

Antes de comenzar

Para garantizar que la cuenta de servicio predeterminada de Compute Engine tenga los permisos necesarios para optimizar las instrucciones, pídele a tu administrador que otorgue a la cuenta de servicio predeterminada de Compute Engine los siguientes roles de IAM en el proyecto:

Para obtener más información sobre cómo otorgar roles, consulta Administra el acceso a proyectos, carpetas y organizaciones.

Es posible que tu administrador también pueda otorgarle los permisos necesarios al agente de servicio de Compute Engine mediante roles personalizados o cualquier otro rol predefinido.

Optimiza las instrucciones

Puedes optimizar los prompts de las siguientes maneras:

Para optimizar las instrucciones, elige el método que quieres usar y, luego, completa los pasos que se describen en detalle en las siguientes secciones:

  1. Crea una plantilla de instrucciones y del sistema
  2. Prepara instrucciones de muestra
  3. Opcional: Crea métricas personalizadas
  4. Cree una configuración
  5. Ejecuta el trabajo de optimización de instrucciones
  6. Analiza los resultados y realiza iteraciones

Crea una plantilla de instrucciones y del sistema

Las plantillas de instrucciones definen el formato de todas tus instrucciones a través de variables reemplazables. Cuando usas una plantilla de instrucción para optimizar las instrucciones, las variables se reemplazan por los datos del conjunto de datos de la instrucción.

Las variables de la plantilla de instrucciones deben cumplir con 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 

    Reemplaza MIME_TYPE por un tipo de MIME de imagen, video, audio o documento que admita el modelo de destino.

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

Notebook

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

  1. En Colab Enterprise, abre el notebook del optimizador de instrucciones de Vertex AI.

    Ir al notebook del optimizador de instrucciones de Vertex AI

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

    1. En el campo SYSTEM_INSTRUCTION, ingresa 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, ingresa la plantilla de instrucción. Por ejemplo:

       Article 1:\n\n{article_1}\n\nImage 1:\n\n{image_1} @@@image/jpeg\n\nQuestion: {question} 
    3. Si deseas optimizar tus instrucciones con las evaluaciones question_answering_correctness o basadas en el procesamiento, debes hacer una de las siguientes acciones:

    • Agrega la variable {target} a la plantilla de instrucción para representar la respuesta de verdad fundamental de la instrucció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 verdad absoluta para tus instrucciones, pero las usaste con un modelo de Google y lograste los resultados segmentados, puedes agregar el parámetro source_model a tu configuración en lugar de agregar respuestas de verdad absoluta. Cuando se establece el parámetro source_model, el optimizador basado en datos ejecuta tus instrucciones de muestra en el modelo de origen para generar las respuestas de verdad fundamental por ti.

SDK

Si deseas ejecutar el optimizador basado en datos a través del SDK sin usar el notebook, crea archivos de texto para tu plantilla de instrucción y las instrucciones del sistema. Para ello, sigue estos pasos:

  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 instrucción.

  4. En el archivo de texto, define una plantilla de instrucción que incluya una o más variables. Por ejemplo:

     Article 1:\n\n{article_1}\n\nImage 1:\n\n{image_1} @@@image/jpeg\n\nQuestion: {question} 
  5. Si deseas optimizar tus instrucciones con las evaluaciones question_answering_correctness o basadas en el procesamiento, debes hacer una de las siguientes acciones:

    • Agrega la variable {target} a la plantilla de instrucción para representar la respuesta de verdad fundamental de la instrucció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 verdad absoluta para tus instrucciones, pero las usaste con un modelo de Google y lograste los resultados segmentados, puedes agregar el parámetro source_model a tu configuración en lugar de agregar respuestas de verdad absoluta. Cuando se establece el parámetro source_model, el optimizador basado en datos ejecuta tus instrucciones de muestra en el modelo de origen para generar las respuestas de verdad fundamental por ti.

Prepara instrucciones de ejemplo

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

  • La herramienta puede ser eficaz con tan solo 5 instrucciones de muestra.
  • Los mejores ejemplos incluyen aquellos en los que el modelo de destino tiene un rendimiento deficiente y aquellos en los que tiene un buen rendimiento.

Las instrucciones de muestra contienen los datos que reemplazan a las variables en la plantilla de instrucciones. Puedes usar un archivo JSONL o CSV para almacenar tus instrucciones de muestra.

Archivo JSONL

  1. Crea un archivo JSONL.
  2. En el archivo JSONL, agrega los datos de la instrucción que reemplazan 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 bucket de Cloud Storage.

Archivo CSV

  1. Crea un archivo CSV.
  2. En la primera fila, agrega las variables de la plantilla de instrucciones.
  3. En las siguientes filas, agrega los datos de muestra que reemplazan cada variable.
  4. Sube el archivo CSV a un bucket de Cloud Storage.

Opcional: Crea métricas personalizadas

independientes.

Para crear una métrica personalizada, haz lo siguiente:

  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 paquete functions-framework.

    Por ejemplo, el archivo requirements.txt para una métrica personalizada que calcula ROUGE-L se vería de la siguiente manera:

     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
    • Es la entrada JSON que contiene response, que es el resultado del LLM, y reference, que es la respuesta de verdad fundamental para la instrucción si se proporciona en el conjunto de datos de instrucciones.

    Por ejemplo, el archivo main.py para una métrica personalizada que calcula ROUGE-L se vería de la siguiente manera:

     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. Ejecuta el comando gcloud functions deploy para implementar tu función de evaluación personalizada como una función de Cloud Run:

     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 

    Reemplaza lo siguiente:

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

Cree una configuración

La configuración del optimizador basado en datos especifica los parámetros que deseas establecer para tu trabajo de optimización de instrucciones.

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

Notebook

Si quieres ejecutar el optimizador basado en datos a través del notebook, crea una configuración de la siguiente manera:

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

    Ir al notebook del optimizador de instrucciones de Vertex AI

  2. En la sección Configuración del proyecto, haz lo siguiente:

    1. En el campo PROJECT_ID, ingresa tu ID del proyecto.
    2. En el campo LOCATION, ingresa la ubicación en la que quieres ejecutar el optimizador basado en datos.
    3. En el campo OUTPUT_PATH, ingresa el URI del bucket de Cloud Storage en el que deseas que el optimizador basado en datos escriba las instrucciones del sistema optimizadas o los ejemplos de pocas imágenes. Por ejemplo, gs://bucket-name/output-path
    4. En el campo INPUT_PATH, ingresa el URI de las instrucciones de muestra en tu bucket de Cloud Storage. Por ejemplo, gs://bucket-name/sample-prompts.jsonl
  3. En la sección Configurar la configuración de optimización, haz lo siguiente:

    1. En el campo TARGET_MODEL, ingresa el modelo para el que deseas optimizar las instrucciones.
    2. En el campo THINKING_BUDGET, ingresa el presupuesto de razonamiento para el modelo objetivo cuyas instrucciones deseas optimizar. El valor predeterminado es -1, lo que significa que no hay razonamiento para los modelos sin razonamiento y razonamiento automático para los modelos con razonamiento, como Gemini 2.5. Consulta Consideraciones para obtener información sobre la configuración manual del presupuesto.
    3. En OPTIMIZATION_MODE, ingresa el modo de optimización que deseas usar. Debe ser instruction, demonstration o instruction_and_demo.
    4. En el campo EVAL_METRIC, ingresa una métrica de evaluación para la que deseas optimizar tus instrucciones.
    5. Opcional: En el campo SOURCE_MODEL, ingresa el modelo de Google con el que se usaron anteriormente las instrucciones y las indicaciones del sistema. Cuando se configura el parámetro source_model, el optimizador basado en datos ejecuta tus instrucciones de muestra en el modelo de origen para generar las respuestas de verdad fundamental por ti, para las métricas de evaluación que requieren respuestas de verdad fundamental. Si no ejecutaste tus instrucciones con un modelo de Google o no lograste los resultados esperados, agrega respuestas de verdad a tu instrucción. Para obtener más información, consulta la sección Crea una instrucción y las instrucciones del sistema de este documento.
  4. Opcional: En la sección Configurar la configuración de optimización avanzada, también puedes agregar cualquiera de los parámetros opcionales a tu configuración.

  5. Cómo ver los parámetros opcionales
    • En el campo NUM_INST_OPTIMIZATION_STEPS, ingresa la cantidad de iteraciones que usa el optimizador basado en datos en el modo de optimización de instrucciones. El tiempo de ejecución aumenta de manera lineal a medida que aumentas este valor. Debe ser un número entero entre 1020. Si no se configura, el valor predeterminado es 10.
    • En el campo NUM_DEMO_OPTIMIZATION_STEPS, ingresa la cantidad de demostraciones que evalúa el optimizador basado en datos. Se usa con el modo de optimización demonstration y instruction_and_demo. Debe ser un número entero entre 1030. Si no se configura, el valor predeterminado es 10.
    • En el campo NUM_DEMO_PER_PROMPT, ingresa la cantidad de demostraciones generadas por instrucción. Debe ser un número entero entre 2 y la cantidad total de instrucciones de ejemplo menos 1. Si no se configura, el valor predeterminado es 3.
    • En el campo TARGET_MODEL_QPS, ingresa las consultas por segundo (QPS) que el optimizador basado en datos envía al modelo de destino. El tiempo de ejecución disminuye de forma lineal a medida que aumentas este valor. Debe ser un número de punto flotante que sea 3.0 o mayor, pero menor que la cuota de QPS que tienes en el modelo de destino. Si no se configura, el valor predeterminado es 3.0.
    • En el campo SOURCE_MODEL_QPS, ingresa las consultas por segundo (QPS) que el optimizador basado en datos envía al modelo de origen. Debe ser un número de punto flotante que sea 3.0 o mayor, pero menor que la cuota de QPS que tienes en el modelo de origen. Si no se configura, el valor predeterminado es 3.0.
    • En el campo EVAL_QPS, ingresa 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.
      • Para las métricas basadas en modelos, debe ser un número de punto flotante que sea 3.0 o superior. Si no se configura, el valor predeterminado es 3.0.
      • Para las métricas personalizadas, debe ser un número de punto flotante igual o mayor que 3.0. Esto determina la frecuencia con la que el optimizador basado en datos llama a tus funciones de Cloud Run de métricas personalizadas.
    • Si quieres usar más de una métrica de evaluación, haz lo siguiente:
      1. En el campo EVAL_METRIC_1, ingresa una métrica de evaluación que desees usar.
      2. En el campo EVAL_METRIC_1_WEIGHT, ingresa el valor de ponderación que quieres que use el optimizador basado en datos cuando ejecute la optimización.
      3. En el campo EVAL_METRIC_2, ingresa una métrica de evaluación que desees usar.
      4. En el campo EVAL_METRIC_2_WEIGHT, ingresa el valor de ponderación que quieres que use el optimizador basado en datos cuando ejecute la optimización.
      5. De manera opcional, en el campo EVAL_METRIC_3, ingresa una métrica de evaluación que desees usar.
      6. En el campo EVAL_METRIC_3_WEIGHT, ingresa de forma opcional el valor que deseas que use el optimizador basado en datos cuando ejecute la optimización.
      7. En el campo METRIC_AGGREGATION_TYPE, ingresa el valor que deseas que use el optimizador basado en datos cuando ejecute la optimización.
    • En el campo PLACEHOLDER_TO_VALUE, ingresa la información que reemplazará cualquier variable en las instrucciones del sistema. El optimizador basado en datos no optimiza la información incluida en esta marca.
    • En el campo RESPONSE_MIME_TYPE, ingresa el tipo de respuesta MIME que usa el modelo de destino. Debe ser text/plain o application/json. Si no se configura, el valor predeterminado es text/plain.
    • En el campo TARGET_LANGUAGE, ingresa el idioma de las instrucciones del sistema. Si no se configura, el valor predeterminado es inglés.

SDK

Si deseas ejecutar el optimizador basado en datos a través del SDK, crea un archivo JSON con los parámetros que deseas usar para optimizar las instrucciones. Para ello, haz lo siguiente:

  1. Crea un archivo JSON con los parámetros que deseas usar para optimizar tus instrucciones. 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" } 

    Reemplaza lo siguiente:

    • PROJECT_ID: el ID de tu proyecto
    • SYSTEM_INSTRUCTION: Son las instrucciones del sistema que deseas optimizar.
    • PROMPT_TEMPLATE: Es la plantilla de mensaje.
    • TARGET_MODEL: El modelo para el que deseas optimizar las instrucciones.
    • THINKING_BUDGET: Es el presupuesto de pensamiento para el modelo objetivo para el que deseas optimizar las instrucciones. El valor predeterminado es -1, lo que significa que no hay razonamiento para los modelos sin razonamiento y razonamiento automático para los modelos con razonamiento, como Gemini-2.5. Consulta Consideraciones para obtener información sobre la configuración manual del presupuesto.
    • EVALUATION_METRIC_PARAMETERS: Los parámetros que especifiques dependerán de la cantidad de métricas de evaluación que uses y de si estas son estándar o personalizadas:

      Una sola métrica estándar

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

        "eval_metric": "EVALUATION_METRIC",  

      Reemplaza EVALUATION_METRIC por la métrica para la que deseas optimizar tus instrucciones.

      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", 

      Reemplaza lo siguiente:

      • CUSTOM_METRIC_NAME: Es el nombre de la métrica, según la clave que corresponde con el final_score. Por ejemplo, custom_accuracy.
      • FUNCTION_NAME: Es el nombre de la función de Cloud Run que implementaste anteriormente.

      Varias métricas estándar

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

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

      Reemplaza lo siguiente:

      • EVALUATION_METRIC_LIST: Es una lista de métricas de evaluación. Debe ser un array. Por ejemplo, "bleu", "summarization_quality"
      • EVAL_METRICS_WEIGHTS: Es el peso de cada métrica. Debe ser un array y tener la misma longitud que EVALUATION_METRIC_LIST.
      • METRIC_AGGREGATION_TYPE: Es el tipo de agregación que se usa para las métricas de evaluación. Debe ser weighted_sum o weighted_average. Si no se configura, el valor predeterminado es weighted_sum.

      Varias métricas estándares y personalizadas

      Si usas varias métricas de evaluación que incluyen una combinación de una sola métrica personalizada y una o más métricas estándar, usa 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", 

      Reemplaza lo siguiente:

      • EVALUATION_METRIC_LIST: Es una lista de las métricas de evaluación estándar. Debe ser un array. Por ejemplo, "bleu", "summarization_quality".
      • EVAL_METRICS_WEIGHTS: Es el peso de cada métrica. Debe ser un array.
      • METRIC_AGGREGATION_TYPE: Es el tipo de agregación que se usa para las métricas de evaluación. Debe ser weighted_sum o weighted_average. Si no se configura, el valor predeterminado es weighted_sum.
      • CUSTOM_METRIC_NAME: Es el nombre de la métrica, según se define en la clave que corresponde al final_score. Por ejemplo, custom_accuracy.
      • FUNCTION_NAME: Es el nombre de la función de Cloud Run que implementaste anteriormente.
    • OPTIMIZATION_MODE: Es el modo de optimización. Debe ser instruction, demonstration o instruction_and_demo.

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

    • OUTPUT_URI: Es el URI del bucket de Cloud Storage en el que deseas que el optimizador basado en datos escriba las instrucciones del sistema optimizadas o los ejemplos de pocas imágenes. Por ejemplo, gs://bucket-name/output-path

  2. Además, puedes agregar cualquiera de los parámetros opcionales a tu archivo de configuración.

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

    • Parámetros del proceso de optimización. Estos parámetros controlan el proceso de optimización general, incluida su duración y la cantidad de iteraciones de optimización que ejecuta, lo que afecta directamente la calidad de las optimizaciones.
    • Parámetros de selección de modelos y ubicación. Estos parámetros especifican qué modelos usa el optimizador basado en datos y las ubicaciones en las que usa esos modelos.
    • Parámetros de latencia (QPS). Estos parámetros controlan la QPS, lo que afecta la velocidad del proceso de optimización.
    • Otro. Otros parámetros que controlan la estructura y el contenido de las instrucciones

      Cómo ver los 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 

      Reemplaza lo siguiente:

      • Parámetros del proceso de optimización:

        • NUM_INST_OPTIMIZATION_STEPS: Es la cantidad de iteraciones que usa el optimizador basado en datos en el modo de optimización de instrucciones. El tiempo de ejecución aumenta de manera lineal a medida que aumentas este valor. Debe ser un número entero entre 1020. Si no se configura, el valor predeterminado es 10.
        • NUM_DEMO_OPTIMIZATION_STEPS: Es la cantidad de demostraciones que evalúa el optimizador basado en datos. Se usa con el modo de optimización demonstration y instruction_and_demo. Debe ser un número entero entre 2 y la cantidad total de instrucciones de ejemplo menos 1. Si no se configura, el valor predeterminado es 10.
        • NUM_DEMO_PER_PROMPT: Es la cantidad de demostraciones generadas por instrucción. Debe ser un número entero entre 36 Si no se configura, el valor predeterminado es 3.
      • Selección de modelos y parámetros de ubicación:

        • TARGET_MODEL_LOCATION: La ubicación en la que deseas ejecutar el modelo de destino. Si no se configura, el valor predeterminado es us-central1.
        • SOURCE_MODEL: El modelo de Google con el que se usaban anteriormente las instrucciones y las indicaciones del sistema. Cuando se establece el parámetro source_model, el optimizador basado en datos ejecuta tus instrucciones de muestra en el modelo de origen para generar las respuestas de verdad fundamental por ti, para las métricas de evaluación que requieren respuestas de verdad fundamental. Si no ejecutaste las instrucciones con un modelo de Google anteriormente o no lograste los resultados esperados, agrega respuestas de verdad del mundo real a la instrucción. Para obtener más información, consulta la sección Crea una instrucción y las instrucciones del sistema de este documento.
        • SOURCE_MODEL_LOCATION: La ubicación en la que deseas ejecutar el modelo de origen. Si no se configura, el valor predeterminado es us-central1.
      • Parámetros de latencia (QPS):

        • TARGET_MODEL_QPS: Las consultas por segundo (QPS) que el optimizador basado en datos envía al modelo de destino. El tiempo de ejecución disminuye de forma lineal a medida que aumentas este valor. Debe ser un número de punto flotante que sea 3.0 o mayor, pero menor que la cuota de QPS que tienes en el modelo de destino. Si no se configura, el valor predeterminado es 3.0.
        • EVAL_QPS: 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.
          • Para las métricas basadas en modelos, debe ser un número de punto flotante que sea 3.0 o superior. Si no se configura, el valor predeterminado es 3.0.
          • Para las métricas personalizadas, debe ser un número de punto flotante igual o mayor que 3.0. Esto determina la frecuencia con la que el optimizador basado en datos llama a tus funciones de Cloud Run de métricas personalizadas.
        • 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 de punto flotante que sea 3.0 o mayor, pero menor que la cuota de QPS que tienes en el modelo de origen. Si no se configura, 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 configura, el valor predeterminado es text/plain.
        • TARGET_LANGUAGE: Es el idioma de las instrucciones del sistema. Si no se configura, el valor predeterminado es inglés.
        • PLACEHOLDER_TO_CONTENT: Es la información que reemplaza cualquier variable en las instrucciones del sistema. El optimizador de instrucciones basado en datos no optimiza la información incluida en esta marca.
        • DATA_LIMIT: Es la cantidad de datos que se usan para la validación. El tiempo de ejecución aumenta de forma lineal con este valor. Debe ser un número entero entre 5100. Si no se configura, el valor predeterminado es 100.
  3. Sube el archivo JSON a un bucket de Cloud Storage.

Ejecuta el optimizador de instrucciones

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

Notebook

Ejecuta el optimizador basado en datos a través del notebook. Para ello, haz lo siguiente:

  1. En Colab Enterprise, abre el notebook del optimizador de instrucciones de Vertex AI.

    Ir al notebook del optimizador basado en datos

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

    Se ejecuta el optimizador basado en datos.

REST

Antes de usar cualquiera de los datos de solicitud a continuación, realiza los siguientes reemplazos:

  • LOCATION: Es la ubicación en la que deseas ejecutar el optimizador de instrucciones de Vertex AI.
  • PROJECT_ID: El ID del proyecto.
  • JOB_NAME: Es un nombre para la tarea del optimizador de instrucciones de Vertex AI.
  • PATH_TO_CONFIG: Es el URI del archivo de configuración en tu bucket de Cloud Storage. Por ejemplo, gs://bucket-name/configuration.json

HTTP method and 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

El resultado es similar al siguiente:

SDK

Ejecuta el optimizador basado en datos a través del SDK. Para ello, agrega las siguientes secciones de código a tu notebook o Colab.

Realiza los siguientes reemplazos:

  • LOCATION: Es la ubicación en la que deseas ejecutar el optimizador basado en datos.
  • PROJECT_ID: Es el ID de tu proyecto.
  • PROJECT_NUMBER: Es el número de tu proyecto, que está disponible en la consola de Cloud.
  • PATH_TO_CONFIG: Es 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}[email protected]"  # 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 complete la optimización, examina los artefactos de salida en la ubicación de salida especificada en la configuración.

Analiza los resultados y realiza iteraciones

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

Notebook

Si deseas ver los resultados del optimizador basado en datos a través del notebook, haz lo siguiente:

  1. Abre el notebook del optimizador de instrucciones de Vertex AI.

  2. En la sección Inspecciona los resultados, haz lo siguiente:

    1. En el campo RESULT_PATH, agrega el URI del bucket de Cloud Storage en el que configuraste el optimizador basado en datos para escribir los resultados. Por ejemplo, gs://bucket-name/output-path

    2. Haz clic en play_circle Ejecutar celda.

Console

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

    Ve a Canalizaciones de entrenamiento

  2. Haz clic en la pestaña Trabajos personalizados. El trabajo de entrenamiento personalizado del optimizador basado en datos aparecerá en la lista junto con su estado.

Cuando finalice el trabajo, sigue estos pasos para revisar las optimizaciones:

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

    Ir a Buckets

  2. Haz clic en el nombre del bucket de Cloud Storage.

  3. Navega a la carpeta que tiene el mismo nombre que el modo de optimización que usaste para evaluar las instrucciones, ya sea instruction o demonstration. Si usaste el modo instruction_and_demo, aparecerán ambas carpetas. La carpeta instruction contiene los resultados de la optimización de 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: Es la configuración completa que usó el optimizador de instrucciones de Vertex AI.
    • templates.json: Cada conjunto de instrucciones del sistema o ejemplos de pocas imágenes que generó el optimizador basado en datos y su puntuación de evaluación.
    • eval_results.json: La respuesta del modelo de destino para cada instrucción de muestra para cada conjunto de instrucciones del sistema generadas o ejemplos de pocas imágenes y su puntuación de evaluación.
    • optimized_results.json: Las instrucciones del sistema con el mejor rendimiento o los ejemplos de pocas imágenes y su puntuación de evaluación.
  4. Para ver las instrucciones del sistema optimizado, consulta el archivo optimized_results.json.

Prácticas recomendadas

  • Los modelos de versión preliminar solo se admiten a través de 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 el modelo objetivo.

  • En el caso de 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 con su requisito de residencia de datos.

¿Qué sigue?