Implementa y opera aplicaciones de IA generativa

Last reviewed 2024-11-19 UTC

La IA generativa introdujo una nueva forma de compilar 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 variedad de arquitecturas y tamaños, seleccionar datos, diseñar instrucciones óptimas, ajustar modelos para tareas específicas y fundamentar los resultados del modelo en datos del mundo real.

En este documento, se describe cómo puedes adaptar los procesos de DevOps y MLOps para desarrollar, implementar y operar aplicaciones de IA generativa en modelos de base existentes. Para obtener información sobre la implementación de la IA predictiva, consulta MLOps: canalizaciones de automatización y entrega continua 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 promueve la colaboración, la automatización y la mejora continua para optimizar el ciclo de vida del desarrollo de software, con prácticas como la integración continua y la entrega continua (CI/CD).

Las MLOps se basan en los principios de DevOps para abordar los desafíos de la creación y el funcionamiento de los sistemas de aprendizaje automático (AA). Los sistemas de aprendizaje automático suelen usar IA predictiva para identificar patrones y hacer predicciones. El flujo de trabajo de MLOps incluye lo siguiente:

  • Validación de datos
  • Entrenamiento del modelo
  • Evaluación e iteración del modelo
  • Implementación y entrega de modelos
  • Supervisión de modelos

¿Qué son los modelos de base?

Los modelos de base 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 de base se entrenan con muchos tipos de datos, incluidos texto, imágenes, audio y video. Los modelos de base incluyen modelos de lenguaje grandes (LLM) como Llama 3.1 y modelos multimodales como Gemini.

A diferencia de los modelos de IA predictivos, que se entrenan para tareas específicas con conjuntos de datos enfocados, los modelos de base se entrenan con conjuntos de datos masivos y diversos. Este entrenamiento te permite usar modelos de base para desarrollar aplicaciones para muchos casos de uso diferentes. Los modelos de base tienen propiedades emergentes (PDF), que les permiten proporcionar respuestas a entradas específicas sin entrenamiento explícito. Debido a estas propiedades emergentes, los modelos básicos son difíciles de crear y operar, y requieren que adaptes tus procesos de DevOps y MLOps.

El desarrollo de un modelo fundamental requiere recursos de datos significativos, hardware especializado, una inversión considerable y experiencia especializada. Por lo tanto, muchas empresas prefieren usar modelos base existentes para simplificar el desarrollo y la implementación 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 base es el más adecuado para su caso de uso. Consideran las fortalezas, las debilidades y los costos de cada modelo para tomar una decisión fundamentada.
  • Desarrollo y experimentación: Los desarrolladores usan la ingeniería de instrucciones para crear y perfeccionar instrucciones de entrada y obtener el resultado requerido. Cuando están disponibles, el aprendizaje con pocos ejemplos, el ajuste eficiente en relación con los parámetros (PEFT) y el encadenamiento de modelos ayudan a guiar el comportamiento del modelo. El encadenamiento de modelos se refiere a la organización de llamadas a varios modelos en una secuencia específica para crear un flujo de trabajo.
  • Implementación: Los desarrolladores deben administrar muchos artefactos en el proceso de implementación, incluidas las plantillas de instrucciones, las definiciones de cadenas, los modelos integrados, los almacenes de datos de recuperación y los adaptadores de modelos ajustados. Estos artefactos tienen sus propios requisitos de administración y requieren una administración cuidadosa durante el desarrollo y la implementación. La implementación de aplicaciones de IA generativa también debe tener en cuenta las capacidades técnicas de la infraestructura de destino, lo que garantiza que se cumplan los requisitos de hardware de la aplicación.
  • Supervisión continua en producción: Los administradores mejoran el rendimiento de las aplicaciones y mantienen los estándares de seguridad a través de técnicas de IA responsable, como garantizar la equidad, la transparencia y la responsabilidad en los resultados del modelo.
  • Mejora continua: Los desarrolladores ajustan constantemente los modelos de base a través de técnicas de instrucciones, reemplazan los modelos por versiones más recientes o incluso combinan varios modelos para mejorar el rendimiento, la eficiencia de costos o reducir la latencia. El entrenamiento continuo convencional sigue siendo pertinente para situaciones en las que se necesita un ajuste recurrente o la incorporación de bucles de retroalimentación humana.

Las prácticas de ingeniería de datos desempeñan un rol fundamental en todas las etapas de desarrollo. Para crear resultados confiables, debes tener una fundamentación fáctica (que garantiza que los resultados del modelo se basen en información precisa y actualizada) y datos recientes de los sistemas internos y empresariales. Los datos de ajuste ayudan a adaptar los modelos a tareas y estilos específicos, y rectifican errores persistentes.

Cómo encontrar el modelo básico para tu caso de uso

