Optimización de solicitudes mediante variantes

Crear un buen aviso es una tarea difícil que requiere mucha creatividad, claridad y relevancia. Una buena solicitud puede obtener el resultado deseado de un modelo de lenguaje previamente entrenado, mientras que una mala solicitud puede conducir a resultados inexactos, irrelevantes o sin sentido. Por lo tanto, es necesario ajustar las solicitudes para optimizar su rendimiento y solidez en diferentes tareas y dominios.

Por ello, introducimos el concepto de variantes que puede ayudarte a probar el comportamiento del modelo bajo diferentes condiciones, como diferentes palabras, formatos, contextos, temperaturas o top-k, comparar y encontrar la mejor solicitud y configuración que maximice la precisión, diversidad o coherencia del modelo.

En este artículo, le mostraremos cómo utilizar las variantes para ajustar las instrucciones y evaluar el rendimiento de las diferentes variantes.

Requisitos previos

Antes de leer este artículo, es mejor que consulte:

¿Cómo ajustar los avisos mediante variantes?

En este artículo, utilizaremos Clasificación Web como ejemplo.

  1. Abra el flujo de ejemplo y elimine el nodo prepare_examples para empezar.

    Screenshot of Web Classification example flow to demonstrate variants.

  2. Utilice la siguiente consulta como consulta de referencia en el nodo classify_with_llm.

Your task is to classify a given url into one of the following types:
Movie, App, Academic, Channel, Profile, PDF or None based on the text content information.
The classification will be based on the url, the webpage text content summary, or both.

For a given URL : {{url}}, and text content: {{text_content}}.
Classify above url to complete the category and indicate evidence.

The output shoule be in this format: {"category": "App", "evidence": "Both"} 
OUTPUT:

Para optimizar este flujo, puede haber múltiples formas, y a continuación se indican dos direcciones:

  • Para el nodo classify_with_llm: He aprendido de la comunidad y los documentos que una temperatura más baja da una mayor precisión, pero menos creatividad y sorpresa, por lo que una temperatura más baja es adecuada para las tareas de clasificación y también pocos disparos puede aumentar el rendimiento LLM. Por lo tanto, me gustaría probar cómo se comporta mi flujo cuando la temperatura se cambia de 1 a 0, y cuando el aviso es con pocos ejemplos.

  • Para summarize_text_content nodo: También quiero probar el comportamiento de mi flujo cuando cambio resumen de 100 palabras a 300, para ver si más contenido de texto puede ayudar a mejorar el rendimiento.

Crear variantes

  1. Seleccione Mostrar variantes en la parte superior derecha del nodo LLM. El nodo LLM existente es variant_0 y es la variante predeterminada.
  2. Seleccione el botón Clonar de la variante_0 para generar la variante_1. A continuación, puede configurar los parámetros con valores diferentes o actualizar el aviso de la variante_1.
  3. Repita el paso para crear más variantes.
  4. Seleccione Ocultar variantes para dejar de añadir más variantes. Todas las variantes están plegadas. Se muestra la variante predeterminada para el nodo.

Para clasificar_con_llm nodo, basado en la variante_0:

  • Cree la variante_1, donde la temperatura se cambia de 1 a 0.
  • Cree la variante_2, donde la temperatura es 0 y puede utilizar el siguiente aviso que incluye algunos ejemplos.
Your task is to classify a given url into one of the following types:
Movie, App, Academic, Channel, Profile, PDF or None based on the text content information.
The classification will be based on the url, the webpage text content summary, or both.

Here are a few examples:

URL: https://play.google.com/store/apps/details?id=com.spotify.music 
Text content: Spotify is a free music and podcast streaming app with millions of songs, albums, and original podcasts. It also offers audiobooks, so users can enjoy thousands of stories. It has a variety of features such as creating and sharing music playlists, discovering new music, and listening to popular and exclusive podcasts. It also has a Premium subscription option which allows users to download and listen offline, and access ad-free music. It is available on all devices and has a variety of genres and artists to choose from. 
OUTPUT: {"category": "App", "evidence": "Both"} 
		
URL: https://www.youtube.com/channel/UC_x5XG1OV2P6uZZ5FSM9Ttw 
Text content: NFL Sunday Ticket is a service offered by Google LLC that allows users to watch NFL games on YouTube. It is available in 2023 and is subject to the terms and privacy policy of Google LLC. It is also subject to YouTube's terms of use and any applicable laws. 
OUTPUT: {"category": "Channel", "evidence": "URL"} 
		
URL: https://arxiv.org/abs/2303.04671 
Text content: Visual ChatGPT is a system that enables users to interact with ChatGPT by sending and receiving not only languages but also images, providing complex visual questions or visual editing instructions, and providing feedback and asking for corrected results. It incorporates different Visual Foundation Models and is publicly available. Experiments show that Visual ChatGPT opens the door to investigating the visual roles of ChatGPT with the help of Visual Foundation Models. 
OUTPUT: {"category": "Academic", "evidence": "Text content"} 
		
URL: https://ab.politiaromana.ro/ 
Text content: There is no content available for this text. 
OUTPUT: {"category": "None", "evidence": "None"}
		
