Ты хочешь запустить современную LLM на процессоре, который помнит эру Windows 8. Звучит как безумие. Но я проделал этот путь на i7-4770k (4 ядра, 8 потоков) с 32 ГБ DDR3 и старым SSD — и Qwen2-7B в Q8 действительно заработал. Живой диалог, без вылетов, со скоростью около 3-5 токенов в секунду. Долго? Да. Но это рабочий AI-помощник на железе, которое давно пора сдать в музей.
Проблема проста: 7B параметров в FP16 весят ~14 ГБ, плюс кеш внимания еще 4-6 ГБ. У тебя 32 ГБ ОЗУ — вроде хватает. Но CPU i7-4770k не поддерживает AVX2, а без него llama.cpp, собранный с AVX2, упадет с ошибкой. Да и оперативка DDR3 медленная. И вот тут начинается цирк с swap, квантованием и выносом мозга.
Почему Q8, а не Q4_K_M?
Казалось бы, бери Q4 — получишь модель 4-5 ГБ, всё поместится в оперативку. Но на старых CPU низкая разрядность квантования убивает перплексию. Qwen2-7B в Q4_K_M на i7-4770k выдавала бред на третьем предложении. Q8 сохраняет 99% качества FP16, при этом весит ~7.5 ГБ. Да, это больше, но с 32 ГБ ОЗУ ты можешь позволить себе этот запас, особенно с умным swap.
Предупреждение: Q8 требует ~8 ГБ RAM для самой модели, плюс ~10-15 ГБ для контекста (если ты не обрезаешь его до 2048 токенов). Если у тебя всего 16 ГБ — забывай про Q8, бери Q4_K_S и готовься к деградации. Но с 32 ГБ это оптимальный баланс.
Инструментарий: что ставить и как не сломать
Забудь про Python-обвязку transformers. Тебе нужен llama.cpp (или его форк KoboldCPP для удобства). Почему? Потому что Python жрет еще 300 МБ ОЗУ, а llama.cpp написан на C++ и умеет offloading слоев на CPU с контролем потоков. Но главное: он поддерживает BLAS-оптимизации для старых CPU через OpenBLAS.
Собирать llama.cpp под i7-4770k надо вручную. Стандартный бинд с GitHub собран с AVX2 — он крашнется. Качаем исходники и собираем с флагами:
git clone https://github.com/ggml-org/llama.cpp
cd llama.cpp
mkdir build && cd build
cmake .. -DCMAKE_BUILD_TYPE=Release -DLLAMA_AVX2=OFF -DLLAMA_AVX=ON -DLLAMA_FMA=ON -DLLAMA_OPENBLAS=ON
cmake --build . --config Release -j4
Флаг -DLLAMA_AVX2=OFF критичен. Без него программа просто не запустится. OpenBLAS ускоряет матричные умножения примерно на 15-20% — не чудо, но при 3 t/s каждый процент на счету.
Где взять GGUF Q8?
Huggingface завален квантованиями от энтузиастов. Ищи тег qwen2-7b-Q8_0.gguf. Но есть нюанс: некоторые сборки делались под грамматики и могут глючить на простых запросах. Я рекомендую брать официальные файлы от сообщества TheBloke — его квантования проверены миллионами запусков. Или квантуй сам через llama-quantize из состава llama.cpp.
Кстати, если хочешь сэкономить еще 2 ГБ, посмотри на IQ2 квантование — но это экзотика для маломощных устройств. В нашем случае Q8 — золотая середина.
Настройка swap: как не превратить SSD в кирпич
Ты думаешь, что 32 ГБ хватит? Наивный. Во время генерации контекст растет, и llama.cpp жрет всю свободную память. Если у тебя Linux, настрой swap-файл (не раздел!) на SSD размером 32-64 ГБ. Но не дай бог активировать swap на системном диске с Windows — начнется thrashing, SSD умрет через месяц.
Настройка для Linux:
sudo fallocate -l 64G /swapfile
sudo chmod 600 /swapfile
sudo mkswap /swapfile
sudo swapon /swapfile
И самое важное: выстави vm.swappiness = 10. Иначе ядро начнет выгружать страницы модели на диск при малейшей нагрузке, и скорость упадет до 0.5 t/s. Пропиши в /etc/sysctl.d/99-swap.conf:
vm.swappiness=10
vm.vfs_cache_pressure=50
Совет: отключи в BIOS Hyper-Threading? Нет, не делай этого. i7-4770k без HT теряет 30% производительности в llama.cpp. Потоки для инференса — не враги, они утилизируют ядра для параллельных вычислений.
Параметры запуска: чек-лист оптимизации
Вот команда, с которой я добился стабильной работы без вылетов:
./main -m qwen2-7b-q8_0.gguf \
-n 512 \
-c 2048 \
-b 256 \
-t 4 \
--no-mmap \
--mlock \
--temp 0.7 \
--repeat-penalty 1.1
- -t 4 — число потоков. 8 потоков (HT) дают микро-прирост, но повышают риск фризов. 4-5 потоков — оптимально для старого 4-ядерника.
- --no-mmap — отключает memory-mapped file. С ним модель не выгружается в swap, а остается в ОЗУ. Но требует больше физической памяти. Если есть риск OOM — убери флаг.
- --mlock — блокирует страницы в ОЗУ, не давая ядру выгружать их в swap. Критично для скорости. Если памяти хватает — включай обязательно.
- -c 2048 — контекст. 2048 токенов — разумный компромисс. 4096 съедают еще 8 ГБ ОЗУ под кеш.
- -b 256 — batch size для обработки токенов. На i7-4770k увеличение до 512 ухудшает latency, уменьшение до 128 чуть быстрее, но использует меньше кеша.
Важный момент: не используй -ngl 0 — это флаг для GPU, но если его не указать, он по умолчанию 0. Всё нормально. Подробнее о подводных камнях GPU-флагов читай в статье Как запустить Qwen3-VL-8B на CPU — там описан баг с аргументом -ngl, который ломает CPU-инференс.
Тюнинг под старый процессор: запрещенный прием
Многие гайды советуют включать BLAS через OpenBLAS или MKL. На i7-4770k OpenBLAS собранный без AVX2 — пустышка. Но есть хитрость: используй трансформацию GGML_TYPE_Q8_K вместо Q8_0. Q8_K (k-quants) дают чуть лучшую точность на старых CPU, хотя и незначительно медленнее. Разница в скорости ~3-5%, зато модель несет меньше мусора.
Еще один лайфхак: запусти модель в интерактивном режиме (-i) — тогда она не перезагружает контекст каждый раз, а поддерживает историю диалога в кеше. Но следи, чтобы контекст не переполнился.
Чего ждать от производительности: реальные цифры
После всех настроек (Q8, 4 потока, --mlock, контекст 2048) я получил:
- Скорость префилла (первый токен): 20-30 секунд. Долго, но терпимо.
- Скорость генерации: 3-5 t/s. Для чтения текста — нормально. Для диалога — медленно, но можно.
- Потребление RAM: ~11 ГБ (модель 7.5 ГБ + кеш). С включенным --mlock — почти всё в ОЗУ, swap почти не используется.
- Температура CPU: 70-80°C под нагрузкой. Стоковый кулер выдержит, но лучше поставь что-то получше.
Сравни с Qwen3-30B-A3B в IQ2 квантовании, где на топовом железе можно получить 100+ t/s. Но у нас задача другая — выжать максимум из мусора. И это работает.
Типичные ошибки: как НЕ надо запускать
Я сжег полдня, пробуя разные комбинации. Сохрани себе список граблей:
- Запуск без --mlock. Система начинает вытеснять страницы в swap, скорость падает до 0.5 t/s. Модель «тормозит» не из-за CPU, а из-за диска.
- Слишком большой контекст (-c 4096). Память забивается под завязку, OOM-killer убивает процесс. 2048 — максимум для 32 ГБ с Q8.
- Использование старого llama.cpp. Версии до b3000 имели баги с BLAS на старых CPU, приводили к segfault. Ставь последнюю стабильную от мая 2026.
- Квантование через встроенный квантайзер без оптимизации. Если ты сам квантуешь модель, обязательно используй тип
q8_0илиq8_k, а не устаревшийq8_1(он избыточен). - Сборка без OpenBLAS. Даже 15% ускорения на таком слабом CPU — это разница между «можно читать» и «заварю кофе, пока модель думает».
Отдельная тема — ошибка wrong architecture. Если скачал бинарник с AVX2, а у тебя только AVX — пересобери с флагами, как я показал выше. Альтернатива — использовать KoboldCPP, который идет с универсальными сборками без AVX2, но они медленнее.
Экстремальная экономия: уменьшаем аппетиты модели
Если даже Q8 не лезет (например, у тебя 16 ГБ), есть варианты. Но они превратят Qwen2-7B в овощ:
- Q4_K_S — 4.5 ГБ, точность теряется сильно, но на бытовых запросах сойдет.
- IQ3_XXS — 3.2 ГБ, уничтожает логику, но на простых вопросах иногда выживает.
- Q2_K — 2.5 ГБ, модель генерирует белиберду, но если нужно просто заполнить шаблон — можно.
Подробнее об этих методах читай в обзоре Скрытые жемчужины Qwen 3.5. Там показаны нестандартные квантования, которые иногда дают лучший артефакт на единицу веса, чем стандартные.
А что с мульти-модальностью?
Qwen2-7B — текстовая модель. Если тебе нужно вставлять картинки, бери Qwen3-VL-8B. Но его запуск на CPU — отдельная песня. У нас есть статья со сравнением QQwen3-VL-8B на CPU: бенчмарк, где видно, что без GPU мультимодальность превращается в пытку — 1-2 t/s.
Итоговая проверка: запусти, если…
Ты осилишь этот гайд, если:
- У тебя i7-4770k (или аналогичный без AVX2, но с AVX)
- 32+ ГБ ОЗУ (DDR3 тоже подойдет, хотя скорость упадет)
- SSD с запасом 64 ГБ под swap
- Ты готов ждать 20 секунд первый токен
- Тебе нужна адекватная модель, а не игрушка типа 1B
Слабое место — скорость генерации. 5 t/s — это только если короткие ответы. Для большой генерации кода или анализа логов лучше смотреть в сторону Qwen3-30B-A3B с IQ2 или аналогичных Mixture-of-Experts моделей. У нас есть материал про IQ2 квантование и 100 t/s — там физика обманута железом нового поколения, но концепция переносима.
Альтернативы: когда проще купить новое
Если тебе нужно не для исследований, а для работы — посмотри on-demand облачные решения. За $0.5/час можно арендовать GPU T4 и получить 40 t/s. Но если у тебя i7-4770k собрался в сервер для экспериментов или ты хочешь запустить AI на домашней NAS — этот рецепт сработает.
Кстати, есть опыт запуска 80B MoE-модели на iGPU NAS с использованием Vulkan. Это другая вселенная оптимизации, но для вдохновения — статья про 80B на iGPU показывает, как даже слабая интегрированная графика может снять часть нагрузки.
Любой современный нейросеточный движок — это жонглирование памятью. i7-4770k в 2026 — музейный экспонат, но благодаря Q8 и --mlock ты выжмешь из него последние соки. Да, это не будет работать быстро. Но будет работать.