Отказываемся от Opus и Codex: тест MacBook, игрового ноутбука и DGX Spark на задачках с ловушками

Прокомментировать Просмотры: 5

Предыстория

У меня есть проект, о котором я уже упоминал ранее — open-daimon (интерактивный ИИ-чат для Telegram и экосистема расширений). На его базе я спроектировал собственный оркестратор, управляющий запуском различных ИИ-агентов с уникальными ролями (публичный репозиторий пока не обновляю, так как веду разработку локально для максимальной оперативности).

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

В октябре вновь разгорелись споры вокруг пользовательского соглашения Anthropic. Для резидентов Европейской экономической зоны и Швейцарии там черным по белому прописан запрет на задействование сервисов «в коммерческих или деловых целях». Под эти ограничения подпадают и Claude.ai, и продвинутые тарифы Pro/Max. Иными словами, европейский разработчик, пишущий рабочий код через Claude Code по подписке Max, автоматически нарушает регламент. Для легальной работы требуются тарифы API, Team или Enterprise совсем другого ценового порядка.

Второй тревожный звоночек касается автономности пользователя на собственном железе. Автор издания Decrypt обратился к Claude Opus 5.5 с просьбой помочь восстановить root-права на личным телевизоре LG. Защитные механизмы модели заблокировали запрос, порекомендовав откатиться до Opus 4.8. А исследователь безопасности, прославившийся обнаружением уязвимости с постоянно активным микрофоном в смарт-телевизорах Samsung, сообщил, что OpenAI аннулировала его учетную запись за «кибербуллинг» после того, как он проанализировал прошивку с помощью ChatGPT. Вдобавок к аккаунту сгорел остаток на балансе API в размере около $500. Представители OpenAI инцидент не прокомментировали, так что пока это данные из одного источника.

Вектор очевиден: реверс-инжиниринг чужого ПО будут пресекать все жестче, а критерии нарушений определяет исключительно вендор. В свое время правообладатели уничтожили Napster. Та же участь вполне может постигнуть Claude и Codex — поводов для запретов предостаточно.

Ситуация с самими весами моделей также нестабильна. Еще в октябре на платформе Hugging Face стали исчезать «расцензурированные» сборки. Одну из них администрация ударила за нарушение контент-политики. Другая — модифицированная версия Kimi K2.7 Code (авторства huihui-ai, чья модель Qwen3.6 фигурирует в нашем тесте) — выдает фатальную ошибку без каких-либо внятных объяснений со стороны площадки (подробный разбор). Массовой зачистки пока не наблюдается, но вспомните, как в 2020 году GitHub заблокировал youtube-dl по жалобе RIAA и вернул репозиторий лишь спустя месяц. Пока все ценные активы хранятся на одном сервере, этот узел уязвим.

Более того, с апреля Anthropic вынуждает часть пользователей подтверждать личность через сервис Persona с помощью паспорта и селфи. Среди триггеров проверки — авторизация из не поддерживаемого региона, после чего профили безжалостно банят. Теперь для доступа к передовым моделям недостаточно просто иметь деньги: критически важны ваша прописка и гражданство.

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

На моем игровом ноутбуке с RTX 5080 уже была развернута LM Studio в связке с Qwen3.6-35B-A3B. Этот инструмент позволяет запускать нейросети локально, транслируя их через стандартный API облачных провайдеров. Я интегрировал его с OpenCode — открытым терминальным агентом, альтернативой Claude Code, поддерживающей любые бэкенды. Однако скорость оставляла желать лучшего, а на MacBook производительность оказалась откровенно удручающей.

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

Для чистоты эксперимента я решил испытать единый кейс на самых разных конфигурациях: в облаке, на MacBook, на игровом девайсе, на станции NVIDIA DGX Spark, а также задействовав недорогие (преимущественно азиатские) модели через OpenRouter.

Задача

Этот бенчмарк я изначально разработал для своего рода «канарейки» — скрипта, отслеживающего возможное отупение Opus и Codex. Идея родилась после того, как я заметил деградацию ответов Opus. Возможно, я угодил в выборку A/B-тестирования, а может, сказались внутренние сбои, но инструмент оказался крайне полезным.

Агент получает в распоряжение репозиторий minibank — компактный банковский леджер на Python (~700 строк кода). Проект включает мультивалютные счета, конверсионные переводы, комиссии, ежемесячные выписки и экспорт бухгалтерской отчетности в CSV. Рядом лежит файл DECISIONS.md, отражающий архитектурные решения команды, как в любом реальном рабочем проекте.

Формулировка задачи выглядит как типичное ТЗ от руководителя:

