He estado pensando un poco sobre el aprendizaje continuo recientemente, especialmente en lo que se refiere a agentes de larga duración (y realizando algunos experimentos simples con MLX). El statu quo de la compactación de prompts junto con sub-agentes recursivos es en realidad notablemente efectivo. Parece que podemos avanzar bastante con esto. (Compactación de prompts = cuando la ventana de contexto se acerca a estar llena, el modelo genera un resumen más corto y luego comienza de nuevo utilizando el resumen. Sub-agentes recursivos = descomponer tareas en tareas más pequeñas para lidiar con ventanas de contexto finitas) Los sub-agentes recursivos probablemente siempre serán útiles. Pero la compactación de prompts parece un poco un hack ineficiente (aunque altamente efectivo). Hay otras dos alternativas que conozco: 1. ajuste fino en línea y 2. técnicas basadas en memoria. Ajuste fino en línea: entrenar algunos adaptadores LoRA con datos que el modelo encuentra durante el despliegue. En general, soy menos optimista sobre esto. Aparte de los desafíos de ingeniería de desplegar modelos/adaptadores personalizados para cada caso de uso/usuario, hay algunos problemas fundamentales: - El ajuste fino en línea es inherentemente inestable. Si entrenas con datos en el dominio objetivo, puedes destruir catastróficamente capacidades que no estás apuntando. Una forma de evitar esto es mantener un conjunto de datos mixto con los nuevos y los antiguos. Pero esto se complica bastante rápido. - ¿Cómo se ven los datos para el ajuste fino en línea? ¿Generas pares de Q/A basados en el dominio objetivo para entrenar el modelo? También tienes el problema de priorizar la información en la mezcla de datos dada la capacidad finita. Técnicas basadas en memoria: básicamente una política para mantener memoria útil y descartar lo que no se necesita. Esto se siente mucho más como los humanos retienen información: "úsalo o piérdelo". Solo necesitas algunas cosas para que esto funcione: - Una política de desalojo/retención. Algo como "mantén una memoria si ha sido accedida al menos una vez en los últimos 10k tokens". - La política necesita ser computable de manera eficiente. - Un lugar para que el modelo almacene y acceda a la memoria a largo plazo. Tal vez un caché KV de acceso esporádico sería suficiente. Pero para un acceso eficiente a una gran memoria, una estructura de datos jerárquica podría ser mejor.