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ámetrosource_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:
-
Usuario de Vertex AI (
roles/aiplatform.user
) -
Administrador de objetos de Storage (
roles/storage.objectAdmin
) -
Lector de Artifact Registry (
roles/artifactregistry.reader
) -
Si usa métricas personalizadas:
-
Cloud Run Developer (
roles/run.developer
) -
Invocador de Cloud Run (
roles/run.invoker
) -
Agente de servicio de Vertex AI (
roles/aiplatform.serviceAgent
)
-
Cloud Run Developer (
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:
- Usar el optimizador de peticiones de Vertex AI en la consola de Vertex AI
- con la API de Vertex AI
- Ejecuta el cuaderno del optimizador de peticiones de Vertex AI.
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:
- Crear una plantilla de petición e instrucciones del sistema
- Preparar peticiones de ejemplo
- Opcional: crear métricas personalizadas
- Crear una configuración
- Ejecutar el trabajo de optimización de la petición
- 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:
En Colab Enterprise, abre el cuaderno de Vertex AI Prompt Optimizer.
En la sección Crea una plantilla de petición e instrucciones del sistema, haz lo siguiente:
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.
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}
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ámetrosource_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:
Crea un archivo de texto para las instrucciones del sistema.
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.
Crea un archivo de texto para tu plantilla de petición.
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}
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ámetrosource_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
- Crea un archivo JSONL.
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"}
Archivo CSV
- Crea un archivo CSV.
- En la primera fila, añade las variables de tu plantilla de petición.
- En las filas siguientes, añade los datos de muestra que sustituyen a cada variable.
- 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:
Crea un archivo de texto llamado
requirements.txt
.En el archivo
requirements.txt
, define las bibliotecas necesarias para la función de métrica de evaluación personalizada. Todas las funciones requieren elfunctions-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
Crea un archivo de Python llamado
main.py
.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 elreference
, 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', })
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:
En Colab Enterprise, abre el cuaderno del optimizador basado en datos.
En la sección Configurar ajustes del proyecto, haga lo siguiente:
- En el campo PROJECT_ID, introduce el ID de tu proyecto.
- En el campo UBICACIÓN, introduce la ubicación en la que quieres ejecutar el optimizador basado en datos.
- 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
. - 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
.
En la sección Configurar ajustes de optimización, haga lo siguiente:
- En el campo TARGET_MODEL, introduce el modelo para el que quieras optimizar las peticiones.
- 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.
- En OPTIMIZATION_MODE, introduce el modo de optimización que quieras usar. Debe ser
instruction
,demonstration
oinstruction_and_demo
. - En el campo EVAL_METRIC, introduce una métrica de evaluación para la que quieras optimizar tus peticiones.
- 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.
Opcional: En la sección Configurar ajustes de optimización avanzados, puede añadir cualquiera de los parámetros opcionales a su configuración.
- 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
y20
. Si no se define ningún valor, el valor predeterminado es10
. - 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
yinstruction_and_demo
. Debe ser un número entero entre10
y30
. Si no se define ningún valor, el valor predeterminado es10
. - 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 es3
. - 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 es3.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 es3.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 es3.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.
- En el caso de las métricas basadas en modelos, debe ser un número flotante que sea
- Si quieres usar más de una métrica de evaluación, haz lo siguiente:
- En el campo EVAL_METRIC_1, introduce una métrica de evaluación que quieras usar.
- En el campo EVAL_METRIC_1_WEIGHT, introduzca el peso que quiera que use el optimizador basado en datos cuando ejecute la optimización.
- En el campo EVAL_METRIC_2, introduce la métrica de evaluación que quieras usar.
- En el campo EVAL_METRIC_2_WEIGHT, introduzca el peso que quiera que use el optimizador basado en datos cuando ejecute la optimización.
- En el campo EVAL_METRIC_3, puedes introducir una métrica de evaluación que quieras usar.
- 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.
- 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
oapplication/json
. Si no se define ningún valor, el valor predeterminado estext/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:
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 afinal_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 queEVALUATION_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
oweighted_average
. Si no se define ningún valor, el valor predeterminado esweighted_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
oweighted_average
. Si no se define ningún valor, el valor predeterminado esweighted_sum
.CUSTOM_METRIC_NAME
: el nombre de la métrica, tal como se define en la clave que corresponde afinal_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 serinstruction
,demonstration
oinstruction_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
.
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 entre10
y20
. Si no se define, el valor predeterminado es10
.NUM_DEMO_OPTIMIZATION_STEPS
: número de demostraciones que evalúa el optimizador basado en datos. Se usa con los modos de optimizacióndemonstration
yinstruction_and_demo
. Debe ser un número entero entre2
y el número total de peticiones de muestra menos 1. Si no se define ningún valor, el valor predeterminado es10
.NUM_DEMO_PER_PROMPT
: número de demostraciones generadas por cada petición. Debe ser un número entero entre3
y6
. Si no se define ningún valor, el valor predeterminado es3
.
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 esus-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ámetrosource_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 esus-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 a3.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 es3.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 es3.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.
- En el caso de las métricas basadas en modelos, debe ser un número flotante que sea
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 a3.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 es3.0
.
Otros parámetros:
RESPONSE_MIME_TYPE
: el tipo de respuesta MIME que usa el modelo de destino. Debe sertext/plain
oapplication/json
. Si no se define ningún valor, el valor predeterminado estext/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 entre5
y100
. Si no se define ningún valor, el valor predeterminado es100
.
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:
En Colab Enterprise, abre el cuaderno de Vertex AI Prompt Optimizer.
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:
Abre el cuaderno del optimizador de peticiones de Vertex AI.
En la sección Inspeccionar los resultados, haga lo siguiente:
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
.Haz clic en play_circle Ejecutar celda.
Consola
En la Google Cloud consola, en la sección Vertex AI, ve a la página Flujos de procesamiento de entrenamiento.
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:
En la Google Cloud consola, ve a la página Segmentos de Cloud Storage:
Haz clic en el nombre de tu segmento de Cloud Storage.
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
odemonstration
. Si has usado el modoinstruction_and_demo
, aparecerán ambas carpetas. La carpetainstruction
contiene los resultados de la optimización de las instrucciones del sistema, mientras que la carpetademonstration
contiene los resultados de la optimización dedemonstration
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.
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 admiteglobal
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
oeurope-central2
, en lugar deglobal
para cumplir sus requisitos de residencia de datos.
Siguientes pasos
- Prueba el cuaderno del SDK del optimizador de peticiones de Vertex AI.
- Consulta las prácticas recomendadas de IA responsable y los filtros de seguridad de Vertex AI.
- Más información sobre las estrategias de peticiones
- Consulta ejemplos de peticiones en la galería de peticiones.