Dado que la creación de modelos de base requiere muchos recursos, la mayoría de las empresas prefieren usar un modelo de base existente que sea óptimo para su caso de uso. Encontrar el modelo de base adecuado es difícil porque hay muchos modelos de base. Cada modelo tiene diferentes arquitecturas, tamaños, conjuntos de datos de entrenamiento y licencias. Además, cada caso de uso presenta requisitos únicos, lo que exige que analices los modelos disponibles en múltiples dimensiones.

Ten en cuenta los siguientes factores cuando evalúes modelos:

  • Calidad: Ejecuta instrucciones de prueba para evaluar la calidad del resultado.
  • Latencia y capacidad de procesamiento: Determina la latencia y la capacidad de procesamiento correctas que requiere tu caso de uso, ya que estos factores afectan directamente la experiencia del usuario. Por ejemplo, un chatbot requiere una latencia más baja que las tareas de resumen procesadas por lotes.
  • Tiempo de desarrollo y mantenimiento: Considera la inversión de tiempo para el desarrollo inicial y el mantenimiento continuo. Los modelos administrados suelen requerir menos esfuerzo que los modelos disponibles abiertamente que implementas por tu cuenta.
  • Costo de uso: Considera los costos de infraestructura y consumo asociados con el modelo.
  • Cumplimiento: Evalúa la capacidad del modelo para cumplir con las reglamentaciones y las condiciones de licencias pertinentes.

Desarrolla y experimenta

Cuando se crean aplicaciones de IA generativa, el desarrollo y la experimentación son iterativos y coordinados. Cada iteración experimental implica refinar los datos, adaptar el modelo fundamental y evaluar los resultados. La evaluación proporciona comentarios que guían las iteraciones posteriores en un ciclo de retroalimentación continuo. Si el rendimiento no coincide con las expectativas, puedes recopilar más datos, aumentarlos o seleccionarlos aún más. Además, es posible que debas optimizar las instrucciones, aplicar técnicas de ajuste o cambiar a otro modelo de base. Este ciclo de perfeccionamiento iterativo, impulsado por las estadísticas de evaluación, es tan importante para optimizar las aplicaciones de IA generativa como lo es para el aprendizaje automático y la IA predictiva.

El paradigma del modelo de base

Los modelos de base se diferencian de los modelos predictivos porque son modelos multiuso. En lugar de entrenarse para un solo propósito con datos específicos de esa tarea, los modelos de base se entrenan con conjuntos de datos amplios, lo que te permite aplicar un modelo de base a muchos casos de uso diferentes.

Los modelos de base también son muy sensibles a los cambios en sus entradas. La salida del modelo y la tarea que realiza se determinan según la entrada del modelo. Un modelo fundamental puede traducir texto, generar videos o clasificar datos con solo cambiar la entrada. Incluso los cambios insignificantes en la entrada pueden afectar la capacidad del modelo para realizar correctamente esa tarea.

Estas propiedades de los modelos de base requieren diferentes prácticas operativas y de desarrollo. Si bien los modelos en el contexto de la IA predictiva son autosuficientes y específicos para una tarea, los modelos de base son polivalentes y necesitan un elemento adicional más allá de la entrada del usuario. Los modelos de IA generativa requieren una instrucción y, más específicamente, una plantilla de instrucción. Una plantilla de instrucciones es un conjunto de instrucciones y ejemplos junto con marcadores de posición para adaptarse a la entrada del usuario. La aplicación puede combinar la plantilla de instrucción y los datos dinámicos (como la entrada del usuario) para crear una instrucción completa, que es el texto que se pasa como entrada al modelo de base.

El componente del modelo con instrucciones

La presencia de la instrucción es una característica distintiva de las aplicaciones de IA generativa. El modelo y la instrucción no son suficientes para generar contenido. La IA generativa necesita ambos. La combinación del modelo y la instrucción se conoce como componente del modelo con instrucción. El componente de modelo basado en instrucciones es el componente independiente más pequeño que es suficiente para crear una aplicación de IA generativa. La instrucción no tiene que ser complicada. Por ejemplo, puede ser una instrucción simple, como "traduce la siguiente oración del inglés al francés", seguida de la oración que se debe traducir. Sin embargo, sin esa instrucción preliminar, un modelo de base no realizará la tarea de traducción requerida. Por lo tanto, una instrucción, incluso una básica, es necesaria junto con la entrada para que el modelo de base realice la tarea que requiere la aplicación.

El componente del modelo con instrucciones crea una distinción importante para las prácticas de MLOps cuando se desarrollan 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 basado en instrucciones. Por lo general, el ciclo de experimentación de la IA generativa comienza con la prueba de variaciones de la instrucción, en la que se cambia la redacción de las instrucciones, se proporciona contexto adicional o se incluyen ejemplos pertinentes, y se evalúa el impacto de esos cambios. Esta práctica se conoce comúnmente como ingeniería de instrucciones.

La ingeniería de instrucciones implica los siguientes pasos iterativos:

  • Creación de instrucciones: Crea y perfecciona instrucciones para obtener los comportamientos deseados de un modelo fundamental para un caso de uso específico.
  • Evaluación: Evalúa los resultados del modelo, idealmente de forma programática, para medir su comprensión y su éxito en el cumplimiento de las instrucciones de la instrucción.

