Implementa y opera aplicaciones de IA generativa

Last reviewed 2024-11-19 UTC

La IA generativa presentó una nueva forma de compilar y operar aplicaciones de IA que es diferente de la IA predictiva. Para compilar 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).

MLOps se basan en los principios de DevOps para abordar los desafíos de la compilación y operación de sistemas de aprendizaje automático (AA). Por lo general, los sistemas de aprendizaje automático usan IA predictiva para identificar patrones y hacer predicciones. El flujo de trabajo de las operaciones de AA incluye lo siguiente:

  • Validación de datos
  • Entrenamiento del modelo
  • Iteración y evaluación de modelos
  • 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, como 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 predictiva, que se entrenan para tareas específicas en conjuntos de datos enfocados, los modelos de base se entrenan en conjuntos de datos masivos y diversos. Esta capacitación 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 de base son difíciles de crear y operar, y requieren que adaptes tus procesos de DevOps y MLOps.

Desarrollar un modelo de base requiere recursos de datos significativos, hardware especializado, una inversión significativa y experiencia especializada. Por lo tanto, muchas empresas prefieren usar modelos de 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 de base es más adecuado para su caso de uso. Considera las fortalezas, debilidades y 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 definir mejor las instrucciones de entrada y obtener el resultado requerido. Cuando estén disponibles, el aprendizaje de pocas muestras, el ajuste fino (PEFT) eficiente en parámetros y la encadenación de modelos ayudan a guiar el comportamiento del modelo. La cadena de modelos hace referencia 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 administrar muchos artefactos en el proceso de implementación, incluidas las plantillas de instrucciones, las definiciones de cadenas, los modelos incorporados, los almacenes de datos de recuperación y los adaptadores de modelos ajustados. Estos artefactos tienen sus propios requisitos de gobernanza 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 mediante 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 indicaciones, intercambian 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 relevante para situaciones en las que se necesita un ajuste fino recurrente o la incorporación de bucles de retroalimentación humana.

Las prácticas de ingeniería de datos tienen 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 sistemas internos y empresariales. El ajuste de datos ayuda a adaptar los modelos a tareas y estilos específicos, y rectifica los errores persistentes.

Encuentra el modelo de base para tu caso de uso

Debido a que la compilació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 correcto 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 que exigen que analices los modelos disponibles en varias dimensiones.

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

  • Calidad: Ejecuta instrucciones de prueba para evaluar la calidad de los resultados.
  • 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: Ten en cuenta la inversión de tiempo para el desarrollo inicial y el mantenimiento continuo. Los modelos administrados suelen requerir menos esfuerzo que los modelos disponibles de forma abierta que implementas por tu cuenta.
  • Costo de uso: Ten en cuenta 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 las licencias relevantes.

Desarrolla y experimenta

Cuando se crean aplicaciones de IA generativa, el desarrollo y la experimentación son iterativos y orquestados. Cada iteración experimental implica definir mejor los datos, adaptar el modelo de base 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 cumple con las expectativas, puedes recopilar más datos, aumentarlos o seleccionarlos mejor. Además, es posible que debas optimizar las instrucciones, aplicar técnicas de ajuste fino o cambiar a otro modelo de base. Este ciclo iterativo de perfeccionamiento, impulsado por 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 del modelo de base

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

Los modelos base también son muy sensibles a los cambios en su entrada. La salida del modelo y la tarea que realiza se determinan según la entrada del modelo. Un modelo de base 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 esa tarea correctamente.

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 de la tarea, los modelos de base son multipropósito 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 instrucción 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 solicitado

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 la generación de contenido; la IA generativa necesita ambos. La combinación del modelo y la instrucción se conoce como el componente del modelo con instrucciones. El componente del modelo solicitado es el componente independiente más pequeño que es suficiente para crear una aplicación de IA generativa. No es necesario que la instrucción sea 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, se necesita una instrucción, incluso una básica, junto con la entrada para que el modelo de base realice la tarea que requiere la aplicación.