Клиенты жалуются на расхождения в ежемесячных выписках: итоговые суммы не бьются с балансом счетов, особенно при мультивалютных транзакциях. Разберись в проблеме и устрани ее. Заодно проверь, не проявляется ли аналогичный баг где-нибудь еще.

Никаких намеков на тесты или файл DECISIONS.md.

Что именно сломано

Ключевой изъян заключается в том, что генератор выписок берет не фактическую сумму, поступившую на счет после конвертации, а пересчитывает ее заново по актуальному курсу с помощью устаревшей функции. За прошедший месяц курс изменился, и итоговые цифры в отчете разошлись с реальным балансом.

Дальше разработчика подстерегают замаскированные ловушки:

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

  • Корректировка курсов задним числом. Если котировки валют были скортированы постфактум, исторические строки выписки изменяться не должны. Эта ловушка отсеивает тех, кто полагается на динамический пересчет.

  • Часовые пояса. Расчет месячного периода выписок привязан к UTC, а не к локальному времени сервера. В регионах вроде Лос-Анджелеса или Токио границы месяцев у наивной реализации неминуемо съедут.

  • Комиссионные сборы. Каждая комиссия проводится отдельной строкой и не должна вычитаться из тела перевода.

  • Экспорт данных. Бухгалтерский CSV-файл содержит ровно ту же архитектурную ошибку, плюс таймстампы в нем должны строго соответствовать формату ISO UTC. Это как раз проверка на выполнение второй части поручения («проверь, не ломается ли где-то еще»).

  • Запрещенный модуль. Старый конвертер трогать категорически запрещено, поскольку на нем завязана партнерская выгрузка. Это требование зафиксировано в DECISIONS.md.

  • Тест-предатель. Один из базовых юнит-тестов изначально закрепляет неверные математические значения. Его необходимо актуализировать, а не удалять или подгонять под него исходный код.

Система оценки

Агент изолирован от валидационного набора. По завершении его работы я беру текущее состояние репозитория и прогоняю по следующей шкале:

  • 20 скрытых приемочных тестов обеспечивают половину итогового балла;

  • 7 из них проверяют специфические краевые случаи (UTC, комиссии, задвоенные курсы, ISO-время), добавляя еще 15%;

  • 9 заведомо некорректных патчей (например, упомянутая «простая замена конвертера») внедряются поочередно для проверки: поймают ли их тесты, которые агент написал самостоятельно, без подсказок. Это четверть оценки;

  • соблюдение регламента (неприкосновенность запрещенного модуля, прохождение базовых тестов, обновление теста-предателя) приносит оставшиеся 10%.

Некоторые скрытые тесты контролируют общую стабильность системы, поэтому агент, который вообще ничего не стал бы делать, получил бы базовые 0.31 балла. Чтобы график выглядел наглядно, все метрики пересчитаны от нуля: 0 означает отсутствие изменений, 1 — безупречное решение, а отрицательные значения показывают, что агент испортил больше, чем исправил.

Временной лимит составляет 20 минут с момента старта. Облачные модели справляются за 1,5–11 минут, так что запас прочности есть. Если агент не укладывается, я оцениваю промежуточный результат. 20-минутный порог выбран эмпирически: самая производительная локальная модель на Spark тратит на задачу 16,5 минуты. Увеличивать лимит не имело смысла — вряд ли кто-то захочет ждать дольше ради исправления столь локального бага.

Фактор случайности

Поскольку задача уникальна, написана на Python, а каждый вариант прогонялся преимущественно 1–2 раза (на MacBook тестов было больше), результаты подвержены вариативности. На макбуке одна и та же модель с идентичными настройками могла выдать как 0.21, так и уйти в минус. Следовательно, этот тест не способен уловить тонкую разницу между схожими локальными весами. Зато пропасть между топовыми облачными решениями и быстрыми локальными моделями настолько грандиозна, что никакой статистический шум ее не замаскирует.

Эталонные облачные решения

Модель

Время

Оценка

Скрытые тесты

Тонкие условия

Поймано ошибок своими тестами

Стоимость по прайсу API

Codex (GPT-6.1-sol, medium)

101 с

1.00

20/20

7/7

9/9

≈ $0.14

Claude Opus 5.5

91 с

0.96

20/20

7/7

8/9

$0.30

Claude Fable 5.1

288 с

0.96

20/20

7/7

8/9

$1.79

Codex не возвращает стоимость прогона напрямую, поэтому я вычислил ее по токенам (280 тысяч на входе, из которых 243 тысячи взяты из кэша, и 4 тысячи на выходе) согласно расценкам GPT-6.1 Sol в API: $2 за миллион входных токенов, $0.10 за кэшированные и $10 за генерацию.

