Optimiza las instrucciones

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

El optimizador de instrucciones de Vertex AI 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.

El optimizador de instrucciones de Vertex AI ayuda a mejorar las instrucciones evaluando la respuesta del modelo a instrucciones de muestra en función de las métricas de evaluación especificadas. Para usar el optimizador de instrucciones de Vertex AI, debes tener lo siguiente:

  • Un conjunto de instrucciones de muestra
  • Instrucciones del sistema que usan todas tus instrucciones de muestra
  • Una plantilla de instrucción que hace referencia a tus instrucciones de muestra

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 de instrucciones de Vertex AI. 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.

Cómo funciona la optimización

Después de preparar tus entradas, eliges un modo de optimización, una métrica de evaluación y un modelo objetivo.

  • Modo de optimización: Especifica si el optimizador de instrucciones de Vertex AI optimiza las instrucciones del sistema, selecciona instrucciones de muestra para agregarlas a las instrucciones del sistema como ejemplos de pocas tomas o ambas.
  • Métrica de evaluación: Es la métrica que usa el optimizador de instrucciones de Vertex AI para optimizar las instrucciones del sistema o seleccionar instrucciones de muestra.
  • Modelo de destino: el modelo de Google con el que el optimizador de instrucciones de Vertex AI optimiza las instrucciones del sistema o selecciona instrucciones de muestra para usarlo.

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

Al final de la tarea, el optimizador de instrucciones de Vertex AI genera las instrucciones del sistema optimizadas con su puntuación de evaluación.

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.

Modelos compatibles

Puedes optimizar las instrucciones del sistema para usarlas con los siguientes modelos:

Métricas de evaluación admitidas

El optimizador de instrucciones de Vertex AI 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.
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, Vertex AI ejecuta tus instrucciones de muestra en el modelo de origen para generar las respuestas de verdad fundamental por ti.

Antes de comenzar

Optimiza las instrucciones

Para optimizar las instrucciones, ejecuta el notebook del optimizador de instrucciones de Vertex AI o usa la API de Vertex AI. Para optimizar las instrucciones, elige el método que quieres usar para ejecutar el optimizador de instrucciones de Vertex AI 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. Cree una configuración
  4. Ejecuta el trabajo de optimización de instrucciones
  5. 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
  • 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 de instrucciones de Vertex AI 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 de instrucciones de Vertex AI 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 de instrucciones de Vertex AI 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 de instrucciones de Vertex AI 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 de instrucciones de Vertex AI, 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.

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.

Cree una configuración

La configuración del optimizador de instrucciones de Vertex AI especifica los parámetros que deseas establecer para tu trabajo de optimización de instrucciones, incluidos los siguientes:

  • Modo de optimización: Especifica si el optimizador de instrucciones de Vertex AI optimiza las instrucciones del sistema, selecciona instrucciones de muestra para agregarlas a las instrucciones del sistema como ejemplos de pocas tomas o ambas.
  • Métrica de evaluación: Es la métrica que usa el optimizador de instrucciones de Vertex AI para optimizar las instrucciones del sistema o seleccionar instrucciones de muestra.
  • Modelo de destino: el modelo de Google con el que el optimizador de instrucciones de Vertex AI optimiza las instrucciones del sistema o selecciona instrucciones de muestra para usarlo.

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

Notebook

