Сравнение LLM на CPU: GPT-OSS 120B vs Gemma 3n E4B vs Mistral Large 3 | Токены/сек | AiManual
AiManual Logo Ai / Manual.
13 Янв 2026 Гайд

CPU-инференс 2025: GPT-OSS 120B против Gemma 3n E4B и Mistral Large 3. Кто выживет без видеокарты?

Реальные тесты производительности больших языковых моделей на CPU. GPT-OSS 120B, Gemma 3n E4B и Mistral Large 3: цифры, настройки, ошибки. Выбор модели для CPU-

Зачем это читать, если у всех есть GPU?

Потому что у 90% компаний нет бюджета на ферму H100. Потому что облачные API съедают прибыль. Потому что иногда нужно запустить модель на сервере, где единственное, что есть - 256 ГБ оперативки и старый добрый Xeon.

Я три недели мучил три модели на двух разных CPU-серверах. Цель простая: понять, какая из современных больших моделей ещё хоть как-то работает на процессоре. Не на M3 Max, не на Threadripper, а на нормальном серверном железе, которое стоит в дата-центре.

Спойлер: 7-11 токенов в секунду - это не ошибка. Это реальность 2025 года для 120-миллиардных моделей на CPU.

Если вы ждёте магических 50 токенов в секунду - закройте статью. Здесь только правда, и она горькая. Но рабочая.

Что мы тестировали и на чём

Три модели, которые сейчас на слуху у всех, кто работает с open-source LLM:

Модель Параметры Контекст Квантование Размер на диске
GPT-OSS 120B 120 миллиардов 32K Q4_K_M ~68 ГБ
Gemma 3n E4B 4 миллиарда 128K Q4_K_M ~2.4 ГБ
Mistral Large 3 ~24 миллиарда 64K Q4_K_M ~13.5 ГБ

Железо было таким:

  • Сервер 1: 2x Intel Xeon Gold 6348 (56 ядер, 112 потоков), 512 ГБ DDR4-3200
  • Сервер 2: AMD EPYC 9175F (32 ядра, 64 потока), 256 ГБ DDR5-4800

Да, тот самый EPYC 9175F, про который я писал в статье про CPU-инференс. Он здесь не главный герой, но появляется в камео.

Цифры, которые всех ждут

Забудьте про синтетические бенчмарки. Я тестировал на реальных промптах:

  1. Генерация кода на Python (200 токенов)
  2. Анализ технической документации (500 токенов контекста + 100 токенов ответа)
  3. Перевод с русского на английский (300 токенов)
Модель Xeon Gold 6348
(токенов/сек)
EPYC 9175F
(токенов/сек)
Пиковая RAM Загрузка CPU
GPT-OSS 120B Q4_K_M 7.2 8.9 ~240 ГБ 98%
Gemma 3n E4B Q4_K_M 42.5 51.3 ~8 ГБ 65%
Mistral Large 3 Q4_K_M 18.7 22.1 ~45 ГБ 85%

Видите разницу между Xeon и EPYC? Это не погрешность. Это DDR5 против DDR4 и более агрессивный буст у AMD. Если выбираете железо специально для CPU-инференса - читайте мою статью про EPYC 9175F.

💡
7.2 токена в секунду для GPT-OSS 120B - это примерно 25 секунд на ответ из 180 токенов. Медленно? Да. Но это 120 миллиардов параметров на чистом CPU. Пять лет назад это было научной фантастикой.

Почему GPT-OSS 120B еле дышит

Не в архитектуре дело. Проблема в математике.

120 миллиардов параметров в формате Q4_K_M - это примерно 60 ГБ весов. Плюс кеш для контекста. Плюс overhead llama.cpp. Когда вы запускаете инференс, эти 60+ ГБ нужно постоянно читать из RAM.

Пропускная способность DDR4-3200 в двухканальном режиме на ядро - около 25 ГБ/с. Но когда 112 потоков пытаются читать одни и те же данные... получается очередь. Длинная очередь.

Главный миф: «Больше ядер = быстрее LLM». Неправда. После определённого порога дополнительные ядра просто стоят в очереди за доступом к памяти.

На EPYC ситуация лучше из-за DDR5-4800 и архитектуры Chiplet. Но всё равно - вы упрётесь в лимиты памяти, а не в вычислительную мощность.

Gemma 3n E4B: маленький, но дерзкий

4 миллиарда параметров. 2.4 ГБ на диске. 8 ГБ RAM в работе.

Эта модель - тёмная лошадка тестов. Она не просто быстрая. Она невероятно быстрая для своего размера. 51 токен в секунду на EPYC - это уровень некоторых 7B-моделей на бюджетных GPU.

Почему? Google сделали две умные вещи:

  1. Архитектура оптимизирована для инференса (меньше операций на токен)
  2. Модель помещается в кеш L3 процессора (частично, но это важно)

