Встречайте SDialog: открытый инструментарий Python для создания, моделирования и оценки диалоговых агентов на основе LLM

Разработчики могут надёжно генерировать, контролировать и проверять большие объёмы реалистичных диалоговых данных без необходимости каждый раз создавать собственный стек моделирования. Встречайте SDialog — открытый инструментарий Python для генерации синтетических диалогов, их оценки и интерпретируемости, охватывающий полный диалоговый конвейер — от определения агентов до анализа. Он стандартизирует представление диалога и предоставляет инженерам единый рабочий процесс для создания, моделирования и проверки диалоговых агентов на основе LLM.

В основе SDialog лежит стандартная схема диалога с импортом и экспортом в формате JSON. На основе этой схемы библиотека предоставляет абстракции для персоналий, агентов, оркестраторов, генераторов и наборов данных. С помощью нескольких строк кода разработчик настраивает бэкенд LLM через sdialog.config.llm, определяет персоналии, создаёт объекты Agent и вызывает генератор, такой как DialogGenerator или PersonaDialogGenerator, для синтеза полных диалогов, готовых к обучению или оценке.

Многоагентное моделирование на основе персоналий

Многоагентное моделирование на основе персоналий — это ключевая функция. Персоналии кодируют стабильные черты, цели и стили общения. Например, врач и пациент могут быть определены как структурированные персоналии, а затем переданы в PersonaDialogGenerator для создания консультаций, соответствующих определённым ролям и ограничениям. Эта настройка используется не только для диалогов, ориентированных на задачи, но и для моделирования сценариев, где инструментарий управляет потоками и событиями на протяжении многих ходов.

Оркестрация

SDialog становится особенно интересным на уровне оркестрации. Оркестраторы — это компонуемые компоненты, которые находятся между агентами и базовым LLM. Простая схема — agent = agent | orchestrator — превращает оркестрацию в конвейер. Классы, такие как SimpleReflexOrchestrator, могут проверять каждый ход и внедрять политики, обеспечивать соблюдение ограничений или запускать инструменты на основе полного состояния диалога, а не только последнего сообщения.

Оценка

Инструментарий также включает в себя богатый стек оценки. Модуль sdialog.evaluation предоставляет метрики и компоненты LLM в качестве судьи, такие как LLMJudgeRealDialog, LinguisticFeatureScore, FrequencyEvaluator и MeanEvaluator. Эти оценщики могут быть подключены к DatasetComparator, который принимает эталонные и кандидатные наборы диалогов, выполняет вычисление метрик, агрегирует оценки и создаёт таблицы или графики. Это позволяет командам сравнивать разные подсказки, бэкенды или стратегии оркестрации с помощью согласованных количественных критериев вместо только ручной проверки.

Интерпретируемость и управление

Отличительной чертой SDialog является механистическая интерпретируемость и управление. Inspector в sdialog.interpretability регистрирует PyTorch forward hooks на указанных внутренних модулях, например model.layers.15.postattentionlayernorm, и записывает активации каждого токена во время генерации. После проведения беседы инженеры могут индексировать этот буфер, просматривать формы активации и искать системные инструкции с помощью таких методов, как find_instructs. DirectionSteerer затем превращает эти направления в управляющие сигналы, чтобы модель могла быть отклонена от поведения, такого как гнев, или подталкиваться к желаемому стилю путём модификации активаций во время определённых токенов.

NVIDIA представляет TiDAR: гибридная диффузионно-авторегрессионная архитектура для высокопроизводительного вывода LLM

Исследователи NVIDIA предлагают TiDAR — гибридную языковую модель на уровне последовательности, которая составляет токены с помощью диффузии и выбирает их авторегрессивно за один прямой проход. Основная цель этого исследования — достичь качества авторегрессии, значительно увеличив при этом пропускную способность за счёт использования свободных слотов токенов на современных графических процессорах.

Мотивация системы, свободные слоты токенов и проблема качества

Авторегрессионные трансформеры декодируют по одному токену за шаг. При реалистичных размерах пакетов декодирование обычно ограничено памятью, поскольку задержка определяется загрузкой весов и кэша KV, а не операциями с плавающей запятой. Увеличение количества токенов во входной последовательности в пределах области, ограниченной памятью, не сильно меняет задержку, поскольку используются одни и те же параметры и кэш.

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

Однако диффузионные LLM, такие как Dream и Llada, всё ещё уступают по качеству сильным авторегрессионным базовым показателям. Когда эти модели декодируют несколько токенов за один шаг, они выбирают каждый токен независимо от маргинального распределения, учитывая зашумленный контекст. Эта независимость токенов внутри шага снижает связность на уровне последовательности и фактическую правильность, а наилучшее качество обычно достигается при декодировании только одного токена за шаг. На практике это устраняет большую часть теоретического преимущества в скорости диффузионного декодирования.

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