Para hacer un seguimiento de los resultados de la evaluación, puedes registrar de forma opcional los resultados de un experimento. Dado que la instrucción en sí es un elemento central del proceso de ingeniería de instrucciones, se convierte en el artefacto más importante entre 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 instrucciones en la IA generativa, las instrucciones pueden incluir contexto, indicaciones, ejemplos, medidas de protección y datos internos o externos reales extraídos de otro lugar.

Para determinar el tipo de artefacto, debes reconocer que una instrucción tiene diferentes componentes y requiere diferentes estrategias de administración. Ten en cuenta lo siguiente:

  • Instrucción como datos: Algunas partes de la instrucción actúan como datos. Los elementos como los ejemplos de pocos disparos, las bases de conocimiento y las búsquedas de los usuarios son, básicamente, puntos de datos. Estos componentes requieren prácticas de MLOps centradas en los datos, como la validación de datos, la detección de la desviación y la administración del ciclo de vida.
  • Instrucción como código: Otros componentes, como el contexto, las plantillas de instrucciones y las barreras de protección, son similares al código. Estos componentes definen la estructura y las reglas de la instrucción en sí, y requieren prácticas más centradas en el código, como procesos de aprobación, control de versiones del código y pruebas.

Como resultado, cuando aplicas prácticas de MLOps a la IA generativa, debes tener procesos que les brinden a los desarrolladores una forma sencilla de almacenar, recuperar, hacer un seguimiento y modificar instrucciones. Estos procesos permiten una iteración rápida y una experimentación basada en principios. A menudo, una versión de una instrucción puede funcionar bien con una versión específica del modelo y no tan bien con una versión diferente. Cuando haces un seguimiento de los resultados de un experimento, debes registrar la instrucció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 particular los modelos de lenguaje grandes (LLM), enfrentan desafíos inherentes para mantener la actualidad y evitar las alucinaciones. La codificación de información nueva en los LLM requiere un entrenamiento previo costoso y con gran cantidad de datos antes de que se puedan implementar. Según el caso de uso, es posible que no sea suficiente usar solo un modelo con instrucciones para realizar una generación en particular. Para resolver este problema, puedes conectar varios modelos con instrucciones, junto con llamadas a APIs externas y lógica expresada como código. Una secuencia de componentes del modelo conectados de esta manera se conoce comúnmente como cadena.

En el siguiente diagrama, se muestran los componentes de una cadena y el proceso de desarrollo relativo.

Cadenas de modelos en el proceso de desarrollo

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 mejorada por recuperación (RAG) (PDF) y los agentes.

  • La RAG aumenta los modelos previamente entrenados con el conocimiento recuperado de las bases de datos, lo que evita la necesidad de un entrenamiento previo. La RAG permite la fundamentación y reduce las alucinaciones, ya que incorpora información fáctica actualizada directamente en el proceso de generación.
  • Los agentes, popularizados por la técnica de instrucción ReAct (PDF), usan LLMs como mediadores que interactúan con varias herramientas, incluidos los sistemas RAG, las APIs internas o externas, las extensiones personalizadas o incluso otros agentes. Los agentes permiten realizar consultas complejas y acciones en tiempo real seleccionando y usando de forma dinámica fuentes de información pertinentes. El LLM, actuando como agente, interpreta la consulta del usuario, decide qué herramienta usar y formula la respuesta en función de la información recuperada.

Puedes usar la RAG y los agentes para crear sistemas multiagente que estén conectados a grandes redes de información, lo que permite un manejo sofisticado de las consultas y la toma de decisiones en tiempo real.

La organización de diferentes modelos, lógica 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 comerciales 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 puedes caracterizar la distribución de las entradas de los componentes de antemano, lo que dificulta mucho la evaluación y el mantenimiento de los componentes individuales de forma aislada. La organización causa un cambio de paradigma en la forma en que desarrollas aplicaciones de IA generativa.

En la IA predictiva, puedes iterar en los modelos y componentes separados de forma aislada y, luego, encadenarlos en la aplicación de IA. En la IA generativa, desarrollas una cadena durante la integración, realizas experimentos de extremo a extremo en la cadena y, luego, iteras las estrategias de encadenamiento, las instrucciones, los modelos de base y otras APIs de manera coordinada para lograr un objetivo específico. A menudo, no necesitas ingeniería de atributos, recopilación de datos ni más ciclos de entrenamiento de modelos, solo cambios en la redacción de la plantilla de instrucciones.

