DigitableCourses

Открыто и проверяемо

Открытые модели и датасеты

Восемь репозиториев на Hugging Face: зачем каждый нужен, какими числами это подтверждено и чего он не умеет

Тот же список печатает сам агент: digit model --catalog

Скачать и перепроверить можно всё, что перечислено ниже: веса, обучающие данные, набор задач и три базы, которые проиграли замеру. Ссылка без пояснения бесполезна, поэтому у каждой записи стоят три вещи — какую работу она закрывает, какими нашими же числами это подтверждено (с указанием места, где число посчитано) и где проходит её граница.

Раздел «чего не умеет» есть у каждой записи и не бывает пустым. Это не скромность: карточка, в которой перечислены одни сильные стороны, читается как реклама, и вместе с ней перестают верить числам соседних карточек. Где замера нет — так и написано, что нет.

Тот же список печатает сам агент: digit model --catalog. Список общий — страница и команда читают один файл, а не два.

Модели 4

digit-router-0.6b

в поставке

Маршрутизатор Digit, рабочий вариант. Выбирает утилиту и извлекает аргументы. Содержание ответа не пишет.

Зачем она

Относит русский запрос к одной из 14 категорий каталога утилит, а затем по схемам этой категории выдаёт вызов с извлечёнными аргументами — либо отказывается. Это и есть вся её работа: содержание ответа даёт детерминированная утилита, дословная цитата из корпуса или сертификат FTS. Именно поэтому 0,6 млрд параметров хватает — модели не нужно ничего знать.

Чем подтверждено

  • 7,6 % доля ложных ответов на 250 задачах (bf16, greedy, адаптер v3). У необученной базы — 31,2 % карточка модели, § 4.1
  • 91,3 % осознанный отказ на 150 red-team задачах при нуле нечитаемых ответов из 250. У необученной Qwen3-0.6B засчитано 113 отказов, а осознанных из них — 14 (9,3 %): остальные 99 засчитаны за сломанный вывод карточка модели, § 1.2 и § 4.1
  • 93,4 % / 77,0 % точность аргументов и точность выбора инструмента. Аргументы весят больше: утилита с неверным аргументом выдаёт проверенный неверный ответ, а неверно выбранная утилита чаще всего видна ниже по потоку карточка модели, § 1.1 и § 4.1
  • 500 мс против 5 740 мс цикл маршрутизации на тех же весах с `cache_prompt: true` и без него: постоянный префикс промпта здесь дороже любого выбора квантования карточка модели, § 3 (runtime/RESULTS.md § 3)

Чего не умеет

  • Это не ассистент. Загруженная как чат-модель и спрошенная о чём угодно, она выдаёт бессмыслицу, и ни одна метрика выше к такому применению не относится.
  • Ложные ответы не обнулены: 7,6 % при целевом значении ровно ноль, вердикт харнесса — FAIL. Для маршрутизатора без корпуса ноль недостижим: он узнаёт форму ложной посылки, а не проверяет утверждение по источнику.
  • Основной моделью агента работать не может: обучающее окно 40 960 токенов меньше требуемых Digit 64 000, и такая конфигурация отвергается на старте.
  • Под Q4_K_M модель перестаёт отказываться и выдаёт структурно безупречные вызовы с выдуманными аргументами: секрет расшифровки `123456`, которого пользователь не называл, тестовую строку `123-45` из списка `must_not_contain` этой же задачи. Грамматика GBNF этого не ловит — структура вызова безупречна, а грамматика ограничивает форму.
  • imatrix-квант этого размера поставлять нельзя: осознанный отказ падает 90,7 → 85,3 % (p = 0,020). Файл лежит в репозитории только ради воспроизводимости и помечен прямо у себя.
  • v3 — известный регресс против v2 по маршрутизации: 82,0 → 77,0 % и излишний отказ 12 → 21 %. Модель стала осторожнее: берётся за меньшее и точнее делает то, за что взялась.
  • Один seed на конфигурацию и одна эпоха: оценки разброса нет ни у одного числа на карточке.
  • 150 из 400 задач проекта (цитата из корпуса, спецификации FTS, композиция шагов) на этой модели не гонялись вовсе — им нужны корпус и компилятор, которых у маршрутизатора нет.
  • Конкурентная выдача, длинный контекст и многоходовой диалог не измерены: все числа сняты одиночным запросом, greedy, в два шага.
  • На её собственной работе её обыгрывает детерминированный слой правил Digit: 96,0 % против 85,0 % по выбору инструмента и 100,0 % против 90,1 % по аргументам. Цена правил названа там же — излишний отказ 60,4 % против 13,0 % и ровно ноль на спецификациях, композиции шагов и ответах цитатой, поэтому в Digit они стоят каскадом перед моделью, а не вместо неё.