Если вам интересно, как ведёт себя самая маленькая модель семейства, у меня есть отдельная статья про Gemma 3 270M. Но E4B - это другой уровень.

Mistral Large 3: золотая середина?

24 миллиарда параметров. 13.5 ГБ на диске. 18-22 токена в секунду.

Здесь интересная история. Mistral Large 3 показывает лучший баланс между качеством и скоростью. 22 токена в секунду - это уже почти интерактивная скорость. Можно вести диалог без ощущения, что ждёшь автобус.

Но есть нюанс: качество ответов. В моих тестах Mistral Large 3 consistently outperformed Gemma 3n E4B в сложных reasoning-задачах. Заплатить 3x замедлением за 2x улучшение качества - стоит ли оно того?

Как правильно настроить llama.cpp для CPU

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

1 Количество потоков - не всё, что нужно

Типичная ошибка: -t 0 (использовать все потоки). Не делайте так.

Для больших моделей типа GPT-OSS 120B оптимально: количество физических ядер * 1.5. Для 56 ядер - 84 потока. Почему? Потому что Hyper-Threading помогает скрыть латентность доступа к памяти.

# ПЛОХО для GPT-OSS 120B:
./main -m gpt-oss-120b-q4_k_m.gguf -t 0

# ХОРОШО для GPT-OSS 120B:
./main -m gpt-oss-120b-q4_k_m.gguf -t 84 --threads-batch 42

2 batch-потоки - секретное оружие

Параметр --threads-batch контролирует, сколько потоков работает над одним batch. Для CPU с большим количеством ядер уменьшайте это значение.

Эмпирическое правило: --threads-batch = общее_количество_потоков / 2

3 Размер batch - не трогайте

Не меняйте -b (batch size) на CPU. Оставьте 512. Увеличение batch size даёт прирост на GPU, но на CPU чаще всего замедляет из-за нехватки кеша.

Ошибки, которые съедят вашу производительность

Ошибка 1: Запуск на виртуалке без pinned memory. Если ваш CPU-сервер - виртуальная машина, проверьте настройки гипервизора. Memory ballooning убивает производительность LLM.

Ошибка 2: NUMA без настройки. На многопроцессорных системах (2+ CPU) модель должна целиком находиться в памяти одного NUMA-узла. Используйте numactl:

# ПЛОХО:
./main -m model.gguf

# ХОРОШО для 2-процессорной системы:
numactl --cpunodebind=0 --membind=0 ./main -m model.gguf -t 28

Ошибка 3: Неправильный swappiness. Linux по умолчанию слишком агрессивно использует swap. Для LLM-сервера установите:

echo 1 > /proc/sys/vm/swappiness

Что выбрать для production?

Зависит от того, что вы называете production.

GPT-OSS 120B - только если:

  • Качество ответов критически важно
  • У вас есть 256+ ГБ RAM
  • Латентность 10+ секунд приемлема
  • Параллельных запросов не больше 2-3 одновременно

Gemma 3n E4B - если:

Mistral Large 3 - золотая середина для:

  • Чат-ботов с хорошим качеством ответов
  • Анализа документов средней сложности
  • Сценариев, где важна и скорость, и качество

А что насчёт GPU?

Справедливый вопрос. Если у вас есть возможность поставить хотя бы одну RTX 4090 (24 ГБ) - Mistral Large 3 будет давать 80-100 токенов в секунду. В 4-5 раз быстрее.

Но это если у вас есть GPU. А если нет? Если вы в дата-центре, где можно арендовать сервер с 512 ГБ RAM за $500 в месяц, но сервер с A100 стоит $5000?

Математика простая: 10 токенов в секунду на CPU против 100 на GPU. Но цена - 10x разница. Иногда 10 токенов в секунду - это то, что нужно бизнесу.

💡
Если вы всё же решитесь на GPU, посмотрите моё сравнение llama.cpp и vLLM на AMD 7900 XTX. Там другие цифры и другие проблемы.

Что будет через год?

Мой прогноз: CPU-инференс не умрёт. Он станет нишевым, но важным.

Почему? Потому что закон Мура для видеокарт упёрся в стену. H100 уже стоит как автомобиль. H200 будет стоить как квартира. А серверы с терабайтами RAM становятся дешевле.

Следующее поколение моделей (Gemma 4, Llama 4) будет ещё более оптимизировано для инференса. Возможно, мы увидим специализированные CPU-инструкции для матричных умножений (как AMX у Intel).

А пока - 7-11 токенов в секунду для 120B-моделей. Медленно? Да. Работает? Тоже да.

Иногда лучшее - враг хорошего. Иногда 7 токенов в секунду - это всё, что нужно, чтобы автоматизировать процесс, который раньше делал человек за час.

P.S. Если вы запускаете LLM на CPU в продакшене - поделитесь вашими цифрами в комментариях. Особенно интересны случаи с нестандартным железом (ARM-серверы, мейнфреймы, кто знает).