Вся тройка лидеров успешно изучила DECISIONS.md, проигнорировала фальшивый конвертер, обнаружила проблемы с экспортом, обновила проблемный тест и написала собственный набор проверок, отловивших почти все дефекты. Opus справился за полторы минуты, совершив всего 7 вызовов инструментов.

Программный код у Opus и Codex идентичен по качеству. Разница кроется лишь в написанных ими юнит-тестах. Если в выписке слить комиссию со строкой перевода, тесты Codex это пресекут, а тесты Opus пропустят. Сам Opus реализовал комиссию корректно, но забыл зафиксировать это в тестах. У Fable другая уязвимость: ее тесты не заметят, если модуль экспорта возобновит пересчет транзакций по плавающему курсу. Именно один пропущенный баг из девяти формирует дельту между 1.00 и 0.96. Во втором запуске и Opus, и Fable упустили уже по два изъяна, скатившись до 0.92. На третьей попытке Opus вернулся к 0.96, но провалил другой кейс — обработку границ месяцев. Сами слабые места остаются неизменными, варьируется лишь то, сколько из них удается перекрыть тестами. Codex я прогонял единожды, так что его идеальные 9 из 9 вполне могут быть элементом удачи. Мой субъективный вердикт на октябрь 2026 года таков: в повседневных задачах я отдаю предпочтение Opus, хотя в данном тесте Codex показал себя чуть дешевле и точнее.

Дополнительно я прогнал Opus и Fable в своей боевой среде — с кастомными настройками, хуками, MCP-серверами, а также предварительно загрузив в контекст 178 тысяч токенов из длинной предыстории прошлых сессий, что типично для рабочего дня. Результаты стабильны: те же 20/20 и абсолютное покрытие краевых условий. Колеблется лишь эффективность собственных тестов (от 7 до 9 пойманных ошибок из 9 возможных). В изолированной среде разброс аналогичен (от 7 до 8), так что это статистический шум. Огромный контекст повлиял исключительно на финансовые затраты: прогон обошелся в 2–6 раз дороже.

Таким образом, эталонные показатели заданы: от полутора до пяти минут рабочего времени и практически безупречный результат.

MacBook Pro (Apple M5, 32 ГБ RAM)

Это типичная рабочая станция многих инженеров, с которой логично начать локальные эксперименты.

Для начала оценим сырую скорость генерации и префилла. Префилл отображает скорость чтения: перед выдачей первого токена модель обязана проанализировать весь накопившийся контекст (системный промпт, описания инструментов, открытый код, историю шагов). Поскольку у агентов объем контекста нарастает с каждым витком, медленный префилл тормозит работу сильнее, чем неторопливая генерация.

Модель

Генерация

Префилл

Qwen3 Coder 30B A3B (MoE, 4 бит)

52 ток/с

743 ток/с

Gemma 4 12B (4 бит)

14 ток/с

275 ток/с

Qwen3.8 27B (dense, 4 бит)

5,4 ток/с

159 ток/с

В MoE-архитектуре (Mixture of Experts) из суммарных 30 миллиардов параметров на один токен задействуются лишь около 3 млрд. Внутри каждого слоя заложено множество специализированных экспертов — изолированных блоков с собственными весами, из которых маршрутизатор подбирает наиболее подходящих для текущего токена, оставляя прочие простаивать. Именно это обеспечивает высокое быстродействие. Отсюда и маркировка: 30B A3B означает 30 миллиардов общих параметров при 3 активных. Плотная 27-миллиардная модель честно просчитывает все веса, выдавая на ноутбуке скромные пять токенов в секунду. Маркировка «4 бит» обозначает квантование: каждый параметр упакован не в стандартные 16 бит, а в 4. Вес модели уменьшается вчетвером, позволяя ей комфортно разместиться в памяти лэптопа ценой незначительной потери точности.

Стоит учитывать, что LM Studio по умолчанию инициализирует часть моделей с лимитом контекста в 8192 токена. В то же время OpenCode на каждой итерации скармливает модели порядка 15 тысяч токенов системных инструкций и спецификаций инструментария. Наша задача в такой лимит просто не поместится. Ошибок семантика не выдаст, но агент начнет деградировать.

Поэтому первоочередная обязанность — вручную выставить параметр Context Length в LM Studio для каждой модели. Я установил значение 65536 для всех.

Результаты тестов

Первый пропуск каждой модели через pi:

Модель

Время

Самостоятельный финал

Оценка

Скрытые

Тонкие

Gemma 4 12B

575 с

да

0.21

