hermes-hub/agents/inbox/2026-08-31-A45-moe-coder-candidates.md
Hermes Team 8b67f0dadb docs(agents): вернуть в репозиторий постановки A42-A56 и отчёт A30
Тринадцать файлов существовали только на диске ПК владельца, в рабочей
копии, отставшей от origin/main на 122 коммита. Их реализация и тесты
давно влиты: tests/test_a42_provider_connect.py,
test_a49_subagents_skills_memory.py, test_a51_hub_controls_hermes.py,
test_a52_local_models_supervisor_dual.py, test_a55_account_connection.py,
test_a56_context_compression.py и другие. Постановок, объясняющих, что
эти тесты обязаны доказывать, в репозитории не было.

Правило записано в agents/AGENTS.md: задание живёт в репозитории, а не в
переписке и не в личных папках на диске.

A48, A50 и A54 не переносятся: они уже есть на origin под другими именами,
содержимое совпадает с точностью до перевода строки в конце файла.

Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
2026-09-03 18:16:35 +07:00

13 KiB
Raw Blame History

Задание A45: три новых кандидата в локальные кодеры

Дата поступления

2026-08-31

База

origin/main (ff303b5).

git fetch origin --prune
git checkout -b antigravity/a45-moe-candidates origin/main

В main напрямую не пушить.

Порядок исполнения

Два прохода: Flash исполняет замеры, Pro проводит аудит. Пункт P0-5 написан для аудитора.

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

Файлы A44 не трогать. benchmarks/BENCHMARK_REPORT.md и benchmarks/benchmark_results.json правит A44; здесь пишется отдельный отчёт (см. P0-4). Стенд benchmarks/benchmark_suite.py используется как есть, без правок.


Задача

Владелец нашёл на huggingface.co новые модели и спрашивает, есть ли что-то интересное. Ревьюер отобрал три кандидата и проверил их пригодность к этому железу. Нужно измерить.

Что проверено ревьюером — заново не выяснять

Размеры получены через API репозиториев HuggingFace, а не из карточек моделей.

Порядок Репозиторий Файл Размер
1 unsloth/Qwen3-Coder-30B-A3B-Instruct-GGUF Qwen3-Coder-30B-A3B-Instruct-Q4_K_M.gguf 17,28 ГиБ
2 bartowski/Qwen2.5-Coder-32B-Instruct-GGUF Qwen2.5-Coder-32B-Instruct-Q4_K_M.gguf 18,49 ГиБ
3 peculiar-ragdoll/Tiel-Coder-35B-A3B-GGUF Tiel-Coder-35B-A3B-UD-Q4_K_S.gguf 19,46 ГиБ

Пересобирать llama.cpp не нужно:

сборка на сервере:  build 10597, commit 95b8e33e1
libllama.so содержит: qwen3moe, qwen35moe, deepseek2, granite

Место: свободно 256 ГБ, три модели занимают 55 ГиБ.

Почему именно эти три и в этом порядке

Qwen3-Coder-30B-A3B — главная. MoE: 30 миллиардов всего, 3 миллиарда активных. На V100 производительность упирается в пропускную способность памяти, поэтому скорость определяется активными параметрами, а память — общими. Ожидается скорость малой модели при качестве тридцатимиллиардного кодера. Это ровно та гипотеза, ради которой A38 брала Nemotron и до замера не довела. 12,8 млн скачиваний, 933 отметки — сборка обкатанная.

По размеру садится на место нынешнего кодера: 17,28 ГиБ против 17,67 у Qwen3.8-27B, то есть под контекст остаётся столько же.

Qwen2.5-Coder-32B — про потолок качества. Плотная, старшая в семействе нынешнего лидера. Числилась кандидатом ещё в A40 и до замера не дошла. Скорости от неё не ждут: плотные 32B на этом железе должны идти примерно вдвое медленнее 14B. Вопрос к ней один — покупается ли за потерю скорости реальный прирост качества. 14B даёт 75% на стенде.

Tiel-Coder-35B-A3B — третья, и только после двух первых. Тоже MoE с тремя активными, первое место в трендах среди кодеров. Но выложена 31 августа, автор незнакомый, 145 отметок против 933 у Qwen. Не обкатана.

Ожидания ревьюера — это не измерения

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


P0-1. Правило из A40 действует без изменений

Строка в отчёте появляется только после того, как модель отработала на стенде.

Для каждой строки обязательны:

  1. Абсолютный путь к файлу GGUF на сервере.
  2. Размер файла в байтах из stat, а не из карточки модели.
  3. Контрольная сумма первых мегабайт или sha256.
  4. Сырые тайминги из поля timings ответа llama-server, не пересчитанные вручную.
  5. Имя сборки из general.name метаданных GGUF, а не из названия каталога.

Модель не скачалась, не запустилась или не влезла — строки в таблице нет, вместо неё раздел «не проверено» с причиной. Это полноценный результат, он принимается; выдуманные числа — нет.