Размер
424 МиБ поставочный Q5_K_M (444 414 752 байта); репозиторий целиком 4,7 ГиБ, 36 файлов
Основа
Qwen/Qwen3-0.6B, адаптеры LoRA (v1, v2, v3) плюс слитые GGUF
Обучение
digit-router-dataset, ревизия v3: 34 709 строк, порождённых детерминированно из JSON-схем каталога 95 утилит; teacher-модель не использовалась
Лицензия
other: apache-2.0-base-gpl-3.0-derived-data — база под Apache-2.0, обучающие данные производны от каталога it-tools под GPL-3.0
Запуск
digit local start --model router

digit-router-1.7b

эталон для сравнения

Тот же маршрутизатор на втрое большей базе. Существует, чтобы ответить, что покупает размер. Ответ: мало.

Зачем она

Тот же двухшаговый маршрутизатор и тот же обучающий датасет, но база втрое крупнее. Публикуется не как продукт, а как измерение: без неё утверждение «основную работу сделали данные, а не размер модели» было бы просто словами.

Чем подтверждено

  • +4 п.п. и +0,6 п.п. всё, что покупает утроение числа параметров на том же датасете: точность маршрутизации и осознанный отказ. Смена датасета на любой базе даёт +8…15 п.п. осознанного отказа. Поэтому поставляется 0.6B карточка модели, § 4.2
  • 92,7 % осознанный отказ адаптера v3 (bf16, 250 задач); ложные ответы 8,8 %, инструмент 82,0 %, аргументы 90,1 % карточка модели, § 4.1
  • 87,0 % / 92,7 % лучшая измеренная точность инструмента и аргументов во всём проекте — квант v2 Q5_K_M этой модели карточка модели, § 3
  • 81,3 % против 70,7 % засчитанный и осознанный отказ у НЕобученной Qwen3-1.7B при 21 нечитаемом ответе из 250. У необученной 0.6B тот же разрыв — 75,3 % против 9,3 %: модель втрое большего размера умеет сказать «не знаю» и без дообучения карточка модели, § 1.2

Чего не умеет

  • В поставку не входит: продукт возит 0.6B, и это выбор по измерению, а не по цене.
  • Ложные ответы 8,8 % при цели ровно ноль — тот же вердикт FAIL, что и у младшей модели.
  • GGUF-кванты ревизии v3 в репозитории лежат, но НЕ измерены вовсе: таблица деградации снята на весах v2 и на v3 не переносится.
  • Предупреждение про imatrix с младшей модели сюда не переносится — здесь он не вредит. Но и рекомендацией это не становится: разница 1,4 п.п. на 150 задачах — это две задачи, и это один прогон.
  • Один seed, одна эпоха, 150 из 400 задач проекта не гонялись, конкурентность и многоходовость не измерены — всё то же, что у 0.6B.
