Dominando la IA: Fine Tuning, Prompting y RAG. ¿Cuál es mejor?

Muy buenos días y bienvenidos a Inteligencia Artificial. El podcast donde hablamos del presente y el futuro de la inteligencia artificial, analizamos casos donde ya se están usando estas tecnologías y vemos cómo podemos aplicarlo en el día a día de nuestros trabajos, proyectos y empresas. 

Yo soy Pocho Costa, ingeniero en sistemas, programador y amante de la tecnología y me podés encontrar en pochocosta.com donde ahí también vas a encontrar las notas del programa y otros medios para ponerte en contacto conmigo. 

Empezamos.

Buenas buenas! ¿cómo andan? ¡Espero que muy bien! Hoy les traigo un episodio donde voy a estar hablando de algunos conceptos y técnicas relacionadas con la inteligencia artificial y en este caso más precisamente con los modelos de lenguaje.

Vamos a hablar de técnicas como Zero shot, one shot, few shot y chain of thoughts, que son conceptos que te pueden servir para saber que tipos de prompts te conviene usar en ciertos casos y porque. Incluso para tener un mayor entendimiento cuando alguien dice que está entrenando un GPT y poder entender en qué consiste eso.

Porque vamos a ver que con estas técnicas a veces la palabra entrenamiento queda un poco desconectada del concepto de entrenamiento que conocíamos antes.

Así que si les interesa profundizar sus conocimientos sobre estos temas quedense porque va a estar interesante.

Pero antes dejenme recordarles que si me están escuchando en spotify se pueden suscribir al podcast con el botón que dice “Seguir” y también le pueden dar a la campanita que tienen al lado para que les avise cuando sale un nuevo episodio. Y también que se pueden sumar a la lista de correos de novedades de inteligencia artificial en pochocosta.com donde una vez por semana envió un correo con las novedades más importantes de la semana.

Y ahora sí, vayamos con el tema del episodio que son estas técnicas de prompting. 

Una aclaración, si es la primera vez que llegan al podcast y no tienen idea que es el prompting o la ingeniería de prompts, les dejo en las notas del programa unos links a episodios pasados donde hablamos del tema. Así que van a pochocosta.com/podcast ahi hacen click en este episodio y ahí van a tener todo.

Pero bueno, empecemos. Los modelos de lenguaje como ChatGPT son modelos que están pre-entrenados, es por eso que podemos ir y decirles:

“Dame un listado de 10 países que empiecen con la letra M” o “Dame una receta de cocina que pueda preparar usando tales ingredientes ”y nos va a responder sin ningún problema.

Y no es que el modelo haya estado entrenado específicamente para saber de geografía o de cocina. Simplemente el entrenamiento que tienen les permite tener un entendimiento del lenguaje y usarlo para responder a ese tipo de instrucciones sin problemas. Y ese tipo de instrucciones son las que se llaman Zero Shot refiriendose el cero a que no le dimos ningún ejemplo para que pueda respondernos.

Por otro lado, la técnica One-shot learning consiste en que nuestro prompt tenga un ejemplo que le damos como contexto al modelo para que resuelva lo que queremos.

Asi que veamos un caso para que se entienda más fácil.

¿Se acuerdan de la canción “Ojo con los orozco” de Leon Gieco?

Bueno esa era una canción que empezaba diciendo “Nosotros no somos como los orozco yo los conozco son ocho los monos. Pocho, toto, cholo, tom, moncho, rodolfo, otto, pololo.”

¡Muy graciosa la verdad! Fue muy llamativa en su momento, cuando yo era chico, porque solo tenía palabras que tengan la vocal O.

Entonces si nosotros quisieramos pedirle a un modelo de lenguaje que nos haga una canción que siga ese patrón, podríamos usar one shot learning para darle la letra de la canción de león gieco como ejemplo y pedirle que genere otra con ese patrón.

Yo lo hice y acá les leo una partecita de lo que me generó:

