Haciendo Fine Tuning a GPT 3.5 de OpenAI

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.

Descripción

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.

Leave a Comment

Your email address will not be published. Required fields are marked *