Тринадцать файлов существовали только на диске ПК владельца, в рабочей копии, отставшей от 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>
13 KiB
Задание 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 действует без изменений
Строка в отчёте появляется только после того, как модель отработала на стенде.
Для каждой строки обязательны:
- Абсолютный путь к файлу GGUF на сервере.
- Размер файла в байтах из
stat, а не из карточки модели. - Контрольная сумма первых мегабайт или
sha256. - Сырые тайминги из поля
timingsответаllama-server, не пересчитанные вручную. - Имя сборки из
general.nameметаданных GGUF, а не из названия каталога.
Модель не скачалась, не запустилась или не влезла — строки в таблице нет, вместо неё раздел «не проверено» с причиной. Это полноценный результат, он принимается; выдуманные числа — нет.
P0-2. Замер на 64К обязателен
Это главное отличие от A40 и главная причина, по которой задание вообще нужно.
- Мерить на 64К контекста, а не только на 32К. Это порог отбора у Hermes: модель, не держащая 64К, в работу не идёт, и замер на 32К на вопрос владельца не отвечает.
- Если модель на 64К не помещается или деградирует — так и записать, с числами.
- Длинный контекст у MoE под особым подозрением. DeepSeek-Coder-V2-Lite, тоже MoE с малым числом активных, по замеру A40 на 32К проваливается до 3,35 ток/с и уходит в таймаут. Проверить целенаправленно, не повторяется ли это у Qwen3-Coder и Tiel: если повторяется, вся привлекательность MoE на этом железе иллюзорна, и это важнейший вывод задания.
- Дополнительно снять 32К — для сопоставимости с таблицей A40.
P0-3. Одинаковые условия
- Режим мышления выключен у всех, как в A40.
- Квантование Q4_K_M, где доступно; у Tiel его нет — взят
UD-Q4_K_S, и это оговорить в отчёте отдельной строкой. --parallel 1, посторонних запросов во время замера нет.- Размер контекста указывать при каждом числе. В A40 его забыли указать вовсе, и числа оказалось не с чем соотнести.
- 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 выдумка прошла первый проход целиком. Здесь она — главный предмет проверки.
- Для каждой строки убедиться, что файл существует: пройти
statпо всем путям и сверить размеры с таблицей. - Ни одной записи
COMPLETEDбез файла в результатах. - Проверить выборочно тайминги: повторить два-три замера и убедиться, что цифры воспроизводятся.
- Убедиться, что замер на 64К действительно сделан, а не подменён замером на 32К.
- Проверить, что при каждом числе указан контекст, и что VRAM снята по процессу.
- Убедиться, что файлы A44 не тронуты.
- Побочные изменения объяснить.
- Пропущенный пункт назвать пропущенным.
Ограничения
- Выполнять после A44: видеокарта одна.
- Служебные юниты
qwen-coderиqwen-compressorпосле прогонов вернуть в рабочее состояние: владелец пользуется сервером ежедневно. - Конфигурацию хаба не менять.
- Учётные данные и
~/.hermes/agy_profiles/не трогать. - Место на диске контролировать, раздел не забить.
- Версию
0.1.1не поднимать, тег не создавать. - Правило честности без исключений.
Критерии приёмки
- Ветка в
origin,git statusчист. - Три кандидата прогнаны либо честно объявлены недоступными с причиной.
- Для каждой строки: путь, размер в байтах, контрольная сумма,
general.name, сырые тайминги. - Для каждой модели есть замер на 64К контекста; где не влезло или деградировало — с числами.
- Проверено, повторяется ли у MoE провал на длинном контексте, замеченный у DeepSeek.
- При каждом числе указан размер контекста; VRAM снята по процессу.
- Отклонение по квантованию у Tiel оговорено.
- Отчёт в отдельном файле;
BENCHMARK_REPORT.mdиbenchmark_results.jsonне изменены. - Служебные модели на портах 8081 и 8082 возвращены в рабочее состояние.
- Конфигурация владельца не изменена.
ruff check .чисто; релизный гейт не ухудшен.- Отчёт:
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.