Размер
1 200 МиБ поставочный Q5_K_M ревизии v2; репозиторий целиком 13,3 ГиБ, 36 файлов
Основа
Qwen/Qwen3-1.7B, адаптеры LoRA (v1, v2, v3) плюс слитые GGUF
Обучение
digit-router-dataset, те же ревизии v1, v2 и v3
Лицензия
other: база под Apache-2.0, обучающие данные производны от каталога it-tools под GPL-3.0

digit-router-experiments

отрицательный результат

Три проигравшие базы. Отрицательный результат, выложенный на равных с победившим.

Зачем она

Три русскоязычные базы, обученные тем же LoRA и теми же гиперпараметрами, что и победившая: Vikhr-Qwen-2.5-0.5b, RuadaptQwen2.5-1.5B и QVikhr-3-1.7B. Ожидание «русская модель — значит русский токенизатор» замером не подтвердилось. Репозиторий существует, чтобы следующий, кто возьмётся за русскоязычную базу, не потратил те же недели заново.

Чем подтверждено

  • ровно ноль выигрыш по fertility у всех моделей Vikhr над их собственной базой Qwen — не «небольшой», а ноль: цифры совпадают до четвёртого знака, потому что словарь не менялся карточка модели, § 1.2 и § 2
  • −28,1 % единственный настоящий выигрыш — у ruadapt: 1,686 токена на слово против 2,344 на русской прозе, при словаре даже меньшего размера (145 152 против 151 669). Все 14 схем шага 2 занимают 5 394 токена вместо 6 486 карточка модели, § 2 и § 3.2
  • 85,7 % против 92,7 % чем ruadapt платит за экономию токенов: точность аргументов, худшая среди крупных моделей, — при лучшей в наборе маршрутизации 88,0 %. В проверяемой архитектуре аргумент весит больше маршрута карточка модели, § 3 и § 3.3
  • 15,6 против 12,8 доля ложных ответов у QVikhr-3 против его собственной базы Qwen3-1.7B при одинаковом обучении; аргументы 90,1 против 92,7. Русский слой SFT ухудшает всё, что здесь важно карточка модели, § 3.1

Чего не умеет

  • Ни квантования, ни латентности, ни памяти, ни поведения в работе — не измерено вовсе: эти адаптеры никогда не сливались и не конвертировались в GGUF.
  • Сравнение снято на датасете ревизии v1. На v2 и v3 его никто не переснимал, поэтому неизвестно, переживает ли ранжирование лучший датасет.
  • Две модели из исходного списка (Vikhr-Qwen-2.5-1.5B и Vikhr-Llama-3.2-1B) не обучались вовсе — аргумент против них косвенный.
  • Один seed на базу. Разница в 1–2 п.п. — это 2–5 задач из 250, и она неотличима от случайности.
Размер
375 МиБ, 28 файлов — только адаптеры PEFT, логи обучения и гиперпараметры
Основа
Vikhrmodels/Vikhr-Qwen-2.5-0.5b-Instruct, RefalMachine/RuadaptQwen2.5-1.5B-instruct, Vikhrmodels/QVikhr-3-1.7B-Instruction-noreasoning
Обучение
digit-router-dataset, ревизия v1 — намеренно, чтобы отделить базу от данных
Лицензия
лицензии баз не переобъявляются и берутся у источника; обучающие данные производны от каталога tools-core под GPL-3.0

specgen-qwen3-1.7b

в поставке

Генератор спецификаций FTS. Пишет исполняемую спецификацию по русскому заданию — без справочника в контексте.

Зачем она

Адаптер LoRA, который превращает задание на обычном русском в документ FTS, проходящий настоящий компилятор: разбор, типизацию, исполнение авторских примеров и доказательство объявленной теоремы. Нужен там, где ответ — не факт из текста и не результат вычисления, а вывод из правил предметной области.

