Una mezcla de reflexiones, revisiones de literatura y un experimento sobre ingeniería de avisos automatizada para modelos de lenguaje grandes
Pasé los últimos meses tratando de crear todo tipo de aplicaciones basadas en LLM y, sinceramente, una parte realmente importante de mi tiempo se dedicó a mejorar las indicaciones para obtener el resultado deseado del LLM.
Ha habido muchos momentos en los que me topo con una especie de vacío existencial, preguntándome si podría ser simplemente un ingeniero rápido glorificado. Dado el estado actual de interacción con los LLM, todavía me inclino a concluir con “Todavía no”, y la mayoría de las noches supero mi síndrome del impostor. No entraré en eso hoy.
Pero todavía me pregunto a menudo si, algún día, el proceso de redacción de indicaciones podría automatizarse en su mayor parte. Y creo que la respuesta a este escenario futurista depende de descubrir la naturaleza de la ingeniería rápida.
A pesar de la innumerable cantidad de manuales de ingeniería rápida que existen en Internet, todavía no puedo decidir si la ingeniería rápida es una arte o una ciencia.
Por un lado, se siente como un arte cuando tengo que aprender y editar mis indicaciones de forma iterativa en función de lo que estoy observando en los resultados. Con el tiempo, aprenderá que algunos de los pequeños detalles son importantes: usar “debe” en lugar de “debería” o colocar las pautas hacia el final en lugar de hacia la mitad del mensaje. Dependiendo de la tarea, simplemente hay demasiadas maneras en que uno puede expresar un conjunto de instrucciones y pautas y, a veces, parece prueba y error.
Por otro lado, se podría argumentar que las indicaciones son sólo hiperparámetros. Al final, el LLM realmente solo ve sus indicaciones como incorporaciones y, como todos los hiperparámetros, puede ajustarlo y medir objetivamente su rendimiento si tiene un conjunto establecido de datos de entrenamiento y prueba. Recientemente me encontré con esta publicación de Moritz Laurerque es ingeniero de aprendizaje automático en HuggingFace:
Cada vez que prueba un mensaje diferente en sus datos, se vuelve menos seguro de si el LLM realmente se generaliza a datos no vistos… Usar una división de validación separada para ajustar el hiperparámetro principal de los LLM (el mensaje) es tan importante como train-val-test dividir para realizar ajustes. La única diferencia es que no tienes formación…