He estado pensando un poco en el aprendizaje continuo, especialmente en lo que respecta a agentes de larga duración (y a hacer algunos experimentos de juguete con MLX). El statu quo de la compactación prompt junto con subagentes recursivos es en realidad notablemente efectivo. Parece que podemos llegar bastante lejos con esto. (Compactación por prompt = cuando la ventana de contexto se acerca a la llenidad, el modelo genera un resumen más corto y luego empieza desde cero usando el resumen. Subagentes recursivos = descomponer tareas en tareas más pequeñas para tratar ventanas de contexto finitos) Los subagentes recursivos probablemente siempre serán útiles. Pero la compactación por prompt parece un truco un poco ineficiente (aunque muy efectivo). Conozco otras dos alternativas: 1. ajustes finos en línea y 2. Técnicas basadas en la memoria. Ajuste fino en línea: entrenar algunos adaptadores LoRA con datos que el modelo encuentra durante el despliegue. En general, soy menos optimista con esto. Aparte de los retos de ingeniería de desplegar modelos / adaptadores personalizados para cada caso de uso o 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 apuntes. Una forma de evitar esto es mantener un conjunto de datos mixto con lo nuevo y lo antiguo. Pero esto se complica bastante rápido. - ¿Cómo son los datos para el ajuste fino online? ¿Generas pares Q/A basándote en el dominio de destino para entrenar el modelo? También tienes el problema de priorizar 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 parece mucho más a cómo los humanos retienen la información: "úsala o piérdela". Solo necesitas unas pocas cosas para que esto funcione: - Una política de desahucio/retención. Algo como "guarda un recuerdo si se ha accedido al menos una vez en los últimos 10.000 tokens". - La política debe ser computable de forma eficiente - Un lugar para que el modelo almacene y acceda a la memoria a largo plazo. Quizá una caché KV poco accesible sería suficiente. Pero para acceder eficientemente a una gran memoria, una estructura de datos jerárquica podría ser mejor.