Архитектура, двухрежимный бэкенд и маски внимания

На высоком уровне TiDAR разделяет последовательность на каждом этапе генерации на три раздела:
* префикс принятых токенов;
* токены, составленные на предыдущем шаге;
* маскированные токены, которые будут содержать предварительно составленные кандидаты на следующем шаге.

Модель применяет структурированную маску внимания к этой последовательности. Префиксные токены участвуют в причинно-следственных связях, что поддерживает цепную факторизацию следующего предсказания токена, как в стандартном авторегрессионном трансформаторе. Токены в области разработки и области маски участвуют в двунаправленном взаимодействии внутри блока, что обеспечивает диффузионный стиль маргинальных прогнозов по многим позициям параллельно.

Генерация в одном прямом проходе

Генерация формулируется как самоспекулятивный процесс, который выполняется за один шаг оценки сетевой функции.

Шаг 1: TiDAR кодирует префикс причинно-следственным образом и выполняет один шаг диффузии по позициям маски, создавая блок составленных токенов.

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

Принятые токены добавляются в префикс, а их записи KV кэша сохраняются. Отклоненные токены удаляются, а их записи кэша удаляются. Разработка и проверка используют один и тот же бэкенд и маску внимания, поэтому вычисления диффузии используют свободные слоты токенов в том же прямом проходе.

Модель поддерживает два режима выборки, доверяя авторегрессионным предсказаниям или доверяя предсказаниям диффузии, которые контролируют, насколько сильно окончательный образец следует за каждой головой. Эксперименты показывают, что для модели 8B доверие предсказаниям диффузии часто полезно, особенно в математических тестах, при сохранении качества авторегрессии за счёт выборки с отклонением.

На системном уровне расположение внимания и количество токенов на шаг фиксированы. TiDAR предварительно инициализирует маску внимания блока и повторно использует фрагменты этой маски на этапах декодирования с помощью Flex Attention. Архитектура поддерживает точный KV кэш, как Block Diffusion. Реализация никогда не перевычисляет записи KV для принятых токенов и не вводит дополнительных гиперпараметров времени вывода.

Рецепт обучения и размеры моделей

TiDAR создаётся путём непрерывного предварительного обучения на Qwen2.5 1.5B и Qwen3 4B и 8B базовых моделях. Вариант 1.5B обучен на 50B токенах с размерами блоков 4, 8 и 16. Вариант 8B обучен на 150B токенах с размером блока 16. Оба используют максимальную длину последовательности 4096, расписание обучения косинусом, распределённый Adam, BF16 и модифицированную структуру Megatron LM с Torchtitan на графических процессорах NVIDIA H100.

Оценка охватывает задачи кодирования HumanEval, HumanEval Plus, MBPP, MBPP Plus, математические задачи GSM8K и Minerva Math, фактические и здравые задачи MMLU, ARC, Hellaswag, PIQA и Winogrande, все реализованы через lmevalharness.

Результаты по качеству и пропускной способности

На генеративных задачах кодирования и математических задачах TiDAR 1.5B конкурентоспособен со своим авторегрессионным аналогом, генерируя в среднем 7,45 токенов на прямой проход модели. TiDAR 8B несёт лишь минимальные потери в качестве относительно Qwen3 8B при повышении эффективности генерации до 8,25 токенов на прямой проход.

На тестах знаний и рассуждений, оценённых по правдоподобию, TiDAR 1.5B и 8B соответствуют общему поведению сопоставимых авторегрессионных моделей, поскольку правдоподобие вычисляется с помощью чистой причинной маски. Диффузионные базовые показатели, такие как Dream, Llada и Block Diffusion, требуют оценщиков правдоподобия на основе Монте-Карло, которые являются более дорогими и менее сопоставимыми напрямую.

В бенчмарках настенных часов на одном графическом процессоре H100 с размером пакета 1 TiDAR 1.5B достигает среднего ускорения в 4,71 раза в пропускной способности декодирования относительно Qwen2.5 1.5B, измеренного в токенах в секунду. TiDAR 8B достигает ускорения в 5,91 раза по сравнению с Qwen3 8B, сохраняя при этом сопоставимое качество.

