Титульная карточка для объясняющего видео о MiniCPM-V 4.7 35B-A3B, противопоставляющая заявленные производителем примерно 3 ГБ резидентной памяти и более 13 токенов в секунду на iPhone 17 Pro Max неподтверждённому показателю в 100 токенов в секунду.
Engineering & Research

MiniCPM-V 4.7 вмещает 35B-визуальную модель в 3 ГБ: разбираемся с заявлением о 100 ток/с

Автор

Elias Hawthorne

Дата публикации

Новые модели · 20Все модели →
Бенчмарки: Artificial Analysis · обновляется ежедневно
Назад ко всем статьям

Модель с 35 миллиардами параметров не может поместиться в три гигабайта. MiniCPM-V 4.7 35B-A3B всё равно работает примерно в трёх гигабайтах, и оба утверждения верны — в этом и весь фокус, и именно поэтому на числах, которые ходят вокруг этого релиза, стоит задержаться. Модель — первый представитель линейки MiniCPM-V от OpenBMB с разреженной архитектурой mixture-of-experts: 35,2 млрд сохранённых параметров, около 3 млрд активных на токен, Apache-2.0, веса на Hugging Face. Она читает изображения, наборы из нескольких изображений и видео, а отвечает текстом. С 10 октября она также работает в upstream llama.cpp, где с ней познакомилось большинство людей. Далее мы разделим три числа, которые все повторяют — 3 ГБ, 35B и показатель 100 tok/s — и покажем, какие из них OpenBMB действительно опубликовала. Более 200 моделей, доступных через хостинг, один ключ, цена из прайс-листа провайдера передаётся без наценки — 0%. Посмотрите, что маршрутизирует OrcaRouter Чекпоинт с открытыми весами остаётся на вашем оборудовании; запасной вариант с хостингом — это один эндпоинт. Задокументированные сбои ИИ и инциденты с агентами, связанные с подобными релизами, собраны в OrcaRouter AI Incident Archive, где каждая запись содержит собственные источники, уровень серьёзности, степень уверенности и отметку о спорности.

Три гигабайта, тридцать пять миллиардов параметров и никакого противоречия

Арифметика кажется невозможной, только если считать, что «в памяти» означает «целиком». MiniCPM-V 4.7 35B-A3B постоянно держит в памяти около 3 млрд параметров, а остальных экспертов подгружает по мере того, как их запрашивает маршрутизатор, — в самой карточке модели это называется Lookahead Expert Scheduling: межслойный предиктор маршрутизации, который предварительно загружает экспертов, вероятно нужных следующему слою, совмещая эту загрузку с уже выполняющимися вычислениями. В карточке особо отмечается, что предсказание лишь управляет предзагрузкой и планированием; токены по-прежнему следуют реальной маршрутизации модели, а эксперт, который предиктор пропустил, загружается и вычисляется как любой другой.

Это различие имеет измеримое последствие. Репозиторий GGUF публикует всю модель во всех распространённых вариантах квантования, и ни один из этих файлов не занимает три гигабайта:

• Q4_K_M — 21,2 ГБ на диске.

• Q8_0 — 36,9 ГБ.

• F16 — 69,4 ГБ.

• Визуальный проектор — 0,9 ГБ при 4-кратном сжатии, 1,1 ГБ при f16.

Итак, «3 ГБ» — это показатель резидентной памяти при потоковой подгрузке экспертов на телефоне, а не размер загрузки и не требование к видеопамяти для десктопа. Если вы планируете развёртывание, число, определяющее ваш диск и первую загрузку, — 21,2 ГБ при Q4_K_M, а число, определяющее установившийся объём памяти на телефоне, — около 3 ГБ, заявленные производителем. Оба показателя есть в релизе. Они отвечают на разные вопросы, и большинство материалов свели их в один.

Откуда берётся 100 tok/s, а откуда — нет

Вот та часть, о которой стоит сказать прямо. OpenBMB не публикует показатель в 100 ток/с для MiniCPM-V 4.7. В карточке модели указано 13+ токенов/с на iPhone 17 Pro Max при примерно 3 ГБ памяти. Это единственное утверждение о пропускной способности на устройстве, которое делает релиз, и оно измерено производителем на оборудовании, которое никто за пределами лаборатории не воспроизвёл.

