Jorge Sierra • 2024-07-25
Desde el lanzamiento de ChatGPT en 2022, los modelos de lenguaje (LLMs) han revolucionado la inteligencia artificial. Empresas buscan aprovecharlos, pero gestionar proyectos GenAI es complejo. Es clave definir bien el caso de uso, entender al usuario y elegir el modelo adecuado considerando costos e infraestructura.
Desde la explosión de los grandes modelos de lenguaje (LLMs) con el lanzamiento de ChatGPT en 2022, hemos visto el surgimiento de modelos muy capaces tanto en el entorno open source como en el close. Ejemplos destacados incluyen los modelos de Google, LLama de Meta, Mistral y Anthropic. Este avance ha despertado el interés de muchas empresas en desarrollar proyectos que saquen provecho a las capacidades de estos modelos de lenguaje.
Sin embargo, al ser un campo tan nuevo, con tanta información y actualizaciones saliendo cada minuto puede ser complejo gestionar un proyecto relacionado a inteligencia artificial generativa (GenAI) como lo son los LLMs, desde su ideación, hasta el despliegue en producción. En este articulo vamos a hablar sobre las etapas que se deben tener en cuenta para garantizar el mejor resultado posible.
Etapas de un proyecto de GenAI con LLMs.
1. Scope
Como en cualquier proyecto, lo primero que debemos definir correctamente es el caso de uso en el que nos vamos a enfocar. Para ello, es fundamental comprender a fondo a nuestro usuario y cómo vamos a entregarle valor utilizando los modelos de LLMs.
Un error común en esta fase es partir de la tecnología y luego intentar adaptarla a alguna necesidad del usuario. No tiene sentido utilizar el modelo más potente del mercado o la última tecnología si no estamos resolviendo un problema real de los usuarios.
Ejemplos de casos de uso:
Resumen de textos
Uno de los usos más comunes de los modelos de lenguaje es resumir textos extensos rápidamente, permitiendo extraer información importante de manera eficiente.
Por ejemplo, esta capacidad puede utilizarse para resumir interacciones entre un agente de servicio al cliente y un usuario. Estos resúmenes pueden revisarse posteriormente para evaluar la experiencia del usuario o incluso inferir si la experiencia fue positiva o negativa mediante el análisis de sentimiento del texto.
Extracción de metadata
La metadata se entiende como datos que describen otros datos. En un texto, podemos encontrar mucha metadata; por ejemplo, en un contrato, podríamos encontrar información sobre el presupuesto del proyecto, las fases de ejecución, el plazo de entrega, etc.
En el campo del Procesamiento del Lenguaje Natural (NLP), esto se conoce como Name Entity Recognition (NER). Aunque librerías como SpaCy eran muy populares, los actuales modelos de lenguaje (LLMs) han mejorado significativamente la capacidad de extraer entidades de un texto. Ahora es posible extraer casi cualquier tipo de información de manera estructurada como por ejemplo en formato JSON o csv.
Este caso de uso es muy popular cuando se necesita extraer información precisa de un texto extenso. Por ejemplo, en una interacción de servicio al cliente, podríamos extraer información sobre la solicitud del usuario. Si el problema está relacionado con la guía de su pedido, podríamos solicitar los datos necesarios. El LLM se encargaría de extraer la información en formato JSON, que podríamos usar para consultar una API y devolver la información al usuario, evitando que el agente de servicio al cliente tenga que copiar todo manualmente.
Evaluación de textos
Si queremos evaluar cómo responden nuestros agentes de servicio al cliente y verificar si sus respuestas se alinean con el tono y el mensaje de nuestra marca, normalmente tomaríamos una muestra de interacciones y las calificaríamos manualmente.
Sin embargo, este proceso puede automatizarse para todas las interacciones de un agente utilizando técnicas como Prompts, Fine Tuning u otras, para instruir al modelo de lenguaje (LLM) sobre cómo debe calificar cada interacción. Esto nos proporcionará una visión más precisa de la experiencia de nuestros usuarios con el servicio al cliente.
Hemos mencionado solo algunos casos de uso, pero existen muchos más. Lo más importante en esta etapa de definición del alcance (Scope) es identificar correctamente el problema que queremos resolver. Al utilizar LLMs, podemos abordarlo de la manera más óptima. Es crucial no cometer el error de primero escoger la tecnología y luego buscar un problema a resolver.
2. Selección del modelo
Basándonos en el alcance definido anteriormente, es momento de elegir el modelo que mejor satisfaga las necesidades del proyecto. En este punto, hay muchos factores a considerar debido a la amplia oferta actual de modelos, tanto de código cerrado como los de Google u OpenAI, como de código abierto como los de Meta o Mistral.
Una primera aproximación podría ser optar por el modelo más potente disponible. Sin embargo, primero debemos considerar al menos los siguientes aspectos:
Costo
Para usar un modelo de código abierto, debemos desplegarlo en algún lugar, y estos modelos suelen ser muy pesados. Si queremos ejecutarlos en sistemas locales (on-premises), se requiere una inversión significativa en GPUs para asegurar un funcionamiento óptimo.
Infraestructura en la Nube
Azure y AWS ofrecen soluciones que nos permiten utilizar estos modelos sin preocuparnos por la infraestructura. En el caso de AWS, disponemos de Bedrock, que proporciona modelos como LLama3, Mixtral 8x7B, Claude, entre otros. En Azure, podemos utilizar modelos de OpenAI.
Soluciones de Código Cerrado
Para soluciones de código cerrado como las de OpenAI o Google, no necesitamos preocuparnos por el despliegue, ya que disponen de una API que se paga por uso. El precio varía dependiendo del tamaño del modelo.
Tomar en cuenta estos factores nos ayudará a seleccionar el modelo más adecuado para cumplir con las necesidades específicas del proyecto.
Performance single task vs multitask
Dependiendo de la solución que vamos a desarrollar necesitaremos mayor capacidad del modelo para realizar esa tarea específica, por ejemplo si estamos trabajando en una solución relacionada a código debemos identificar que modelos pueden ofrecernos el mejor performance en este tarea específicamente, tal vez no necesitemos capacidad de reasoning, de calculo u otros casos de uso, por lo que podemos buscar modelos especializados en código.
Es bien importante identificar las necesidades para no usar una bazuca para matar una mosca, que el modelo sea mas grande y poderoso no significa que es lo mejor para nuestro caso de uso.
Fine Tuning
Es un proceso de ajuste fino de un modelo de lenguaje preentrenado (LLM) en un conjunto de datos específico para una tarea particular. Este ajuste permite que el modelo, que ya tiene conocimientos generales, aprenda los matices y requisitos específicos de la nueva tarea, mejorando su rendimiento en ese contexto particular. En esencia, se entrena el modelo adicionalmente con datos específicos para especializarlo en una función concreta.
No a todos los modelos disponibles se les puede hacer fine tuning, algunos de OpenAI te lo permiten pero se debe hacer por medio de su plataforma lo que genera dudas frente a la propiedad y seguridad de los datos. Por tanto si es importante desarrollar un modelo con habilidades muy fuertes en una tarea específica o por ejemplo en el tono de comunicación de la marca o en data propietaria, se debe tener en cuenta este factor.
Los modelos open source si permiten realizar fine tuning, Amazon Sage Maker es un solución bastante practica para entrenar un modelo por su variedad de modelos disponibles y facilidad para entrenar y desplegar en la misma plataforma.
Un buen approach si necesitamos solo hacer una tarea específica seria tomar un modelo pequeño y entrenarlo usando nuestra data, esto nos permite ahorrar costos de inferencia y ademas tener un modelo propietario adaptado a nuestras necesidades. Para esto hay muchas técnicas disponibles que explicaré con mayor detalle en la siguiente version de este artículo.
Quiero cerrar este apartado de seleccionar el modelo con un consejo y es que si estamos explorando soluciones no enfocarnos en escoger el modelo perfecto, tal vez entrenar un modelo, simplemente tomar la solución disponible con la cual te sientas cómodo trabajando, que genere buenos resultados y luego que hayamos comprobado que el caso de uso genera valor y es momento de escalarlo, si tomar todas estas cosas a consideración del costo, fine tuning, performance que discutimos en esta sección.
Las siguientes fases que son adapt and align the model y aplication integration, las voy a desarrollar en siguientes ediciones de este articulo, ya que son temas bastantes extensos a los que es mejor dedicarles un post completo.
En los proximo artículos vamos a profundizar en temas como fine tuning, PEFT, catastrophic forgetting, RAG, LoRA, RLHF, entre otros bien interesantes en este mundo de generative AI con LLMs.
Si quieres desarrollar una solución para tu empresa usando generative AI con LLMs y no sabes por donde arrancar, en Neuron Studios te podemos ayudar, agenda un sesión de consultoría gratuita .
info@neuron-studios.com