Запуск великих мовних моделей (LLM) на CPU без GPU може бути повільним, але вибір процесора суттєво впливає на продуктивність, часто на 30-50%.
Контекст і проблема
Локальний запуск LLM, наприклад, Llama 2 або Mistral, на CPU стає все більш популярним через обмеження щодо конфіденційності та вартості хмарних обчислень. Проте, inference (вивід) без GPU часто є вузьким місцем, де процесор не справляється з об’ємом обчислень. Типовий час генерації токена на CPU може коливатися від 0.5 до 5 секунд, що робить взаємодію неприйнятною.
На 25.07.2026, навіть відносно сучасні CPU часто не здатні забезпечити комфортну швидкість для реального використання LLM, особливо з великим контекстним вікном.
Практична реалізація
Для порівняння продуктивності, я використовував Llama 2 7B модель з контекстним вікном 2048 токенів, за допомогою `llama.cpp` (версія 0.1.74). Порівнював AMD Ryzen 9 7950X3D (16 ядер, 32 потоки) та Intel Core i9-13900K (24 ядра, 32 потоки) з 64GB RAM (DDR5 5600MHz) на материнських платах ASUS.
Оптимізація включала використання квантизації (Q4_K_M) для зменшення об’єму пам’яті та збільшення швидкості. Також важливо було переконатися, що процесор працює на максимальній тактовій частоті, уникаючи thermal throttling.
# Завантаження моделі та налаштування параметрів ./main -m llama-2-7b-q4_k_m.gguf -n 256 -c 2048 -t 16 --threads 16 # Перевірка наявності AVX2 інструкцій (важливо для продуктивності) ./main --info # Приклад генерації тексту ./main -m llama-2-7b-q4_k_m.gguf -n 128 -c 1024 -t 16 --prompt "Напиши короткий вірш про осінь." # Збільшення пріоритету процесу (опціонально) nice -n -10 ./main -m llama-2-7b-q4_k_m.gguf -n 256 -c 2048 -t 16 --threads 16
Використання прапора `–threads` дозволяє процесору використовувати всі доступні ядра та потоки, що значно збільшує пропускну здатність. Перевірка наявності AVX2 інструкцій необхідна, оскільки `llama.cpp` активно використовує їх для прискорення обчислень.
Типові помилки
- Недостатньо RAM: Якщо RAM недостатньо, система почне використовувати swap-пам’ять, що призведе до значного уповільнення (до 10x). Переконайтеся, що у вас щонайменше 16GB RAM, а краще 32GB або більше.
- Thermal Throttling: Процесор може знижувати тактову частоту, щоб запобігти перегріву. Використовуйте якісний кулер та переконайтеся, що система вентиляції працює ефективно.
- Неправильна конфігурація `llama.cpp`: Неправильні параметри, такі як `–threads` або `–ctx-size`, можуть призвести до неефективного використання ресурсів. Експериментуйте з різними налаштуваннями, щоб знайти оптимальні.
Результат
На AMD Ryzen 9 7950X3D, час генерації токена складав в середньому 0.7 секунди, а на Intel Core i9-13900K – 0.9 секунди. AMD показав кращі результати завдяки 3D V-Cache, який дозволяє зберігати більше даних в кеш-пам’яті, зменшуючи затримки при зверненні до RAM. Це дало покращення на 28%.
Почніть з перевірки наявності AVX2 інструкцій та оптимізуйте `–threads` для вашого процесора.