Ingeniería práctica de instrucciones para LLM más pequeños

Maud Nalpas
Maud Nalpas

La eficacia de un modelo de lenguaje extenso depende en gran medida de las instrucciones que y lo darás. La ingeniería de instrucciones es la de elaboración de preguntas para obtener el mejor resultado de un LLM. Es un paso crucial para implementar una función basada en LLM.

La ingeniería de instrucciones es un proceso iterativo. Si ya experimentaste en diferentes LLM, quizás hayas notado que debes modificar tu instrucción lograr un mejor resultado.

Esto también se aplica a modelos de diferentes tamaños.

Interfaces de chat con la tecnología de los LLM grandes, como Gemini o ChatGPT, pueden producir resultados satisfactorios con un mínimo esfuerzo. Sin embargo, cuando trabajas con un LLM predeterminado más pequeño que no está ajustado, puedes necesitas adaptar tu enfoque.

Los LLM más pequeños son menos potentes y tienen un conjunto de información más pequeño para extraer.

¿Qué entendemos por “LLM más pequeños”?

Definir los tamaños de LLM es complicado y no siempre es así divulgada por los creadores.

En este documento, “LLM más pequeños” cualquier modelo por debajo de 30,000 millones de parámetros. A partir de hoy, los modelos con unos pocos miles de millones de parámetros se ejecuten en el navegador, en dispositivos para consumidores.

¿Dónde se usan los LLM más pequeños?

  • IA generativa en el dispositivo o en el navegador, por ejemplo, si usas Gemma 2B con la API de LLM Inference de MediaPipe (adecuado para dispositivos que solo usan CPU) o DistilBert en el navegador con Transformers.js Solo es posible descargar un modelo y ejecutar la inferencia en el dispositivo de un usuario con estos LLM más pequeños, para que las descargas web sean razonables las restricciones de memoria y GPU/CPU de un dispositivo.
  • IA generativa del servidor personalizada. Los modelos pequeños y abiertos, como Gemma 2B, Gemma 7B o Gemma 27B están disponibles para que las ejecutes en tu propio servidor (y ajustarlo de forma opcional).

Comenzar

Las interfaces de chat que usan la tecnología de LLM grandes, como Gemini o ChatGPT, suelen producir resultados satisfactorios con un mínimo esfuerzo en la creación de instrucciones. Sin embargo, cuando trabajas con LLM más pequeños, debes adaptar tu enfoque. Los LLM más pequeños son menos potentes y tienen un conjunto de información más pequeño para extraer.

Proporciona instrucciones de contexto y formato precisos

Para lograr resultados óptimos con LLM pequeños, crea instrucciones más detalladas y específicas.

Por ejemplo:

Based on a user review, provide a product rating as an integer between 1 and 5. \n
Only output the integer.

Review: "${review}"
Rating:
Entrada (revisión) Resultado (calificación)
  LLM más grande (Gemini 1.5) LLM más pequeño (Gemma 2B)
Me encanta el ajuste. Distribuye el peso bien y resulta sorprendentemente cómodo, incluso en caminatas todo el día. Lo recomendaría. 5 4 de 5 estrellas**
Las correas son endebles, y empezaron a hundirse en mis hombros bajo cargas pesadas. 1 5/2

Aunque Gemini 1.5 proporciona el resultado deseado con esta sencilla instrucción, el resultado no es satisfactoria:

  • El formato es incorrecto. Solicitamos un número entero para la calificación.
  • La calificación no parece ser muy precisa. La primera opinión es lo suficientemente entusiasta como para indicar una opinión de 5 estrellas.

Para solucionar esto, necesitamos usar técnicas de ingeniería de instrucciones, Instrucciones con un solo ejemplo, con ejemplos limitados o con varios ejemplos y la instrucción de cadena de pensamiento. También debemos dar instrucciones claras de formato e insistir en que el modelo usar la gama completa de calificaciones.

Por ejemplo:

`Analyze a product review, and then based on your analysis give me the
corresponding rating (integer). The rating should be an integer between 1 and
5. 1 is the worst rating, and 5 is the best rating. A strongly dissatisfied
review that only mentions issues should have a rating of 1 (worst). A strongly
satisfied review that only mentions positives and upsides should have a rating
of 5 (best). Be opinionated. Use the full range of possible ratings (1 to
5). \n\n
    \n\n
    Here are some examples of reviews and their corresponding analyses and
    ratings:
    \n\n
    Review: 'Stylish and functional. Not sure how it'll handle rugged outdoor
    use, but it's perfect for urban exploring.'
    Analysis: The reviewer appreciates the product's style and basic
    functionality. They express some uncertainty about its ruggedness but
    overall find it suitable for their intended use, resulting in a positive,
    but not top-tier rating.
    Rating (integer): 4
    \n\n
    Review: 'It's a solid backpack at a decent price. Does the job, but nothing
    particularly amazing about it.'
    Analysis: This reflects an average opinion. The backpack is functional and
    fulfills its essential purpose. However, the reviewer finds it unremarkable
    and lacking any standout features deserving of higher praise.
    Rating (integer): 3
    \n\n
    Review: 'The waist belt broke on my first trip! Customer service was unresponsive too. Would not recommend.'
    Analysis: A serious product defect and poor customer service experience naturally warrants the lowest possible rating. The reviewer is extremely unsatisfied with both the product and the company.
    Rating (integer): 1
    \n\n
    Review: 'Love how many pockets and compartments it has. Keeps everything organized on long trips. Durable too!'
    Analysis: The enthusiastic review highlights specific features the user loves (organization and durability), indicating great satisfaction with the product. This justifies the highest rating.
    Rating (integer): 5
    \n\n
    Review: 'The straps are a bit flimsy, and they started digging into my shoulders under heavy loads.'
    Analysis: While not a totally negative review, a significant comfort issue leads the reviewer to rate the product poorly. The straps are a key component of a backpack, and their failure to perform well under load is a major flaw.
    Rating (integer): 1
    \n\n
    Now, here is the review you need to assess:
    \n
    Review: "${review}" \n`;