12/20

3/7

Qwen3 Coder 30B A3B

472 с

да

0

8/20

1/7

Qwen3.8 27B

1200 с (лимит)

нет

0

8/20

1/7

Qwen3 Coder продемонстрировала максимальную скорость и абсолютную бесполезность. Сделав 50 вызовов утилит, она выдала бравурный итоговый отчет о «минимальном и выверенном исправлении». На практике же попалась на ту самую ловушку: подменила старый конвертер на новый, но продолжила пересчет транзакций. По метрикам скрытых тестов получилось так, будто скрипт вообще не трогали. Вдобавок она замусорила корень репозитория файлом test_debug.py.

Qwen3.8 27B — единственная из локальных моделей на ноутбуке — честно прочла DECISIONS.md, но за отведенные 20 минут не внесла ни единой строчки кода ни в pi, ни в OpenCode.

Пальму первенства на лептопе забрала Gemma 4 12B. Она вычленила главное: задействовала истинную сумму транзакции вместо математического пересчета как в выписках, так и в экспортных модулях. Да, она проигнорировала таймзоны, ISO-формат времени и комиссии, пропустила тесты и не заглянула в DECISIONS.md. Но базовую боль клиента она излечила.

Самая миниатюрная модель оказалась наиболее полезной. Она уложилась в 10-минутный норматив и не ушла в деструктивные дебри, в отличие от Qwen3 Coder. Правда, столь благополучный исход фиксировался лишь в трех запусках из десяти.

Дополнительно я поэкспериментировал с параметрами сэмплирования (вероятностными настройками генерации токенов) для Gemma и Qwen3 Coder. Проверял и заводские дефолты LM Studio (температура 0.8, top_k 40, top_p 0.95, min_p 0.05, penalty 1.1), и официальные рекомендации авторов (для Gemma: температура 1.0, top_k 64; для Qwen3 Coder: температура 0.7, top_k 20, top_p 0.8), и консервативную температуру 0.3. Безрезультатно. Gemma при идентичной конфигурации выдавала в разных тестах 0.21 и −0.17, подтверждая, что случайный разброс перевешивает любые твики гиперпараметров. Характер ошибок оставался неизменным: требования по UTC, ISO-времени и тесту-предателю не осилил ни один запуск.

Игровой ноутбук (RTX 5080 Laptop, 16 ГБ VRAM, 32 ГБ RAM) и легкий оркестратор

Здесь LM Studio отдает веса по сети. На борту функционирует Qwen3.6-35B-A3B — тоже смесь экспертов, но более крупного калибра.

Динамика скорости генерации до и после оптимизации LM Studio:

Контекст

Было

Стало

Короткий

54 ток/с

не замерял

17 тыс. токенов

21 ток/с

102 ток/с

42 тыс. токенов

9,5 ток/с

94 ток/с

Столь резкое падение скорости (с 54 до 9.5 токенов в секунду) на длинных контекстах выглядело подозрительно, и я занялся диагностикой. Модель весит 21.7 ГБ при наличии 16 ГБ видеопамяти, поэтому часть данных гарантированно вытесняется в оперативку. Суммарный вес MoE-моделей сконцентрирован в экспертах — тех самых блоках, из которых активируются лишь крохи. Механизм внимания (attention, обрабатывающий весь контекст на каждом шаге для выявления связей) вкупе с базовыми слоями занимает относительно скромный объем. Оптимальная стратегия — закинуть в ОЗУ часть экспертов: при обработке токена задействуется лишь горстка из них (около 3 из 35 млрд параметров), с чем процессор справляется играючи. При этом механизм внимания должен целиком базироваться на видеокарте, ведь по мере роста контекста нагрузка на него возрастает лавинообразно. Проблема крылась не в параллельных потоках или размере контекста (ограничение до 32К вместо 64К ничего не изменило), а в том, как именно LM Studio распределяла слои между GPU и CPU. Поскольку профиль распределения не был зафиксирован, движок принимал решения самостоятельно.

Я жестко зафиксировал три параметра:

  • GPU Offload выкручен на максимум: все 40 слоев на видеокарте;

  • Параметр «Number of layers for which to force MoE weights onto CPU» установлен на 40%: эксперты примерно для 16 слоев просчитываются центральным процессором, а остальное помещается в 16 ГБ VRAM;

  • KV-кеш сжат в формат q8_0 для высвобождения видеопамяти под контекстные окна.