Более высокие значения действительно существуют, и они получены из другого артефакта. Форк llama.cpp-omni от OpenBMB — репозиторий, в котором содержатся оптимизации для работы на устройстве, — публикует собственную таблицу для целевой конфигурации 35B-A3B, где данные сгруппированы по тому, какие оптимизации включены:

• iPhone 18 Pro Max, 12 ГБ — 3,38 tok/s на базовом уровне, 11,34 с Lookahead Expert Scheduling, 17,16 с добавленной смешанной точностью, 20,51 также с черновой головой DSpark.

• iPad Pro 11 дюймов M4, 16 ГБ — базовый показатель 2,97 ток/с, 9,81 с LES, 14,92 со смешанной точностью, 17,39 с DSpark.

Это самые высокие опубликованные показатели при работе на устройстве для этой модели, и верхняя ступень — 20,51 tok/s, то есть пятая часть от 100. Этот разрыв важен, потому что он меняет представление о том, для чего нужна модель. При 13 tok/s мобильное приложение отвечает на вопрос о фотографии за пару секунд. При 100 tok/s вы бы рассматривали её как потоковый ридер первого прохода для видео. Первое — реальный продукт. Второе — не то, что вышло в релиз, и любого, кто закладывает в бюджет цифру из твита, ждёт пятикратное разочарование.

Four stacked cards showing OpenBMB's published on-device throughput ladder for MiniCPM-V 4.7 35B-A3B on an iPhone 18 Pro Max with 12 GB: 3.38 tokens per second baseline, 11.34 with Lookahead Expert Scheduling, 17.16 with mixed precision, and 20.51 with the DSpark draft head.

Честное прочтение утверждения о 100 tok/s состоит в том, что оно сжимает три отдельных факта — 3 ГБ, работа локально, значительно быстрее предыдущего поколения — в одно число, которого нет ни в одном из источников. Улучшение от поколения к поколению реально и велико: рост с 3,38 до 20,51 tok/s — это шестикратное увеличение на устройствах того же класса, достигнутое за счёт сочетания трёх методов, а не за счёт более крупного чипа.

Релиз длился не один день, и даты имеют значение.

MiniCPM-V 4.7 появился так, как сейчас выходит множество релизов с открытыми весами: сначала файлы, потом объяснения, а поддержка во фреймворках — где-то посередине.

• 6 октября, 17:40 UTC — модель 1B и её варианты AWQ, GPTQ и int4 появляются на Hugging Face, а также сборки GGUF в 18:05.

• 7 октября, 07:07 UTC — репозиторий 35B-A3B опубликован. Карточки модели по-прежнему нет.

• 8 октября — головы спекулятивного декодирования DSpark для обоих размеров, а также сборка 35B в FP8.

• 10 октября, 18:42 UTC — llama.cpp добавляет поддержку модели.

• 12 октября — OpenBMB коммитит карточку модели, объявляет лицензию Apache-2.0 и анонсирует релиз как документированный продукт.

• 15 октября — головы DSpark привязаны к основной карточке, вместе с GGUF-черновиками для обеих целевых моделей.

Такой порядок объясняет значительную часть путаницы во вторичных публикациях. Тот, кто познакомился с моделью через llama.cpp во вторую неделю октября, запускал релиз, которого официально ещё не существовало, — без метки лицензии и без графика бенчмарков, — и его показатели пропускной способности отражают собственные решения фреймворка в области квантизации, а не что-либо, что тестировала OpenBMB.

Screenshot of the Hugging Face model card for openbmb/MiniCPM-V 4.7 35B-A3B, showing the Image-Text-to-Text pipeline tag, Transformers and Safetensors formats, the Apache-2.0 licence, and model-card prose describing on-device inference.

Поддержка llama.cpp: объединена, но ещё не совсем завершена

Апстримный пул-реквест, добавивший MiniCPM-V 4.7, необычно понятно рассказывает о том, что изменилось, и ответ таков: в архитектурном плане почти ничего. Модель почти идентична MiniCPM-V 4.6; отличие — 3D RoPE, позиция из трёх значений на токен — время, строка, столбец — вместо единственного скалярного значения, которое используют большинство визуально-языковых моделей. Поддержка расширяет существующий путь 4.6, чтобы переносить это дополнительное измерение. В PR также модель была отмечена как «upcoming», когда его открыли 25 сентября, что является хорошим намёком на то, насколько рано веса были в обращении.

