localaiforum
Войти
Руководство › Железо

Запуск только на 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