El componente del modelo solicitado 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 solicitado. El ciclo de experimentación de la IA generativa suele comenzar con la prueba de variaciones de la instrucción (cambiar el texto de las instrucciones, proporcionar contexto adicional o incluir ejemplos relevantes) y evaluar el impacto de esos cambios. Esta práctica suele denominarse ingeniería de instrucciones.

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

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

Para hacer un seguimiento de los resultados de la evaluación, puedes registrar los resultados de un experimento de manera opcional. Debido a que la propuesta en sí es un elemento fundamental del proceso de ingeniería de la propuesta, se convierte en el artefacto más importante dentro de los artefactos 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, instrucciones, ejemplos, protecciones 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:

  • Consigna como datos: Algunas partes de la consigna actúan como datos. Elementos como los ejemplos de pocas fotos, las bases de conocimiento y las consultas de los usuarios son, en esencia, datos. Estos componentes requieren prácticas de MLOps centradas en los datos, como la validación de datos, la detección de deriva y la administración del ciclo de vida.
  • Consigna como código: Otros componentes, como el contexto, las plantillas de instrucciones y los límites, 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 y pruebas.

Como resultado, cuando aplicas prácticas de MLOps a la IA generativa, debes tener procesos que les proporcionen a los desarrolladores una forma fácil de almacenar, recuperar, hacer un seguimiento y modificar las 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 realizas 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.

Cadena y aumento de modelos

Los modelos de IA generativa, en particular los modelos grandes de lenguaje (LLM), enfrentan desafíos inherentes para mantener la actualización y evitar alucinaciones. La codificación de información nueva en 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 sugerido para realizar una generación en particular. Para resolver este problema, puedes conectar varios modelos solicitados, junto con llamadas a APIs externas y lógica expresada como código. Una secuencia de componentes del modelo solicitados que se conectan 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 correspondiente.

Cadenas de modelos en el proceso de desarrollo

Mitigación de la actualización y las alucinaciones

Dos patrones comunes basados en cadenas que pueden mitigar la recencia y las alucinaciones son la generación mejorada por recuperación (RAG) (PDF) y los agentes.

  • La RAG mejora los modelos previamente entrenados con el conocimiento recuperado de las bases de datos, lo que evita la necesidad de 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 indicaciones de ReAct (PDF), usan LLM como mediadores que interactúan con varias herramientas, incluidos los sistemas de RAG, las APIs internas o externas, las extensiones personalizadas o incluso otros agentes. Los agentes habilitan consultas complejas y acciones en tiempo real seleccionando y usando de forma dinámica 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 en función de la información recuperada.

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

La orquestación de diferentes modelos, lógicas y APIs no es nueva para las aplicaciones de IA generativa. Por ejemplo, los motores de recomendaciones combinan modelos de filtrado colaborativo, modelos basados en el contenido y reglas empresariales 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 hace que estas cadenas de componentes de IA generativa sean diferentes es que no puedes 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 en que desarrollas aplicaciones de IA para la IA generativa.

En la IA predictiva, puedes iterar en los modelos y componentes separados de forma independiente y, luego, encadenarlos en la aplicación de IA. En la IA generativa, desarrollas una cadena durante la integración, realizas la experimentación en la cadena de extremo a extremo y iteras las estrategias de encadenamiento, las instrucciones, los modelos de base y otras APIs de forma 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 debes cambiar el texto de la plantilla de la instrucción.

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

  • Evaluación: Debido a la vinculación estrecha de las cadenas, estas requieren una evaluación de extremo a extremo, 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, la evaluación de cadenas es similar a la evaluación de modelos sugeridos.
  • 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 para comprender los efectos de los cambios en el resultado. Los registros deben incluir las entradas, las salidas, los estados intermedios de la cadena y cualquier configuración de cadena que se haya usado durante cada ejecución.
  • Supervisión continua: Para detectar la degradación del rendimiento, la deriva de datos o un 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. Cuando se proporciona 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 solicitados y el ajuste del modelo trabajan juntos en una aplicación de IA generativa para reducir la recencia y las alucinaciones. Se seleccionan los datos, se ajustan los modelos y se agregan cadenas para mejorar aún más las respuestas. Después de evaluar los resultados, los desarrolladores pueden registrar el experimento y seguir iterando.