По сравнению с диффузионными LLM TiDAR последовательно превосходит Dream и Llada как по эффективности, так и по точности, при условии, что диффузионные модели декодируют 1 токен за прямой проход для достижения наилучшего качества. По сравнению со спекулятивными фреймворками, такими как EAGLE-3, и обученным Block Diffusion, TiDAR доминирует на границе эффективности и качества, преобразуя больше токенов за прямой проход в реальные токены в секунду благодаря унифицированному бэкенду и параллельной разработке и проверке.

Ключевые выводы

* TiDAR — это гибридная архитектура на уровне последовательности, которая составляет токены с помощью диффузии и выбирает их авторегрессивно за один проход модели, используя структурированную маску внимания, которая смешивает причинно-следственные и двунаправленные регионы.
* Дизайн явно использует свободные слоты токенов на графических процессорах, добавляя токены, составленные с помощью диффузии, и маскированные токены к префиксу, чтобы многие позиции обрабатывались за один прямой проход с практически неизменной задержкой, улучшая плотность вычислений во время декодирования.
* TiDAR реализует самоспекулятивную генерацию, тот же бэкенд как составляет кандидатные токены с помощью одношаговой диффузии, так и проверяет их с помощью авторегрессионных логитов и выборки с отклонением, что позволяет избежать накладных расходов отдельной модели-черновика классического спекулятивного декодирования.
* Непрерывное предварительное обучение на Qwen2.5 1.5B и Qwen3 4B и 8B с полной диффузионной целью позволяет TiDAR достичь уровня качества авторегрессии на задачах кодирования, математики и знаний, сохраняя при этом точную оценку правдоподобия через чистую причинную маскировку при необходимости.
* В настройках с одним графическим процессором, размером пакета 1, TiDAR выдаёт примерно в 4,71 раза больше токенов в секунду для модели 1.5B и в 5,91 раза для модели 8B, чем их авторегрессионные базовые показатели, превосходя при этом диффузионные LLM, такие как Dream и Llada, и сокращая разрыв в качестве с сильными авторегрессионными моделями.

1. Какие ключевые функции и возможности предоставляет инструментарий SDialog для разработчиков, работающих с диалоговыми агентами на основе LLM?

Ответ: SDialog — это открытый инструментарий Python, который позволяет разработчикам генерировать, контролировать и проверять большие объёмы реалистичных диалоговых данных. Он охватывает полный диалоговый конвейер — от определения агентов до анализа. В основе SDialog лежит стандартная схема диалога с импортом и экспортом в формате JSON. Библиотека предоставляет абстракции для персоналий, агентов, оркестраторов, генераторов и наборов данных.

2. Какие преимущества предлагает гибридная архитектура TiDAR по сравнению с традиционными авторегрессионными и диффузионными моделями?

Ответ: TiDAR — это гибридная архитектура на уровне последовательности, которая сочетает в себе преимущества диффузии и авторегрессии. Она позволяет составлять токены с помощью диффузии и выбирать их авторегрессивно за один проход модели. Это позволяет достичь качества авторегрессии, значительно увеличив при этом пропускную способность за счёт использования свободных слотов токенов на современных графических процессорах.

3. Какие метрики и компоненты используются в SDialog для оценки диалоговых агентов?

Ответ: Инструментарий SDialog включает в себя богатый стек оценки. Модуль sdialog.evaluation предоставляет метрики и компоненты LLM в качестве судьи, такие как LLMJudgeRealDialog, LinguisticFeatureScore, FrequencyEvaluator и MeanEvaluator. Эти оценщики могут быть подключены к DatasetComparator, который принимает эталонные и кандидатные наборы диалогов, выполняет вычисление метрик, агрегирует оценки и создаёт таблицы или графики.

4. Какие задачи использовались для оценки качества и пропускной способности TiDAR?

Ответ: Оценка TiDAR охватывает задачи кодирования HumanEval, HumanEval Plus, MBPP, MBPP Plus, математические задачи GSM8K и Minerva Math, фактические и здравые задачи MMLU, ARC, Hellaswag, PIQA и Winogrande. Эти задачи реализованы через lmevalharness.

5. Какие выводы можно сделать о производительности и качестве TiDAR на основе предоставленных результатов?

Ответ: TiDAR демонстрирует высокую производительность и качество на генеративных задачах кодирования и математических задачах. Он конкурентоспособен со своим авторегрессионным аналогом, генерируя в среднем 7,45 токенов на прямой проход модели. TiDAR 8B несёт лишь минимальные потери в качестве относительно Qwen3 8B при повышении эффективности генерации до 8,25 токенов на прямой проход. На тестах знаний и рассуждений TiDAR 1.5B и 8B соответствуют общему поведению сопоставимых авторегрессионных моделей.

Источник