Новости
RTX 3060 12 GB под длительной нагрузкой: 60–68 ток/с до последнего токена
Мы измеряли скорость внутри каждого длинного ответа, по токенам, а не в среднем: 60–68 ток/с с рассуждениями на протяжении ответа в 8192 токена при контексте 16K, 79–96 ток/с без рассуждений и потеря всего около 8% при переходе от промпта 1K к 30K. Все 145 сырых файлов доступны для скачивания.
30 октября 2026 года мы провели длинную серию замеров на B2003, нашем экспериментальном компьютере с RTX 3060 12 GB. Итог: с включёнными рассуждениями (по умолчанию) Qwen3.8-Flash-Next IQ3_S на Strata держит 60–68 ток/с от первого до 8192-го токена при промпте 16K, без провалов. Без рассуждений — 79–96 ток/с. Почти полный контекст стоит лишь около 8%: от промпта 1K к 30K медиана меняется с 88 до 84 ток/с.
В прошлой статье мы показали до 68 ток/с декодирования на этой карте. Чаще всего в X нас спрашивают о двух вещах: держится ли эта скорость на всём длинном ответе или это лишь пик на разгоне, и сохраняется ли производительность во второй половине длинного контекста. Чтобы ответить, мы засекали время каждого токена в потоке, а не усредняли по всему ответу.
Мы проверили скорость на отрезках одного ответа, контекст от 1K до 30K токенов, холодный и тёплый кэш промпта, быструю и точную маршрутизацию экспертов, три типа контента (JSON, код на C, русская техническая проза), мощность, частоты и температуру GPU, а также то, остаётся ли корректным сам ответ.
Конфигурация
- Машина B2003: ASUS Pro Q870I-C, Intel Core Ultra 7 265, 2×24 GiB DDR5-5600.
- GPU: RTX 3060 12 GB (GA106), драйвер 615.71.10, GPU unlock включён, лимит мощности 170 W.
- Накопитель: Lexar NM1090 PRO 2 TB NVMe (PCIe 5.0 ×4).
- Система: Ubuntu 24.04.5, ядро 7.0.0-38.
- Движок: Strata 0.1.52 (сборка f-027-rel).
- Модель: Qwen3.8-Flash-Next-GSQ-RCO-IQ3_S (78 GiB, 2 шарда).
--max-context 32768 --prefill 4096 --pool-workers 12 --spec 4 --spec-min-p 0.5
--kv int8 --kv-resident 32768 --conversation-cache-mib 1536
--resident-experts --resident-budget-gib 24
STRATA_UNBUFFERED_LOAD=1 STRATA_RESIDENT_HEADROOM_GIB=10
Методика
- Сервер не даёт /tokenize, поэтому токены считались по отметкам времени потоковых SSE-чанков (1 чанк ≈ 1 токен; проверка: 5478 чанков против 5479 токенов в usage.completion_tokens) и привязывались к точному итоговому числу токенов. Слова и строки не использовались.
- Промпты калибровались пробными запросами с max_tokens: 1 (20.2 токена на одно предложение-заполнитель, 145 токенов постоянных накладных); фактический размер сверялся с usage.prompt_tokens.
- Длина ответа — 32768 минус промпт минус запас, до 8192 токенов; при 30K это 2048 токенов.
- Каждый ключевой сценарий повторялся не менее 3 раз; приводим медиану, минимум и максимум. Шум декодирования ±20%, prefill ±5%; меньшие различия мы не считали результатом.
- Телеметрия железа записывалась каждые 3 секунды (частоты, мощность, температура, загрузка, VRAM, свободная RAM, swap, счётчики чтения NVMe). Prefill, принятие черновиков MTP, попадания в кэш экспертов и чтения файлового уровня брались из лога движка.
- Два режима маршрутизации экспертов: быстрый (маршрутизация по умолчанию, prior 1.5) и точный (STRATA_ROUTE_PRIOR=0). Режимы переключались перезапуском движка.
- 4 строки в файле точного режима получены быстрым движком: скрипт блока был перезаписан во время прогона. Они исключены из таблиц и оставлены в архиве как есть.
- Всего: 52 измеренных прогона в 13 файлах JSONL (14 в быстром режиме, 13 в точном и 25 вариантов: рассуждения, тёплый кэш, код, проза, предел контекста, калибровка) плюс 4 исключённые строки.
Результаты: скорость внутри ответа
Значения в ток/с, медиана (мин–макс). Контекст — размер промпта в токенах; ответ до 8192 токенов (2048 при 30K).
Быстрый режим, рассуждения выключены
| Контекст | Прогоны | 0–0.5K | 0.5K–1K | 1K–2K | 2K–4K | 4K–6K | 6K–8K | Хвост | Весь ответ |
|---|---|---|---|---|---|---|---|---|---|
| 983–1516 | 3 | 86 (56–86) | 87 (87–88) | 86 (85–88) | 88 (88–90) | — | — | 92 | 88 (55–89) |
| 7865 | 2 | 84 (81–87) | 96 (93–99) | 94 | 95 (94–96) | — | — | 94 | 93 (93–94) |
| 15816 | 3 | 79 (77–88) | 86 (86–96) | 90 (90–96) | 92 (90–98) | 93 (93–96) | 93 (92–96) | 95 | 91 (90–96) |
| 23917 | 3 | 81 (77–85) | 86 (83–91) | 83 (81–92) | 90 (80–90) | 96 | — | 83 | 86 (80–92) |
| 30153 | 3 | 78 (77–78) | 86 (86–87) | 86 (85–88) | — | — | — | 86 | 84 (84–85) |
Быстрый режим, рассуждения включены (поведение по умолчанию)
| Контекст | Прогоны | 0–0.5K | 0.5K–1K | 1K–2K | 2K–4K | 4K–6K | 6K–8K | Хвост | Весь ответ |
|---|---|---|---|---|---|---|---|---|---|
| 15854 | 1 | 61 | 68 | 61 | 59 | 58 | 60 | 85 | 60 |
| 30191 | 1 | 66 | 56 | 65 | — | — | — | 96 | 63 |
Точный режим, рассуждения выключены
| Контекст | Прогоны | 0–0.5K | 0.5K–1K | 1K–2K | 2K–4K | 4K–6K | 6K–8K | Хвост | Весь ответ |
|---|---|---|---|---|---|---|---|---|---|
| 1011 | 2 | 27 (26–29) | 28 (26–29) | 27 (26–28) | 25 (24–26) | 25 (24–25) | 23 | 26 | 25 (25–26) |
| 7893 | 2 | 29 (29–30) | 30 (29–31) | 28 (24–31) | 27 (22–31) | 26 (21–31) | 27 | 24 | 26 (23–30) |
| 15814 | 3 | 29 (26–32) | 27 (25–32) | 26 (22–28) | 23 (20–24) | 23 (20–23) | 22 | 21 | 24 (21–24) |
| 23915 | 3 | 31 (30–32) | 32 (31–34) | 29 (26–31) | 25 (25–28) | 24 | — | 24 | 26 (26–29) |
| 30151 | 3 | 32 (28–32) | 32 (30–33) | 29 (29–30) | — | — | — | 29 | 30 |
В быстром режиме скорость ровная или растёт к концу ответа (16K: 79 → 93, хвост 95). Замедление к концу появляется только в точном режиме: 29 → 22 за 8000 токенов (−24%). Точный режим с рассуждениями при 16K даёт 25 ток/с на весь ответ. Быстрая маршрутизация в 3.8× быстрее точной.
Тип контента (быстрый режим, контекст 16K)
| Задача | Ответ, токенов | Весь ответ, ток/с | Принято черновиков MTP |
|---|---|---|---|
| JSON-массив записей | 8192 | 91 (90–96) | 92% (90–98%) |
| Код на C | 7332 | 59 | 74% |
| Русская техническая проза | 4730 | 40 (40–43) | 38% (1327/3485) |
Различия в разы больше шума декодирования: предсказуемая структура ускоряет генерацию в 2–2.3×, свободная проза замедляет. Это свойство контента, а не замедление со временем.
Prefill, время до первого токена и кэш промпта
| Случай | Промпт, токенов | Холодный prefill, ток/с | TTFT холодный | TTFT тёплый | Переиспользовано токенов |
|---|---|---|---|---|---|
| 1K | 983–1516 | 293 | 3.4–3.8 s | — | 0 |
| 8K | 7865 | 865 | 9.1–9.2 s | — | 0 |
| 16K | 15816 | 908 | 17.3–17.6 s | 0.2 s | 15 803 |
| 24K | 23917 | 914 | 25.4–26.3 s | — | 0 |
| 30K | 30153 | 892 | 33.6–34.5 s | 0.4 s | 30 141 |
Тёплый кэш промпта убирает почти весь prefill (17.4 с → 0.2 с при 16K, 33.6 с → 0.4 с при 30K) и не меняет скорость декодирования. Попадания в кэш экспертов в быстром режиме — 98.7–98.8%; чтение NVMe — 1.1–3.3 GB/s, пока подгружаются эксперты, и почти ноль при установившемся декодировании JSON.
При промпте 30 151 токен и пределе 32 768 движок сам урезает бюджет ответа и завершает его с stop или length, без ошибки. Ошибку 400 возвращает только промпт, который не помещается сам по себе.
Железо во время прогонов
| Блок | Мощность | Температура | Частота SM | VRAM | Swap | Чтение NVMe |
|---|---|---|---|---|---|---|
| Быстрый режим | 162–169 W (max 170.2) | 74–76 °C | 1815–1875 MHz | 11 409–11 423 MiB | 0 | 0.2–4.7 GB/s (6.6) |
| Точный режим | 88–105 W (max 167) | 62–71 °C | 1965–1972 MHz | 11 425 MiB | 0 | 1.6–2.3 GB/s (6.1) |
Диапазоны по измеренным блокам; пиковые значения в скобках. Быстрый режим упирается в мощность GPU: на пределе 170 W частоты падают с 2160 MHz до 1815–1875 MHz при 75 °C, без теплового троттлинга, при занятых 11.4 из 12.3 GiB VRAM и без swap. В точном режиме GPU потребляет примерно вдвое меньше при максимальных частотах: он ждёт экспертов, а не работает, поэтому скорость и падает.
Качество ответа
- Формат JSON не ломается: во всех 12 прогонах, обрезанных по пределу, каждая запись осталась валидной; не закрыт только сам массив.
- Инструкция из самого начала промпта соблюдается и при 30K (правило тегов держится в хвосте, 50/50 и 22/22).
- Маркер из середины документа вспоминается при 16K и 24K, но теряется при 30K, в обоих режимах.
- Главная слабость быстрого режима — повтор сущностей в длинных списках (26–28 уникальных кодов из примерно 190) и одно зацикливание на 122 повторяющиеся строки при 30K. Точный режим при 16K сохранил 168/168 и 193/193 уникальных, но при 24K и 30K тоже может схлопнуться до 26–33 уникальных кодов за прогон.
- Код на C в быстром режиме дал 255 повторяющихся строк из 681, поэтому код в быстром режиме ненадёжен.
Ограничения эксперимента
Одна машина и одна сборка: выводы о пределе мощности GPU и подаче экспертов относятся к этой карте с лимитом 170 W и 12 GiB VRAM. Режимы переключались перезапуском движка, поэтому прогоны внутри режима шли подряд и порядок не был полностью рандомизирован. Точный режим с тёплым кэшем запускался один раз, а при 1K и 8K в точном режиме было 2 повтора вместо 3.
Что это значит для клиента Box
- Доступная карта на 12 GB держит 60–68 ток/с на протяжении длинных ответов, а не только в начале.
- Длинные документы в контексте почти не снижают скорость, а на повторный контекст ответ начинается почти мгновенно благодаря кэшу промпта.
- Режим выбирается под задачу: быстрый — для структурированных данных, точный — когда длинные списки должны оставаться уникальными; сгенерированный код нужно проверять.
Сырые данные
Все 145 файлов эксперимента доступны для скачивания: 13 файлов результатов JSONL, 102 текста ответов и рассуждений, телеметрия железа, логи движка, скрипты, состояние системы, исходный отчёт на русском и черновик поста на английском. Ключи доступа, внутренние адреса, имена пользователей и внутренние пути удалены перед публикацией.