С учетом KV-кеша графический чип задействует около 14.5 ГБ. Без этих манипуляций LM Studio, судя по метрикам, сгружала на CPU слои целиком, включая подсистему внимания. Чем длиннее становился контекст, тем дольше процессор его обрабатывал — отсюда и провал до 9.5 ток/с. Если же на CPU уходят исключительно эксперты всех слоев, видеопамять освобождается (занято всего 4 ГБ), простаивает и выдает унылые 40 ток/с. Пиковая производительность достигается тогда, когда VRAM забита практически под завязку.

Легковесный оркестратор: pi против OpenCode

Я развернул pi и сопоставил его с OpenCode на той же модели. OpenCode на старте пересылает модели около 15 тысяч токенов, а pi — всего 2200. Локальный инференс обрабатывает порядка 1000 токенов в секунду, поэтому избыточные 13 тысяч токенов от OpenCode стоят модели примерно 13 секунд задержки на каждой итерации. Облачные бэкенды переваривают этот объем мгновенно.

Результаты прогона minibank до оптимизации:

OpenCode

pi

Оценка

0.21

0.29

Скрытые тесты

12/20

12/20

Тонкие условия

3/7

3/7

Поймано ошибок своими тестами

0/9

2/9

Вызовы инструментов

28

29

Время

20 минут (лимит)

10 минут (сам финиш)

Pi завершил работу вдвое быстрее, четырежды запустил тесты, причем собственные проверки выловили два дефектных патча. Однако бизнес-логику оба агента решили одинаково, пропустив те же краевые условия: месяцы по UTC, ISO-время и комиссии. Снижение лимита до 10 минут ничего не изменило.

Повторный прогон minibank после тюнинга конфигурации:

OpenCode

pi

Оценка

0.14

0.31

Скрытые тесты

10/20

12/20

Тонкие условия

2/7

3/7

Поймано ошибок своими тестами

1/9

2/9

Время

20 минут (лимит)

285 секунд (сам финиш)

Pi ускорился вдвое: менее пяти минут вместо десяти. Решение идентично, с теми же пробелами, но в этот раз pi дополнительно обновил тест-предатель. OpenCode, обновленный до версии 2.2, в лимит вновь не вписался: модель нагенерировала 55 тысяч токенов рассуждений против 11 тысяч у pi, десять раз инициировала тесты, не успела завершить цикл и вдобавок сломала логику скорректированного курса в экспорте. Резюме: модель ускорилась, но умнее не стала.

Пара слов о speculative decoding (спекулятивной генерации), также активированной на ноутбуке: вспомогательный модуль модели (MTP, multi-token prediction) предсказывает сразу несколько токенов наперед, а основной граф проверяет их за один проход. Там, где прогнозы верны, скорость кратно возрастает. Эта опция активируется отдельным флагом при старте движка; если о нем забыть, модель молча теряет в производительности вдвое.

Станция DGX Spark

Конфигурация Lenovo ThinkStation PGX построена на базе чипа NVIDIA DGX Spark — настольного модуля с архитектурой GB10 и 128 ГБ унифицированной памяти. Модели крутятся в vLLM — бэкенде, заточенном под параллельную обработку запросов. Тестовый репозиторий ушел на узел архивом (без скрытых тестов, только код, ТЗ и вспомогательные скрипты) и управлялся через OpenCode. Оценка производилась тем же валидатором.

MoE: та же архитектура, те же грабли

Использовалась Qwen3.6-35B-A3B (дистиллят Opus) в квантовании NVFP4 — аппаратном формате NVIDIA, поддерживаемом чипом Spark. Скорость держалась на уровне 35–50 ток/с.

Итог: 340 секунд, самостоятельное завершение, оценка 0.25. Покрыто 12/20 скрытых тестов и 3/7 тонких условий.

Модель провалила обработку месяцев по UTC, ISO-время и комиссии. Ровно те же проблемы, что на ноутбуке с RTX 5080 (как в OpenCode, так и в pi). Пять запусков на двух принципиально разных аппаратных платформах с двумя различными оркестраторами, но злополучные UTC-месяцы, ISO-время и комиссии проигнорировали абсолютно все.

Плотная 27B: 10 минут — непозволительная роскошь

ThinkingCap-Qwen3.8-27B (плотная, рассуждающая) в формате NVFP4 с включенным speculative decoding на 3 токена. Скорость: 20–25 ток/с.

При жестком 10-минутном лимите: пустой diff, нулевые изменения, итоговая оценка 0.

Логи показывают, что первые 5.5 минут трудился вспомогательный агент-разведчик OpenCode, сканирующий структуру. К 8-й минуте основной агент изучил файлы и в ходе внутренних рассуждений безошибочно диагностировал корень проблемы. С 8-й минуты он запустил массивную генерацию, которую прервал таймер. Никаких правок в репозиторий записано не было.

