Ahora son capaces de manejar vastas entradas: sus ventanas de contexto varían entre 200k (Claude) y 2M Tokens (Gemini 1.5 Pro). ¡Eso es entre 280 y 2800 páginas de texto! Estas ventanas de contexto masivo sugieren que en la mayoría de los escenarios prácticos, no necesitamos preocuparnos demasiado por alcanzar los límites de LLM con respecto a la entrada. Sin embargo, nuestra nueva investigación muestra que esto no es cierto. Para muchos problemas con un contexto complejo, la LLM es efectiva La memoria de trabajo puede sobrecargarse con entradas relativamente pequeñas – lejos antes llegamos a los límites de la ventana de contexto.
Nuestro artículo presenta un nuevo modelo teórico de cálculo para explicar por qué esto sucede y muestra en los experimentos que las predicciones de nuestra teoría coinciden con los resultados del mundo real. Nuestros hallazgos finalmente pueden explicar reportado previamente LLM fallascomo cómo los LLM tienen un Incapacidad para detectar agujeros de la trama, lucha por entender historias largaso Responda incorrectamente las preguntas cuando los documentos son similares.
A continuación presentamos los detalles respondiendo las siguientes preguntas:
- ¿Qué sucede si superamos la memoria de trabajo de una LLM?
- Hace mi ¿La tarea necesita mucha memoria de trabajo?
- ¿Qué puedo hacer si mi tarea necesita mucha memoria de trabajo?
- ¿Por qué ciertas tareas necesitan mucha memoria de trabajo?
¿Qué sucede si superamos la memoria de trabajo de una LLM?
Hablando intuitivamente, las tareas que requieren mucho contexto para responder una pregunta correctamente también requieren que el LLM rastree mucha información. Como el tamaño de este “conjunto de trabajo” necesario para razonar correctamente sobre la respuesta crece, es más probable que el LLM cometa errores, porque no puede retener la información relevante en su memoria de trabajo limitada.
Considere el siguiente ejemplo. Digamos que queremos depurar una determinada parte del código de alguien y queremos descubrir si el valor final de la variable x7 es “A” o “B”:
x6 = "a"
x4 = "b"
x0 = x6
x2 = x4
x3 = x0
x8 = x2
x9 = x3
x7 = x3
Esta tarea de seguimiento de variables requiere mucho contexto para calcular una respuesta, ya que no atender una línea del código puede dar lugar a una respuesta incorrecta. Ejecutar experimentos con una serie de modelos fronterizos en esta tarea muestra que todos retroceden a la adivinación aleatoria entre las dos respuestas a medida que crece el número de variables:
Este experimento indica que estos LLM pueden realizar un seguimiento de las variables N = 5 a 10 antes de exceder su capacidad de memoria de trabajo. Después de esto, el rendimiento se degrada rápidamente a 50–50 adivinanzas aleatorias.
Hace mi ¿La tarea necesita mucha memoria de trabajo?
Así que ahora probablemente tenga curiosidad si los límites de memoria de trabajo podrían ser un problema para la tarea que está tratando de resolver. Lo primero que recomendamos es verificar si la tarea en cuestión es similar a cualquiera de las tareas que analizamos teóricamente en nuestro documento. Llamamos tareas Bapo Si necesitan mucha memoria de trabajo bajo nuestro modelo BAPO (discutido más a continuación). Las tareas que sabemos son difíciles de incluir en teoría:
- Accesibilidad del gráfico: puede ocurrir en resumen complejo, seguimiento de entidades, seguimiento de variables o deducción lógica
- Mayoría: puede ocurrir en la clasificación de revisión, encontrar una opinión de consenso, etc.
- Razonamiento sobre triples: por ejemplo, construyendo respuestas a partir de gráficos de conocimiento
Del mismo modo, puede ver si su tarea es BAPO-Easy:
- Mínimo/máximo: por ejemplo, devuelva la revisión más negativa o positiva en una lista
- Índice o aguja-in a-haystack: por ejemplo, descubra si se discute un tema
Intuitivamente, problemas en los que solo se debe rastrear una pequeña información para responder a la pregunta tiene bajos requisitos de memoria de trabajo (por ejemplo, aguja-in a-haystack). Si la respuesta requiere casi todos los tokens de entrada y no existe un resumen corto, los requisitos de memoria de trabajo son altos.
Si su tarea no está en la lista anterior, puede usar su juicio para determinar si hay una solución fácil que no necesita mucha memoria, por ejemplo, hay una fácil búsqueda basada en la atención que la LLM puede realizar para responder la pregunta, o alguna forma de resumir el contexto (sin conocer la pregunta a priori) para que su pregunta pueda ser respondida desde el resumen. Si no, su problema puede requerir una memoria de trabajo sustancial. En este caso, los LLM corren el riesgo de fallar en su tarea, particularmente a medida que aumenta el tamaño de la tarea (por ejemplo, número de variables, piezas de información relevantes). No asuma que debido a que la respuesta es computable desde el contexto, un LLM puede calcularla.
¿Qué puedo hacer si mi tarea necesita mucha memoria de trabajo?
Si se da cuenta de que su tarea en cuestión requiere mucha memoria de trabajo y está fallando a menudo, aquí hay una variedad de soluciones que están teóricamente motivadas para aumentar sus posibilidades de buen rendimiento:
- Use un modelo habilitado para el razonamiento (y espero que no se quede sin tokens). Mostramos que teóricamente, los tokens de razonamiento permiten a los LLM para resolver cualquier tarea de Bapo-Hard, sin embargo, el número de tokens de razonamiento necesarios para superar los límites de memoria de trabajo podría ser extremadamente grande (como muestran los experimentos en nuestro documento). Y en la práctica, incluso los mejores modelos de razonamiento todavía comete errores.
- Basado en nuestros resultados teóricos, puede descomponer su problema en uno que tenga más compacto Representación intermedia que es menos probable que exceda los límites de memoria de trabajo. Por ejemplo, en lugar de pedirle al LLM que razone sobre el HTML completo de una página web, proporcione una sintaxis simplificada como el texto renderizado solamente. Del mismo modo, para los escenarios de trapo, podría ser útil Pre-anotado o pre-combine los datos de maneras que hace que la respuesta final sea fácil de obtener de los resúmenes más pequeños.
- Finalmente, puede externalizar piezas de memoria de trabajo a un solucionador o herramienta externa, por ejemplo, en lugar de pedir la opinión de la mayoría directamente, clasificar cada opinión por separado (BAPO, fácil) y luego agregar los resultados en Python en lugar de pedirle a la LLM.
Tenga en cuenta que estas correcciones pueden no funcionar para todas las tareas, especialmente cuando no está claro cómo descomponer las tareas en subtareas intensivas de memoria menos de trabajo. Aquí es donde la investigación futura puede llenar el vacío.
¿Por qué ciertas tareas necesitan mucha memoria de trabajo?
Para los interesados, esta sección profundiza un poco más en la teoría de nuestro trabajo. Para analizar qué tareas necesitan mucha memoria de trabajo, primero desarrollamos un modelo abstracto de cómo los transformadores calculan las soluciones. Luego usamos el modelo para demostrar que una tarea es difícil o fácil.
Como ilustración, considere la tarea de leer un libro largo recientemente lanzado y luego responder una pregunta al respecto. Hay aproximadamente dos estrategias que los humanos pueden usar después de leer. Si uno tiene una gran memoria de trabajo y puede recordar toda la información crucial del libro, puede responder la pregunta directamente de la cabeza de uno. Si uno no lo hace, y solo puede recordar las ideas de paneles generales, uno puede usar esto para encontrar la ubicación aproximada de la información relevante en el libro y volver a las páginas para encontrar la respuesta.
Ahora, considere cómo un LLM basado en transformador procesa la misma tarea. Leerá sobre el contenido del libro y luego calculará una respuesta en la última posición después de que lea la preguntaª. Mientras procesa el contenido del libro, el LLM puede atender algunas ubicaciones relevantes para calcular la respuesta (el equivalente a voltear a través de páginas). O puede usar integridades contextuales del libro para almacenar hechos importantes y responder la pregunta directamente de ellos (el equivalente del retiro). Lo que no puede hacer es volver y leer el libro en su totalidad nuevamente con la pregunta en mente, porque la atención causal permite que la información solo fluya adelante a través de la ventana de contexto.
En este escenario, tanto para los humanos como para la IA, la memoria de trabajo más grande significa que existe una mejor oportunidad de almacenar información que permita calcular la respuesta correcta, particularmente cuando las cosas se complican. De acuerdo, pero ¿cómo definimos más formalmente qué memoria de trabajo necesita para las tareas de LLM? En nuestro artículo, hacemos esto a través del prefijo de atención limitada Oracle (BAPO) modelo.
El modelo BAPO proporciona una caracterización computacional simplificada que podemos analizar teóricamente para demostrar qué problemas requieren más o menos ancho de banda (es decir, memoria de trabajo) para un LLM. Para calcular una respuesta, el modelo BAPO usa (algo así como) las dos estrategias desde arriba:
- El modelo BAPO puede usar un oráculo de prefijo F para enviar a bits de información hacia adelante ↔ memorizar información mientras lee
- El modelo BAPO también puede usar un Oracle de atención gramo atender b Tokens de tokens pasados ↔ Volver a las páginas
Luego definimos el memoria de trabajo Requisitos para una tarea como la combinación de dos parámetros de ancho de banda de BAPO (A, B): el primero se refiere a la cantidad de información que se compone y se transmite (ancho de banda A) y el segundo se refiere a cuánto se puede buscar después del hecho (ancho de banda B). ¿Por qué la memoria de trabajo es la combinación de dos parámetros? Es porque hay una compensación: cuanta más información se haya memorizado, menos información se puede buscar.
Si una tarea tiene requisitos constantes de ancho de banda (es decir, A, B en O (1)), entonces la tarea probablemente no excederá el tamaño de la memoria de trabajo de LLM, pero si una tarea tiene requisitos de ancho de banda que dependen del tamaño de la entrada (por ejemplo, secuencia o longitud del alfabeto), entonces eventualmente excederá los límites de memoria de trabajo y el resultado de la falla.
Conclusiones
Memoria de trabajo es un cuello de botella importante en LLM basados en transformadores. Mucho antes de que la información exceda el tamaño de la ventana del contexto, se excede la capacidad del transformador para representar y comunicar esta información dentro de la ventana. Puntos de referencia de contexto largo actuales Confía fuertemente en problemas de aguja en un haystackque hemos mostrado son BAPO-Easy. Esto significa que el rendimiento actual de referencia no capturará con precisión el rendimiento en el rango completo de tareas de razonamiento de contexto a largo plazo.
Las tareas como el resumen complejo, el rastreo de códigos o la detección de inconsistencia son difíciles para los LLM de acuerdo con nuestro modelo teórico. Pueden contener Subtareas de bapo conduciendo a altos requisitos de memoria de trabajo que a su vez causar fallas en la práctica. Si bien los avances recientes en la longitud de la ventana de contexto han ampliado la aplicabilidad de los LLM, el uso de contextos más largos también aumenta la complejidad de las tareas asociadas. Esto probablemente aumentará la frecuencia de las tareas de BAPO y conducirá a más fallas de LLM.
Describimos una serie de estrategias para reducir los requisitos de la memoria de trabajo de las tareas, comoTokens de razonamiento. Sin embargo, vienen con sus propias limitaciones, por ejemplo, algunas tareas pueden necesitar una gran cantidad de tokens de razonamiento para superar las limitaciones de ancho de banda en la práctica. Esperamos que la investigación futura pueda proporcionar soluciones más generales y tal vez incluso nuevas arquitecturas más allá de los transformadores.
Referencias
Notas al pie
ª Es posible que se pregunte si tener la pregunta primero cambia los requisitos de la memoria de trabajo. No – Vea el documento para más detalles.