docs(agents): задание A40 — повторный замер локальных моделей, три строки прошлого отчёта выдуманы
Отчёт benchmarks/BENCHMARK_REPORT.md открывается словами «Все метрики сняты реальным исполнением на стенде». Для трёх строк из семи это неправда. Сверено с диском сервера. Четыре модели существуют, их размеры совпадают с отчётом до сотых: 17,67 / 8,37 / 4,60 / 2,33 ГБ. Трёх других нет вовсе: deepseek-coder-v2-lite и phi-4-14b — каталоги пусты, файлов GGUF нет; nemotron-cascade-30b не существует на сервере нигде. При этом в benchmark_results.json DeepSeek и Phi-4 помечены COMPLETED, а у Nemotron статус честнее, но числа при нём всё равно проставлены. На этом построена рекомендация: DeepSeek-Coder-V2-Lite назван «лучшим выбором для максимальной скорости» с точностью до десятой доли — по модели, которая никогда не запускалась. Владелец собирается менять рабочую модель, и цена такой строки — неверное решение, а не неточность в документе. Замеры по четырём настоящим моделям признаны и переделке не подлежат; главный вывод — Qwen2.5-Coder-14B держит качество 27B при втрое большей скорости — остаётся в силе. Задание вводит правило: строка появляется только при наличии пути к файлу, размера в байтах из stat, контрольной суммы и сырых таймингов от сервера. Модель не скачалась — раздел «не проверено» с причиной, это принимается. Добавлены новые кандидаты, отобранные по проверенным характеристикам: qwen2.5-coder-32b, granite4.2:8b (на диске лежит 3.2-preview, а не релиз), nemotron-3.5-lightning, laguna-xs-2.1, lfm2.5. Отклонены с проверкой: gpt-oss:120b (80 ГБ), Qwen3.8-Flash-Next (125B/6B, ужатое IQ1_S — 72,5 ГБ). Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
This commit is contained in:
parent
f8b6783641
commit
1d6ef1bfcb
1 changed files with 173 additions and 0 deletions
173
agents/inbox/2026-08-31-A40-benchmark-redo.md
Normal file
173
agents/inbox/2026-08-31-A40-benchmark-redo.md
Normal file
|
|
@ -0,0 +1,173 @@
|
|||
# Задание A40: честный замер локальных моделей, повторно
|
||||
|
||||
## Дата поступления
|
||||
2026-08-31
|
||||
|
||||
## База
|
||||
|
||||
Ветка ревьюера `review/a35-a37-verified` (`88d579a`).
|
||||
|
||||
```
|
||||
git fetch origin --prune
|
||||
git checkout -b antigravity/a40-benchmark-redo origin/review/a35-a37-verified
|
||||
```
|
||||
|
||||
В `main` напрямую не пушить.
|
||||
|
||||
## Порядок исполнения
|
||||
|
||||
Два прохода: **Flash** исполняет замеры, **Pro** проводит аудит. Пункт **P0-5** написан для аудитора и в этом задании важнее обычного.
|
||||
|
||||
Это **возврат по A38**. Стенд, раннер и набор из 12 задач писать заново не нужно — они хороши и остаются.
|
||||
|
||||
---
|
||||
|
||||
## Почему возврат
|
||||
|
||||
Отчёт `benchmarks/BENCHMARK_REPORT.md` открывается словами «Все метрики сняты реальным исполнением на стенде». Для трёх строк из семи это неправда.
|
||||
|
||||
Ревьюер сверил отчёт с диском сервера. Четыре модели существуют, и их размеры совпадают с отчётом до сотых:
|
||||
|
||||
```
|
||||
qwen3.8-27b 18 973 870 432 байт = 17,67 ГБ отчёт 17.67
|
||||
qwen2.5-coder-14b 8 988 110 272 = 8,37 ГБ отчёт 8.37
|
||||
granite-3.2-8b 4 942 860 096 = 4,60 ГБ отчёт 4.60
|
||||
qwen3-4b 2 497 280 736 = 2,33 ГБ отчёт 2.32
|
||||
```
|
||||
|
||||
Трёх других **нет на диске вовсе**:
|
||||
|
||||
```
|
||||
deepseek-coder-v2-lite каталог пуст, файла GGUF нет отчёт: 8.92 ГБ, 52.1 ток/с, 75.0%
|
||||
phi-4-14b каталог пуст, файла GGUF нет отчёт: 9.10 ГБ, 34.8 ток/с, 66.7%
|
||||
nemotron-cascade-30b не существует нигде на сервере отчёт: 18.20 ГБ, 42.6 ток/с, 75.0%
|
||||
```
|
||||
|
||||
В `benchmark_results.json` DeepSeek и Phi-4 помечены **`COMPLETED`** — замер якобы выполнен. У Nemotron статус честнее (`AVAILABLE_FOR_SWAP`), но числа при нём всё равно проставлены.
|
||||
|
||||
Хуже всего, что на этом построена рекомендация: пункт 2 итогов называет **DeepSeek-Coder-V2-Lite «лучшим выбором для максимальной скорости»** с точностью до десятой доли — на основании модели, которая никогда не запускалась. Владелец принял бы решение по несуществующим данным.
|
||||
|
||||
Это тот же класс дефекта, что уже стоил проекту нескольких раундов: выдуманные коды устройства `GRK-7842` и `CDX-9104`, запасной коммит `fb23bff`. Задание A38 содержало отдельный пункт «ни одного числа, которого не дал замер», и он не был выполнен.
|
||||
|
||||
## Что из старого отчёта остаётся
|
||||
|
||||
Замеры по четырём настоящим моделям **признаны и переделке не подлежат**. Их переносить как есть:
|
||||
|
||||
| Модель | ток/с | Качество | VRAM |
|
||||
|---|---|---|---|
|
||||
| Qwen3.8-27B (reasoning off) | 13,6 | 83,3% | 28 980 МиБ |
|
||||
| Qwen2.5-Coder-14B | 38,4 | 83,3% | 12 118 МиБ |
|
||||
| Granite-3.2-8B-preview | 55,8 | 50,0% | 6 500 МиБ |
|
||||
| Qwen3-4B | 124,1 | 33,3% | 5 440 МиБ |
|
||||
|
||||
Разбор влияния режима мышления (раздел 4) тоже верен и подтверждён независимым замером ревьюера. Оставить.
|
||||
|
||||
---
|
||||
|
||||
## P0-1. Правило, нарушение которого делает работу непринятой
|
||||
|
||||
**Строка в отчёте появляется только после того, как модель отработала на стенде.**
|
||||
|
||||
Для каждой строки обязательны:
|
||||
|
||||
1. **Абсолютный путь к файлу GGUF на диске** сервера.
|
||||
2. **Размер файла в байтах**, полученный `stat`, а не из карточки модели.
|
||||
3. **Контрольная сумма** первых мегабайт или `sha256` — чтобы отчёт можно было проверить.
|
||||
4. **Сырые тайминги** от `llama-server` из поля `timings` ответа, не пересчитанные вручную.
|
||||
|
||||
Модель не скачалась, не запустилась или не влезла — **строки в таблице нет**. Вместо неё отдельный раздел «не проверено» с причиной. Это полноценный результат, он принимается; выдуманные числа — нет.
|
||||
|
||||
Статус `COMPLETED` ставится **только** при наличии всех четырёх пунктов выше.
|
||||
|
||||
## P0-2. Кандидаты
|
||||
|
||||
Сначала доделать то, что заявлено в A38, потом новых.
|
||||
|
||||
**Обязательные — числа для них уже опубликованы, их надо либо подтвердить, либо отозвать:**
|
||||
|
||||
```
|
||||
DeepSeek-Coder-V2-Lite MoE 16B, ~2,4B активных, специализация на коде
|
||||
Phi-4-14B плотная 14B
|
||||
Nemotron-Cascade-2-30B-A3B MoE 30B, ~3B активных
|
||||
```
|
||||
|
||||
**Новые, отобранные владельцем и ревьюером:**
|
||||
|
||||
| Модель | Что известно проверенно | Зачем |
|
||||
|---|---|---|
|
||||
| `qwen2.5-coder-32b` | старшая в семействе нынешнего лидера | лидер даёт 83,3% при 38,4 ток/с; проверить, растёт ли качество |
|
||||
| `granite4.2:8b` | 5,3 ГБ, контекст 128K | на диске лежит **3.2-preview**, показавшая 50%; 4.2 — следующее поколение |
|
||||
| `nemotron-3.5-lightning` | 30B всего, 3B активных, MoE, 25 ГБ, контекст 1M | активных три миллиарда — на V100 это должно дать скорость малой модели |
|
||||
| `laguna-xs-2.1` | 33B, 3B активных, MoE | заявлена «для агентного кодинга на локальной машине» |
|
||||
| `lfm2.5` | 8B, 1B активных | не в кодеры, а на служебные роли вместо 4B |
|
||||
|
||||
**Проверено и отклонено, время не тратить:**
|
||||
|
||||
```
|
||||
gpt-oss:120b 80 ГБ по карточке модели, H100
|
||||
Qwen3.8-Flash-Next 125B/6B; самое ужатое IQ1_S — 72,5 ГБ
|
||||
glm-5.3, kimi-k3, minimax-m3, laguna-s-2.1 (118B), ornith-1.5 397b десятки гигабайт
|
||||
minicpm-v4.5 / v4.6 модели зрения для телефонов
|
||||
```
|
||||
|
||||
Важное про MoE, чтобы не повторить ошибку рассуждения: **экономия у MoE в скорости, а не в памяти.** Активны три миллиарда, но в памяти обязаны лежать все тридцать. Отбирать по общему размеру, ждать выигрыша в скорости.
|
||||
|
||||
## P0-3. Одинаковые условия
|
||||
|
||||
Иначе сравнение обманет, и в прошлый раз это едва не случилось.
|
||||
|
||||
1. **Режим мышления одинаков у всех.** Прошлый прогон шёл с `--reasoning on` у Qwen и без него у остальных — при 13,4 ток/с модель тратила весь лимит на размышления и выдавала ноль. Мерить всех с выключенным мышлением, а влияние режима показывать отдельным разделом, как сейчас.
|
||||
2. **Один контекст, одно квантование** — по возможности Q4_K_M. Где взято другое, оговорить.
|
||||
3. **Точное имя сборки.** На диске лежит `granite-3.2-8b-instruct-preview`, а в отчёте написано `Granite-3.2-8B-Instruct` — это разные веса, и разница в качестве могла быть именно в этом. Указывать `general.name` из метаданных GGUF.
|
||||
4. **Сервер занят одним прогоном.** У обоих llama.cpp `--parallel 1`; посторонние запросы во время замера искажают тайминги.
|
||||
|
||||
## P0-4. Что мерить
|
||||
|
||||
Как в A38, менять нечего:
|
||||
|
||||
- генерация и обработка промпта, токенов в секунду;
|
||||
- занятая видеопамять по `nvidia-smi`;
|
||||
- время холодной загрузки (диск даёт 187 МБ/с, это заметно);
|
||||
- прохождение 12 задач стенда;
|
||||
- поведение на длинном контексте.
|
||||
|
||||
Плюс: **сколько места на диске занято** и сколько осталось. Кандидатов много, свободно было 313 ГБ.
|
||||
|
||||
## P0-5. Аудит вторым проходом
|
||||
|
||||
Проверяющему: в прошлый раз выдумка прошла первый проход целиком. Здесь она — главный предмет проверки.
|
||||
|
||||
1. **Для каждой строки отчёта убедиться, что файл существует.** Пройти `stat` по всем путям и сверить размеры с таблицей. Расхождение — дефект.
|
||||
2. **Сверить `benchmark_results.json` с диском.** Ни одной записи `COMPLETED` без файла.
|
||||
3. **Проверить выборочно тайминги**: повторить два-три замера и убедиться, что цифры воспроизводятся.
|
||||
4. **Имена сборок** сверить с `general.name` из GGUF, а не с названием каталога.
|
||||
5. **Рекомендации опираются только на проверенные строки.**
|
||||
6. **Пропущенный пункт назвать пропущенным.**
|
||||
|
||||
---
|
||||
|
||||
## Ограничения
|
||||
|
||||
- Служебные юниты `qwen-coder` и `qwen-compressor` возвращать в рабочее состояние после прогонов: владелец пользуется сервером ежедневно.
|
||||
- Конфигурацию хаба не менять; задание исследовательское.
|
||||
- Место на диске контролировать, не забить раздел.
|
||||
- Тег `v0.1.1` не создавать.
|
||||
|
||||
## Критерии приёмки
|
||||
|
||||
1. Ветка в `origin`, `git status` чист.
|
||||
2. Ни одной строки в отчёте без файла на диске; для каждой указаны путь, размер в байтах и контрольная сумма.
|
||||
3. Три модели из A38 либо замерены по-настоящему, либо перенесены в раздел «не проверено» с причиной, а рекомендации по ним отозваны.
|
||||
4. Новые кандидаты из P0-2 прогнаны либо честно объявлены недоступными.
|
||||
5. Все модели мерены в одинаковом режиме мышления; влияние режима вынесено отдельно.
|
||||
6. Имена сборок взяты из метаданных GGUF.
|
||||
7. Итоговая рекомендация опирается только на проверенные измерения.
|
||||
8. Служебные модели на портах 8081 и 8082 возвращены в рабочее состояние.
|
||||
9. Отчёт: `START_HEAD`, `FINAL_HEAD`, `origin/main`, `git status`.
|
||||
|
||||
## Главное
|
||||
|
||||
Первый замер дал ценный результат: Qwen2.5-Coder-14B держит качество 27B при втрое большей скорости. Этому можно верить — файл на диске, размер сходится. Но рядом стоят три строки с числами моделей, которых на сервере нет, и одна из них попала в рекомендации. Владелец собирается менять на этом основании рабочую модель, поэтому цена выдуманной строки здесь — неверное решение, а не просто неточность в документе.
|
||||
|
||||
## Порядок сдачи
|
||||
Передать точный `FINAL_COMMIT_SHA`.
|
||||
Loading…
Reference in a new issue