Todo el mundo -tecnólogos o no- habla de ChatGPT, GPT4 y otras herramientas de IA generativa basadas en grandes modelos de lenguaje (LLM). En esencia, los LLM están diseñados para comprender el lenguaje natural y generar texto casi indistinguible del que escribiría un ser humano. Esto los convierte en potentes herramientas para crear productos y servicios digitales que puedan interactuar con las personas de una forma más parecida a la humana.
Una de las cosas más interesantes que hago en Thoughtworks es utilizar la tecnología para crear bienes públicos digitales que ayuden a la gente en su vida cotidiana. Como parte de nuestro trabajo en OpenNyAI, desarrollamos Jugalbandi, un chatbot que ayuda a los usuarios a encontrar información sobre los planes de asistencia social del gobierno. Sin embargo, ese reto parecía demasiado sencillo, así que nos embarcamos en hacerlo hablar en la lengua materna de los usuarios. Esto es lo que aprendimos de la experiencia.
Prompt engineering es fundamental
El concepto de prompt engineering se refiere al proceso de dar instrucciones, contexto y datos a los LLM para obtener el resultado deseado. Sin embargo, dado que la IA generativa sigue siendo un fenómeno incipiente, aprender a escribir buenas instrucciones puede resultar engorroso y conllevar un sinfín de pruebas y errores.
Así que aprende de los demás. A mí me ha ayudado mucho seguir en las redes sociales a los principales innovadores en el campo de los LLM. También puedes utilizar repositorios como este para mantenerte al día.
Aprende a escribir instrucciones independientes del modelo. Dada la rápida evolución de la IA generativa, asegúrate de que tus mensajes pueden utilizarse con varios LLM para garantizar la flexibilidad.
Ten cuidado. Ligeros cambios en las instrucciones pueden modificar drásticamente el comportamiento del modelo. Por ejemplo, añadir puntos al final de las instrucciones transmite al LLM que esta frase está completa y no necesita ser autocompletada. Añadir "pensemos paso a paso" en la instrucción puede ayudarle a razonar una respuesta.
To handle non-deterministic LLMs, it’s essential to use the right parameters and write prompts correctly. Setting the temperature to zero or the right maximum output length helps. I found this cookbook immensely useful in improving the reliability of LLM outputs.
Para manejar LLM no deterministas, es esencial utilizar los parámetros adecuados y escribir las indicaciones correctamente. Establecer la temperatura a cero o la longitud máxima de salida correcta ayuda. Este libro de recetas me ha resultado muy útil para mejorar la fiabilidad de las salidas LLM.
Alucinaciones, alucinaciones, alucinaciones...
Aunque los LLM son muy buenos generando textos en lenguaje natural, tienden a "alucinar", es decir, a crear contenidos completamente erróneos. Todos los LLM sufren este problema. Aunque es imposible eliminar este problema por completo, sí se puede reducir el alcance de las alucinaciones. Para ello, primero tenemos que entender cómo funcionan los LLM.
Hay dos fuentes de conocimiento para un LLM: el conocimiento paramétrico y el inmediato. El conocimiento paramétrico es lo que el modelo ha aprendido durante el preentrenamiento a partir de fuentes como el rastreo común y Wikipedia. El prompt es donde insertamos el conocimiento auténtico, como documentos revisados por expertos. Una forma de reducir la alucinación es confiar menos en el conocimiento paramétrico y utilizar más conocimiento auténtico, presente en documentos personalizados, e insertarlo en el prompt.
Sin embargo, la cantidad de información que se puede insertar en una pregunta está restringida por la longitud del contexto, que normalmente varía de 4k tokens para GPT3.5 (aproximadamente seis páginas) a 32k tokens para GPT4 (aproximadamente 50 páginas). Por eso es fundamental seleccionar la información adecuada para generar un texto preciso basado en documentos auténticos.
Utilizar técnicas de búsqueda para escribir mejores prompts
La idea central consiste en indexar todos los documentos (por ejemplo, información sobre esquemas de asistencia social) que contienen los conocimientos auténticos que deben utilizarse para una tarea determinada utilizando modelos embeddings. A continuación, convierte el contexto o la consulta del usuario en un vector utilizando el mismo modelo de incrustación y realiza una búsqueda por vecino más cercano para recuperar los documentos más relevantes. A continuación, puede inyectar esta información útil en la consulta del LLM y dejar que éste genere las respuestas pertinentes. Así, en el caso del chatbot Jugalbandi, se encuentran los esquemas más relevantes para las necesidades del usuario y se le muestra su información.
Este proceso se denomina modelos de lenguaje aumentados por el recuperador. En la tarea mencionada, utilizamos la búsqueda FAISS sobre incrustaciones creadas por e modelo de incrustaciones de OpenAI para buscar esquemas de gobierno relevantes para un usuario determinado. A continuación, dimos instrucciones al LLM para que utilizara únicamente la información filtrada, estableciendo la temperatura en cero. Vimos que esto reducía significativamente las alucinaciones. El código fuente que hace esto es ahora de código abierto.
Evaluar a los LLM es complicado
A medida que los LLM pasan de la prueba de concepto a la producción, debes probarlos como cualquier otro software. Pero hay una trampa: los casos de prueba tradicionales asumen la naturaleza determinista del software. En otras palabras, para una entrada dada, se asume una salida predefinida. Sin embargo, la naturaleza no determinista de los LLM los hace difíciles de probar de esa manera. Dada una entrada, tienden a generar salidas diferentes. Esto significa que hay que basarse en un sistema de IA para probar otro sistema de IA porque es probable que la salida sea una paráfrasis. Se trata de un campo de investigación activo y se desarrollarán mejores métricas.
Elegir el LLM adecuado es una decisión crítica
A la hora de elegir un LLM, hay que tener en cuenta muchos factores, como el coste, la privacidad de los datos, el tiempo de respuesta, la precisión, la complejidad de la tarea y la disponibilidad de datos de entrenamiento.
Dado que el chatbot Jugalbandi trataba con información pública y no necesitábamos datos personales de los usuarios para ello, nos decidimos por los modelos alojados en OpenAI.
Como ocurre con cualquier software, es inevitable hacer concesiones. He aquí un par de cosas que conviene recordar al tomar esa decisión.
Más grande no siempre es mejor. Aunque es fácil experimentar con modelos grandes como GPT4 para construir una prueba de concepto, puede que no sea la mejor opción para el despliegue. Si la tarea requiere un razonamiento sofisticado y tiene una gran variabilidad, los modelos más grandes pueden ser mejores. Sin embargo, para tareas más sencillas, el modelo de 175B parámetros puede ser excesivo. Además, el ajuste fino de modelos más grandes es costoso desde el punto de vista informático.
En estos casos, es mejor utilizar modelos grandes para generar datos de entrenamiento mediante técnicas de pocos disparos o de disparo cero y, a continuación, utilizar estos datos para entrenar modelos más pequeños. Los modelos más pequeños ofrecen respuestas más rápidas, menores costes y la posibilidad de alojarlos en la propia organización.
El hosting es una decisión multiparamétrica. Las cuestiones relacionadas con la privacidad de los datos o el tiempo de respuesta pueden hacer que tengas que alojar tus LLM dentro de la organización o en una nube privada. Los LLM más populares, como GPT4 o BARD, no son abiertos y solo se puede acceder a ellos a través de una API.
Por otro lado, cada vez es más barato poner a punto tu propio LLM. Por ejemplo, una versión cuantizada de Stanford Alpaca podría alojarse en un portátil de tamaño decente. Huggingface ha creado una biblioteca que aprovecha la eficiencia del ajuste fino utilizando GPU de consumo. La literatura muestra que el ajuste fino de los LLM sobre datos específicos de un dominio puede proporcionar un mayor rendimiento: MedPaLM, por ejemplo, consigue mejor rendimiento que PaLM en tareas médicas. La clave está en disponer de un conjunto de datos específicos del dominio que pueda utilizarse para el ajuste. Estos datos también podrían generarse sintéticamente mediante LLM, como se hace en el marco Self-Instruct.
Conclusión
Hay muchas aplicaciones prácticas apasionantes de los LLM, especialmente en el ámbito de la IA conversacional. Son representativas del poder de la innovación combinatoria y de cómo se puede influir en la base de la pirámide utilizando la IA. Los aprendizajes sobre la limitación de las alucinaciones utilizando modelos de lenguaje aumentados con retriever son útiles en muchas otras aplicaciones en las que las conversaciones deben basarse en conocimientos externos que los LLM nunca han visto.
Aviso legal: Las declaraciones y opiniones expresadas en este artículo son las del autor/a o autores y no reflejan necesariamente las posiciones de Thoughtworks.