Суть эксперимента: мощь бюджетного железа
В эпоху, когда запуск больших языковых моделей ассоциируется с RTX 4090 и 24 ГБ видеопамяти, автор исследования задался вопросом: что можно выжать из устаревшей NVIDIA GeForce GTX 1650 Ti с всего 4 ГБ GDDR6? Результат превзошел ожидания: благодаря тонкой настройке параметров llama.cpp удалось достичь скорости генерации токенов до 59 токенов в секунду для модели Gemma 4 и ускорить Qwen3.5–4B в 2.24 раза по сравнению с базовыми настройками.
Тестовая конфигурация и модели
Исследование проводилось на трех моделях с квантованием Q4_K_M в формате GGUF. Важно отметить, что размер файла модели не всегда коррелирует с потреблением памяти при инференсе, так как часть тензоров может оставаться в CPU-памяти.
| Модель | Квантование | Размер GGUF | Макс. ускорение |
|---|---|---|---|
| Gemma 4 E2B IT | Q4_K_M | 3.22 GiB | ~59 токенов/сек |
| Qwen3.5–4B | Q4_K_M | 2.55 GiB | 2.24× |
| Qwen3–4B | Q4_K_M | 2.33 GiB | 2.07× |
Главный инсайт: настройка GPU offloading
Ключевым открытием стало то, что автоматический выбор параметров в llama.cpp не всегда оптимален для пропускной способности. Параметр --gpu-layers требовал индивидуальной настройки:
- Qwen3 и Qwen3.5: Переход с
--gpu-layers autoна--gpu-layers all(полное размещение слоев на GPU) дал драматический прирост скорости. - Gemma 4: Полное размещение слоев не дало значимого улучшения, что подчеркивает важность архитектуры модели.
Также было выявлено, что использование KV-кэша в формате Q8 для Qwen3 позволяет сэкономить 260 MiB видеопамяти при потерях в производительности всего около 4%.
Методология тестирования
Для исключения субъективности автор использовал автоматизированные PowerShell-скрипты, которые запускали llama-server, отправляли API-запросы и фиксировали метрики. Были протестированы 48 конфигураций для каждой модели, варьируя:
- Стратегии загрузки в GPU: auto, 12, 24, all.
- Количество потоков CPU: 4 и 6.
- Размер микро-батчей: 128 и 256.
Тесты включали пять типов промптов: фактологические вопросы, юмор, переводы (сербский-английский) и улучшение промптов. Все эксперименты прошли успешно, подтвердив, что для достижения максимальной производительности на слабом железе критически важно не просто запускать модель, а точно настраивать параметры инференса под конкретную архитектуру.
Источник: Towards AI pub ↗