Cadenas, modelos solicitados y ajuste de modelos en aplicaciones de IA generativa

Ajuste

Cuando desarrollas un caso de uso de IA generativa que involucra modelos de base, puede ser difícil, en especial para las tareas complejas, depender solo de la ingeniería de instrucciones y el encadenamiento para resolver el caso de uso. Para mejorar el rendimiento de las tareas, los desarrolladores a menudo deben ajustar el modelo directamente. El ajuste fino te permite cambiar de forma activa todas las capas o un subconjunto de ellas (ajuste fino eficiente de 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 y le enseñas 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 lo que las personas preferirían 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íen el aprendizaje del modelo.

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

Ajustar modelos

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

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

Entrenamiento y ajuste continuos

En las operaciones de AA, el entrenamiento continuo es la práctica de volver a entrenar los modelos de aprendizaje automático de forma repetida en un entorno de producción. El entrenamiento continuo ayuda a garantizar que el modelo permanezca actualizado y tenga un buen rendimiento 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 de los modelos suele ser más práctico que un proceso de reentrenamiento debido a los altos costos computacionales y de datos que implica.

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

Para determinar la estrategia de ajuste continuo correcta, 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 una consideración importante, ya que la infraestructura de procesamiento afecta en gran medida la velocidad y el gasto de la optimización. Las unidades de procesamiento gráfico (GPU) y las unidades de procesamiento tensorial (TPU) son el hardware necesario para el ajuste fino. Las GPUs, conocidas por su capacidad de procesamiento en paralelo, son muy eficaces para controlar las cargas de trabajo intensivas en 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 se destacan en el manejo de 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 determinaba únicamente por 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 la forma en que 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 propietarios)
  • 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 basados (por ejemplo, sitios web, documentos, archivos PDF, 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 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 correctos, no puedes compilar una aplicación. En la IA generativa, comienzas con un modelo de base, algunas instrucciones y, tal vez, algunas entradas de ejemplo (como el aprendizaje en contexto). Puedes hacer 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, que funcionan en conjunto.

Considera los siguientes tipos de datos:

  • Instrucciones de acondicionamiento: Son instrucciones que se le proporcionan al modelo de base para guiar su salida y establecer límites de lo que puede generar.
  • Ejemplos de pocas tomas: Es 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 mejora: Son los datos que permiten que el modelo de base genere respuestas para un contexto específico y mantenga las respuestas actualizadas y relevantes 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 de la tarea: Son los conjuntos de datos que ayudan a ajustar un modelo de base existente para una tarea en particular, lo que mejora su rendimiento en esa área específica.
  • Conjuntos de datos completos de entrenamiento previo: Son los conjuntos de datos masivos que se usan para entrenar inicialmente los modelos de base. Aunque es posible que los desarrolladores de aplicaciones no tengan acceso a ellos ni a los tokenizers, la información codificada en el modelo en sí influye en el rendimiento y la salida 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 la RAG puede reescribir las consultas de los usuarios, recopilar ejemplos relevantes de forma dinámica con un conjunto seleccionado de ejemplos, consultar una base de datos de vectores y combinar la información con una plantilla de instrucción. Una aplicación basada en RAG requiere que administres varios tipos de datos, incluidas las consultas de los usuarios, las bases de datos vectoriales con ejemplos seleccionados de pocas imágenes 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 el procesamiento de datos en incorporaciones, la optimización de estrategias de fragmentación y la garantía de que solo esté disponible la información relevante. Una plantilla de instrucció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, creas canalizaciones de datos para la extracción, transformación y carga. En la IA generativa, se crean canalizaciones para administrar, evolucionar, adaptar e integrar diferentes tipos de datos de una manera reproducible, rastreable y con control de versiones.

El ajuste fino de los modelos de base puede mejorar el rendimiento de las aplicaciones de IA generativa, pero los modelos necesitan datos. Para obtener estos datos, inicia tu aplicación y recopila datos del mundo real, genera 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 aún es importante que las personas verifiquen los resultados para el control de calidad. Los siguientes son ejemplos de cómo puedes usar modelos grandes para la ingeniería de datos:

  • Generación de datos sintéticos: Este proceso implica crear datos artificiales que se parecen 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 del mundo real etiquetados son escasos.
  • Corrección de datos sintéticos: Esta técnica se enfoca en identificar y corregir errores e inconsistencias dentro de los conjuntos de datos etiquetados existentes. Gracias al 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.
  • Amplificación de datos sintéticos: Este enfoque va más allá de la generación de datos nuevos. La ampliación de datos sintéticos implica manipular de forma inteligente los datos existentes para crear diversas variaciones y, al mismo tiempo, preservar las relaciones y las características esenciales. La IA generativa puede encontrar una gama más amplia de situaciones que la IA predictiva durante el entrenamiento, lo que lleva a una mejor generalización y la capacidad de generar resultados relevantes y con matices.

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

Evaluación

El proceso de evaluación es una actividad fundamental del desarrollo de aplicaciones de IA generativa. La evaluación puede tener diferentes grados de automatización: desde una que se realiza por completo de forma manual hasta una que se automatiza por completo mediante un proceso.

Cuando creas un prototipo de un proyecto, la evaluación suele ser un proceso manual. Los desarrolladores revisan los resultados del modelo y obtienen 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.

Automatizar 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 quita 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 conlleva su propio conjunto de 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 instrucciones y restricciones que el modelo debe administrar. Los resultados suelen ser de alta dimensión, como una imagen generada o un bloque de texto. Capturar la calidad de estos resultados en una métrica simple es difícil. Algunas métricas establecidas, como BLEU para las traducciones y ROUGE para los resúmenes, no siempre son suficientes. Por lo tanto, puedes usar métodos de evaluación personalizados o otro modelo de base para evaluar tu sistema. Por ejemplo, puedes solicitar a un gran modelo de lenguaje (como AutoSxS) que califique 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 alinee con el juicio humano porque quieres que tus métricas sean un proxy confiable de lo que pensarían las personas. Para garantizar la comparabilidad entre los experimentos, debes determinar tu enfoque de evaluación y las métricas al principio del proceso de desarrollo.
  • Falta de datos de verdad fundamental, sobre todo en las primeras etapas de un proyecto. Una posible solución es generar datos sintéticos que sirvan como verdad fundamental temporal que puedas definir mejor con el tiempo con comentarios humanos.
  • La evaluación integral es esencial para proteger las aplicaciones de IA generativa contra los ataques adversarios. Las personas o entidades maliciosas 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 la generación de fuzz de instrucciones (alimentar al modelo con variaciones aleatorias en las instrucciones) y pruebas de filtración de información.

Para evaluar 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 proxy 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 de verdad fundamental sintéticos para compensar la falta de datos de verdad fundamental reales.
  • Incluye casos de prueba de indicaciones adversas como parte del conjunto de evaluación para probar la confiabilidad del sistema en sí contra estos ataques.

Implementar

Las aplicaciones de IA generativa a nivel de producción son sistemas complejos con muchos componentes que interactúan. Para implementar una aplicación de IA generativa en producción, debes administrar y coordinar estos componentes con las etapas anteriores del desarrollo de aplicaciones 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.

La implementación de aplicaciones de IA generativa es similar a la implementación de 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 CI/CD.

Control de versión

La experimentación con IA generativa es un proceso iterativo que implica ciclos repetidos de desarrollo, evaluación y modificación. Para garantizar un enfoque estructurado y manejable, 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 cadena: 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 la base de datos y las funciones).
  • Conjuntos de datos externos: En los sistemas de RAG, los conjuntos de datos externos desempeñan un rol 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 versiones de estos conjuntos de datos.
  • Modelos de adaptador: Las técnicas como el ajuste de LoRA para modelos de adaptadores evolucionan constantemente. Usa soluciones de almacenamiento de datos establecidas (por ejemplo, Cloud Storage) para administrar y crear versiones de estos recursos de manera eficaz.