Si quieres ejecutar el optimizador de instrucciones de Vertex AI a través del notebook, crea una configuración de la siguiente manera:

  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 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 de instrucciones de Vertex AI.
    3. En el campo OUTPUT_PATH, ingresa el URI del bucket de Cloud Storage en el que deseas que el optimizador de instrucciones de Vertex AI 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 con el que deseas optimizar las instrucciones para usarlas.
    2. En OPTIMIZATION_MODE, ingresa el modo de optimización que deseas usar. Debe ser instruction, demonstration o instruction_and_demo.
    3. En el campo EVAL_METRIC, ingresa la métrica de evaluación para la que deseas optimizar tus instrucciones.
    4. 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 de instrucciones de Vertex AI 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 de instrucciones de Vertex AI 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_TEMPLATES_PER_STEP, ingresa la cantidad de instrucciones del sistema que genera y evalúa el optimizador de instrucciones de Vertex AI. Se usa con el modo de optimización instruction y instruction_and_demo. Debe ser un número entero entre 14. Si no se configura, el valor predeterminado es 2.
    • En el campo NUM_DEMO_OPTIMIZATION_STEPS, ingresa la cantidad de demostraciones que evalúa el optimizador de instrucciones de Vertex AI. 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 3 y 6. Si no se configura, el valor predeterminado es 3.
    • En el campo TARGET_MODEL_QPS, ingresa las consultas por segundo (QPS) que el optimizador de instrucciones de Vertex AI 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 de instrucciones de Vertex AI 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 de instrucciones de Vertex AI envía al modelo de evaluación, gemini-1.5-pro.
      • Para las métricas basadas en modelos, debe ser un número de punto flotante que sea 3.0 o superior, pero menor que la cuota que tienes para gemini-1.5-pro. 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 de instrucciones de Vertex AI 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 que quieres que use el optimizador de instrucciones de Vertex AI 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 de instrucciones de Vertex AI 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 lo siguiente de forma opcional:
      7. En el campo METRIC_AGGREGATION_TYPE, ingresa el valor que deseas que use el optimizador de instrucciones de Vertex AI 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 de instrucciones de Vertex AI 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 de instrucciones de Vertex AI a través del notebook, 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_path": "SYSTEM_INSTRUCTION_PATH",
     "prompt_template_path": "PROMPT_TEMPLATE_PATH",
     "target_model": "TARGET_MODEL",
     "eval_metric": "EVALUATION_METRIC"
     "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_PATH: Es el URI de las instrucciones del sistema en tu bucket de Cloud Storage. Por ejemplo, gs://bucket-name/system-instruction.txt
    • PROMPT_TEMPLATE: Es el URI de la plantilla de instrucción en tu bucket de Cloud Storage. Por ejemplo: gs://bucket-name/prompt-template.txt.
    • TARGET_MODEL: El modelo con el que deseas optimizar las instrucciones para usarlas.
    • EVALUATION_METRIC: Es la métrica de evaluación para la que deseas optimizar tus instrucciones.
    • 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 de instrucciones de Vertex AI 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 de instrucciones de Vertex AI 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.
    • Métricas de evaluación. Estos parámetros definen cómo se evalúan las instrucciones optimizadas.
    • 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_template_eval_per_step": NUM_TEMPLATES_PER_STEP,
      "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,
      "eval_metrics_types": [EVALUATION_METRIC_LIST],
      "eval_metrics_weights": [EVAL_METRICS_WEIGHTS],
      "aggregation_type": "METRIC_AGGREGATION_TYPE",
      "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 de instrucciones de Vertex AI 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_TEMPLATES_PER_STEP: Es la cantidad de instrucciones del sistema que genera y evalúa el optimizador de instrucciones de Vertex AI. Se usa con el modo de optimización instruction y instruction_and_demo. Debe ser un número entero entre 14. Si no se configura, el valor predeterminado es 2.
        • NUM_DEMO_OPTIMIZATION_STEPS: Es la cantidad de demostraciones que evalúa el optimizador de instrucciones de Vertex AI. 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.
        • 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 configura el parámetro source_model, Vertex AI 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 de instrucciones de Vertex AI 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 de instrucciones de Vertex AI envía al modelo de evaluación, gemini-1.5-pro.
        • Para las métricas basadas en modelos, debe ser un número de punto flotante que sea 3.0 o superior, pero menor que la cuota que tienes para gemini-1.5-pro. 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 de instrucciones de Vertex AI llama a tus funciones de Cloud Run de métricas personalizadas.
        • SOURCE_MODEL_QPS: Las consultas por segundo (QPS) que el optimizador de instrucciones de Vertex AI 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.
      • Parámetros de las métricas de evaluación:

        • EVALUATION_METRIC_LIST: Es una lista de métricas de evaluación. Usa eval_metrics_types en lugar de eval_metric cuando quieras usar varias métricas de evaluación. Debe ser un array. Por ejemplo, "bleu", "summarization_quality".
        • EVAL_METRICS_WEIGHTS: Es el peso de cada eval_metrics_type. 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.
      • 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 de Vertex AI 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 de instrucciones de Vertex AI con una de las siguientes opciones:

Notebook

Ejecuta el optimizador de instrucciones de Vertex AI 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 de instrucciones de Vertex AI

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

    Se ejecuta el optimizador de instrucciones de Vertex AI.

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:

Python

Antes de probar este ejemplo, sigue las instrucciones de configuración para Python incluidas en la guía de inicio rápido de Vertex AI sobre cómo usar bibliotecas cliente. Para obtener más información, consulta la documentación de referencia de la API de Vertex AI Python.

Para autenticarte en Vertex AI, configura las credenciales predeterminadas de la aplicación. Si deseas obtener más información, consulta Configura la autenticación para un entorno de desarrollo local.

from google.cloud import aiplatform

# Initialize Vertex AI platform
aiplatform.init(project=PROJECT_ID, location="us-central1")

# TODO(Developer): Check and update lines below
# cloud_bucket = "gs://cloud-samples-data"
# config_path = f"{cloud_bucket}/instructions/sample_configuration.json"
# output_path = "custom_job/output/"

custom_job = aiplatform.CustomJob(
    display_name="Prompt Optimizer example",
    worker_pool_specs=[
        {
            "replica_count": 1,
            "container_spec": {
                "image_uri": "us-docker.pkg.dev/vertex-ai-restricted/builtin-algorithm/apd:preview_v1_0",
                "args": [f"--config={cloud_bucket}/{config_path}"],
            },
            "machine_spec": {
                "machine_type": "n1-standard-4",
            },
        }
    ],
    staging_bucket=cloud_bucket,
    base_output_dir=f"{cloud_bucket}/{output_path}",
)

custom_job.submit()
print(f"Job resource name: {custom_job.resource_name}")
# Example response:
#    'projects/123412341234/locations/us-central1/customJobs/12341234123412341234'

Analiza los resultados y realiza iteraciones

Después de ejecutar el optimizador de instrucciones de Vertex AI, revisa el progreso del trabajo con una de las siguientes opciones:

Notebook

Si deseas ver los resultados del optimizador de instrucciones de Vertex AI 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 de instrucciones de Vertex AI para escribir los resultados. Por ejemplo, gs://bucket-name/output-path

    2. Haz clic en play_circle Ejecutar celda.

Console

  1. En la consola de Google Cloud, 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 de instrucciones de Vertex AI 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 fotos que generó el optimizador de instrucciones de Vertex AI 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.

¿Qué sigue?