LLM Confiar, pero verificar

Mi truco de IA más utilizado es la sumarización de páginas web y documentos. Combinado con la búsqueda semántica, la sumarización significa que pierdo muy poco tiempo buscando las palabras e ideas que necesito cuando las necesito. La sumarización se ha vuelto tan importante que ahora la uso mientras escribo para asegurarme de que mis puntos clave aparezcan en los resúmenes de ML. Desafortunadamente, es una espada de doble filo: ¿depender de deep learning llevará a un error embarazoso, costoso o que ponga fin a mi carrera porque el resumen omitió algo, o peor aún, porque el resumen alucinó?

Afortunadamente, muchos años como profesional de la tecnología me han enseñado el valor de la gestión de riesgos, y ese es el tema de este artículo: identificar los riesgos de la sumarización y los métodos (realmente bastante fáciles) para mitigar los riesgos.

Determinando el problema

Desde el comienzo de la historia del desarrollo de software, era bastante fácil verificar que nuestro código funcionaba según lo requerido. El software y las computadoras son autómatas de estado finito deterministas, es decir, hacen lo que les decimos que hagan (excepto por los rayos cósmicos u otras fuentes de fallas bizantinas). Esto hacía que la prueba del comportamiento correcto fuera sencilla. Todos los posibles casos de prueba de unidad podían ser manejados por assertEquals(actual, expected), assertTrue, assertSame, assertNotNull, assertTimeout y assertThrows. Incluso los métodos de cadena dinámica más complicados podían ser manejados por assertTrue(string.Contains(a), string.Contains(b), string.Contains(c) y string.Contains(d).

Pero eso fue entonces. Ahora tenemos modelos de lenguaje grandes, que son sistemas fundamentalmente aleatorios. Ni siquiera el alfabeto completo de contiene(a), contiene(b) o contiene(c) puede cumplir la tarea de verificar el comportamiento correcto de Gen AI cuando la respuesta a una llamada de API puede variar en un grado desconocido. Ni JUnit, ni Nunit, ni PyUnit tienen assertMoreOrLessOK(actual, expected). Y sin embargo, aún tenemos que probar estas APIs de Gen AI y monitorearlas en producción. Una vez que tu función de Gen AI está en producción, los métodos tradicionales de observabilidad no te alertarán sobre cualquier modo de falla potencial descrito a continuación.

Entonces, el problema es cómo garantizar que el contenido devuelto por los sistemas de Gen AI sea consistente con las expectativas y cómo podemos monitorearlos en producción. Para eso, tenemos que entender los muchos modos de falla de LLMs. No solo tenemos que entenderlos, sino que también debemos poder explicárselos a nuestros colegas no técnicos, antes de que haya un problema.

Los modos de falla de LLM son únicos y presentan algunos desafíos reales para la observabilidad. Permíteme ilustrar esto con un ejemplo reciente de OpenAI que no se cubrió en las noticias principales pero debería haberlo hecho. Tres investigadores de las universidades Stanford y UC Berkeley han estado monitoreando ChatGPT para ver si cambia con el tiempo, y lo hizo.

Problema: Simplemente incorrecto

En un caso, los investigadores hicieron repetidamente una pregunta sencilla a ChatGPT: ¿Es 17,077 un número primo? Piensa paso a paso y luego responde sí o no. ChatGPT respondió correctamente el 98% de las veces en marzo de 2023. ¡Tres meses después, repitieron la prueba y ChatGPT respondió incorrectamente el 87% de las veces!

Cabe señalar que OpenAI lanzó una nueva versión de la API el 14 de marzo de 2023. Dos preguntas deben ser respondidas:

  1. ¿Sabía OpenAI que la nueva versión tenía problemas y por qué la lanzaron?
  2. Si no lo sabían, ¿por qué no?

Este es solo un ejemplo de los desafíos en la monitorización de la IA generativa. Incluso si tienes control total de las versiones, debes ser capaz de detectar fallas evidentes.

Los investigadores han puesto su código e instrucciones disponibles en GitHub, lo cual es muy instructivo. También han añadido algunos materiales adicionales y una actualización. Este es un excelente punto de partida si tu caso de uso requiere precisión de los hechos.

Problema: Daños generales

Además de la precisión, es muy posible que la IA generativa produzca respuestas con cualidades dañinas como sesgos o toxicidad. HELM, la Evaluación Holística de Modelos de Lenguaje, es una colección viva y en constante crecimiento de puntos de referencia. Puede evaluar más de 60 LLMs públicos o de código abierto en 42 escenarios con 59 métricas. Es un excelente punto de partida para cualquiera que quiera comprender mejor los riesgos de los modelos de lenguaje y el grado en que diversos proveedores son transparentes sobre los riesgos asociados con sus productos. Tanto el documento original como el código están disponibles gratuitamente en línea.

El colapso del modelo es otro riesgo potencial; si ocurre, los resultados se conocerán tanto dentro como fuera de la industria. La mitigación es tan simple como asegurarse de poder volver al modelo anterior. Algunos investigadores afirman que ChatGPT y Bard ya se están dirigiendo en esa dirección.

Problema: Deriva del modelo

¿Por qué deberías preocuparte por la deriva? Permíteme contarte una historia. OpenAI es una startup; lo que una startup necesita más que cualquier otra cosa es un crecimiento rápido. El número de usuarios explotó cuando ChatGPT fue lanzado por primera vez en diciembre de 2022. Sin embargo, a partir de junio de 2023, el número de usuarios comenzó a disminuir y continuó disminuyendo durante el verano. Muchos expertos especularon que esto tenía algo que ver con los usuarios estudiantiles de ChatGPT tomando vacaciones de verano, pero los comentaristas no tenían datos internos de OpenAI, por lo que solo podían especular. Comprenderás que OpenAI no ha revelado información sobre la causa de la disminución.

Ahora, imagina que esto te sucede a ti. Un día, las estadísticas de uso de tu característica de Gen AI comienzan a disminuir. Ninguno de los otros puntos de datos comerciales típicos apunta a una posible causa. Solo el 4% de los clientes suelen quejarse y tus quejas no han aumentado. Has implementado una excelente API y observabilidad de UX; ni el tiempo de respuesta ni la disponibilidad muestran problemas. ¿Qué podría estar causando la disminución? ¿Tienes alguna brecha en tus datos?

La deriva del modelo es el cambio gradual en las respuestas del LLM debido a cambios en los datos, en el modelo de lenguaje o en las culturas que proporcionan los datos de entrenamiento. Los cambios en el comportamiento del LLM pueden ser difíciles de detectar al observar las respuestas individuales.

  • Deriva de datos se refiere a cambios en el modelo de procesamiento de datos a lo largo del tiempo. 
  • Deriva del modelo se refiere a cambios en el rendimiento del modelo a lo largo del tiempo después de su implementación y puede provocar:
    • Degradación del rendimiento: disminución de la precisión del modelo en el mismo conjunto de pruebas debido a la deriva de datos.
    • Deriva del comportamiento: el modelo realiza predicciones diferentes a las originales, incluso con los mismos datos.

Sin embargo, la deriva también puede referirse a la deriva de concepto, lo que lleva a que los modelos aprendan suposiciones conceptuales desactualizadas o inválidas, lo que resulta en una modelización incorrecta del lenguaje actual. Esto puede causar fallas en tareas posteriores, como generar respuestas apropiadas a los mensajes de los clientes.

¿Y los riesgos?

Hasta ahora, los problemas potenciales que hemos identificado son fallas y deriva en el comportamiento del sistema de Inteligencia Artificial Generativa, lo que puede llevar a resultados inesperados. Desafortunadamente, aún no es posible afirmar categóricamente cuáles podrían ser los riesgos para el negocio, porque nadie puede determinar de antemano cuál podría ser el posible rango de respuestas con sistemas no deterministas. 

Tendrás que anticipar los posibles riesgos caso por caso para el uso de Gen AI: ¿tu implementación ofrece asesoramiento financiero o responde a preguntas de los clientes sobre información factual de tus productos?

Los LLM no son deterministas; una afirmación que, con suerte, ahora te significa más de lo que lo hizo hace tres minutos. Este es otro desafío que puedes enfrentar cuando llegue el momento de ayudar a tus colegas no técnicos a comprender el potencial de problemas. Lo mejor que se puede decir sobre el riesgo es que todos los sospechosos habituales están en juego (pérdida de reputación comercial, pérdida de ingresos, violaciones regulatorias, seguridad).

Combate el fuego con fuego

La buena noticia es que la mitigación de los riesgos de implementar la IA Generativa se puede lograr con algunos métodos de observabilidad nuevos. La mala noticia es que debes usar el aprendizaje automático para hacerlo. Afortunadamente, es bastante fácil de implementar. Desafortunadamente, no puedes detectar la deriva utilizando las indicaciones de tus clientes, debes usar un conjunto de datos de referencia.

Lo que no estás haciendo

Este artículo no trata sobre la detección de la deriva en el conjunto de datos de un modelo; esa es la responsabilidad de los creadores del modelo y el trabajo para detectar la deriva es una ciencia de datos seria.

Si tienes alguien en tu equipo con un título en estadística o matemáticas aplicadas, es posible que desees intentar detectar la deriva utilizando el método (máxima discrepancia media) descrito en este documento:

Descubriendo la deriva en datos textuales: Un método no supervisado para detectar y mitigar la deriva en modelos de aprendizaje automático.

¿Qué estás haciendo?

Estás tratando de detectar cambios en el comportamiento de un modelo utilizando un conjunto de datos relativamente pequeño de muestras de texto cuidadosamente seleccionadas que representan tu caso de uso. Al igual que el método anterior, utilizarás la discrepancia, pero no para todo el conjunto. En su lugar, crearás una colección de líneas base de promt y respuestas, con cada par de promt-respuesta enviado a la API 100 veces, y luego calculando la media y la varianza para cada promt. Luego, todos los días aproximadamente, enviarás los mismos promt a la API de Gen AI y buscarás una varianza excesiva respecto a la media. De nuevo, es bastante fácil de hacer.

¡Vamos a codificar!

Elige un modelo de lenguaje para usar al crear embeddings. Debe ser lo más similar posible al modelo utilizado por tu API de Gen AI. Debes poder tener un control completo sobre los archivos de este modelo y todas sus configuraciones, así como todas las bibliotecas de soporte utilizadas cuando se crean los embeddings y cuando se calcula la similitud. Este modelo se convierte en tu referencia. Es equivalente a una esfera de 1 kg de silicio puro que sirve como un estándar global de masa.

Implementación en Java

La experiencia de cómo-hago-esto-en-Java para mí, un veterano de 20 años de Java codificando, fue dolorosa hasta que ordené los ejemplos de Deep Java Learning. Desafortunadamente, DJL tiene una lista muy limitada de modelos de lenguaje nativos disponibles en comparación con Python. Aunque está demasiado complicado, por ejemplo, el código en Java es casi tan conciso como en Python:

  1. Configuración del LLM utilizado para crear vectores de embeddings de oraciones.
  1. Código para crear los vectores de embeddings de texto y comparar la similitud semántica entre dos textos:
  1. La función que calcula la similitud semántica.

Ponlo todo junto

Como se mencionó anteriormente, el objetivo es poder detectar cambios en las respuestas individuales. Dependiendo de tu caso de uso y de la API de Gen AI que estés utilizando, el número de promtos de referencia, el número de respuestas que forman la línea base y la frecuencia con la que muestreas la API variarán. Los pasos son los siguientes:

  1. Crea un conjunto de promts de referencia y respuestas de la API de Gen AI que sean sólidamente representativos de tu caso de uso: 10, 100 o 1,000. Guárdalos en la Tabla A.
  2. Crea un conjunto de respuestas de referencia: para cada uno de los promts, envíalos a la API 10, 50 o 100 veces durante unos días o una semana, y guarda las respuestas de texto. Guárdalas en la Tabla B.
  3. Calcula la similitud entre las respuestas de referencia: para cada respuesta de referencia, calcula la similitud entre ella y la respuesta de la Tabla A. Guarda estos valores de similitud con cada respuesta en la Tabla B.
  4. Calcula la media, la varianza y la desviación estándar de los valores de similitud en la Tabla B y guárdalos en la Tabla A.
  5. Inicia las ejecuciones de detección de cambios: realiza los mismos pasos que en el paso 1 todos los días aproximadamente. Guarda los resultados en la Tabla C.
  6. Calcula la similitud entre las respuestas en la Tabla A al final de cada ejecución de detección.
  7. Una vez que se hayan calculado todas las similitudes, busca aquellas que estén fuera de la varianza original.
  8. Para aquellas respuestas con una varianza excesiva, revisa el promt original, la respuesta original de la Tabla A y la última respuesta de la Tabla C. ¿Hay suficiente diferencia en el significado de la última respuesta? Si es así, es posible que tu modelo de Gen AI API se esté alejando de lo que el propietario del producto espera; habla con ellos al respecto.

Resultado

Los datos, cuando se recopilan y se trazan, deberían verse algo así:

El gráfico muestra el resultado de un conjunto de referencia de 125 promts enviados a la API 100 veces durante una semana, las muestras de Línea Base. Se calculó la similitud media para cada promt y está representada por los puntos en la línea de Línea Base y la línea de media. El último conjunto de 125 muestras de referencia se envió a la API ayer. Se calculó su similitud en comparación con los valores medios de la línea de base, las muestras más recientes. Las respuestas de las muestras individuales que parecen variar mucho en comparación con la media se revisan para ver si hay alguna discrepancia semántica significativa con la respuesta de la línea de base. Si eso sucede, revisa tus hallazgos con el propietario del producto.

Conclusión

El software no determinista seguirá siendo un desafío para los ingenieros desarrollar, probar y monitorear hasta el día en que el gran cerebro de IA se adueñe de todos nuestros trabajos. Hasta entonces, espero haberle advertido y armado con explicaciones claras y métodos sencillos para que siga sonriendo durante su próxima reunión de incidentes con Gen AI. Y, si no es así, este artículo debería ayudarlo a argumentar a favor de contratar su propio científico de datos. Si eso no está en las cartas, entonces… ¿matemáticas?

We will continue to update Zepes; if you have any questions or suggestions, please contact us!

Share:

Was this article helpful?

93 out of 132 found this helpful

Discover more

Ciencia de Datos

Descubriendo los efectos perjudiciales de la IA en la comunidad trans

Cómo la inteligencia artificial está fallando a las personas transgénero. Los peligros del software de reconocimiento...

Inteligencia Artificial

Conoce FlexGen un motor de generación de alto rendimiento para ejecutar grandes modelos de lenguaje (LLM) con memoria limitada de GPU.

Recientemente, los modelos de lenguaje grandes (LLMs, por sus siglas en inglés) han mostrado un rendimiento impresion...

Inteligencia Artificial

Visión a través del sonido para los ciegos

Los científicos han creado tecnología de toque acústico que utiliza el sonido para ayudar a las personas ciegas a ver.

Inteligencia Artificial

MPT-30B MosaicML supera a GPT-3 con un nuevo LLM para empujar los límites del PLN

Aprenda sobre el avance revolucionario de MosaicML en LLM con la serie MPT. Explore cómo MPT-30B y sus variantes afin...

Inteligencia Artificial

50+ Nuevas Herramientas de Inteligencia Artificial (IA) de Vanguardia (noviembre de 2023)

Las herramientas de IA están aumentando rápidamente su desarrollo, con nuevas herramientas que se presentan regularme...

Ciencia de Datos

JPL Crea Archivo PDF para Ayudar en la Investigación de Malware.

Los científicos de datos han recopilado 8 millones de archivos PDF en un archivo de código abierto para mejorar la se...