Тот же эксперимент без ограничений по времени: 987 секунд, оценка 0.92. Пройдены все тонкие условия, обновлен тест-предатель, собственные тесты отловили 7 дефектов из 9. Результат сопоставим с облачным Opus.

MoE на 125B: почти вписалась в десятиминутный норматив

Еще одна модель на Spark носит название Qwen3.8-Flash-Next. Это abliterated-версия (с удаленными защитными фильтрами), MoE-архитектура гигантского масштаба: 125 миллиардов параметров, из которых на токен активны около 6. Применено смешанное квантование NVFP4/MXFP8, speculative decoding на 3 токена, скорость — 22–32 ток/с. Лимит времени был жестким — всего 10 минут.

Тайм-аут прервал процесс на стадии финальной валидации: к тому моменту все правки были внесены, а видимые тесты модель, судя по логам, прогнала в четырех часовых поясах. Оценивалось то, что зафиксировалось в репозитории.

Оценка 0.96. Засчитано 20 из 20 скрытых тестов, все 7 тонких условий, обновлен тест-предатель, запретная зона не затронута. Написано 7 собственных тестов, пресекающих 8 из 9 фальшивых правок. Упущение зафиксировано лишь одно: экспорт продолжал пересчитывать транзакции по новому курсу.

Это уровень Opus в идеальных условиях среды. Пусть в 6–7 раз медленнее Opus, а лимит времени выжжен до секунды.

Цена вопроса — память. Драйвер выделяет под модель порядка 96 ГиБ, с учетом процессов vLLM суммарный расход подбирается к 106 ГиБ, практически исчерпывая ресурс 128-гигабайтного Spark:

Компонент

ГиБ

Веса на GPU

75.8

MTP-слой предсказания токенов

1.5

Служебные буферы vLLM

~5.6

Пул KV-кеша (fp8)

13.4 (~899 тыс. токенов)

Итого у драйвера NVIDIA (факт)

~96.2

Процессы vLLM на хосте

~10

Таблица PLE (26.8 ГиБ на диске, подгрузка через mmap)

13–16 в страничном кеше, система может вытеснить

Свободно у ОС в процессе работы

~16 из 121

Был сделан всего один пропуск. Учитывая, что та же Gemma демонстрировала разброс от 0.21 до −0.17 на идентичных настройках, опираться на единственный запуск опрометчиво. Однако 20 из 20 с полным покрытием тонких условий случайно не выпадают.

Альтернатива в рамках лимита: Nemotron 3.5 Super

NVIDIA Nemotron 3.5 Super — еще один крупноблочный гигант MoE: 120 миллиардов параметров, 12 активных, NVFP4, предсказание по 7 токенов. Скорость: 24–42 ток/с. Видеопамяти потребляет ровно столько же — около 96 ГиБ.

Лимит времени аналогичен (10 минут), но в этот раз модель уложилась самостоятельно за 533 секунды.

Оценка 0.68. В активе 18 из 20 скрытых тестов и 6 из 7 краевых условий. Трансферы, UTC-месяцы и структура CSV исправлены. Однако комиссия в выписке осталась интегрированной в строку перевода, несмотря на прямой запрет в DECISIONS.md. Тест-предатель остался нетронутым. Собственные юнит-тесты написаны, но отсекают лишь 4 неверных исправления из 9.

Резюме по Spark: среди двух тяжеловесных MoE лидирует Flash-Next, справившаяся безупречно. Nemotron слабее функционально, но дисциплинированно укладывается в тайм-аут. По потреблению ресурсов паритет — около 96 ГиБ у драйвера.

Бюджетные облачные решения: азиатский сегмент

Между локальным «железом» и Opus за $0.30 за пропуск простирается обширный рынок недорогих моделей. Через OpenRouter я отобрал по 1–2 актуальных решения от восьми ведущих китайских вендоров, добавив для контраста французскую Devstral, после чего запустил через OpenCode с тем же лимитом. Использовались стандартные, не обнуленные цензурой версии.

Китайский пул представлен восьмью игроками: DeepSeek, Zhipu (GLM), Alibaba (Qwen), Moonshot (Kimi), MiniMax, Tencent, StepFun и Xiaomi. Европейский флагман — Devstral от Mistral.

Модель

Время

Оценка

Скрытые

Тонкие

Поймано ошибок своими тестами

Стоимость прогона

DeepSeek V4.1 Flash (снимок от 17.10)

112 с

1.00

20/20

7/7

9/9

$0.008

Xiaomi MiMo V2.6 Pro

450 с

1.00

20/20

7/7

9/9

