Hola Node Congress. Mi nombre es Jamal Legaro. Soy un ingeniero de software senior en Netflix, trabajando en la plataforma de experimentación, y bienvenidos a mi charla, Rompiendo el Techo del Contexto, Modelos de Lenguaje Recursivos en TypeScript, o Cómo Procesar Documentos 100 Veces Más Grandes que la Ventana de Contexto de tu LOM Usando LangRep. Hablemos más sobre el problema con las ventanas de contexto. Si usas modelos de lenguaje grandes en herramientas como Claw, Gemini, Claw to Code, puedes notar que cuando eliges tus modelos, típicamente tienen un límite en su ventana de contexto, usualmente entre 128,000 a 1 millón de tokens. Pero una cosa que no te dicen es que el rendimiento realmente va a degradarse a medida que comienzas a pasar por esos tokens. Hay un efecto de pérdida en el medio que básicamente dice que a medida que comienzas a llenar esa ventana de contexto, y te acercas al límite, tu modelo solo puede recordar eficientemente lo que está al principio o al final del contexto. Y todo en el medio básicamente se pierde o se olvida, o es más difícil de encontrar. Y lo que eso hace es causar una degradación en el rendimiento real de tu modelo de lenguaje grande. Entonces, algunos ejemplos de dónde esto puede suceder es, digamos, si tienes documentación de API, estoy pensando en múltiples documentos a través de múltiples aplicaciones, y estás tratando de juntar alguna información para averiguar cómo funciona el sistema en un sentido más amplio, o estás tratando de encontrar algún tipo de cambios disruptivos en las muchas notas de lanzamiento, haciendo algo de depuración o triaje. Y debido a esta pérdida en el medio, probablemente te perderás los cambios que estás buscando, porque el contexto es demasiado grande. Esto también sucede para bases de código muy grandes. Imagina si tuvieras toneladas de documentos de postmortems de incidentes que estás tratando de revisar, y luego muchas especificaciones técnicas. La idea es que cuanto más grande sea el texto, más se convierte en un problema. Entonces, una forma de evitar esto es usar algo llamado un modelo de lenguaje recursivo. Y esto proviene de algunos estudiantes e investigadores en MIT. Y la idea es bastante simple. Lo que dicen es que, en lugar de poner todo el documento en tu prompt para inflar ese contexto, o prácticamente ocupar mucho de tu contexto, lo que puedes hacer es descomponer recursivamente ese texto en piezas más pequeñas, y luego tener un modelo orquestador que escriba código determinista, y tenga sub, diré sub, digamos, engendros de sí mismo o copias de sí mismo, que realicen esa operación de búsqueda de texto. Y luego devolvemos algunos metadatos y una versión condensada del texto que el orquestador más grande puede usar para realmente tomar una decisión. Entonces, antes de profundizar en eso, probablemente sea un bocado, probablemente mucho que desempacar, pero vamos a pasar por ello poco a poco, ¿verdad? Así que vamos a desglosarlo en piezas más pequeñas para que podamos entenderlo. Así que primero veamos los dos enfoques diferentes. Entonces, el documento habla de uno llamado el andamio estándar. Eso es a lo que estás acostumbrado hoy. Básicamente, si estás usando Cloud Code o usando Codex, y estás mirando tu prompt, usualmente verás como en la esquina inferior derecha o en algún lugar dentro del terminal o dentro de esa interfaz, cuánto contexto has usado realmente en una sesión. Y una vez que llegas a cierto nivel, se auto-contactará por ti y básicamente comprimirá toda esa información en una versión más pequeña de sí misma para devolverte algo más de contexto, pero aún entender lo que estás trabajando dentro del sistema. Eso es un poco problemático porque lo que realmente sucede es que comienzas a perder algo de información porque esa compresión en sí misma es con pérdida, ¿verdad? No estás manteniendo todo. Ahora, el avance aquí, y lo que el documento propone, es que hay un nuevo tipo de algoritmo o arquitectura que podemos usar llamado un modelo de lenguaje recursivo, o un RLM. Y básicamente lo que hace, tiene tres cosas principales que quieres tener, como manejadores simbólicos, programación simbólica y recursión simbólica. Y luego hablaremos de eso. Pero el concepto principal aquí, si miras el pseudocódigo aquí, la idea aquí es que si tienes un entorno, ¿verdad?
, en el que tu modelo de números grandes está trabajando, realmente no hay necesidad de almacenar tu estado en el modelo en sí.
Comments