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ámetrosource_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:
- Usuario de Vertex AI (
roles/aiplatform.user
) - Administrador de objetos de Storage (
roles/storage.objectAdmin
) - Lector de Artifact Registry (
roles/artifactregistry.reader
) - Si usas métricas personalizadas, haz lo siguiente:
- Desarrollador de Cloud Run (
roles/run.developer
) - Invocador de Cloud Run (
roles/run.invoker
)
- Desarrollador de Cloud Run (
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:
- Con el optimizador de instrucciones de Vertex AI en la consola de Vertex AI
- con la API de Vertex AI
- Ejecuta el notebook del optimizador de instrucciones de Vertex AI.
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:
- Crea una plantilla de instrucciones y del sistema
- Prepara instrucciones de muestra
- Opcional: Crea métricas personalizadas
- Cree una configuración
- Ejecuta el trabajo de optimización de instrucciones
- 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:
En Colab Enterprise, abre el notebook del optimizador de instrucciones de Vertex AI.
Ir al notebook del optimizador de instrucciones de Vertex AI
En la sección Crea una plantilla de instrucciones y del sistema, haz lo siguiente:
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.
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}
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ámetrosource_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:
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 instrucción.
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}
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ámetrosource_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
- Crea un archivo JSONL.
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"}
Archivo CSV
- Crea un archivo CSV.
- En la primera fila, agrega las variables de la plantilla de instrucciones.
- En las siguientes filas, agrega los datos de muestra que reemplazan cada variable.
- 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:
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 el paquetefunctions-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
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
- Es la entrada JSON que contiene
response
, que es el resultado del LLM, yreference
, 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', })
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 proyectoREGION
: 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:
En Colab Enterprise, abre el notebook del optimizador basado en datos.
Ir al notebook del optimizador de instrucciones de Vertex AI
En la sección Configuración del proyecto, haz lo siguiente:
- En el campo PROJECT_ID, ingresa tu ID del proyecto.
- En el campo LOCATION, ingresa la ubicación en la que quieres ejecutar el optimizador basado en datos.
- 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
- 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
En la sección Configurar la configuración de optimización, haz lo siguiente:
- En el campo TARGET_MODEL, ingresa el modelo para el que deseas optimizar las instrucciones.
- 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.
- En OPTIMIZATION_MODE, ingresa el modo de optimización que deseas usar. Debe ser
instruction
,demonstration
oinstruction_and_demo
. - En el campo EVAL_METRIC, ingresa una métrica de evaluación para la que deseas optimizar tus instrucciones.
- 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.
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.
- 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
10
y20
. Si no se configura, el valor predeterminado es10
. - 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
yinstruction_and_demo
. Debe ser un número entero entre10
y30
. Si no se configura, el valor predeterminado es10
. - 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 es3
. - 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 es3.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 es3.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 es3.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.
- Para las métricas basadas en modelos, debe ser un número de punto flotante que sea
- Si quieres usar más de una métrica de evaluación, haz lo siguiente:
- En el campo EVAL_METRIC_1, ingresa una métrica de evaluación que desees usar.
- 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.
- En el campo EVAL_METRIC_2, ingresa una métrica de evaluación que desees usar.
- 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.
- De manera opcional, en el campo EVAL_METRIC_3, ingresa una métrica de evaluación que desees usar.
- 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.
- 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
oapplication/json
. Si no se configura, el valor predeterminado estext/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:
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 proyectoSYSTEM_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 elfinal_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 queEVALUATION_METRIC_LIST
.METRIC_AGGREGATION_TYPE
: Es el tipo de agregación que se usa para las métricas de evaluación. Debe serweighted_sum
oweighted_average
. Si no se configura, el valor predeterminado esweighted_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 serweighted_sum
oweighted_average
. Si no se configura, el valor predeterminado esweighted_sum
.CUSTOM_METRIC_NAME
: Es el nombre de la métrica, según se define en la clave que corresponde alfinal_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 serinstruction
,demonstration
oinstruction_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
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 entre10
y20
. Si no se configura, el valor predeterminado es10
.NUM_DEMO_OPTIMIZATION_STEPS
: Es la cantidad de demostraciones que evalúa el optimizador basado en datos. Se usa con el modo de optimizacióndemonstration
yinstruction_and_demo
. Debe ser un número entero entre2
y la cantidad total de instrucciones de ejemplo menos 1. Si no se configura, el valor predeterminado es10
.NUM_DEMO_PER_PROMPT
: Es la cantidad de demostraciones generadas por instrucción. Debe ser un número entero entre3
y6
Si no se configura, el valor predeterminado es3
.
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 esus-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ámetrosource_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 esus-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 sea3.0
o mayor, pero menor que la cuota de QPS que tienes en el modelo de destino. Si no se configura, el valor predeterminado es3.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 es3.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.
- Para las métricas basadas en modelos, debe ser un número de punto 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 de punto flotante que sea3.0
o mayor, pero menor que la cuota de QPS que tienes en el modelo de origen. Si no se configura, 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 configura, el valor predeterminado estext/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 entre5
y100
. Si no se configura, el valor predeterminado es100
.
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:
En Colab Enterprise, abre el notebook del optimizador de instrucciones de Vertex AI.
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:
Abre el notebook del optimizador de instrucciones de Vertex AI.
En la sección Inspecciona los resultados, haz lo siguiente:
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
Haz clic en play_circle Ejecutar celda.
Console
En la Google Cloud consola, en la sección Vertex AI, ve a la página Canalizaciones de entrenamiento.
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:
En la consola de Google Cloud , ve a la página Buckets de Cloud Storage:
Haz clic en el nombre del bucket de Cloud Storage.
Navega a la carpeta que tiene el mismo nombre que el modo de optimización que usaste para evaluar las instrucciones, ya sea
instruction
odemonstration
. Si usaste el modoinstruction_and_demo
, aparecerán ambas carpetas. La carpetainstruction
contiene los resultados de la optimización de 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
: 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.
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 admiteglobal
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
oeurope-central2
, en lugar deglobal
para cumplir con su requisito de residencia de datos.
¿Qué sigue?
- Prueba el cuaderno de notas del SDK del optimizador de instrucciones de Vertex AI.
- Obtén información sobre las prácticas recomendadas de IA responsable y los filtros de seguridad de Vertex AI.
- Obtén más información sobre las estrategias de instrucciones.
- Explora ejemplos de instrucciones en la galería de instrucciones.