Схема пайплайна NVIDIA Open-SWE-Traces: от сырых трасс SWE-агентов к SFT-датасету с фильтрацией по токен-бюджету и метрикам

NVIDIA Open-SWE-Traces: SFT-датасет для дообучения LLM-агентов

ИИ-инструменты 29 июня 2026 г.

Инженер, работающий над дообучением языковой модели для задач программирования, сталкивается с проблемой: где взять качественные примеры работы агента с кодом? Генерация синтетических данных вручную — дорого и плохо масштабируется. Реальные трассы SWE-агентов, записанные во время решения задач, содержат готовые паттерны поведения, но извлекать из них структурированные данные для supervised fine-tuning (SFT) — отдельная инженерная задача.

В конце июня 2026 года на MarkTechPost вышло практическое руководство, в котором разобрана методология работы с датасетом NVIDIA Open-SWE-Traces. В нём показано, как из сырых трасс агентов получить готовый SFT-датасет: от парсинга многопользовательских диалогов до фильтрации по токен-бюджетам и метрикам использования инструментов. Репозиторий NVIDIA Open-SWE-Traces на GitHub содержит сами трассы, а статья — воспроизводимый пайплайн их обработки.

Для команды, которая дообучает LLM под автоматизацию разработки, это не просто новость, а готовый шаблон работы. Вопрос в том, как его адаптировать под свои задачи и какие подводные камни учесть до начала экспериментов.

Что содержит датасет NVIDIA Open-SWE-Traces и как он устроен

Open-SWE-Traces — это набор записей (трасс) работы SWE-агентов над задачами из бенчмарка SWE-bench. Каждая трасса — это последовательность действий агента: чтение файлов, поиск по коду, редактирование, запуск тестов, генерация патча. Датасет опубликован на Hugging Face под именем nvidia/Open-SWE-Traces и доступен для потоковой загрузки без скачивания всего объёма локально.

В руководстве используются две конфигурации агентов — OpenHands и SWEagent — и две модели: MiniMax-M25 и Qwen3.5-122B. Это не случайный выбор: комбинации агент-модель дают разное качество трасс, и это важно для последующей фильтрации.

Каждая запись в датасете содержит: - исходный промпт с задачей; - полную траекторию действий агента в формате многошагового диалога; - финальный патч (изменения кода); - метаданные: статус решения (решено/не решено), язык программирования, использованные инструменты.

Для SFT-датасета нужны не все записи подряд. Ключевая идея руководства — отфильтровать только те трассы, которые: - привели к успешному решению задачи; - укладываются в лимит токенов (в примере — 32 000 токенов на одну запись); - содержат валидный патч; - относятся к целевым языкам программирования.

Как устроен пайплайн обработки: от сырой трассы к SFT-примеру

Руководство предлагает конкретный код на Python, который можно запустить в Google Colab. Пайплайн состоит из нескольких этапов, каждый из которых решает практическую проблему.

Парсинг траекторий. Сырые данные содержат сообщения в разных форматах: строки, JSON, списки с вложенными структурами. Функция normalize_trajectory приводит их к единому плоскому списку сообщений. Это необходимо, потому что модели дообучаются на последовательность «промпт — ответ», а не на сырой JSON.

Извлечение патчей. Финальный патч — это diff-файл, который показывает, какие строки кода были изменены. Из патча можно извлечь метрики: количество изменённых строк, затронутые файлы, язык программирования. Эти метрики используются для фильтрации: слишком маленький патч может означать, что агент не сделал实质性 работы, слишком большой — что решение избыточно.

Подсчёт токенов. Для SFT критично, чтобы каждая запись укладывалась в контекстное окно модели. В руководстве используется библиотека tiktoken для подсчёта токенов в нормализованной траектории. Если запись превышает лимит (32 000 токенов), она отбрасывается. Это практическое ограничение: на этапе дообучения длинные примеры либо обрезаются, либо приводят к перерасходу памяти.

Анализ использования инструментов. Для каждой трассы подсчитывается, сколько раз агент вызывал разные инструменты: чтение файла, поиск, редактирование, запуск тестов. Это позволяет отсеять трассы, где агент использовал только один инструмент (например, только чтение) — такие записи не научат модель разнообразному поведению.

Какие метрики и фильтры определяют качество SFT-датасета