El cambio hacia el MLOps para la IA generativa, en contraste con el MLOps para la IA predictiva, genera las siguientes diferencias:

  • Evaluación: Debido al estrecho acoplamiento de las cadenas, estas requieren una evaluación integral, no solo para cada componente, para medir su rendimiento general y la calidad de su resultado. En términos de técnicas y métricas de evaluación, evaluar cadenas es similar a evaluar modelos basados en instrucciones.
  • Control de versiones: Debes administrar una cadena como un artefacto completo en su totalidad. Debes hacer un seguimiento de la configuración de la cadena con su propio historial de revisiones para el análisis, la reproducibilidad y la comprensión de los efectos de los cambios en el resultado. Tus registros deben incluir las entradas, las salidas, los estados intermedios de la cadena y cualquier configuración de la cadena que se haya usado durante cada ejecución.
  • Supervisión continua: Para detectar la degradación del rendimiento, la desviación de los datos o el comportamiento inesperado en la cadena, debes configurar sistemas de supervisión proactivos. La supervisión continua ayuda a garantizar la identificación temprana de posibles problemas para mantener la calidad del resultado generado.
  • 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 a través de la cadena y el contenido resultante, los desarrolladores pueden identificar las fuentes de errores, sesgos o comportamientos no deseados.

En el siguiente diagrama, se muestra cómo las cadenas, los componentes del modelo con instrucciones y el ajuste del modelo funcionan en conjunto en una aplicación de IA generativa para reducir la actualidad y las alucinaciones. Los datos se seleccionan, los modelos se ajustan y las cadenas se agregan para refinar aún más las respuestas. Después de evaluar los resultados, los desarrolladores pueden registrar el experimento y seguir iterando.

Cadenas, modelos basados en instrucciones y ajuste de modelos en aplicaciones de IA generativa

Ajuste

Cuando desarrollas un caso de uso de IA generativa que involucra modelos base, puede ser difícil, especialmente para tareas complejas, depender solo de la ingeniería y el encadenamiento de instrucciones para resolver el caso de uso. Para mejorar el rendimiento de las tareas, los desarrolladores a menudo necesitan ajustar el modelo directamente. El ajuste permite cambiar de forma activa todas las capas o un subconjunto de capas (ajuste eficiente en cuanto a parámetros) del modelo para optimizar su capacidad de realizar una tarea determinada. Las formas más comunes de ajustar un modelo son las siguientes:

  • 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 con retroalimentación humana (RLHF): Entrenas un modelo de recompensa para predecir qué preferirían los humanos como respuesta. Luego, usas 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ían el aprendizaje del modelo.

En el siguiente diagrama, se muestra cómo el ajuste ayuda a refinar el modelo durante el ciclo de experimentación.

Ajustar modelos

En MLOps, el ajuste comparte las siguientes capacidades con el entrenamiento de modelos:

  • La capacidad de hacer un seguimiento de 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 del ajuste Esta capacidad te permite evaluar el modelo ajustado para las tareas específicas con las que se entrenó y comparar los resultados con los modelos ajustados previamente o los modelos congelados para la misma tarea.

Entrenamiento y ajuste continuos

En las MLOps, el entrenamiento continuo es la práctica de reentrenar repetidamente los modelos de aprendizaje automático en un entorno de producción. El entrenamiento continuo ayuda a garantizar que el modelo se mantenga actualizado y funcione bien a medida que los patrones de datos del mundo real cambian con el tiempo. En el caso de los modelos de IA generativa, el ajuste continuo suele ser más práctico que el proceso de reentrenamiento debido a los altos costos computacionales y de datos que implica.

El enfoque para el ajuste continuo depende de tu caso de uso y objetivos específicos. Para tareas relativamente estáticas, como el resumen de texto, los requisitos de ajuste continuo pueden ser más bajos. Sin embargo, para las aplicaciones dinámicas, como los chatbots, que necesitan una alineación humana constante, es necesario realizar ajustes con mayor frecuencia utilizando técnicas como el RLHF, que se basa en la retroalimentación humana.

Para determinar la estrategia de ajuste continuo adecuada, debes evaluar la naturaleza de tu caso de uso y cómo evolucionan los datos de entrada con el tiempo. El costo también es un factor importante, ya que la infraestructura de procesamiento afecta en gran medida la velocidad y el costo de la optimización. Las unidades de procesamiento gráfico (GPU) y las unidades de procesamiento tensorial (TPU) son hardware necesario para el ajuste. Las GPUs, conocidas por su potencia de procesamiento paralelo, son muy eficaces para controlar las cargas de trabajo con uso intensivo de recursos de procesamiento y, a menudo, se asocian con el entrenamiento y la ejecución de modelos complejos de aprendizaje automático. Por otro lado, Google diseñó las TPU específicamente para acelerar las tareas de aprendizaje automático. Las TPU son excelentes para controlar operaciones de matrices grandes que son comunes en las redes neuronales de aprendizaje profundo.

Prácticas de datos

Anteriormente, el comportamiento del modelo de AA se basaba únicamente en sus datos de entrenamiento. Si bien esto sigue siendo cierto para los modelos de base, el comportamiento del modelo para las aplicaciones de IA generativa que se compilan sobre modelos de base se determina según cómo adaptes el modelo con diferentes tipos de datos de entrada.