P0-2. Замер на 64К обязателен

Это главное отличие от A40 и главная причина, по которой задание вообще нужно.

  1. Мерить на 64К контекста, а не только на 32К. Это порог отбора у Hermes: модель, не держащая 64К, в работу не идёт, и замер на 32К на вопрос владельца не отвечает.
  2. Если модель на 64К не помещается или деградирует — так и записать, с числами.
  3. Длинный контекст у MoE под особым подозрением. DeepSeek-Coder-V2-Lite, тоже MoE с малым числом активных, по замеру A40 на 32К проваливается до 3,35 ток/с и уходит в таймаут. Проверить целенаправленно, не повторяется ли это у Qwen3-Coder и Tiel: если повторяется, вся привлекательность MoE на этом железе иллюзорна, и это важнейший вывод задания.
  4. Дополнительно снять 32К — для сопоставимости с таблицей A40.

P0-3. Одинаковые условия

  1. Режим мышления выключен у всех, как в A40.
  2. Квантование Q4_K_M, где доступно; у Tiel его нет — взят UD-Q4_K_S, и это оговорить в отчёте отдельной строкой.
  3. --parallel 1, посторонних запросов во время замера нет.
  4. Размер контекста указывать при каждом числе. В A40 его забыли указать вовсе, и числа оказалось не с чем соотнести.
  5. VRAM мерить по процессу: nvidia-smi --query-compute-apps=pid,used_memory, а не общую занятость карты. В A40 столбец собрал занятость вместе с соседней резидентной моделью и стал бесполезен.

P0-4. Что измерять и куда писать

Как в A40: генерация и обработка промпта в токенах в секунду, видеопамять по процессу, время холодной загрузки, прохождение 12 задач стенда, поведение на длинном контексте.

Отчёт — новый файл benchmarks/BENCHMARK_MOE_CANDIDATES.md и отдельный файл результатов. BENCHMARK_REPORT.md и benchmark_results.json не трогать: их правит A44, и одновременная запись даст конфликт.

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

P0-5. Аудит вторым проходом

В A38 выдумка прошла первый проход целиком. Здесь она — главный предмет проверки.

  1. Для каждой строки убедиться, что файл существует: пройти stat по всем путям и сверить размеры с таблицей.
  2. Ни одной записи COMPLETED без файла в результатах.
  3. Проверить выборочно тайминги: повторить два-три замера и убедиться, что цифры воспроизводятся.
  4. Убедиться, что замер на 64К действительно сделан, а не подменён замером на 32К.
  5. Проверить, что при каждом числе указан контекст, и что VRAM снята по процессу.
  6. Убедиться, что файлы A44 не тронуты.
  7. Побочные изменения объяснить.
  8. Пропущенный пункт назвать пропущенным.

Ограничения

  • Выполнять после A44: видеокарта одна.
  • Служебные юниты qwen-coder и qwen-compressor после прогонов вернуть в рабочее состояние: владелец пользуется сервером ежедневно.
  • Конфигурацию хаба не менять.
  • Учётные данные и ~/.hermes/agy_profiles/ не трогать.
  • Место на диске контролировать, раздел не забить.
  • Версию 0.1.1 не поднимать, тег не создавать.
  • Правило честности без исключений.

Критерии приёмки

  1. Ветка в origin, git status чист.
  2. Три кандидата прогнаны либо честно объявлены недоступными с причиной.
  3. Для каждой строки: путь, размер в байтах, контрольная сумма, general.name, сырые тайминги.
  4. Для каждой модели есть замер на 64К контекста; где не влезло или деградировало — с числами.
  5. Проверено, повторяется ли у MoE провал на длинном контексте, замеченный у DeepSeek.
  6. При каждом числе указан размер контекста; VRAM снята по процессу.
  7. Отклонение по квантованию у Tiel оговорено.
  8. Отчёт в отдельном файле; BENCHMARK_REPORT.md и benchmark_results.json не изменены.
  9. Служебные модели на портах 8081 и 8082 возвращены в рабочее состояние.
  10. Конфигурация владельца не изменена.
  11. ruff check . чисто; релизный гейт не ухудшен.
  12. Отчёт: START_HEAD, FINAL_HEAD, origin/main, git status, X passed / Y skipped / Z failed. На origin/main сейчас 491 passed.

Главное

Нынешний лидер по замерам — Qwen2.5-Coder-14B: 75% качества при 55,9 ток/с. Вопрос владельца в том, есть ли что-то заметно лучше. Qwen3-Coder-30B-A3B — самый обоснованный ответ, какой можно дать не запуская: три активных миллиарда на памяти-узком-месте должны дать скорость малой модели при качестве большой. Но ровно это же обещал DeepSeek, а на длинном контексте провалился до 3,35 ток/с. Поэтому замер на 64К здесь важнее самой таблицы скоростей.

Порядок сдачи

Передать точный FINAL_COMMIT_SHA.