Чем подтверждено

  • 150/150 против 79/150 на одном фиксированном срезе из 150 документов: обученный адаптер БЕЗ справочника в промпте против необученной Qwen3-14B (nf4) СО справочником на 2 235 токенов. Та же необученная Qwen3-1.7B со справочником — 15/150, без справочника — 0/150. Текущая ревизия 2 даёт на этом срезе 149/150, и расхождение в один документ названо в источнике карточка модели, § 3
  • 1 499/1 500 (99,9 %) доля выдач, проходящих компилятор, на полном holdout из 1 500 документов — greedy, без грамматики, без справочника карточка модели, § 2.1
  • 1 392/1 500 (92,8 %) доля выдач, которые ОЗНАЧАЮТ то, что просили. Это отдельная проверка: задание читается независимо в ту же модель, которую компилятор строит из документа, и они сравниваются поэлементно. Чувствительность самой проверки измерена — 8 600 из 8 600 намеренных порч поймано карточка модели, § 2.1 и § 11
  • 453/453 теоремы, доказанные и сертифицированные внутри прошедших документов; каждый сертификат независимо перепроверен по своему дайджесту. У прежней ревизии адаптера на тех же заданиях — 324/453 карточка модели, § 2.1

Чего не умеет

  • Гейт ручается за форму, а не за смысл. Разрыв между 99,9 % и 92,8 % — это и есть цена: документ может компилироваться, типизироваться, исполнять свои примеры и доказывать свою теорему, означая при этом не то, что просили словами.
  • Названный регресс: необязательные поля — 21/108 у прежней ревизии против 2/108 у текущей. Причина найдена точно и не сглажена: из 11 000 обучающих строк ни одна не помечает двух необязательных полей сразу, а 2 000 добавленных строк заострили неверное ожидание. Если задание помечает больше одного поля необязательным — проверьте выдачу руками, компилятор здесь не поможет.
  • Только русский. Английская поверхность языка не покрыта ни одной обучающей строкой.
  • Не чат-модель: она пишет спецификации, и ничего другого от неё ждать нельзя.
  • Один seed на ревизию, только greedy. Сэмплирование, декодирование под грамматикой и латентность GGUF не измерены.
  • Прежний результат «24/25 у 14B» из более раннего прогона НЕ воспроизвёлся (79/150) и точкой отсчёта не является: сырая запись того прогона не сохранилась, гипотеза о причине не проверена, и два числа сравнивать нельзя.
Размер
адаптер 133 МиБ; репозиторий целиком 2,6 ГиБ, 42 файла — два адаптера, ревизии 2 и прежней ревизии 1
Основа
Qwen/Qwen3-1.7B; адаптер 133 МиБ, GGUF 1,2 ГиБ
Обучение
fts-specgen-dataset, ревизия 2: 11 000 строк, LoRA r=32 α=64, две эпохи, отброшено 0 строк
Лицензия
BSD-2-Clause на адаптеры; в файлах GGUF база содержится, поэтому они являются перераспространением Qwen3-1.7B под Apache-2.0
Запуск
digit local start --model specgen

Датасеты 4

digit-router-dataset

обучающие данные

Обучающий датасет маршрутизатора. Четверть строк — отказы, и это главное, что в нём есть.

Зачем она

Обучающие данные обоих маршрутизаторов: двухшаговые диалоги над каталогом из 95 утилит в 14 категориях. Порождены детерминированно из JSON-схем каталога, teacher-модель не использовалась — значит, воспроизводимы из семени целиком.

Чем подтверждено

  • 9,3 % → 90,7 % осознанный отказ на 150 red-team задачах: необученная Qwen3-0.6B против неё же, обученной на этих данных. На 1.7B — 70,7 % → 91,3 % карточка датасета, § 4
  • 23,8 % доля отказов в корпусе: OUT_OF_SCOPE 7,0 %, MISSING_ARGUMENT 9,9 %, FALSE_PREMISE 6,9 %. Без них модель выучивает мета-правило «ответ существует всегда» и начинает сочинять недостающий аргумент карточка датасета, § 2 и § 4
  • +0,6 п.п. против +8…15 п.п. что даёт смена базы и что — смена датасета. Основную работу сделали данные, а не размер модели карточка датасета, § 4