For a given URL : {{url}}, and text content: {{text_content}}.
Classify above url to complete the category and indicate evidence.
OUTPUT:    

Para el nodo summarize_text_content, basado en variant_0, puede crear variant_1 donde 100 words se cambia a 300 palabras en prompt.

Ahora, el flujo tiene el siguiente aspecto, 2 variantes para el nodo summarize_text_content y 3 para el nodo classify_with_llm.

Screenshot of flow authoring page when you have variants in flow.

Ejecute todas las variantes con una única fila de datos y compruebe los resultados

Para asegurarse de que todas las variantes pueden ejecutarse correctamente y funcionan como se espera, puede ejecutar el flujo con una única fila de datos para probarlo.

Nota

Cada vez puede seleccionar solo un nodo LLM con variantes para ejecutar mientras que otros nodos LLM utilizarán la variante predeterminada.

En este ejemplo, configuramos variantes tanto para el nodo summarize_text_content como para el nodo classify_with_llm, por lo que tendrá que ejecutar dos veces para probar todas las variantes.

  1. Seleccione el botón Ejecutar situado en la parte superior derecha.
  2. Seleccione un nodo LLM con variantes. Los demás nodos LLM utilizarán la variante predeterminada. Screenshot of submitting a flow run when you have variants in flow.
  3. Envíe el proceso de flujo.
  4. Una vez finalizada la ejecución del flujo, puede comprobar el resultado correspondiente para cada variante.
  5. Envíe otra ejecución de flujo con el otro nodo LLM con variantes, y compruebe las salidas.
  6. Puede cambiar otros datos de entrada (por ejemplo, utilizar una URL de página de Wikipedia) y repetir los pasos anteriores para probar variantes para datos diferentes.

Evaluar las variantes

Cuando ejecuta las variantes con unos pocos datos y comprueba los resultados a simple vista, no puede reflejar la complejidad y diversidad de los datos del mundo real, mientras que el resultado no es medible, por lo que es difícil comparar la eficacia de las diferentes variantes y elegir la mejor.

Puede enviar una ejecución por lotes, que le permite probar las variantes con una gran cantidad de datos y evaluarlas con métricas, para ayudarle a encontrar la más adecuada.

  1. Primero necesita preparar un conjunto de datos, que sea lo suficientemente representativo del problema del mundo real que quiere resolver con el flujo de avisos. En este ejemplo, se trata de una lista de URL y su clasificación real. Utilizaremos la precisión para evaluar el rendimiento de las variantes.

  2. Seleccione Evaluar en la parte superior derecha de la página.

  3. Aparece un asistente para Ejecutar por lotes y evaluar. El primer paso es seleccionar un nodo para ejecutar todas sus variantes.

    Para comprobar lo bien que funcionan las distintas variantes en cada nodo de un flujo, es necesario realizar una ejecución por lotes para cada nodo con las variantes una a una. Esto le ayuda a evitar la influencia de las variantes de otros nodos y a centrarse en los resultados de las variantes de este nodo. Esto sigue la regla del experimento controlado, que significa que solo cambia una cosa cada vez y mantiene todo lo demás igual.

    Por ejemplo, puede seleccionar el nodo classify_with_llm para ejecutar todas las variantes; el nodo summarize_text_content utilizará su variante predeterminada para esta ejecución por lotes.

  4. A continuación, en Configuración de la ejecución por lotes, puede establecer el nombre de la ejecución por lotes, elegir un tiempo de ejecución y cargar los datos preparados.

  5. A continuación, en Configuración de la evaluación, seleccione un método de evaluación.

    Dado que este flujo es para clasificación, puede seleccionar el método Evaluación de la precisión de la clasificación para evaluar la precisión.

    La precisión se calcula mediante la comparación de las etiquetas predichas asignadas por el flujo (predicción) con las etiquetas reales de los datos (verdad básica) y contando cuántas de ellas coinciden.

    En la sección Asignación de entrada de evaluación, debe especificar que la verdad básica procede de la columna de categoría del conjunto de datos de entrada, y que la predicción procede de una de las salidas del flujo: categoría.

  6. Después de revisar todas las configuraciones, puede enviar la ejecución por lotes.

  7. Una vez enviada la ejecución, seleccione el enlace y vaya a la página de detalles de la ejecución.

Nota

La ejecución puede tardar varios minutos en completarse.

Visualización de salidas

  1. Una vez completadas la ejecución por lotes y la ejecución de evaluación, en la página de detalles de ejecución, seleccione las ejecuciones por lotes que sea necesario para cada variante y, a continuación, seleccione Visualizar salidas. Verá las métricas de 3 variantes para el nodo de classify_with_llm y las salidas previstas de LLM para cada registro de datos. Screenshot of runs showing visualize outputs.
  2. Después de identificar qué variante es la mejor, puede volver a la página de creación de flujo y establecer esa variante como variante predeterminada del nodo
  3. Puede repetir los pasos anteriores para evaluar también las variantes del nodo summarize_text_content.

Ahora, ha terminado el proceso de ajuste de solicitudes mediante variantes. Puede aplicar esta técnica a su propio flujo de avisos a fin de encontrar la mejor variante para el nodo LLM.

Pasos siguientes