Запуск только на CPU
Инференс только на CPU жизнеспособен, и числа менее удручающие, чем гласит молва, — при условии, что вы понимаете: это та же игра на пропускную способность, что и декодирование на GPU, только с десятой долей трубы. Современный десктоп с двухканальной DDR5 имеет ~80–100 GB/s пропускной способности памяти. Это весь ваш бюджет; сами ядра CPU мало что меняют.
Формула, с разбором
decode tok/s ≈ эффективная пропускная способность (GB/s) ÷ размер модели (GB)
Двухканальная DDR5-5600 на бумаге даёт ~90 GB/s; считайте 60–80 GB/s эффективных после доли ядер и префетчеров. Модель 8B Q4 — ~5 GB, поэтому:
90 GB/s ÷ 5 GB ≈ 18 tok/s теоретический потолок → 8–14 tok/s на практике.
Это не баг — это та же арифметика, что у большой дискретной GPU, с десятой долей пропускной способности.
Чего ждать по железу
| Платформа | Примерная пропускная способность | Декодирование 8B Q4 | Ощущение |
|---|---|---|---|
| Ноутбук, DDR4 двухканальная | 40–50 GB/s | 5–8 tok/s | читаемо, медленный старт |
| Ноутбук, DDR5 двухканальная | 60–80 GB/s | 8–12 tok/s | пригодный чат |
| Десктоп, DDR5 двухканальная | 80–100 GB/s | 10–16 tok/s | приятно для ≤8B |
| Threadripper/EPYC, четыре+ канала | 200–460 GB/s | 30–80 tok/s | действительно хорошо |
| Двухсокетный сервер | 400+ GB/s | 60–100 tok/s | почти RAM-GPU |
Уровни комфорта на двухканальном десктопе:
- Приятно: чат и помощь по коду с 7–8B Q4 на 10+ tok/s.
- Пригодно: 13–14B Q4 на ~5–8 tok/s. Ждать придётся, но не вечно.
- Терпение: 24–32B Q4 на ~2–4 tok/s. Ночные батчи, не чат.
- Не надо: 70B Q4 ниже 1 tok/s на двухканальной памяти. Только четырёхканальные воркстейшны, и даже там подумайте дважды.
Аварийный выход: частичный оффлоад
Если есть маленькая GPU, llama.cpp делит слои между CPU и GPU — скажем, 20 из 32 слоёв на карте 8 GB. Часть на GPU работает на скорости VRAM, остальное на скорости RAM, поэтому итог между двумя крайностями. Это бьёт оба чистых режима, когда веса нигде не влезают целиком, и бьёт наблюдение, как «полный оффлоад на GPU» молотит в разделяемую память.
Настоящая боль — префилл
Декодирование получает всё внимание, но именно префилл болит на CPU: он ограничен вычислениями, а у десктопного CPU — малая доля FLOPS GPU. Промпт на 4,000 токенов для модели 8B может стоить десятки секунд до первого токена. RAG-пайплайны с большими вставленными контекстами платят это на каждый запрос. Смягчения: держите промпты короткими, давайте батч-префиллу больше потоков, чем декодированию, и считайте индексацию разовой стоимостью (см. RAG).
Практичные флаги
# потоки декодирования = физические ядра; батч-префилл может использовать и логические
llama-server -m qwen2.5-7b-instruct-q4_k_m.gguf -c 8192 -t 8 --threads-batch 16
# многосокетный бокс: распределить память по узлам NUMA
numactl --interleave=all ./llama-server -m model.gguf -t 32
# какой SIMD у этого CPU? AVX2 — минимум; AVX-512 помогает префиллу
lscpu | grep -o 'avx[0-9a-z_]*' | sort -u
-tна уровне физических ядер обычно бьёт логические/SMT-счётчики для декодирования; бенчмаркьте оба на своей машине — точка пересечения зависит от нагрузки.- AVX2 — база везде; AVX-512 (Zen 4/5, свежие Xeon) даёт реальный выигрыш в префилле. llama.cpp определяет поддержку при сборке.
- На многосокетных машинах NUMA-пиннинг может дать 20%+ — память на дальнем сокете это медленная память.
- Ноутбучная DDR4 даёт примерно половину пропускной способности десктопной DDR5. Та же формула, худшая константа: ждите 5–8 tok/s там, где десктоп даёт 12.
Когда CPU-only — действительно правильный ответ
- Эмбеддинги и индексация RAG — важна пропускная способность, не задержка; несколько часов чанк-эмбеддинга ночью — бесплатно.
- Крошечные модели в скриптах — классификаторы, экстракторы и реранкеры 0.5–3B отвечают за десятки миллисекунд даже на CPU.
- Фоновые пакетные задачи — суммаризуйте бэклог на 3 tok/s, пока вы спите; никто не смотрит на стрим.
- Попробовать перед покупкой — убедиться, что семейство моделей вообще справляется с задачей, прежде чем вкладываться в GPU.
Если цель — интерактивный чат и есть любая GPU, поставьте модель туда. Используйте первый запуск, чтобы начать сегодня, и скорость, чтобы понять, что значат цифры, которые вы видите.
Связанные разделы: первый запуск · скорость · RAG