Чего не умеет

  • Применим только с нашим каталогом из 95 утилит. Вне его идентификаторы инструментов, имена аргументов и значения перечислений просто неверны: это не общий корпус function-calling.
  • Формулировки шаблонные. Косвенные и разговорные просьбы недопредставлены, обогащения учителем не делалось.
  • Только русский.
  • Доля отказов 23,8 % — проектный параметр (полоса 15–25 %), а не найденный факт: её выбрали, а не обнаружили.
  • Цена отказов названа в том же источнике: точность аргументов падает на 3–5 п.п.
Размер
34 709 строк (32 982 обучающих и 1 727 проверочных), 383 МиБ, 9 файлов
Основа
порождён из каталога утилит tools-core: 95 инструментов, 14 категорий, медиана 128 запросов на инструмент
Обучение
на нём обучены digit-router-0.6b и digit-router-1.7b
Лицензия
other: gpl-3.0-derived-catalogue — схемы производны от it-tools под GPL-3.0; распространяется ли copyleft на порождённые данные, в отрасли не решено

hard-negatives-ru

обучающие данные

Трудные отрицательные примеры для поиска. Фрагменты, которые косинус не отличает от нужных.

Зачем она

Пары «вопрос — почти подходящий фрагмент» для русского корпуса: фрагмент похож на нужный, но не отвечает. Такой класс ошибок порогом по эмбеддингу не отделяется в принципе, и датасет существует, чтобы это было видно на числах, а не на словах.

Чем подтверждено

  • 0,0036 разрыв между медианой косинуса негативов (0,8351) и позитивов (0,8387) на 8 470 машинно-проверенных парах. Порог по эмбеддингу этот класс ошибок разделить не может карточка датасета, § 1
  • 0,847 → 0,060 recall при нулевом ложном принятии, пересчитанный на независимо построенном наборе близнецов: прежняя цифра оказалась свойством набора с лёгкими негативами, а не системы карточка датасета, § 5
  • 265 случаев (3,4 %) сколько раз проверен сам судья: он утверждал ответ, который не смог процитировать дословно, и эти пары выброшены, а не зачтены. На программной стадии до того отсеяно 42,9 % негативов и 45,3 % позитивов карточка датасета, § 3 и § 4

Чего не умеет

  • Ни одна модель на этих парах ещё не обучена. Утверждения «с ними реранкер станет лучше» здесь НЕТ — потому что оно не измерено.
  • Естественность формулировок не проверялась ничем: вопросы порождены моделью и проверены на подстроки, а не на то, что так спрашивают люди.
  • Вид `param` доминирует (120 из 349) и снимается проще прочих, поэтому сводная доля ложных принятий оптимистична.
  • Вид `adjacent_section` собрал всего 146 строк из примерно 1 963 кандидатов, хотя на практике это один из самых опасных видов промаха.
  • Вид `negated_claim` (1 858 строк) держится в основном на судье, а не на программной проверке.
Размер
11 935 строк, из них ядро — 8 470 пар (6 665 негативов и 1 805 позитивов), 69 МиБ, 15 файлов
Основа
кандидаты порождены Qwen3-32B-AWQ и прошли четыре стадии проверки, из них две программные
Обучение
ни одна модель на этих парах пока не обучена
Лицензия
other: решение владельца корпуса ещё не принято; до него считайте набор опубликованным для изучения

digit-eval-tasks

набор задач для замеров

Набор задач для замеров. Линейка, которой сняты числа выше. И признание, что как независимая линейка она уже негодна.

Зачем она

400 задач на русском: 250 основных (маршрутизация, цитата из корпуса, спецификация FTS, композиция шагов) и 150 red-team, где правильный ответ — отказ. Главная метрика — доля ложных ответов в проверяемом режиме, и цель у неё ровно ноль.

