He elegido un proyecto que me parece muy interesante, pero se me queda un poco grande para profundizar en él, espero controlarlo mejor dentro de unos meses.
Fine-Tuning es una de las herramientas para desarrolladores que ofrece OpenAI. En concreto, lo que hace es permitir a desarrolladores ingestar datos sobre un modelo de OpenAI (Recomiendan gpt-3.5-turbo-1106 o gpt-4-0613) y así afinarlo para tus necesidades.
Objetivos
El principal objetivo de Fine Tuning es simplificar la interacción a la hora de realizar tareas con los modelos de OpenAI, ya sea a través de chat como ChatGPT o cualquier programa que use la API.
Recientemente se han incluido nuevas funcionalidades en ChatGPT como los GPTs o las instrucciones personalizadas que habría que considerar usar antes de lanzarse con Fine-tuning.
- Mejorar la precisión y confianza en las respuestas obtenidas por el modelo de IA.
- Posibilidad de corregir o afinar el modelo a medida que trabajamos con él.
- añadir nuevas funcionalidades o tareas que son dificiles de solicitar con un prompt.
Funcionamiento
Para probarlo he creado varias preguntas y respuestas para definir el estilo de las conversaciones. El mínimo es de 10 y el recomendado de entradas es entre 50 y 100. Para este ejercicio voy a subir únicamente 10 líneas.
La herramienta fine tune de OpenAI sólo admite archivos .jsonl que son archivos json pero más comprimidos. He investigado un poco y la mejor forma de convertirlos que he encontrado es con estas líneas de código:
El archivo convertido a jsonl quedaría así:
Lo cargo en la sección de fine tune:
También da la opción de añadir un archivo de validación. Como me veo muy verde para esto, me voy a saltar este punto y voy a ver qué tal me sale el experimento simplemente subiendo los datos de entrenamiento mínimos.
Aclarar que he hecho el cálculo a ojo de lo que me costará entrenar este modelo y el coste por ser sólo 10 líneas con poco contenido será de unos cuantos céntimos, pero en proyectos más extensos conviene hacer una estimación más rigurosa y poner límite al coste máximo desde las preferencias de OpenAI, yo ahora mismo tengo un límite de $10 mensuales.
Le he dado a crear y está entrenando:
Pasados unos minutos ha terminado y parece que ha salido bien:
Entre la información me indica el número de tokens consumidos en el entrenamiento. Ahora mismo el precio es de 0.008 por cada 1000 tokens, por lo que me habrá costado 8 céntimos.
Ahora podría usar este modelo invocándolo en programas que tengan mi clave API. Esta prueba no sé muy bien cómo abordarla, así que dejaré aquí este experimento.
EXTRA: Assistant
Se me ha quedado un poco grande el Fine Tuning, así que he visto que OpenAI también tiene los asistentes, algo parecido a los GPT que presentaron la semana pasada, pero integrados con la API.
Parecen mucho más flexibles a la hora de aceptar documentos y me parece muy interesante porque al estar integrados en la API puedes crear varios con diferentes tareas e integrarlos en un mismo programa para que interactúen entre ellos.
Para esta prueba le he pasado un documento que tengo con apuntes de Python.
Le lanzo una pregunta sencilla y la responde:
Se ha ceñido correctamente a lo indicado en mis apuntes:
Ahora le he pedido que sustituya los ejemplos de f-strings por .format:
Parece que lo ha conseguido:
Le he pedido el archivo en formato docx, pero parece que tienen problemas técnicos ahora mismo:
Aún así, tengo un nuevo archivo.txt en la sección de archivos de la API
Tipo de tecnología de IA que utiliza
Yo diría que lo que usan los asistentes y el fine tuning es un framework o algoritmo interno de OpenAI que toma como base el modelo de lenguaje GPT 3.5 turbo-1106. Después de probarlo veo que se asemeja bastante a cómo funciona Langchain, pero con las facilidades que aporta OpenAI y la velocidad de contar con los servidores de Microsoft para procesar las peticiones.