Об этом остаточном дефекте стоит знать, прежде чем строить на нём функцию привязки к изображению. После того слияния upstream llama.cpp назначает токенам-маркерам изображения неправильные позиции в промптах MiniCPM-V 4.7: сами токены изображения попадают куда нужно, но <slice>, </slice> и маркеры конца строки нумеруются как обычный текст, а не получают координаты углов своих плиток, как это делает эталонная реализация get_rope_index. Видимый симптом: возвращаемые координаты систематически занижены, когда вы спрашиваете, где что находится на картинке. Исправление с модульным тестом существует в виде открытого pull request от 14 октября, и по состоянию на 20 октября он всё ещё открыт. Если ваша задача — «опиши это», вы не заметите. Если «дай мне bounding box», заметите, и вам следует либо дождаться слияния, либо использовать форк, в котором есть исправленный путь.

Ещё одна деталь сохраняется и после полного цикла: у модели 1B визуальный проектор — более крупный из скачиваемых компонентов. Веса Q4_K_M занимают 672 МБ; проектор f16 — 1,11 ГБ. Поэтому минимальное полезное развёртывание 1B — это около 1,8 ГБ файлов, причём большая их часть — глаза, а не язык; деталь, из-за которой ожидание «1B означает 1 ГБ» оказывается неверным.

Что запускать и на чём

Если цель — попробовать это на этой неделе, путь с наименьшим сопротивлением — llama.cpp или Ollama с репозиториями GGUF, указав мультимодальному клиенту соответствующий файл mmproj. На GPU с 24 GB Q4_K_M при 21.2 GB оставляет очень мало запаса для контекста — окно на 8K токенов плюс фрагменты изображения не поместятся комфортно, поэтому рассчитывайте на Q4_K_S или меньшее квантование, если вам также нужен длинный промпт. На Mac с 32 GB или больше Q8_0 жизнеспособен и ближе всего к эталонному поведению. На телефоне только собственные приложения производителя и форк llama.cpp-omni несут работу по планированию экспертов; стандартный llama.cpp даёт корректность, но не 20 tok/s.

Слой маршрутизации оправдывает себя здесь на дальней стороне локального вызова. Модель с 3B активных параметров на телефоне отлично справляется с рутинным кадром — прочитать этот чек, выглядит ли эта полка заполненной, что написано на этом указателе — и иногда она встретит страницу, которую не сможет закончить. OrcaRouter ставит более 200 размещённых моделей за одним ключом, передаёт прейскурантную цену каждого провайдера с наценкой 0%, поэтому изменение цены поставщика вступает в силу в тот же день, и автоматически переключается при деградации вышестоящего сервиса. Работающий шаблон — локальный в первую очередь с размещённым аварийным выходом, а не только локальный. Открытый чекпоинт остаётся вашим для размещения; маршрутизатор обрабатывает всё, что передаёт телефон.

Screenshot of the OrcaRouter models list showing 213 hosted models across 16 providers behind one API key and one bill.

MiniCPM-V 4.7 не обслуживается OrcaRouter, и мы не собираемся подразумевать обратное. Это чекпоинт, который вы запускаете.

Что бы определило эти три числа?

Независимое измерение модели 35B на конкретном телефоне с указанием приложения и квантования решило бы вопрос пропускной способности — в том числе выдержит ли 20,51 tok/s проверку чужим секундомером. Опубликованное определение показателя 3 GB — резидентный набор, пиковое выделение или что-то иное — решило бы вопрос памяти. А таблица по каждому бенчмарку с реальными оценками, а не пять связанных графиков, которые сейчас прилагаются к карточке, позволила бы проверить утверждение «лучше, чем Qwen3.6 35B-A3B, за меньшее время» с учётом весовых коэффициентов, выбранных OpenBMB. Ничего из этого пока не существует. Пока этого нет, точная формулировка — скучная: разреженная модель 35B, которая работает на телефоне с заявленной скоростью более 13 токенов в секунду при примерно 3 GB, с загрузкой 21 GB и объединённым путём фреймворка, в котором всё ещё остаётся одна открытая ошибка координат.