La IA generativa ha introducido una nueva forma de crear y operar aplicaciones de IA que es diferente de la IA predictiva. Para crear una aplicación de IA generativa, debes elegir entre una amplia gama de arquitecturas y tamaños, seleccionar datos, diseñar las peticiones óptimas, ajustar los modelos para tareas específicas y fundamentar los resultados del modelo en datos reales.
En este documento se describe cómo puedes adaptar los procesos de DevOps y MLOps para desarrollar, desplegar y operar aplicaciones de IA generativa en modelos fundacionales. Para obtener información sobre cómo desplegar la IA predictiva, consulta MLOps: flujos de procesamiento de entrega continua y automatización en el aprendizaje automático.
¿Qué son DevOps y MLOps?
DevOps es una metodología de ingeniería de software que conecta el desarrollo y las operaciones. DevOps fomenta la colaboración, la automatización y la mejora continua para optimizar el ciclo de vida del desarrollo de software mediante prácticas como la integración continua y la entrega continua (CI/CD).
MLOps se basa en los principios de DevOps para abordar los retos de crear y operar sistemas de aprendizaje automático. Los sistemas de aprendizaje automático suelen usar la IA predictiva para identificar patrones y hacer predicciones. El flujo de trabajo de MLOps incluye lo siguiente:
- Validación de datos
- Preparación de modelos
- Evaluación e iteración del modelo
- Despliegue y servicio de modelos
- Monitorización de modelos
¿Qué son los modelos fundacionales?
Los modelos básicos son el componente principal de una aplicación de IA generativa. Estos modelos son programas grandes que usan conjuntos de datos para aprender y tomar decisiones sin intervención humana. Los modelos fundacionales se entrenan con muchos tipos de datos, como texto, imágenes, audio y vídeo. Los modelos fundacionales incluyen modelos de lenguaje extensos (LLMs), como Llama 3.1, y modelos multimodales, como Gemini.
A diferencia de los modelos de IA predictiva, que se entrenan para tareas específicas con conjuntos de datos concretos, los modelos fundacionales se entrenan con conjuntos de datos masivos y diversos. Esta formación te permite usar modelos fundacionales para desarrollar aplicaciones en muchos casos prácticos diferentes. Los modelos fundacionales tienen propiedades emergentes (PDF), que les permiten proporcionar respuestas a entradas específicas sin un entrenamiento explícito. Debido a estas propiedades emergentes, los modelos fundacionales son difíciles de crear y operar, y requieren que adaptes tus procesos de DevOps y MLOps.
Para desarrollar un modelo básico, se necesitan muchos recursos de datos, hardware especializado, una inversión considerable y conocimientos especializados. Por lo tanto, muchas empresas prefieren usar modelos fundacionales para simplificar el desarrollo y el despliegue de sus aplicaciones de IA generativa.
Ciclo de vida de una aplicación de IA generativa
El ciclo de vida de una aplicación de IA generativa incluye las siguientes fases:
- Descubrimiento: los desarrolladores y los ingenieros de IA identifican qué modelo de base es el más adecuado para su caso práctico. Tienen en cuenta los puntos fuertes, los puntos débiles y los costes de cada modelo para tomar una decisión fundamentada.
- Desarrollo y experimentación: los desarrolladores usan la ingeniería de peticiones para crear y perfeccionar peticiones de entrada con el fin de obtener el resultado deseado. Cuando están disponibles, el aprendizaje con pocos ejemplos, el ajuste fino eficiente de parámetros (PEFT) y el encadenamiento de modelos ayudan a guiar el comportamiento del modelo. La cadena de modelos se refiere a la orquestación de llamadas a varios modelos en una secuencia específica para crear un flujo de trabajo.
- Implementación: los desarrolladores deben gestionar muchos artefactos en el proceso de implementación, como plantillas de peticiones, definiciones de cadenas, modelos insertados, almacenes de datos de recuperación y adaptadores de modelos ajustados. Estos artefactos tienen sus propios requisitos de gobernanza y requieren una gestión cuidadosa durante todo el desarrollo y la implementación. En el despliegue de aplicaciones de IA generativa también se deben tener en cuenta las funciones técnicas de la infraestructura de destino para asegurarse de que se cumplen los requisitos de hardware de la aplicación.
- Monitorización continua en producción: los administradores mejoran el rendimiento de las aplicaciones y mantienen los estándares de seguridad mediante técnicas de IA responsable, como garantizar la imparcialidad, la transparencia y la rendición de cuentas en los resultados del modelo.
- Mejora continua: los desarrolladores ajustan constantemente los modelos base mediante técnicas de peticiones, sustituyen los modelos por versiones más recientes o incluso combinan varios modelos para mejorar el rendimiento, la eficiencia de los costes o la latencia. El entrenamiento continuo convencional sigue siendo relevante en los casos en los que se necesitan ajustes de precisión recurrentes o bucles de retroalimentación humana.
Las prácticas de ingeniería de datos desempeñan un papel fundamental en todas las fases de desarrollo. Para crear resultados fiables, debes tener una base factual (que asegure que los resultados del modelo se basen en información precisa y actualizada) y datos recientes de sistemas internos y empresariales. Los datos de ajuste ayudan a adaptar los modelos a tareas y estilos específicos, así como a corregir errores persistentes.
Encontrar el modelo fundacional para tu caso práctico
Como la creación de modelos fundacionales requiere muchos recursos, la mayoría de las empresas prefieren usar un modelo fundacional que ya exista y que sea óptimo para su caso práctico. Encontrar el modelo base adecuado es difícil porque hay muchos modelos base. Cada modelo tiene arquitecturas, tamaños, conjuntos de datos de entrenamiento y licencias diferentes. Además, cada caso práctico presenta requisitos únicos, por lo que debe analizar los modelos disponibles en varias dimensiones.
Ten en cuenta los siguientes factores al evaluar los modelos:
- Calidad: ejecuta peticiones de prueba para evaluar la calidad de los resultados.
- Latencia y rendimiento: determina la latencia y el rendimiento correctos que requiere tu caso práctico, ya que estos factores influyen directamente en la experiencia de usuario. Por ejemplo, un chatbot requiere una latencia menor que las tareas de resumen procesadas por lotes.
- Tiempo de desarrollo y mantenimiento: ten en cuenta el tiempo que requiere el desarrollo inicial y el mantenimiento continuo. Los modelos gestionados suelen requerir menos esfuerzo que los modelos disponibles públicamente que despliegas tú mismo.
- Coste de uso: ten en cuenta los costes de infraestructura y consumo asociados al modelo.
- Cumplimiento: evalúa la capacidad del modelo para cumplir las normativas pertinentes y los términos de licencia.
Desarrollar y experimentar
Al crear aplicaciones de IA generativa, el desarrollo y la experimentación son procesos iterativos y orquestados. Cada iteración experimental implica refinar los datos, adaptar el modelo fundacional y evaluar los resultados. La evaluación proporciona comentarios que guían las iteraciones posteriores en un bucle de retroalimentación continuo. Si el rendimiento no cumple las expectativas, puede recoger más datos, aumentarlos o curarlos más. Además, es posible que tengas que optimizar las peticiones, aplicar técnicas de ajuste o cambiar a otro modelo base. Este ciclo de perfeccionamiento iterativo, basado en las estadísticas de evaluación, es tan importante para optimizar las aplicaciones de IA generativa como para el aprendizaje automático y la IA predictiva.
El paradigma de los modelos fundacionales
Los modelos fundacionales se diferencian de los modelos predictivos en que son modelos polivalentes. En lugar de entrenarse para un único propósito con datos específicos de esa tarea, los modelos fundacionales se entrenan con conjuntos de datos amplios, lo que te permite aplicar un modelo fundacional a muchos casos prácticos diferentes.
Los modelos fundacionales también son muy sensibles a los cambios en sus entradas. El resultado del modelo y la tarea que realiza se determinan en función de la entrada del modelo. Un modelo fundacional puede traducir texto, generar vídeos o clasificar datos simplemente cambiando la entrada. Incluso los cambios insignificantes en la entrada pueden afectar a la capacidad del modelo para realizar correctamente esa tarea.
Estas propiedades de los modelos fundacionales requieren diferentes prácticas de desarrollo y operativas. Aunque los modelos de IA predictiva son autosuficientes y están diseñados para tareas específicas, los modelos fundacionales son polivalentes y necesitan un elemento adicional más allá de la entrada del usuario. Los modelos de IA generativa requieren una petición y, más concretamente, una plantilla de petición. Una plantilla de petición es un conjunto de instrucciones y ejemplos con marcadores de posición para incluir la entrada del usuario. La aplicación puede combinar la plantilla de petición y los datos dinámicos (como la entrada del usuario) para crear una petición completa, que es el texto que se transfiere como entrada al modelo base.
Componente de modelo solicitado
La presencia de la petición es una característica distintiva de las aplicaciones de IA generativa. El modelo y la petición no son suficientes para generar contenido. La IA generativa necesita ambos. La combinación del modelo y la petición se conoce como componente de modelo con petición. El componente de modelo solicitado es el componente independiente más pequeño que es suficiente para crear una aplicación de IA generativa. La petición no tiene por qué ser complicada. Por ejemplo, puede ser una instrucción sencilla, como "traduce la siguiente frase del inglés al francés", seguida de la frase que quieras traducir. Sin embargo, sin esas instrucciones preliminares, un modelo fundacional no podrá llevar a cabo la tarea de traducción requerida. Por lo tanto, es necesario incluir una petición, aunque sea una instrucción básica, junto con la entrada para que el modelo básico realice la tarea que requiere la aplicación.
El componente de modelo con peticiones crea una distinción importante para las prácticas de MLOps al desarrollar aplicaciones de IA generativa. En el desarrollo de una aplicación de IA generativa, la experimentación y la iteración deben realizarse en el contexto de un componente de modelo solicitado. El ciclo de experimentación de la IA generativa suele empezar con la prueba de variaciones de la petición (cambiando la redacción de las instrucciones, proporcionando contexto adicional o incluyendo ejemplos relevantes) y la evaluación del impacto de esos cambios. Esta práctica se conoce como ingeniería de peticiones.
La ingeniería de peticiones implica los siguientes pasos iterativos:
- Peticiones: crea y perfecciona peticiones para obtener los comportamientos deseados de un modelo base en un caso práctico específico.
- Evaluación: evalúa los resultados del modelo, preferiblemente de forma programática, para medir su comprensión y su capacidad para cumplir las instrucciones de la petición.
Para hacer un seguimiento de los resultados de la evaluación, puedes registrar los resultados de un experimento. Como la petición en sí es un elemento fundamental del proceso de ingeniería de peticiones, se convierte en el artefacto más importante de los que forman parte del experimento.
Sin embargo, para experimentar con una aplicación de IA generativa, debes identificar los tipos de artefactos. En la IA predictiva, los datos, las canalizaciones y el código son diferentes. Sin embargo, con el paradigma de las peticiones en la IA generativa, las peticiones pueden incluir contexto, instrucciones, ejemplos, medidas de protección y datos internos o externos reales extraídos de otra fuente.
Para determinar el tipo de artefacto, debes reconocer que una petición tiene diferentes componentes y requiere diferentes estrategias de gestión. Ten en cuenta lo siguiente:
- Petición como datos: algunas partes de la petición actúan como datos. Los elementos como los ejemplos con pocos ejemplos, las bases de conocimientos y las consultas de los usuarios son esencialmente puntos de datos. Estos componentes requieren prácticas de MLOps centradas en los datos, como la validación de datos, la detección de desviaciones y la gestión del ciclo de vida.
- Petición como código: otros componentes, como el contexto, las plantillas de peticiones y las medidas de protección, son similares al código. Estos componentes definen la estructura y las reglas de la propia petición, y requieren prácticas más centradas en el código, como procesos de aprobación, control de versiones del código y pruebas.
Por lo tanto, cuando apliques prácticas de MLOps a la IA generativa, debes tener procesos que permitan a los desarrolladores almacenar, recuperar, monitorizar y modificar las peticiones de forma sencilla. Estos procesos permiten una iteración rápida y una experimentación basada en principios. A menudo, una versión de una petición puede funcionar bien con una versión específica del modelo y no tan bien con otra. Cuando monitorizas los resultados de un experimento, debes registrar la petición, las versiones de los componentes, la versión del modelo, las métricas y los datos de salida.
Encadenamiento y aumento de modelos
Los modelos de IA generativa, en concreto los modelos de lenguaje extensos (LLMs), tienen dificultades inherentes para mantener la actualidad y evitar las alucinaciones. Para codificar información nueva en los LLMs, se necesita un preentrenamiento caro y con muchos datos antes de que se puedan implementar. Según el caso práctico, puede que no sea suficiente usar solo un modelo con peticiones para realizar una generación concreta. Para solucionar este problema, puedes conectar varios modelos basados en peticiones, junto con llamadas a APIs externas y lógica expresada como código. Una secuencia de componentes de modelo con peticiones conectados de esta forma se conoce como cadena.
En el siguiente diagrama se muestran los componentes de una cadena y el proceso de desarrollo relativo.
Mitigación de la actualidad y las alucinaciones
Dos patrones comunes basados en cadenas que pueden mitigar la actualidad y las alucinaciones son la generación aumentada por recuperación (RAG) (PDF) y los agentes.
- La RAG aumenta los modelos preentrenados con conocimientos extraídos de bases de datos, lo que evita la necesidad de preentrenamiento. RAG permite fundamentar la información y reduce las alucinaciones incorporando información objetiva actualizada directamente en el proceso de generación.
- Los agentes, popularizados por la técnica de peticiones ReAct (PDF), usan LLMs como mediadores que interactúan con varias herramientas, como sistemas RAG, APIs internas o externas, extensiones personalizadas u otros agentes. Los agentes permiten realizar consultas complejas y acciones en tiempo real seleccionando y usando dinámicamente fuentes de información relevantes. El LLM, que actúa como agente, interpreta la consulta del usuario, decide qué herramienta usar y formula la respuesta basándose en la información obtenida.
Puedes usar RAG y agentes para crear sistemas multiagente que estén conectados a grandes redes de información, lo que permite gestionar consultas sofisticadas y tomar decisiones en tiempo real.
La orquestación de diferentes modelos, lógicas y APIs no es nueva en las aplicaciones de IA generativa. Por ejemplo, los motores de recomendaciones combinan modelos de filtrado colaborativo, modelos basados en contenido y reglas de negocio para generar recomendaciones de productos personalizadas para los usuarios. Del mismo modo, en la detección de fraudes, los modelos de aprendizaje automático se integran con sistemas basados en reglas y fuentes de datos externas para identificar actividades sospechosas.
Lo que diferencia a estas cadenas de componentes de IA generativa es que no se puede caracterizar la distribución de las entradas de los componentes de antemano, lo que hace que los componentes individuales sean mucho más difíciles de evaluar y mantener de forma aislada. La orquestación provoca un cambio de paradigma en la forma de desarrollar aplicaciones de IA para la IA generativa.
En la IA predictiva, puedes iterar en los modelos y componentes independientes de forma aislada y, después, encadenarlos en la aplicación de IA. En la IA generativa, se desarrolla una cadena durante la integración, se experimenta con la cadena de principio a fin y se iteran las estrategias de encadenamiento, las peticiones, los modelos fundacionales y otras APIs de forma coordinada para alcanzar un objetivo específico. A menudo, no necesitas ingeniería de funciones, recopilación de datos ni más ciclos de entrenamiento de modelos, solo cambios en la redacción de la plantilla de petición.
El cambio a MLOps para la IA generativa, en contraposición a MLOps para la IA predictiva, da lugar a las siguientes diferencias:
- Evaluación: debido al acoplamiento estrecho de las cadenas, estas requieren una evaluación integral, no solo de cada componente, para medir su rendimiento general y la calidad de su salida. En cuanto a las técnicas y las métricas de evaluación, evaluar cadenas es similar a evaluar modelos con peticiones.
- Control de versiones: debes gestionar una cadena como un artefacto completo en su totalidad. Debes monitorizar la configuración de la cadena con su propio historial de revisiones para analizarla, reproducirla y comprender los efectos de los cambios en el resultado. Tus registros deben incluir las entradas, las salidas y los estados intermedios de la cadena, así como las configuraciones de la cadena que se hayan usado durante cada ejecución.
- Monitorización continua: para detectar el deterioro del rendimiento, la deriva de los datos o un comportamiento inesperado en la cadena, debes configurar sistemas de monitorización proactivos. La monitorización continua ayuda a identificar los posibles problemas en una fase temprana para mantener la calidad de los resultados generados.
- Introspección: debes inspeccionar los flujos de datos internos de una cadena (es decir, las entradas y salidas de cada componente), así como las entradas y salidas de toda la cadena. Al proporcionar visibilidad de los datos que fluyen por la cadena y del contenido resultante, los desarrolladores pueden identificar las fuentes de errores, sesgos o comportamientos no deseados.
En el siguiente diagrama se muestra cómo funcionan conjuntamente las cadenas, los componentes de modelos con peticiones y el ajuste de modelos en una aplicación de IA generativa para reducir la actualidad y las alucinaciones. Los datos se seleccionan, los modelos se ajustan y se añaden cadenas para refinar aún más las respuestas. Una vez evaluados los resultados, los desarrolladores pueden registrar el experimento y seguir iterando.
Afinamiento
Cuando desarrollas un caso práctico de IA generativa que implica modelos de base, puede ser difícil, sobre todo en tareas complejas, depender únicamente de la ingeniería de peticiones y del encadenamiento para resolver el caso práctico. Para mejorar el rendimiento de las tareas, los desarrolladores suelen tener que ajustar el modelo directamente. El ajuste fino te permite cambiar activamente todas las capas o un subconjunto de capas (ajuste fino eficiente de los parámetros) del modelo para optimizar su capacidad de realizar una tarea concreta. Estas son las formas más habituales de ajustar un modelo:
- Ajuste fino supervisado: entrenas el modelo de forma supervisada, enseñándole a predecir la secuencia de salida correcta para una entrada determinada.
- Aprendizaje por refuerzo a partir de comentarios humanos (RLHF): entrenas un modelo de recompensa para predecir qué respuesta preferirían los humanos. A continuación, utiliza este modelo de recompensa para guiar al LLM en la dirección correcta durante el proceso de ajuste. Este proceso es similar a tener un panel de jueces humanos que guíen el aprendizaje del modelo.
En el siguiente diagrama se muestra cómo la optimización ayuda a perfeccionar el modelo durante el ciclo de experimentación.
En MLOps, el ajuste fino comparte las siguientes funciones con el entrenamiento de modelos:
- La capacidad de monitorizar los artefactos que forman parte del trabajo de ajuste. Por ejemplo, los artefactos incluyen los datos de entrada o los parámetros que se usan para ajustar el modelo.
- La capacidad de medir el impacto de la optimización. Esta función te permite evaluar el modelo ajustado para las tareas específicas para las que se ha entrenado y comparar los resultados con los de modelos ajustados o congelados anteriormente para la misma tarea.
Entrenamiento y ajuste continuos
En MLOps, el entrenamiento continuo es la práctica de volver a entrenar repetidamente los modelos de aprendizaje automático en un entorno de producción. El entrenamiento continuo ayuda a asegurar que el modelo se mantenga actualizado y funcione bien a medida que cambian los patrones de datos del mundo real. En el caso de los modelos de IA generativa, el ajuste continuo de los modelos suele ser más práctico que un proceso de reentrenamiento debido a los elevados costes de datos y computacionales que implica.
El enfoque del ajuste continuo depende de tu caso de uso y tus objetivos específicos. En tareas relativamente estáticas, como el resumen de texto, los requisitos de ajuste continuo pueden ser menores. Sin embargo, en el caso de las aplicaciones dinámicas, como los chatbots, que necesitan una alineación constante con los humanos, es necesario realizar ajustes con más frecuencia mediante técnicas como RLHF, que se basan en los comentarios de los humanos.
Para determinar la estrategia de ajuste continuo adecuada, debes evaluar la naturaleza de tu caso práctico y cómo evolucionan los datos de entrada a lo largo del tiempo. El coste también es un factor importante, ya que la infraestructura de computación influye considerablemente en la velocidad y el coste del ajuste. Las unidades de procesamiento gráfico (GPUs) y las unidades de procesamiento tensorial (TPUs) son hardware necesario para el ajuste fino. Las GPUs, conocidas por su capacidad de procesamiento paralelo, son muy eficaces para gestionar cargas de trabajo que requieren muchos recursos de computación y suelen asociarse al entrenamiento y la ejecución de modelos de aprendizaje automático complejos. Las TPUs, por otro lado, están diseñadas específicamente por Google para acelerar las tareas de aprendizaje automático. Las TPUs destacan por su capacidad para gestionar operaciones de matrices grandes, que son habituales en las redes neuronales de aprendizaje profundo.
Prácticas relacionadas con datos
Antes, el comportamiento de los modelos de aprendizaje automático se determinaba únicamente por sus datos de entrenamiento. Aunque esto sigue siendo cierto en el caso de los modelos fundacionales, el comportamiento de los modelos de las aplicaciones de IA generativa que se basan en modelos fundacionales se determina en función de cómo adaptes el modelo con diferentes tipos de datos de entrada.
Los modelos fundacionales se entrenan con datos como los siguientes:
- Conjuntos de datos de preentrenamiento (por ejemplo, C4, The Pile o datos propios)
- Conjuntos de datos de ajuste de instrucciones
- Conjuntos de datos de ajuste de seguridad
- Datos de preferencias humanas
Las aplicaciones de IA generativa se adaptan a datos como los siguientes:
- Indicaciones
- Datos aumentados o fundamentados (por ejemplo, sitios web, documentos, PDFs, bases de datos o APIs)
- Datos específicos de la tarea para PEFT
- Evaluaciones específicas de tareas
- Datos de preferencias humanas
La principal diferencia entre las prácticas de datos del aprendizaje automático predictivo y la IA generativa se encuentra al principio del proceso del ciclo de vida. En el aprendizaje automático predictivo, se dedica mucho tiempo a la ingeniería de datos y, si no se tienen los datos adecuados, no se puede crear una aplicación. En la IA generativa, empiezas con un modelo fundacional, algunas instrucciones y, quizás, algunos ejemplos de entradas (como el aprendizaje en contexto). Puedes crear un prototipo y lanzar una aplicación con muy pocos datos.
Sin embargo, la facilidad de creación de prototipos conlleva el reto adicional de gestionar datos diversos. La IA predictiva se basa en conjuntos de datos bien definidos. En la IA generativa, una sola aplicación puede usar varios tipos de datos de fuentes de datos completamente diferentes, y todos ellos funcionan conjuntamente.
Tenga en cuenta los siguientes tipos de datos:
- Peticiones de acondicionamiento: instrucciones que se dan al modelo fundacional para guiar su resultado y establecer los límites de lo que puede generar.
- Ejemplos de few-shot: una forma de mostrarle al modelo lo que quieres conseguir mediante pares de entrada-salida. Estos ejemplos ayudan al modelo a entender las tareas específicas y, en muchos casos, pueden mejorar el rendimiento.
- Datos de fundamentación o de aumento: los datos que permiten que el modelo fundacional genere respuestas para un contexto específico y que las respuestas estén actualizadas y sean relevantes sin tener que volver a entrenar todo el modelo fundacional. Estos datos pueden proceder de APIs externas (como la Búsqueda de Google) o de APIs y fuentes de datos internas.
- Conjuntos de datos específicos de una tarea: conjuntos de datos que ayudan a afinar un modelo de base para una tarea concreta, lo que mejora su rendimiento en ese ámbito específico.
- Conjuntos de datos de preentrenamiento completos: los conjuntos de datos masivos que se usan para entrenar inicialmente los modelos base. Aunque los desarrolladores de aplicaciones no tengan acceso a ellos ni a los tokenizadores, la información codificada en el propio modelo influye en el resultado y el rendimiento de la aplicación.
Esta variedad de tipos de datos añade una capa de complejidad en cuanto a la organización, el seguimiento y la gestión del ciclo de vida de los datos. Por ejemplo, una aplicación basada en RAG puede reescribir las consultas de los usuarios, recoger dinámicamente ejemplos relevantes mediante un conjunto de ejemplos seleccionados, consultar una base de datos de vectores y combinar la información con una plantilla de petición. Una aplicación basada en RAG requiere que gestiones varios tipos de datos, como consultas de usuarios, bases de datos de vectores con ejemplos de pocos disparos seleccionados e información de la empresa, así como plantillas de peticiones.
Cada tipo de datos requiere una organización y un mantenimiento cuidadosos. Por ejemplo, una base de datos vectorial requiere procesar los datos en inserciones, optimizar las estrategias de fragmentación y asegurarse de que solo se disponga de la información pertinente. Una plantilla de petición necesita control de versiones y seguimiento, y las consultas de los usuarios deben reescribirse. Las prácticas recomendadas de MLOps y DevOps pueden ayudarte con estas tareas. En la IA predictiva, se crean flujos de datos para la extracción, la transformación y la carga. En la IA generativa, se crean flujos de procesamiento para gestionar, desarrollar, adaptar e integrar diferentes tipos de datos de forma versionable, rastreable y reproducible.
El ajuste fino de los modelos fundacionales puede mejorar el rendimiento de las aplicaciones de IA generativa, pero los modelos necesitan datos. Para obtener estos datos, puedes iniciar tu aplicación y recoger datos reales, generar datos sintéticos o combinar ambos. El uso de modelos grandes para generar datos sintéticos es cada vez más habitual porque este método acelera el proceso de implementación, pero sigue siendo importante que los humanos comprueben los resultados para asegurar la calidad. A continuación, se muestran ejemplos de cómo puedes usar modelos grandes para tareas de ingeniería de datos:
- Generación de datos sintéticos: este proceso consiste en crear datos artificiales que se parezcan mucho a los datos reales en cuanto a sus características y propiedades estadísticas. Los modelos grandes y potentes suelen completar esta tarea. Los datos sintéticos sirven como datos de entrenamiento adicionales para la IA generativa, lo que le permite aprender patrones y relaciones incluso cuando los datos del mundo real etiquetados son escasos.
- Corrección de datos sintéticos: esta técnica se centra en identificar y corregir errores e incoherencias en conjuntos de datos etiquetados. Gracias a la potencia de los modelos más grandes, la IA generativa puede detectar posibles errores de etiquetado y proponer correcciones para mejorar la calidad y la fiabilidad de los datos de entrenamiento.
- Aumento de datos sintéticos: este enfoque va más allá de la generación de datos nuevos. El aumento de datos sintéticos consiste en manipular de forma inteligente los datos existentes para crear variaciones diversas y, al mismo tiempo, conservar las características y las relaciones esenciales. La IA generativa puede enfrentarse a una gama más amplia de situaciones que la IA predictiva durante el entrenamiento, lo que lleva a una generalización mejorada y a la capacidad de generar resultados matizados y relevantes.
A diferencia de la IA predictiva, es difícil evaluar la IA generativa. Por ejemplo, puede que no conozcas la distribución de los datos de entrenamiento de los modelos fundacionales. Debes crear un conjunto de datos de evaluación personalizado que refleje todos tus casos prácticos, incluidos los esenciales, los medios y los extremos. Al igual que con los datos de ajuste, puedes usar LLMs potentes para generar, seleccionar y aumentar datos con los que crear conjuntos de datos de evaluación sólidos.
Evaluación
El proceso de evaluación es una actividad fundamental para el desarrollo de aplicaciones de IA generativa. La evaluación puede tener diferentes grados de automatización: desde estar totalmente dirigida por personas hasta estar totalmente automatizada por un proceso.
Cuando prototipas un proyecto, la evaluación suele ser un proceso manual. Los desarrolladores revisan los resultados del modelo para hacerse una idea cualitativa de su rendimiento. Sin embargo, a medida que el proyecto madura y aumenta el número de casos de prueba, la evaluación manual se convierte en un cuello de botella.
Automatizar la evaluación tiene dos grandes ventajas: te permite avanzar más rápido y hace que las evaluaciones sean más fiables. Además, elimina la subjetividad humana, lo que ayuda a asegurar que los resultados sean reproducibles.
Sin embargo, automatizar la evaluación de las aplicaciones de IA generativa conlleva una serie de retos. Por ejemplo, plantéate lo siguiente:
- Tanto las entradas (peticiones) como las salidas pueden ser increíblemente complejas. Una sola petición puede incluir varias instrucciones y restricciones que el modelo debe gestionar. Los resultados suelen ser de alta dimensión, como una imagen generada o un bloque de texto. Es difícil captar la calidad de estos resultados con una métrica sencilla. Algunas métricas consolidadas, como BLEU para traducciones y ROUGE para resúmenes, no siempre son suficientes. Por lo tanto, puedes usar métodos de evaluación personalizados u otro modelo fundamental para evaluar tu sistema. Por ejemplo, puedes pedirle a un modelo de lenguaje grande (como AutoSxS) que evalúe la calidad de los textos generados en varias dimensiones.
- Muchas métricas de evaluación de la IA generativa son subjetivas. Lo que hace que un resultado sea mejor que otro puede ser una cuestión de opinión. Debes asegurarte de que tu evaluación automatizada se ajuste a la opinión de las personas, ya que quieres que tus métricas sean un indicador fiable de lo que pensarían los usuarios. Para que los experimentos sean comparables, debes determinar tu enfoque de evaluación y tus métricas al principio del proceso de desarrollo.
- Falta de datos de referencia, sobre todo en las primeras fases de un proyecto. Una solución alternativa es generar datos sintéticos que sirvan como verdad fundamental temporal y que puedas perfeccionar con el tiempo gracias a los comentarios de los usuarios.
- Es fundamental llevar a cabo una evaluación exhaustiva para proteger las aplicaciones de IA generativa frente a ataques adversarios. Los agentes maliciosos pueden crear peticiones para intentar extraer información sensible o manipular los resultados del modelo. Los conjuntos de evaluación deben abordar específicamente estos vectores de ataque mediante técnicas como el fuzzing de peticiones (introducir en el modelo variaciones aleatorias de las peticiones) y las pruebas de fugas de información.
Para evaluar las aplicaciones de IA generativa, implementa lo siguiente:
- Automatiza el proceso de evaluación para garantizar la velocidad, la escalabilidad y la reproducibilidad. Puedes considerar la automatización como un sustituto del criterio humano.
- Personaliza el proceso de evaluación según sea necesario para tus casos prácticos.
- Para que los resultados sean comparables, estabiliza el enfoque de evaluación, las métricas y los datos de referencia lo antes posible en la fase de desarrollo.
- Generar datos validados sintéticos para compensar la falta de datos validados reales.
- Incluye casos de prueba de peticiones antagónicas como parte del conjunto de evaluación para probar la fiabilidad del sistema frente a estos ataques.
Desplegar
Las aplicaciones de IA generativa de nivel de producción son sistemas complejos con muchos componentes que interactúan entre sí. Para desplegar una aplicación de IA generativa en producción, debes gestionar y coordinar estos componentes con las fases anteriores del desarrollo de la aplicación de IA generativa. Por ejemplo, una sola aplicación puede usar varios LLMs junto con una base de datos, todo ello alimentado por una canalización de datos dinámica. Cada uno de estos componentes puede requerir su propio proceso de implementación.
Implementar aplicaciones de IA generativa es similar a implementar otros sistemas de software complejos, ya que debes implementar componentes del sistema, como bases de datos y aplicaciones de Python. Te recomendamos que utilices prácticas de ingeniería de software estándar, como el control de versiones y la integración y la entrega continuas (CI/CD).
Control de versiones
La experimentación con la IA generativa es un proceso iterativo que implica ciclos repetidos de desarrollo, evaluación y modificación. Para garantizar un enfoque estructurado y gestionable, debes implementar un control de versiones estricto para todos los componentes modificables. Entre estos componentes se incluyen los siguientes:
- Plantillas de peticiones: a menos que utilices soluciones específicas de gestión de peticiones, usa herramientas de control de versiones para hacer un seguimiento de las versiones.
- Definiciones de cadenas: usa herramientas de control de versiones para monitorizar las versiones del código que define la cadena (incluidas las integraciones de APIs, las llamadas a bases de datos y las funciones).
- Conjuntos de datos externos: en los sistemas RAG, los conjuntos de datos externos desempeñan un papel importante. Usa soluciones de analíticas de datos como BigQuery, AlloyDB para PostgreSQL y Vertex AI Feature Store para monitorizar estos cambios y las versiones de estos conjuntos de datos.
- Modelos de adaptador: las técnicas como el ajuste de LoRA para modelos de adaptador están en constante evolución. Usa soluciones de almacenamiento de datos consolidadas (por ejemplo, Cloud Storage) para gestionar y controlar las versiones de estos recursos de forma eficaz.
Integración continua
En un marco de integración continua, todos los cambios de código se someten a pruebas automáticas antes de fusionarse para detectar problemas con antelación. Las pruebas unitarias y de integración son importantes para la calidad y la fiabilidad. Las pruebas unitarias se centran en fragmentos de código individuales, mientras que las pruebas de integración verifican que los diferentes componentes funcionen juntos.
Implementar un sistema de integración continua ayuda a hacer lo siguiente:
- Asegúrate de que los resultados sean fiables y de alta calidad: las pruebas rigurosas aumentan la confianza en el rendimiento y la coherencia del sistema.
- Detectar errores en las primeras fases: identificar problemas mediante pruebas evita que provoquen problemas mayores más adelante. Detectar errores en las primeras fases hace que el sistema sea más sólido y resistente a casos límite y entradas inesperadas.
- Reducción de los costes de mantenimiento: los casos de prueba bien documentados simplifican la resolución de problemas y permiten realizar modificaciones más fluidas en el futuro, lo que reduce el esfuerzo de mantenimiento general.
Estas ventajas se aplican a las aplicaciones de IA generativa. Aplica la integración continua a todos los elementos del sistema, incluidas las plantillas de peticiones, la cadena, la lógica de encadenamiento, los modelos insertados y los sistemas de recuperación.
Sin embargo, aplicar la integración continua a la IA generativa conlleva los siguientes retos:
- Dificultad para generar casos de prueba exhaustivos: la naturaleza compleja y abierta de los resultados de la IA generativa dificulta la definición y la creación de un conjunto exhaustivo de casos de prueba que cubran todas las posibilidades.
- Problemas de reproducibilidad: conseguir resultados deterministas y reproducibles es complicado porque los modelos generativos suelen tener aleatoriedad intrínseca y variabilidad en sus resultados, incluso con entradas idénticas. Esta aleatoriedad dificulta la prueba de los comportamientos esperados de forma coherente.
Estos retos están estrechamente relacionados con la cuestión más general de cómo evaluar las aplicaciones de IA generativa. Puedes aplicar muchas de las mismas técnicas de evaluación al desarrollo de sistemas de integración continua para la IA generativa.
Entrega continua
Una vez que se ha combinado el código, se inicia un proceso de entrega continua para mover el código compilado y probado a través de entornos que se parecen mucho al de producción para realizar más pruebas antes de la implementación final.
Como se describe en Desarrollar y experimentar, los elementos de cadena se convierten en uno de los componentes principales que se deben implementar, ya que constituyen fundamentalmente la aplicación de IA generativa. El proceso de entrega de la aplicación de IA generativa que contiene la cadena puede variar en función de los requisitos de latencia y de si el caso práctico es por lotes o online.
En los casos prácticos de lotes, debes implementar un proceso por lotes que se ejecute según una programación en producción. El proceso de lanzamiento se centra en probar toda la pipeline de integración en un entorno similar al de producción antes de implementarla. Como parte del proceso de prueba, los desarrolladores pueden afirmar requisitos específicos sobre el rendimiento del proceso por lotes y comprobar que todos los componentes de la aplicación funcionan correctamente. Por ejemplo, los desarrolladores pueden comprobar los permisos, la infraestructura y las dependencias de código.
En los casos prácticos online, debes implementar una API, que es la aplicación que contiene la cadena y puede responder a los usuarios con una latencia baja. Tu proceso de entrega implica probar la API en la integración en un entorno similar al de producción. Estas pruebas verifican que todos los componentes de la aplicación funcionan correctamente. Puedes verificar los requisitos no funcionales (por ejemplo, la escalabilidad, la fiabilidad y el rendimiento) mediante una serie de pruebas, incluidas las de carga.
Lista de comprobación de la implementación
En la siguiente lista se describen los pasos que debes seguir cuando implementas una aplicación de IA generativa mediante un servicio gestionado, como Vertex AI:
- Configurar el control de versiones: implementa prácticas de control de versiones para las implementaciones de modelos. El control de versiones te permite volver a versiones anteriores si es necesario y hacer un seguimiento de los cambios realizados en el modelo o en la configuración de la implementación.
- Optimiza el modelo: realiza tareas de optimización del modelo (destilación, cuantización y poda) antes de empaquetar o implementar el modelo.
- Contenerizar el modelo: empaqueta el modelo entrenado en un contenedor.
- Define los requisitos de hardware de destino: asegúrate de que el entorno de implementación de destino cumpla los requisitos para que el modelo funcione de forma óptima, como GPUs, TPUs y otros aceleradores de hardware especializados.
- Define el endpoint del modelo: especifica el contenedor del modelo, el formato de entrada, el formato de salida y cualquier parámetro de configuración adicional.
- Asigna recursos: asigna los recursos de computación adecuados al endpoint en función del tráfico esperado y los requisitos de rendimiento.
- Configura el control de acceso: configura mecanismos de control de acceso para restringir el acceso al endpoint en función de las políticas de autenticación y autorización. El control de acceso ayuda a garantizar que solo los usuarios o servicios autorizados puedan interactuar con el modelo implementado.
- Crear un endpoint de modelo: crea un endpoint para desplegar el modelo como un servicio de API REST. El endpoint permite a los clientes enviar solicitudes al endpoint y recibir respuestas del modelo.
- Configurar la monitorización y el registro: configura sistemas de monitorización y registro para hacer un seguimiento del rendimiento, la utilización de recursos y los registros de errores del endpoint.
- Implementar integraciones personalizadas: integra el modelo en aplicaciones o servicios personalizados mediante el SDK o las APIs del modelo.
- Implementar aplicaciones en tiempo real: crea un flujo de procesamiento que procese datos y genere respuestas en tiempo real.
Registros y supervisión
Para monitorizar las aplicaciones de IA generativa y sus componentes, se necesitan técnicas que puedes añadir a las que ya usas para las operaciones de aprendizaje automático convencionales. Debes registrar y monitorizar tu aplicación de principio a fin, lo que incluye registrar y monitorizar la entrada y la salida generales de tu aplicación y de cada componente.
Las entradas de la aplicación activan varios componentes para generar las salidas. Si el resultado de una entrada determinada es inexacto, debes determinar cuál de los componentes no ha funcionado bien. Necesitas un linaje en tus registros de todos los componentes que se han ejecutado. También debe asignar las entradas y los componentes con los artefactos y parámetros adicionales de los que dependan para poder analizar las entradas y las salidas.
Cuando apliques la monitorización, prioriza la monitorización a nivel de aplicación. Si la monitorización a nivel de aplicación demuestra que la aplicación funciona correctamente, significa que todos los componentes también funcionan bien. Después, aplica la monitorización a los componentes del modelo solicitado para obtener resultados más granulares y comprender mejor tu aplicación.
Al igual que con la monitorización convencional en MLOps, debes implementar un proceso de alertas para notificar a los propietarios de las aplicaciones cuando se detecte una deriva, un sesgo o un deterioro del rendimiento. Para configurar alertas, debes integrar herramientas de alertas y notificaciones en tu proceso de monitorización.
En las siguientes secciones se describen las tareas de supervisión de la desviación y el desfase, así como las de evaluación continua. Además, la monitorización en MLOps incluye la monitorización de las métricas del estado general del sistema, como el uso de recursos y la latencia. Estas métricas de eficiencia también se aplican a las aplicaciones de IA generativa.
Detección de inclinación
La detección de sesgos en los sistemas de aprendizaje automático convencionales se refiere al sesgo de entrenamiento-servicio que se produce cuando la distribución de los datos de las características en producción se desvía de la distribución de los datos de las características que se observó durante el entrenamiento del modelo. En el caso de las aplicaciones de IA generativa que usan modelos preentrenados en componentes que se encadenan para producir el resultado, también debes medir la asimetría. Para medir el sesgo, puedes comparar la distribución de los datos de entrada que has usado para evaluar tu aplicación y la distribución de las entradas de tu aplicación en producción. Si las dos distribuciones se separan, debes investigar más a fondo. Puedes aplicar el mismo proceso a los datos de salida.
Detección de cambios
Al igual que la detección de sesgos, la detección de desviaciones comprueba si hay diferencias estadísticas entre dos conjuntos de datos. Sin embargo, en lugar de comparar las evaluaciones y las entradas de servicio, la deriva busca cambios en los datos de entrada. La deriva te permite evaluar las entradas y, por lo tanto, cómo cambia el comportamiento de tus usuarios a lo largo del tiempo.
Dado que la entrada de la aplicación suele ser texto, puedes usar diferentes métodos para medir la asimetría y la deriva. En general, estos métodos intentan identificar cambios significativos en los datos de producción, tanto textuales (como el tamaño de la entrada) como conceptuales (como los temas de la entrada), en comparación con el conjunto de datos de evaluación. Todos estos métodos buscan cambios que puedan indicar que la aplicación no está preparada para gestionar correctamente la naturaleza de los nuevos datos que se están recibiendo. Estos son algunos de los métodos:
- Cálculo de las inserciones y las distancias
- Contar la longitud del texto y el número de tokens
- Hacer un seguimiento de los cambios en el vocabulario, los nuevos conceptos e intents, las peticiones y los temas de los conjuntos de datos
- Se usan enfoques estadísticos como la diferencia de densidad de mínimos cuadrados (PDF), la discrepancia media máxima (MMD), la MMD de kernel aprendido (PDF) o la MMD contextual.
Como los casos prácticos de la IA generativa son muy diversos, es posible que necesites métricas personalizadas adicionales que reflejen mejor los cambios inesperados en tus datos.
Evaluación continua
La evaluación continua es otro enfoque habitual para monitorizar las aplicaciones de IA generativa. En un sistema de evaluación continua, se registra el resultado de producción del modelo y se ejecuta una tarea de evaluación con ese resultado para hacer un seguimiento del rendimiento del modelo a lo largo del tiempo. Puedes recoger comentarios directos de los usuarios, como las valoraciones, que te ofrecen información inmediata sobre la calidad percibida de los resultados. Al mismo tiempo, comparar las respuestas generadas por el modelo con la verdad verificada permite analizar el rendimiento en profundidad. Puedes recoger datos verificados mediante una evaluación humana o como resultado de un enfoque de modelo de IA de conjunto para generar métricas de evaluación. Este proceso ofrece una vista de cómo han cambiado las métricas de evaluación desde que desarrollaste el modelo hasta el momento actual.
Gobernanza
En el contexto de MLOps, la gobernanza abarca todas las prácticas y políticas que establecen el control, la rendición de cuentas y la transparencia en el desarrollo, el despliegue y la gestión continua de los modelos de aprendizaje automático, incluidas todas las actividades relacionadas con los ciclos de vida del código, los datos y los modelos.
En las aplicaciones de IA predictiva, el linaje se centra en monitorizar y comprender el recorrido completo de un modelo de aprendizaje automático. En la IA generativa, el linaje va más allá del artefacto del modelo y se extiende a todos los componentes de la cadena. El seguimiento incluye los datos, los modelos, el origen de los modelos, el código y los datos y las métricas de evaluación relativos. El seguimiento del linaje puede ayudarte a auditar, depurar y mejorar tus modelos.
Además de estas nuevas prácticas, puedes gestionar el ciclo de vida de los datos y de los componentes de IA generativa mediante prácticas estándar de MLOps y DevOps.
Siguientes pasos
Desplegar una aplicación de IA generativa con Vertex AI
Autores: Anant Nawalgaria, Christos Aniftos, Elia Secchi, Gabriela Hernandez Larios, Mike Styer y Onofrio Petragallo