Amanda danzaba,

La banda tocaba,

La plaza cantaba,

¡La magia pasaba!

Está divertido eh! Si quieren leer el resto se los dejo en las notas del programa.

Pero bueno, espero sería un ejemplo de one shot prompting porque le estamos dando un único ejemplo como referencia para que lo interprete y nos de una salida.

Fijense que la diferencia con zero shot es clara porque en el otro no le dábamos ejemplos, simplemente le preguntabamos.

Después tenemos el few shot prompting, que ahí lo que hacemos es darle varios ejemplos en vez de uno solo.

Ese lo usamos por ejemplo si yo quiero lograr que un GPT redacte emails usando mi forma de escritura. Podría escribir un prompt diciéndole que su objetivo va a ser redactar emails usando la forma de escritura de estos ejemplos. Y ahí le pongo Ejemplo 1, tal, ejemplo 2, tal, ejemplo 3, tal. Y así le doy varios ejemplos y después le digo que escriba sobre un tema específico. Y seguramente la forma de escritura va a ser mucho más cercana a los ejemplos que si le hubiéramos pedido lo mismo usando zero shot prompting o one shot prompting.

Y a esta técnica de few shot se la suele relacionar con un entrenamiento. Por eso les decía que la palabra entrenamiento ahora se vuelve un poco difusa porque por detrás puede involucrar cosas totalmente diferentes. Por un lado puede involucrar hardware, GPU y horas de procesamiento, en este caso estariamos haciendo un fine tuning, o puede ser que nos estemos refiriendo a poner ejemplos en el few shot prompting.

Y esto además que es tan simple, no es tan conocido. Asi que saquenle provecho.

Yo la otra vez fui a dar una formación en una empresa y lo primero que me decía una persona es 

“che no me está sirviendo la IA, el otro día le pedi que me escribiera una carta de saludo de fin de año y lo que me escribió era horrible”.

Y no se si les ha pasado pero a mi me llega de vez en cuando algun correo de gente que me contacta que se ve a la legua que es un texto generado por IA, y eso querramos o no, genera menos atracción del otro lado. Nosotros hoy como humanos conectamos menos con un texto generado por IA que con un mensaje que nos escribe otra persona.

Y no es que la IA no sirva, es que capaz no estamos usando el few shot prompting o incluso dejamos el texto tal cual nos lo da, sin revisarlo o sin hacerle pequeños cambios. Entonces tal vez no tenemos que esperar que nos haga el 100% del trabajo en todos los casos y nos tenemos que conformar con que nos haga el 90% y nosotros hacer el paso final de revisar y ajustar lo que haga falta. Pero de todas formas el 90% es un montón! Incluso si fuera el 50% sigue siendo una barbaridad.

Pero bueno, sigamos. Pasemos ahora a otra técnica que se llama chain of thoughts “cadena de pensamientos” que creo que alguna vez ya la mencioné, pero vamos a explicarla un poco más.

Esta técnica surge de un paper de Google Research donde muestran como en tareas complejas los prompts estándar terminan en alucinaciones del modelo llevando a respuestas incorrectas, en cambio usando la cadena de pensamientos se obtienen respuestas correctas.

Uno de los ejemplos que ponen en el paper es que planteando un problema de ejemplo con su respectiva respuesta estilo one shot prompting y después dando un segundo problema y pidiendole que nos de la respuesta, esto en GPT-3 nos respondía con una respuesta incorrecta.

Entonces el prompt estandar decir. Roger tiene 5 pelotas de tenias. El compra 2 tubos mas de pelotas de tenis. Cada tubo tiene 3 pelotas. ¿Cuantas pelotas tiene ahora? Respueta: 11 pelotas.

Ahora, una cafeteria tiene 23 manzanas. Usan 20 manzanas para preparar el almuerzo y compran 6 manzana mas. Cuantas manzanas tienen ahora.
Y la respueta que daba era 27.