$0.06

Tencent HY4 Preview

333 с

1.00

20/20

7/7

9/9

$0.17

Qwen3.8 Max Prime

354 с

1.00

20/20

7/7

9/9

$0.73

GLM-5.3

198 с

0.98

20/20

7/7

9/9

$0.10

Qwen3.8 Max

671 с

0.92

20/20

7/7

7/9

$0.36

MiniMax M3.1 Flash

194 с

0.90

20/20

7/7

7/9

$0.03

StepFun Step-5 Preview

164 с

0.88

20/20

7/7

6/9

$0.17

Kimi K3.1 Pro

370 с

0.80

20/20

7/7

4/9

$0.27

Kimi K3

202 с

0.72

18/20

6/7

5/9

$0.16

DeepSeek V4 Pro

103 с

0.47

15/20

4/7

3/9

$0.11

Devstral 2512

276 с

0.28

14/20

3/7

0/9

$0.16

Четыре участника справились с задачей на уровне Codex: закрыты все скрытые тесты и краевые условия, обновлен тест-предатель, собственные проверки отловили все 9 вредоносных патчей. DeepSeek V4.1 Flash продемонстрировала этот результат за две минуты ценой менее одного цента — в 36 раз дешевле Opus, набравшего на аналогичном кейсе 0.96. Сентябрьская итерация этой же Flash выдавала 0.88 (ее тесты находили 6 багов из 9). Октябрьский снимок, судя по всему, устранил пробелы, хотя тот прогон выполнялся еще на предыдущей версии OpenCode.

GLM-5.3 дышит в спину: потеря 0.02 балла обусловлена лишь тем, что она не обновила тест-предатель. И при этом втрое дешевле Opus.

MiniMax M3.1 Flash: 20/20, полный набор тонких условий, 18 собственных юнит-тестов, перекрывающих 7 плохих патчей из 9. И фирменная особенность, унаследованная от предродовой версии M3: она добавила абзац от себя в файл DECISIONS.md, который трогать запрещалось. Цена — три цента за сессию.

Step-5 от StepFun также выбила 20 из 20 быстрее чем за три минуты, но написанные ею тесты не зафиксировали ни подмену конвертера, ни пересчет по плавающему курсу.

Семейство Kimi вызвало разочарование. Флагманская K3.1 Pro стоимостью $2 за миллион входящих токенов преодолела скрытые проверки, но сгенерировала всего три собственных теста, покрывающих лишь 4 исправления из 9. Модель K3 провалила учет комиссий и оставила тест-предатель в исходном виде. Ее предшественница Kimi K2.7 Code (тоже удаленная с Hugging Face пиратская сборка) в свое время набирала те же 0.72. Слабые места K2.7 и K3 идентичны: комиссии и тест-предатель. Версия K3.1 Pro баги залечила, но писать тесты перестала, а прайс в $0.27 за запуск приближается к расценкам Opus.

DeepSeek V4 Pro удивила: будучи массивнее и дороже модификации Flash, она показала результат вдвое хуже, провалив часовые пояса и комиссии. Вероятно, дело в дате релиза: Pro датирована августом, а Flash — октябрем.

Devstral проигнорировала таймзоны, ISO-время, комиссии и не написала ни единого собственного теста.

Интересно сопоставить облачную Qwen3.8 Max и локальные вариации Qwen на 30–35 миллиардов параметров: находясь в рамках одного семейства, они оказались на противоположных полюсах таблицы. Облачная Max закрыла все скрытые тесты, краевые условия и обновила тест-предатель; огрехи зафиксированы лишь в собственных тестах (7 из 9). Правда, размышляла она 11 минут (дольше локальной Flash-Next на Spark) и обошлась в $0.36 — дороже Opus. В Max заложено 2.4 триллиона параметров против 35 миллиардов у локального аналога. Флагман отыскал практически все, тогда как локальные веса починили лишь очевидное. Впрочем, плотная локальная 27B на Spark выдала те же 0.92, пусть и потратив 16 минут.

Существует форк Qwen3.8 Max Prime — форсированная и более дорогая инкарнация базовой Max. Она решила задачу идеально (1.00 за шесть минут), но и счетчик накрутил $0.73 за прогон, что в 2.4 раза дороже Opus.

Разумеется, опираться на единственный прогон опрометчиво, учитывая разброс метрик. Но пропасть между верхней половиной этой сводки и быстрыми локальными моделями непреодолима.

Сводная таблица результатов

Модель

Инфраструктура

Время

Оценка

Стоимость запуска

Codex GPT-6.1-sol

облако

101 с

1.00

≈ $0.14