Entrada (revisión) Resultado con un LLM más pequeño (Gemma 2B)

Me encanta el ajuste. Distribuye el peso de forma adecuada y sorprendente cómodo incluso en caminatas de todo el día. Lo recomendaría.

Análisis: Esta opinión es muy positiva y enfatiza el comportamiento del producto ajuste y comodidad, lo que indica una gran satisfacción con el producto. Esta de justificar una calificación alta.

Calificación (número entero): 5

Las correas son endebles y empezaron a hundirse en mis hombros. bajo cargas pesadas.

**Análisis:** La opinión destaca un problema significativo de comodidad con las correas. También sugiere que el producto podría no ser apto para productos cargas o salidas prolongadas.

**Calificación:** 1 (peor)

Nuestra instrucción más elaborada, combinada con instrucciones con ejemplos limitados y técnicas de instrucción en cadena de pensamiento, otorga calificaciones más precisas.

Se espera un análisis manual de los resultados

Si bien siempre debes limpiar e interpretar manualmente la salida de un LLM, esta es especialmente en el caso de los LLM más pequeños, que podrían producir resultados menos pulidos y pueden requerir instrucciones en cadena de pensamiento.

En el primer ejemplo, usamos instrucciones en cadena de pensamiento, por lo que el resultado incluyó un análisis y una calificación. Debemos analizarlos de forma manual para obtener la calificación. También Observa el formato incoherente del resultado en la sección anterior: el modelo a veces muestra Markdown, pero no siempre.

// Use try/catch to catch (parsing) errors
try {
  // Parse the output for a rating
  const int = /[1-5]/;
  const ratingAsString = llmOutput.match(int)[0];
  // Parse as int
  const ratingAsInt = parseInt(ratingAsString);
  // `checkRating` checks the rating is a number between 1 and 5, since the
  // regEx may catch a number like "100"
  const finalRating = checkRating(ratingAsInt);
} catch (e) {
  console.error('Error', e);
}

Diferencias de la API de Mind

APIs de Cloud de LLM, como OpenAI o Gemini, que suelen ser a LLM más grandes y ofrecer funciones prácticas de instrucciones. Por ejemplo, Gemini 1.5 Pro ofrezca instrucciones del sistema Modo JSON.

Por el momento, estas funciones no siempre están disponibles para el uso de modelos personalizados. para LLM más pequeños a los que se accede con APIs de IA integradas en el navegador, como API de MediaPipe LLM Inference o Transformers.js. Si bien esto no es necesariamente una limitación técnica, las APIs de IA integradas en el navegador tienden a y ser más eficiente.

Límites de tokens mentales

Como tu instrucción de LLM más pequeños debe incluir ejemplos o instrucciones instrucciones, es probable que tarde más y que ocupe más de tu token de entrada límite, si es que hay uno.

Además, los modelos más pequeños tienden a tener un límite de token de entrada más pequeño. Para Por ejemplo, Gemini 1.5 Pro tiene un límite de tokens de entrada de 1 millón. mientras que los modelos de Gemma tienen una ventana de contexto de 8K.

Usa las funciones de recuento de tokens. para evitar alcanzar el límite.

Adapta tus estimaciones de tiempo

Ten en cuenta el diseño y las pruebas de instrucciones en tus estimaciones de tiempo de ingeniería.

Debido a las diferencias en las APIs y los límites de tokens, es probable que necesites más tiempo y esfuerzo para crear tu instrucción de un LLM más pequeño que uno grande. Pruebas y validación la salida del LLM también puede implicar un mayor esfuerzo.

¿Diferencias entre el ingeniero de instrucciones y el ajuste?

Para los desarrolladores web, la ingeniería de instrucciones es nuestra forma preferida de aprovechar IA generativa sobre el entrenamiento personalizado y el ajuste. Pero incluso la ingeniería avanzada de instrucciones puede no ser suficiente en algunos casos de uso, especialmente si usas un LLM más pequeño.

Usa los ajustes en los siguientes casos:

  • Necesitas una precisión y un rendimiento de primer nivel para una tarea específica. Fino ajusta directamente los parámetros internos del modelo para obtener resultados óptimos.
  • Tienes datos bien seleccionados, relevantes para tu tarea, ya etiquetados con a las salidas preferidas. Necesitas estos datos para un ajuste eficaz.
  • Usas el modelo varias veces para el mismo propósito. Se puede realizar un ajuste una vez y reutilizarse para una tarea específica.