Чем подтверждено

  • 1,0 % против 3,0 % доля ложных ответов системы на этом наборе и на действительно независимом. Разрыв и есть цена того, что набор использовался при разработке гейтов карточка датасета, «По-русски»
  • шесть кандидатов сколько задач выброшено, потому что записанная в поле `verification` команда grep всё-таки нашла ответ в корпусе. Это зафиксировано в наборе, а не замолчано карточка датасета, § 3
  • 250 + 150 состав: маршрутизация 100, цитата 80, спецификация 40, композиция 30; red-team — вне корпуса 80, недостающий аргумент 40, ложная посылка 30 карточка датасета, § 2

Чего не умеет

  • Как независимый измеритель набор уже непригоден: он использовался при разработке гейтов, и разрыв 1,0 % против 3,0 % — прямое тому число. Публикуется ради воспроизводимости, а не как бенчмарк.
  • В каждой задаче есть поле `canary` с GUID. Обучаете модель — отфильтруйте эти документы; перераспространяете — не вырезайте поле, иначе загрязнение станет необнаружимым.
  • 150 из 400 задач требуют корпуса и компилятора FTS, поэтому ни на одном маршрутизаторе они не гонялись.
Размер
400 задач, 1,0 МиБ, 11 файлов
Основа
контроли (echo-refuse, echo-answer, oracle, голая модель) построены ДО оптимизации метрики
Обучение
не обучающий набор; каждая цитата — побайтовая подстрока названного файла, отсутствие ответа доказано записанной в задаче командой grep
Лицензия
other: решение владельца корпуса ещё не принято

fts-specgen-dataset

обучающие данные

Обучающие данные генератора FTS и негативный контроль. К корпусу приложены 4 400 намеренно испорченных документов и вердикт ворот по каждому.

Зачем она

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

Чем подтверждено

  • 4 030 из 4 400 (91,6 %) доля намеренных порч, которые ловят ворота. Опубликовано данными, а не таблицей: число пересчитывается из самих строк карточка датасета, § 3
  • 60,2 %, 72,8 %, 74,5 % три вида порчи, которые ловятся хуже прочих: перевёрнутый морфизм, сдвиг порога, незакрытая «ёлочка». Остальные восемь видов ловятся на 100 % карточка датасета, § 3
  • 416 документов (3,96 %) сколько документов ревизия 2 исправила после того, как смысловая проверка нашла расхождение между заданием и спецификацией. Дефект назван, измерен и починен, а не переписан задним числом карточка датасета, § 0

Чего не умеет

  • Ворота не ловят смысловую ошибку в синтаксически безупречном документе — и это показано на самих данных, а не оговорено в примечании.
  • Ни один обучающий документ ревизии 1 не совмещал утилиту и теорему одновременно (1 185 только с теоремой, 6 451 только с утилитой). Дыру нашла модель, обученная на этом корпусе, — ровно тот случай, когда данные обещали больше, чем в них было.
  • Ни одна строка не помечает двух необязательных полей сразу — отсюда названный регресс адаптера на этом шаблоне. Строк с двумя такими полями пока нет, и поможет ли их добавление, никто не проверял.
  • Только русский, и только одна его разновидность: канцелярская постановка задачи. Косвенных и эллиптических просьб в корпусе нет.
  • Всё синтетическое. 33 шаблона и 62 области — это плотнее исходного корпуса, но это не «весь язык».
Размер
10 500 документов (9 000 обучающих и 1 500 holdout) плюс 4 400 испорченных для негативного контроля, 135 МиБ, 14 файлов
Основа
33 структурных шаблона и 62 предметные области; holdout разбит на три страты — новая область 501, новый шаблон 501, шаблон и область сразу 498
Обучение
на нём обучен specgen-qwen3-1.7b
Лицензия
BSD-2-Clause