Recursive Language Models: как обрабатывать 10M+ токенов, превращая промпт в среду исполнения (часть 1 из 2)
Стандартные LLM уперлись в жесткий компромисс между длиной контекста, точностью ("context rot") и стоимостью инференса. Попытка "скормить" модели книгу или огромную кодовую базу целиком часто приводит к тому, что она забывает середину или галлюцинирует. Исследователи из MIT и команда Prime Intellect предложили решение — **Recursive Language Models (RLM)**.
Суть подхода меняет парадигму: вместо того чтобы загружать текст в контекстное окно трансформера, RLM рассматривает промпт как внешнюю **среду исполнения** (переменную в Python REPL), к которой модель обращается через код.
Архитектура: Контекст как переменная
В основе RLM лежит идея, что "Root Model" (корневая модель, например, GPT-5 или Qwen3) вообще не видит входной текст напрямую.
1. Весь входной массив данных (хоть 10 миллионов токенов) загружается в Python REPL как строковая переменная.
2. Корневая модель получает системный промпт с инструкциями и доступом к инструментам.
3. Модель пишет код для анализа этой переменной: делает срезы (slicing), использует Regex для поиска или вызывает вспомогательные функции.
Ключевой инструмент — функция llm_query (или llm_batch в реализации Prime Intellect). Она позволяет корневой модели вызвать "суб-модель" (например, более дешевую GPT-5-mini) для обработки конкретного куска текста.
Как это выглядит на уровне логики:
Вместо попытки охватить все внимание сразу, RLM превращает задачу в проблему синтеза программ. Модель пишет скрипт, который:
• Сканирует длину входных данных.
• Разбивает текст на чанки.
• Рекурсивно вызывает себя или меньшие модели для суммаризации каждого чанка.
• Агрегирует результаты в финальный ответ.
Примерная логика работы внутри REPL:
# Модель не читает data целиком, а исследует её
def process_large_context(data_var):
# Шаг 1: "Peek" - быстрый взгляд на начало
intro = data_var[:2000]
# Шаг 2: Поиск нужных секций через Regex
import re
matches = [m.start() for m in re.finditer(r"Error pattern", data_var)]
results = []
# Шаг 3: Рекурсивный вызов суб-модели для каждого совпадения
for pos in matches:
snippet = data_var[pos:pos+1000]
# llm_query вызывает суб-агента для анализа куска
analysis = llm_query(snippet, instruction="Extract error root cause")
results.append(analysis)
return summarize(results)
Реализация от Prime Intellect: RLMEnv
Команда Prime Intellect пошла дальше теоретического пейпера MIT и создала RLMEnv — среду, интегрированную в их стек верификации.
• Разделение обязанностей: Главная RLM имеет доступ только к Python REPL. Тяжелые инструменты (веб-поиск, чтение файлов) отданы на откуп суб-LLM.
• Параллелизм: Функция llm_batch позволяет корневой модели запускать множество запросов параллельно, что критично для скорости.
• Изоляция: Результат пишется в специальную переменную answer. Это предотвращает засорение контекста корневой модели промежуточным "мусором" от инструментов.
Результаты бенчмарков: Цифры впечатляют
Исследователи протестировали RLM на задачах с разной вычислительной сложностью. Самый показательный пример — OOLONG Pairs. Это задача квадратичной сложности, требующая попарной агрегации данных из огромного контекста.
• GPT-5 (Direct Call): F1 score = 0.04. Модель просто не справляется, контекст "размывается".
• Агенты-суммаризаторы: F1 score ~0.01.
• RLM (Full): F1 score = 58.00.
• RLM (REPL only, без рекурсии): F1 score = 43.93.
Источник
Переводы видео, саммари новостей про AI
Стандартные LLM уперлись в жесткий компромисс между длиной контекста, точностью ("context rot") и стоимостью инференса. Попытка "скормить" модели книгу или огромную кодовую базу целиком часто приводит к тому, что она забывает середину или галлюцинирует. Исследователи из MIT и команда Prime Intellect предложили решение — **Recursive Language Models (RLM)**.
Суть подхода меняет парадигму: вместо того чтобы загружать текст в контекстное окно трансформера, RLM рассматривает промпт как внешнюю **среду исполнения** (переменную в Python REPL), к которой модель обращается через код.
Архитектура: Контекст как переменная
В основе RLM лежит идея, что "Root Model" (корневая модель, например, GPT-5 или Qwen3) вообще не видит входной текст напрямую.
1. Весь входной массив данных (хоть 10 миллионов токенов) загружается в Python REPL как строковая переменная.
2. Корневая модель получает системный промпт с инструкциями и доступом к инструментам.
3. Модель пишет код для анализа этой переменной: делает срезы (slicing), использует Regex для поиска или вызывает вспомогательные функции.
Ключевой инструмент — функция llm_query (или llm_batch в реализации Prime Intellect). Она позволяет корневой модели вызвать "суб-модель" (например, более дешевую GPT-5-mini) для обработки конкретного куска текста.
Как это выглядит на уровне логики:
Вместо попытки охватить все внимание сразу, RLM превращает задачу в проблему синтеза программ. Модель пишет скрипт, который:
• Сканирует длину входных данных.
• Разбивает текст на чанки.
• Рекурсивно вызывает себя или меньшие модели для суммаризации каждого чанка.
• Агрегирует результаты в финальный ответ.
Примерная логика работы внутри REPL:
# Модель не читает data целиком, а исследует её
def process_large_context(data_var):
# Шаг 1: "Peek" - быстрый взгляд на начало
intro = data_var[:2000]
# Шаг 2: Поиск нужных секций через Regex
import re
matches = [m.start() for m in re.finditer(r"Error pattern", data_var)]
results = []
# Шаг 3: Рекурсивный вызов суб-модели для каждого совпадения
for pos in matches:
snippet = data_var[pos:pos+1000]
# llm_query вызывает суб-агента для анализа куска
analysis = llm_query(snippet, instruction="Extract error root cause")
results.append(analysis)
return summarize(results)
Реализация от Prime Intellect: RLMEnv
Команда Prime Intellect пошла дальше теоретического пейпера MIT и создала RLMEnv — среду, интегрированную в их стек верификации.
• Разделение обязанностей: Главная RLM имеет доступ только к Python REPL. Тяжелые инструменты (веб-поиск, чтение файлов) отданы на откуп суб-LLM.
• Параллелизм: Функция llm_batch позволяет корневой модели запускать множество запросов параллельно, что критично для скорости.
• Изоляция: Результат пишется в специальную переменную answer. Это предотвращает засорение контекста корневой модели промежуточным "мусором" от инструментов.
Результаты бенчмарков: Цифры впечатляют
Исследователи протестировали RLM на задачах с разной вычислительной сложностью. Самый показательный пример — OOLONG Pairs. Это задача квадратичной сложности, требующая попарной агрегации данных из огромного контекста.
• GPT-5 (Direct Call): F1 score = 0.04. Модель просто не справляется, контекст "размывается".
• Агенты-суммаризаторы: F1 score ~0.01.
• RLM (Full): F1 score = 58.00.
• RLM (REPL only, без рекурсии): F1 score = 43.93.
Источник
Переводы видео, саммари новостей про AI