DeepSeek V4.1 Flash

OpenRouter

112 с

1.00

$0.008

Xiaomi MiMo V2.6 Pro

OpenRouter

450 с

1.00

$0.06

Tencent HY4 Preview

OpenRouter

333 с

1.00

$0.17

Qwen3.8 Max Prime

OpenRouter

354 с

1.00

$0.73

GLM-5.3

OpenRouter

198 с

0.98

$0.10

Opus 5.5

облако

91 с

0.96

$0.30

Fable 5.1

облако

288 с

0.96

$1.79

Qwen3.8-Flash-Next 125B (MoE)

DGX Spark

600 с (лимит)

0.96

локально

Qwen3.8 Max

OpenRouter

671 с

0.92

$0.36

ThinkingCap-Qwen3.8-27B

DGX Spark

987 с

0.92

локально

MiniMax M3.1 Flash

OpenRouter

194 с

0.90

$0.03

StepFun Step-5 Preview

OpenRouter

164 с

0.88

$0.17

Kimi K3.1 Pro

OpenRouter

370 с

0.80

$0.27

Kimi K3

OpenRouter

202 с

0.72

$0.16

Nemotron 3.5 Super 120B (MoE)

DGX Spark

533 с

0.68

локально

DeepSeek V4 Pro

OpenRouter

103 с

0.47

$0.11

Qwen3.6-35B-A3B + pi

RTX 5080 Laptop

285 с

0.29–0.31 (2 запуска)

локально

Devstral 2512

OpenRouter

276 с

0.28

$0.16

Qwen3.6-35B-A3B

DGX Spark

340 с

0.25

локально

Gemma 4 12B

MacBook M5

575 с

0.21 (за 10 запусков: от −0.17 до 0.21)

локально

Qwen3.6-35B-A3B + OpenCode

RTX 5080 Laptop

1200 с (лимит)

0.14–0.21 (2 запуска)

локально

Qwen3 Coder 30B A3B

MacBook M5

344 с

0.14 (за 6 запусков: 0–0.14)

локально

Qwen3.8 27B

MacBook M5

1200 с (лимит)

0

локально

Нулевая оценка означает отсутствие правок, а отрицательная — что модель навредила сильнее, чем помогла.

Вердикт: жизнеспособна ли локальная автономия?

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

Интеллектуальные локальные модели существуют, но «железо» под них стоит дорого, а скорость инференса оставляет желать лучшего. Плотная 27B решила задачу на уровне Opus, однако потратила шестнадцать минут вместо полутора. MoE на 125B уложилась в десять минут, но утилизировала почти весь объем 128-гигабайтного DGX Spark. Компактные веса, влезающие в потребительские ноутбуки, способны устранять лишь поверхностные баги. Производительность упирается в аппаратную базу, квантование и механизмы предсказания токенов, но эти параметры постепенно дешевеют. А когнитивный потенциал у моделей уже присутствует, по крайней мере в масштабе 700 строк кода.

Экономически и практичнее по-прежнему использовать китайские облачные сервисы: четыре модели выдали уровень Codex, а DeepSeek V4.1 Flash обошлась дешевле одного цента.

Локальные инстансы по-прежнему склонны ошибаться, демонстрируя высокий разброс результатов. Тем не менее, это неизменные веса, которые никто не сможет подменить у вас за спиной.

Отдельный аспект — безопасность. Ряд протестированных локальных моделей, включая Qwen3.6 от huihui-ai и Flash-Next, лишены защитных барьеров (abliterated). Оркестратор pi по умолчанию выполняет команды без запроса подтверждений, о чем разработчики прямо предупреждают в документации. Сочетание модели, не умеющей отказывать, с агентом, который не спрашивает разрешений — опасный коктейль, поэтому подобные связки на рабочей машине настоятельно рекомендуется запускать строго в изолированных контейнерах.

PS Финальную редакцию текста статьи я выполнял с помощью модели Qwen3.6-35B-A3B. Она генерирует текст резво, отлично обогревает комнату и преимущественно вредит. На фоне современных возможностей Opus и Codex я успел подзабыть, сколь долгий путь пройден индустрией и сколько трудностей предстоит преодолеть тем, кто решится полностью отказаться от облаков. Обложку материала также сгенерировала локальная модель: Qwen-Image 2.1 в 4-битном квантовании через ComfyUI на той же видеокарте RTX 5080, затратив около двух минут на рендер.

Выражаю благодарность автору телеграм-канала @sueta_localna за содействие в проведении тестирования.

 

Источник

Похожие статьи

Поиск по играм, новостям и статьям…

Введите не менее двух символов

Введите не менее двух символов