Integración continua

En un framework de integración continua, cada cambio de código pasa por 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 diferentes componentes funcionen juntos.

La implementación de un sistema de integración continua ayuda a hacer lo siguiente:

  • Garantizar resultados confiables y de alta calidad: Las pruebas rigurosas aumentan la confianza en el rendimiento y la coherencia del sistema.
  • Detecta los errores con anticipación: Identificar los problemas a través de pruebas evita que causen problemas más grandes más adelante. Detectar los errores con anticipación hace que el sistema sea más robusto y resistente a casos extremos y entradas inesperadas.
  • Menos 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 los esfuerzos de mantenimiento generales.

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 conlleva los siguientes desafíos:

  • Dificultad para generar casos de prueba exhaustivos: La naturaleza compleja y abierta de los resultados de la IA generativa dificulta la definición y creación de un conjunto exhaustivo de casos de prueba que abarque todas las posibilidades.
  • Problemas de reproducibilidad: Lograr resultados deterministas y reproducibles es complicado porque los modelos generativos suelen tener aleatoriedad y variabilidad intrínsecas en sus resultados, incluso para entradas idénticas. Esta aleatoriedad dificulta probar de forma coherente los comportamientos esperados.

Estos desafíos están estrechamente relacionados 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 mover 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 Desarrollo y experimentación, los elementos de cadena se convierten en uno de los componentes principales para implementar porque, en esencia, constituyen 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 un programa en producción. El proceso de entrega se enfoca en probar toda la canalización en 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 la capacidad de procesamiento 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 de 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 implica probar la API en 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 la implementación.
  • Optimiza el modelo: Realiza tareas de optimización del modelo (destilación, cuantificación y poda) antes de empaquetar o implementar el modelo.
  • Aloja el modelo en contenedores: 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 con los requisitos para un rendimiento óptimo del modelo, como GPUs, 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.
  • Asignar 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 de modelo: Crea un extremo para implementar el modelo como un servicio de API de REST. El extremo permite que los clientes envíen solicitudes al extremo 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, el uso de recursos y los registros de errores del extremo.
  • 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 aplicaciones de IA generativa y sus componentes requiere técnicas que puedes agregar a las técnicas de supervisión que usas para las MLOps convencionales. Debes registrar y supervisar tu aplicación de extremo a extremo, lo que incluye registrar y supervisar la entrada y salida general de tu aplicación y cada componente.