Los modelos de base se entrenan con datos como los siguientes:

  • Conjuntos de datos de entrenamiento previo (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:

  • Instrucciones
  • Datos aumentados o fundamentados (por ejemplo, sitios web, documentos, archivos PDF, bases de datos o APIs)
  • Datos específicos de la tarea para PEFT
  • Evaluaciones específicas para la tarea
  • Datos de preferencias humanas

La principal diferencia en las prácticas de datos entre el AA predictivo y la IA generativa se encuentra al comienzo del proceso del ciclo de vida. En el AA predictivo, dedicas mucho tiempo a la ingeniería de datos y, si no tienes los datos adecuados, no puedes compilar una aplicación. En la IA generativa, comienzas con un modelo fundamental, algunas instrucciones y, tal vez, algunos ejemplos de entradas (como el aprendizaje en contexto). Puedes crear prototipos y lanzar una aplicación con muy pocos datos.

Sin embargo, la facilidad de crear prototipos conlleva el desafío adicional de administrar 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, todos trabajando en conjunto.

Considera los siguientes tipos de datos:

  • Instrucciones de acondicionamiento: Son instrucciones que se le dan al modelo fundamental para guiar su salida y establecer límites sobre lo que puede generar.
  • Ejemplos de pocas tomas: Una forma de mostrarle al modelo lo que quieres lograr a través de pares de entrada y salida. Estos ejemplos ayudan al modelo a comprender las tareas específicas y, en muchos casos, pueden mejorar el rendimiento.
  • Datos de fundamentación o aumento: Son los datos que permiten que el modelo de base produzca respuestas para un contexto específico y mantenga las respuestas actualizadas y pertinentes sin volver a entrenar todo el modelo de base. Estos datos pueden provenir de APIs externas (como la Búsqueda de Google) o de APIs y fuentes de datos internas.
  • Conjuntos de datos específicos para tareas: Son los conjuntos de datos que ayudan a ajustar un modelo fundamental existente para una tarea en particular, lo que mejora su rendimiento en esa área específica.
  • Conjuntos de datos de entrenamiento previo completos: Son los conjuntos de datos masivos que se usan para entrenar inicialmente los modelos básicos. Aunque es posible que los desarrolladores de aplicaciones no tengan acceso a ellos ni a los tokenizadores, la información codificada en el modelo en sí influye en el rendimiento y el resultado de la aplicación.

Esta amplia variedad de tipos de datos agrega una capa de complejidad en términos de organización, seguimiento y administración del ciclo de vida de los datos. Por ejemplo, una aplicación basada en RAG puede reescribir las búsquedas de los usuarios, recopilar de forma dinámica ejemplos pertinentes con un conjunto seleccionado de ejemplos, consultar una base de datos de vectores y combinar la información con una plantilla de instrucciones. Una aplicación basada en RAG requiere que administres varios tipos de datos, incluidas las búsquedas de los usuarios, las bases de datos de vectores con ejemplos seleccionados de pocos disparos y la información de la empresa, y las plantillas de instrucciones.

Cada tipo de datos requiere una organización y un mantenimiento cuidadosos. Por ejemplo, una base de datos de vectores requiere procesar los datos en incorporaciones, optimizar las estrategias de fragmentación y garantizar que solo esté disponible la información pertinente. Una plantilla de instrucción necesita control de versiones y seguimiento, y las búsquedas de los usuarios deben reescribirse. Las prácticas recomendadas de MLOps y DevOps pueden ayudar con estas tareas. En la IA predictiva, creas canalizaciones de datos para la extracción, la transformación y la carga. En la IA generativa, compilas canalizaciones para administrar, desarrollar, adaptar e integrar diferentes tipos de datos de una manera versionable, rastreable y reproducible.

Ajustar los modelos de base puede mejorar el rendimiento de las aplicaciones de IA generativa, pero los modelos necesitan datos. Puedes obtener estos datos lanzando tu aplicación y recopilando datos del mundo real, generando datos sintéticos o una combinación de ambos. El uso de modelos grandes para generar datos sintéticos se está volviendo popular porque este método acelera el proceso de implementación, pero sigue siendo importante que los humanos verifiquen los resultados para garantizar la calidad. A continuación, se muestran ejemplos de cómo puedes usar modelos grandes para fines de ingeniería de datos:

  • Generación de datos sintéticos: Este proceso implica la creación de datos artificiales que se asemejan mucho a los datos del mundo real en términos de sus características y propiedades estadísticas. Los modelos grandes y capaces 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 etiquetados del mundo real son escasos.
  • Corrección de datos sintéticos: Esta técnica se enfoca en identificar y corregir errores e inconsistencias en los conjuntos de datos etiquetados existentes. Con el poder de los modelos más grandes, la IA generativa puede marcar posibles errores de etiquetado y proponer correcciones para mejorar la calidad y la confiabilidad 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 implica manipular de forma inteligente los datos existentes para crear variaciones diversas y, al mismo tiempo, preservar las características y las relaciones esenciales. Durante el entrenamiento, la IA generativa puede encontrarse con una gama más amplia de situaciones que la IA predictiva, lo que mejora la generalización y la capacidad de generar resultados relevantes y matizados.

A diferencia de la IA predictiva, la IA generativa es difícil de evaluar. Por ejemplo, es posible que no conozcas la distribución de los datos de entrenamiento de los modelos de base. Debes crear un conjunto de datos de evaluación personalizado que refleje todos tus casos de uso, incluidos los casos esenciales, los promedio y los extremos. Al igual que con los datos de ajuste, puedes usar LLMs potentes para generar, seleccionar y aumentar datos para crear conjuntos de datos de evaluación sólidos.

Evaluación

El proceso de evaluación es una actividad central del desarrollo de aplicaciones de IA generativa. La evaluación puede tener diferentes grados de automatización: desde ser completamente impulsada por humanos hasta ser completamente automatizada por un proceso.

Cuando creas un prototipo de un proyecto, la evaluación suele ser un proceso manual. Los desarrolladores revisan los resultados del modelo para obtener una idea cualitativa de su rendimiento. Sin embargo, a medida que el proyecto madura y aumenta la cantidad de casos de prueba, la evaluación manual se convierte en un cuello de botella.

La automatización de la evaluación tiene dos grandes beneficios: te permite avanzar más rápido y hace que las evaluaciones sean más confiables. También elimina la subjetividad humana de la ecuación, lo que ayuda a garantizar que los resultados sean reproducibles.

Sin embargo, automatizar la evaluación de las aplicaciones de IA generativa presenta sus propios desafíos. Por ejemplo, considera lo siguiente:

  • Tanto las entradas (instrucciones) como las salidas pueden ser increíblemente complejas. Una sola instrucción puede incluir varias indicaciones y restricciones que el modelo debe administrar. 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 en una métrica simple. Algunas métricas establecidas, como BLEU para traducciones y ROUGE para resúmenes, no siempre son suficientes. Por lo tanto, puedes usar métodos de evaluación personalizados o bien otro modelo fundamental para evaluar tu sistema. Por ejemplo, podrías indicarle a un modelo de lenguaje grande (como AutoSxS) que califique la calidad de los textos generados en varias dimensiones.
  • Muchas métricas de evaluación para 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 alinee con el juicio humano, ya que quieres que tus métricas sean un indicador confiable de lo que pensarían las personas. Para garantizar la comparabilidad entre los experimentos, debes determinar tu enfoque de evaluación y tus métricas al principio del proceso de desarrollo.
  • Falta de datos de verdad fundamental, especialmente en las primeras etapas de un proyecto Una solución alternativa es generar datos sintéticos para que sirvan como verdad fundamental temporal que puedas perfeccionar con el tiempo a través de los comentarios de las personas.
  • La evaluación integral es fundamental para proteger las aplicaciones de IA generativa contra ataques adversarios. Los agentes maliciosos pueden crear instrucciones 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 a través de técnicas como el fuzzing de instrucciones (que alimenta el modelo con variaciones aleatorias en las instrucciones) y las pruebas de filtración 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 juicio humano.
  • Personaliza el proceso de evaluación según sea necesario para tus casos de uso.
  • Para garantizar la comparabilidad, estabiliza el enfoque de evaluación, las métricas y los datos de verdad fundamental lo antes posible en la fase de desarrollo.
  • Genera datos sintéticos de verdad fundamental para compensar la falta de datos reales de verdad fundamental.
  • Incluye casos de prueba de instrucciones adversarias como parte del conjunto de evaluación para probar la confiabilidad del sistema en sí ante estos ataques.

Implementar

Las aplicaciones de IA generativa a nivel de producción son sistemas complejos con muchos componentes que interactúan entre sí. Para implementar una aplicación de IA generativa en producción, debes administrar y coordinar estos componentes con las etapas anteriores del desarrollo de la aplicación de IA generativa. Por ejemplo, una sola aplicación podría usar varios LLM junto con una base de datos, todos alimentados por una canalización de datos dinámica. Cada uno de estos componentes puede requerir su propio proceso de implementación.

Implementar aplicaciones basadas en 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 uses prácticas estándar de ingeniería de software, como el control de versiones y la 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 administrable, debes implementar un control de versiones estricto para todos los componentes modificables. Estos componentes incluyen lo siguiente:

  • Plantillas de instrucciones: A menos que uses soluciones específicas de administración de instrucciones, usa herramientas de control de versión para hacer un seguimiento de las versiones.
  • Definiciones de cadenas: Usa herramientas de control de versión para hacer un seguimiento de las versiones del código que define la cadena (incluidas las integraciones de API, las llamadas a bases de datos y las funciones).
  • Conjuntos de datos externos: En los sistemas de RAG, los conjuntos de datos externos desempeñan un papel importante. Usa soluciones de análisis de datos existentes, como BigQuery, AlloyDB para PostgreSQL y Vertex AI Feature Store, para hacer un seguimiento de estos cambios y las versiones de estos conjuntos de datos.
  • Modelos de adaptador: Las técnicas como el ajuste de LoRA para los modelos de adaptador evolucionan constantemente. Usa soluciones de almacenamiento de datos establecidas (por ejemplo, Cloud Storage) para administrar y controlar las versiones de estos recursos de manera eficaz.

Integración continua

En un marco de trabajo de integración continua, cada cambio de código se somete a pruebas automáticas antes de la combinación para detectar problemas con anticipación. Las pruebas de unidades y de integración son importantes para la calidad y la confiabilidad. Las pruebas de unidades 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:

  • Garantiza resultados confiables y de alta calidad: Las pruebas rigurosas aumentan la confianza en el rendimiento y la coherencia del sistema.
  • Detecta errores con anticipación: Identificar problemas a través de pruebas evita que causen problemas mayores más adelante. Detectar errores de forma anticipada hace que el sistema sea más sólido y resistente a casos extremos y entradas inesperadas.
  • Menores costos de mantenimiento: Los casos de prueba bien documentados simplifican la solución de problemas y permiten realizar modificaciones más fluidas en el futuro, lo que reduce el esfuerzo general de mantenimiento.

Estos beneficios se aplican a las aplicaciones de IA generativa. Aplica la integración continua a todos los elementos del sistema, incluidas las plantillas de instrucciones, la cadena, la lógica de encadenamiento, los modelos incorporados y los sistemas de recuperación.

Sin embargo, aplicar la integración continua a la IA generativa presenta los siguientes desafíos:

  • Dificultad para generar casos de prueba integrales: 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 abarquen todas las posibilidades.
  • Problemas de reproducibilidad: Lograr resultados determinísticos y reproducibles es difícil porque los modelos generativos suelen tener aleatoriedad y variabilidad intrínsecas en sus resultados, incluso para entradas idénticas. Esta aleatoriedad dificulta la prueba constante de los comportamientos esperados.

Estos desafíos se relacionan estrechamente con la pregunta más amplia 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 CI para la IA generativa.

Entrega continua

Después de que se combina el código, comienza un proceso de entrega continua para trasladar el código compilado y probado a través de entornos que se asemejan mucho a la producción para realizar más pruebas antes de la implementación final.

Como se describe en Desarrolla y experimenta, los elementos de la cadena se convierten en uno de los componentes principales para 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 según los requisitos de latencia y si el caso de uso es por lotes o en línea.

Los casos de uso por lotes requieren que implementes un proceso por lotes que se ejecute según una programación en producción. El proceso de entrega se enfoca en probar toda la canalización en la integración en un entorno similar al de producción antes de la implementación. Como parte del proceso de prueba, los desarrolladores pueden confirmar requisitos específicos sobre el rendimiento del proceso por lotes y verificar que todos los componentes de la aplicación funcionen correctamente. (Por ejemplo, los desarrolladores pueden verificar los permisos, la infraestructura y las dependencias del código).

Los casos de uso en línea requieren que implementes una API, que es la aplicación que contiene la cadena y es capaz de responder a los usuarios con baja latencia. Tu proceso de entrega incluye 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 funcionen correctamente. Puedes verificar los requisitos no funcionales (por ejemplo, escalabilidad, confiabilidad y rendimiento) a través de una serie de pruebas, incluidas las pruebas de carga.

Lista de tareas de implementación

En la siguiente lista, se describen los pasos que debes seguir cuando implementas una aplicación de IA generativa con un servicio administrado, como Vertex AI:

  • Configura el control de versión: Implementa prácticas de control de versión para las implementaciones de modelos. El control de versiones te permite revertir a versiones anteriores si es necesario y hacer un seguimiento de los cambios realizados en el modelo o la configuración de implementación.
  • Optimiza el modelo: Realiza tareas de optimización del modelo (destilación, cuantización y poda) antes de empaquetarlo o implementarlo.
  • Aloja el modelo en un contenedor: Empaqueta el modelo entrenado en un contenedor.
  • Define los requisitos de hardware objetivo: Asegúrate de que el entorno de implementación objetivo cumpla con los requisitos para el rendimiento óptimo del modelo, como las GPU, las TPU y otros aceleradores de hardware especializados.
  • Define el extremo 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 procesamiento adecuados para el extremo según el tráfico esperado y los requisitos de rendimiento.
  • Configura el control de acceso: Configura mecanismos de control de acceso para restringir el acceso al extremo según 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.
  • Crea un extremo del modelo: Crea un extremo para implementar el modelo como un servicio de API de REST. El extremo permite que los clientes envíen solicitudes y reciban respuestas del modelo.
  • Configura la supervisión y el registro: Configura sistemas de supervisión y registro para hacer un seguimiento del rendimiento del extremo, la utilización de recursos y los registros de errores.
  • Implementa integraciones personalizadas: Integra el modelo en aplicaciones o servicios personalizados con el SDK o las APIs del modelo.
  • Implementa aplicaciones en tiempo real: Crea una canalización de transmisión que procese datos y genere respuestas en tiempo real.

Registra y supervisa

La supervisión de las aplicaciones de IA generativa y sus componentes requiere técnicas que puedes agregar a las que usas para los MLOps convencionales. Debes registrar y supervisar tu aplicación de extremo a extremo, lo que incluye registrar y supervisar la entrada y salida generales de tu aplicación y de cada componente.

Las entradas de la aplicación activan varios componentes para producir las salidas. Si la respuesta a una entrada determinada es imprecisa, debes determinar cuál de los componentes no funcionó bien. Necesitas un linaje en tus registros para todos los componentes que se ejecutaron. También debes asignar los insumos y los componentes a los parámetros y artefactos adicionales de los que dependen para poder analizar los insumos y los resultados.

Cuando apliques la supervisión, prioriza la supervisión a nivel de la aplicación. Si la supervisión a nivel de la aplicación demuestra que esta tiene un buen rendimiento, significa que todos los componentes también tienen un buen rendimiento. Luego, aplica la supervisión a los componentes del modelo que se indicaron para obtener resultados más detallados y comprender mejor tu aplicación.

Al igual que con la supervisión convencional en MLOps, debes implementar un proceso de alertas para notificar a los propietarios de la aplicación cuando se detecte una desviación, una asimetría o una disminución del rendimiento. Para configurar alertas, debes integrar herramientas de alertas y notificaciones en tu proceso de supervisión.

En las siguientes secciones, se describen las tareas de supervisión del sesgo y el desvío, y de evaluación continua. Además, la supervisión en MLOps incluye la supervisión de las métricas para el estado general del sistema, como la utilización de recursos y la latencia. Estas métricas de eficiencia también se aplican a las aplicaciones de IA generativa.

Detección de sesgos

La detección de sesgo en los sistemas de AA convencionales se refiere al sesgo entre el entrenamiento y la entrega que se produce cuando la distribución de datos de atributos en la producción se desvía de la distribución de datos de atributos que se observó durante el entrenamiento de modelos. En el caso de las aplicaciones de IA generativa que usan modelos previamente entrenados en componentes que se encadenan para producir el resultado, también debes medir la asimetría. Puedes medir la desviación comparando la distribución de los datos de entrada que usaste para evaluar tu aplicación y la distribución de las entradas de tu aplicación en producción. Si las dos distribuciones se desvían, debes investigar más a fondo. También puedes aplicar el mismo proceso a los datos de salida.

Detección de desvíos

Al igual que la detección de sesgos, la detección de desvíos verifica si hay diferencias estadísticas entre dos conjuntos de datos. Sin embargo, en lugar de comparar las evaluaciones y las entradas de la entrega, la desviación busca cambios en los datos de entrada. La desviación te permite evaluar las entradas y, por lo tanto, cómo cambia el comportamiento de tus usuarios con el tiempo.

Dado que la entrada de la aplicación suele ser texto, puedes usar diferentes métodos para medir la asimetría y la desviación. 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 podrían indicar que la aplicación no está preparada para controlar correctamente la naturaleza de los nuevos datos que ahora se reciben. Algunos métodos comunes incluyen los siguientes:

Dado que los casos de uso de la IA generativa son muy diversos, es posible que necesites métricas personalizadas adicionales que capturen mejor los cambios inesperados en tus datos.

Evaluación continua

La evaluación continua es otro enfoque común para supervisar las aplicaciones de IA generativa. En un sistema de evaluación continua, se captura 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 recopilar comentarios directos de los usuarios, como calificaciones, que proporcionan estadísticas inmediatas sobre la calidad percibida de los resultados. Paralelamente, comparar las respuestas generadas por el modelo con la verdad fundamental establecida permite un análisis más profundo del rendimiento. Puedes recopilar la verdad fundamental a través de la evaluación humana o como resultado de un enfoque de modelo de IA de conjunto para generar métricas de evaluación. Este proceso proporciona una vista de cómo cambiaron tus métricas de evaluación desde que desarrollaste tu modelo hasta lo que tienes en producción hoy en día.

Administrar

En el contexto de las MLOps, la gobernanza abarca todas las prácticas y políticas que establecen el control, la responsabilidad y la transparencia sobre el desarrollo, la implementación y la administració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 enfoca en hacer un seguimiento 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 linaje de 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.

Junto con estas nuevas prácticas, puedes regir el ciclo de vida de los datos y los componentes de IA generativa con las prácticas estándares de MLOps y DevOps.

¿Qué sigue?

Implementa una aplicación de IA generativa con Vertex AI

Autores: Anant Nawalgaria, Christos Aniftos, Elia Secchi, Gabriela Hernández Larios, Mike Styer y Onofrio Petragallo