El cambio que hicieron los investigadores de google en ese prompt para convertirlo en una cadena de pensamiento y que de una respuesta correcta fue, que en la parte donde se pone la respuesta al problema de las pelotas de tenias, en vez de poner directamente el resultado, agregaron antes un pequeño razonamiento que dice “Roger empezó con 5 pelotas. Dos tubos de 3 pelotas cada uno son 6 pelotas. 5 + 6 = 11. La respuesta es 11 pelotas.”

Y solo con agregar eso al prompt conseguia que la respuesta cambie para el problema de las manzanas que venia despues y que en vez de decir 27, diga “La cafeteria tenia 23 manzanas originalmente. Ellos usaron 20 para el almuerzo. Entonces 23 – 20 = 3. Ellos compraron 6 manzanas mas, entonces 3 + 6 = 9. La respuesta es 9”

Y esto sería la cadena de pensamientos, que es una manera de guiar al modelo en cómo partir el problema en pequeñas partes que lleven a un resultado final.

Y esto que parece así como muy teórico, en realidad puede servir cuando estamos haciendo automatizaciones en el mundo empresarial que ayuden a la toma de decisiones, usando esta técnica de prompting para desglosar el problema en partes puede ayudar a tener una mejor comprensión, análisis y por consiguiente una mejor respuesta.

Después quería comentar algo sobre el RAG (Retrieval Augmented Generation) que es cuando armamos una base de conocimiento con documentos y podemos conectar un GPT con esa información. Esto lo expliqué bien en profundidad en el epsiodio que se llama como hacer un bot que trabaje con tus documentos.

Y lo quería incluir en este episodio también para diferenciar ese caso de uso con el tema de las técnicas de prompting y dejar bien claro para que sirve cada cosa.

El RAG lo tenemos que pensar como si le estamos dando al modelo una enciclopedia o un catálogo con información donde puede ir y buscar para usar eso que encuentre como contexto para armar una respuesta.

Entonces si vendemos ropa y le subimos nuestro catálogo de productos, cuando le pregunte de vestidos o de telas va a buscar en el catálogo y va a usar esa información para dar una respuesta basada en nuestros vestidos y nuestras telas.

En cambio si yo quiero hacer un GPT que escriba con mi estilo de escritura, entonces lo mejor sería armar un dataset con muchos textos escritos por mi y usar eso para hacer un fine tuning de un modelo de lenguaje para ajustarlo a resolver esa tareas específica.

Y ese fine tuning no es ninguna técnica de prompting, es un proceso que requiere procesamiento computacional. Que es algo muy diferente.

Y esto lo quería comentar, porque se que hay personas que con esto de los GPTs personalizados intentaban subir archivos con textos y lograr que el GPT imite el estilo de escritura y no lo lograban, y eso es porque lo que hacen los GPTs personalizados es usar RAG y para lo que vos queres hacer en realidad se necesita hacer fine tuning.

Entonces en esos casos, si no queres ir por el camino de fine tuning, porque es más difícil, entonces podes ir por el camino de few shot learning poniendo ejemplos de escritura y trabajar ese prompt para lograr el mejor resultado posible.

Así que bueno, este era el tema del que quería hablarles hoy. Espero que les haya sido de utilidad, dejenme un comentario en spotify o en Youtube si les resultó interesante. Incluso pueden aprovechar para pedirme de que quieren que hable en los próximos. Compartanlo tambien con alguien mas a quien crea que pueda serle de utilidad.

Recuerden que pueden Enviar preguntas a oyentes arroba pochocosta.com y las respondo en el podcast. 

Suscríbanse a la newsletter para estar al tanto de todas estas novedades de inteligencia artificial. Si no lo hicieron que dejen 5 estrellitas en Spotify, eso ayuda a que el podcast sea descubierto por más personas. 

Y ahora sí, nos escuchamos en el próximo episodio donde seguiremos hablando de este hermoso mundo de la inteligencia artificial.

Dejar recomendación en iTunes