Las entradas a la aplicación activan varios componentes para producir los resultados. Si el resultado de una entrada determinada es inexacto, debes determinar cuál de los componentes no tuvo un buen rendimiento. Necesitas el linaje en tu registro para todos los componentes que se ejecutaron. También debes asignar las entradas y los componentes con cualquier artefacto y parámetro adicionales de los que dependan para que puedas analizar las entradas y salidas.

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 solicitados para obtener resultados más detallados y una mejor comprensión de tu aplicación.

Al igual que con la supervisión convencional en MLOps, debes implementar un proceso de alerta para notificar a los propietarios de la aplicación cuando se detecte un desplazamiento, una desviación 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 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 sesgos

La detección de sesgos 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 difiere 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 el sesgo. Para medir la desviación, puedes comparar la distribución de los datos de entrada que usaste para evaluar tu aplicación y la distribución de las entradas a tu aplicación en producción. Si las dos distribuciones se separan, 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 evaluaciones y entradas de publicación, 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 con el tiempo.

Dado que la entrada de la aplicación suele ser texto, puedes usar diferentes métodos para medir la desviación 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 en 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 podría no estar preparada para controlar correctamente la naturaleza de los datos nuevos que ahora llegan. Estos son algunos métodos comunes:

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

Evaluación continua

La evaluación continua es otro enfoque común para la supervisión de aplicaciones de IA generativa. En un sistema de evaluación continua, capturas el resultado de producción del modelo y ejecutas 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 las calificaciones, que proporcionan estadísticas inmediatas sobre la calidad percibida de los resultados. En paralelo, 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 en la actualidad.

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 los modelos, el código y los datos y las métricas de evaluación relativos. El seguimiento de linaje puede ayudarte a auditar, depurar y mejorar tus modelos.

Junto con estas prácticas nuevas, puedes administrar el ciclo de vida de los datos y los ciclos de vida de los componentes de la IA generativa con prácticas estándar de DevOps y operaciones de mlas.

¿Qué sigue?

Implementa una aplicación de IA generativa con Vertex AI