Руководство вводит несколько ключевых параметров, которые команда должна настроить под свою задачу. В таблице ниже — основные фильтры и их влияние на итоговый датасет.

Что меняется Почему важно для бизнеса Что проверить
Лимит токенов на запись (MAX_SFT_TOKENS) Влияет на стоимость дообучения: больше токенов — дороже шаг, меньше — риск потерять полезные длинные трассы Какое контекстное окно у вашей модели; сколько вы готовы платить за один шаг обучения
Требование resolved-статуса (SFT_REQUIRE_RESOLVED) Отсеивает неудачные попытки, но может сократить датасет в 2-3 раза Есть ли у вас достаточно успешных трасс для обучения; нужны ли примеры неудач для contrastive learning
Фильтр по языкам (SFT_LANGUAGES) Позволяет сфокусироваться на Python, JavaScript или другом языке Какие языки реально используются в ваших задачах; есть ли дисбаланс в датасете
Минимальный размер патча Отсеивает тривиальные изменения (например, исправление одной опечатки) Какая минимальная сложность задачи нужна для вашего сценария
Разнообразие инструментов Обеспечивает, что модель научится не только читать код, но и редактировать, тестировать Какие инструменты использует ваш production-агент; совпадают ли они с набором из трасс

В руководстве также показано, как построить DataFrame с метриками по каждой трассе: длина траектории, количество сообщений, размер патча, язык, статус решения. Это позволяет визуально оценить распределение данных и принять решение о порогах фильтрации.

Что может пойти не так: ограничения методологии

Руководство — это tutorial, а не production-пайплайн. Несколько моментов требуют проверки перед тем, как переносить методологию в рабочий процесс.

Зависимость от конкретных агентов и моделей. Трассы собраны для OpenHands и SWEagent с двумя моделями. Если ваша команда использует другую архитектуру агента или модель, распределение трасс (длина, успешность, использование инструментов) может отличаться. Фильтры, подобранные для одной комбинации, могут не подойти для другой.

Отсутствие данных о качестве fine-tuning. В статье не приводятся результаты: насколько выросла точность модели после дообучения на отфильтрованном датасете. Без этого невозможно оценить, окупается ли сложность фильтрации. Возможно, более простой подход (взять все успешные трассы без фильтрации) даёт сопоставимый результат.

Риск переобучения на паттерны конкретного бенчмарка. SWE-bench имеет свою специфику: задачи, формат патчей, окружение. Модель, дообученная на этих трассах, может хорошо решать задачи из SWE-bench, но хуже работать на реальных репозиториях. Это классическая проблема переносимости.

Стоимость обработки. Парсинг, нормализация и подсчёт токенов для тысяч трасс требуют вычислительных ресурсов. В руководстве используется Google Colab, но для production-объёмов (сотни тысяч записей) потребуется более мощная инфраструктура.

Что проверить на этой неделе: практический чек-лист

Если ваша команда рассматривает использование Open-SWE-Traces для SFT, вот пять шагов, которые можно сделать без крупных вложений.

  1. Загрузите датасет и посмотрите на распределение. Запустите потоковую загрузку из Hugging Face (load_dataset("nvidia/Open-SWE-Traces", streaming=True)) и постройте гистограммы длины трасс, размера патчей, статусов решения. Это займёт час и даст понимание, сколько данных реально пройдёт фильтры.
  2. Проверьте, какие языки программирования представлены. Если ваша команда работает на TypeScript или Rust, а в датасете доминирует Python, ценность трасс для вашего сценария может быть низкой.
  3. Оцените токен-бюджет. Возьмите 100 случайных успешных трасс, подсчитайте токены через tiktoken. Если средняя длина превышает 32 000 токенов, придётся либо увеличивать лимит (и стоимость), либо обрезать трассы.
  4. Сравните с вашими production-трассами. Если у вас уже есть логи работы SWE-агента, сравните распределение инструментов и длину диалогов. Если они сильно отличаются, фильтры из руководства могут не подойти.
  5. Проверьте лицензию и условия использования. Репозиторий NVIDIA Open-SWE-Traces на GitHub содержит информацию о лицензии. Убедитесь, что использование трасс для коммерческого дообучения разрешено.

Источники

Генерация изображения

  • Модель: flux-schnell
  • Провайдер: replicate

Что почитать дальше

Теги