Тест: Как Ollama использует производительность процессора Intel и эффективные ядра
Ollama на процессоре Intel: эффективные ядра против производительных ядер
У меня есть теория для проверки - если использовать все ядра процессора Intel для повышения скорости LLM Меня беспокоит, что новый модель gemma3 27 бит (gemma3:27b, 17 ГБ на ollama) не помещается в 16 ГБ видеопамяти моего GPU, и частично работает на CPU.
Более точно
ollama ps
показывает
gemma3:27b a418f5838eaf 22 ГБ 29%/71% CPU/GPU
Хотя это не выглядит ужасно, но это разделение слоев. Фактическая нагрузка: GPU:28%, CPU: 560%. Да, используются несколько ядер.
И здесь идея:
А что если заставить ollama использовать ВСЕ ядра процессора Intel - как производительные, так и эффективные?
Параметр конфигурации OLLAMA_NUM_THREADS
Ollama имеет переменную окружения OLLAMA_NUM_THREADS, которая должна указывать ollama, сколько потоков и ядер он должен использовать.
Сначала я попробовал ограничить его до 3 ядер:
sudo xed /etc/systemd/system/ollama.service
# добавить OLLAMA_NUM_THREADS=3 как
# Environment="OLLAMA_NUM_THREADS=3"
sudo systemctl daemon-reload
sudo systemctl restart ollama
но это не сработало.
Ollama всё равно использовал ~560% процессора при запуске Gemma 3 27B LLM.
Плохая удача.
Параметр вызова num_thread
Попробуем вызвать
curl http://localhost:11434/api/generate -d '
{
"model": "gemma3:27b",
"prompt": "Почему небо синее?",
"stream": false,
"options":{
"num_thread": 8
}
}' | jq .
Результат:
- Использование процессора: 585%
- Использование GPU: 25%
- Мощность GPU: 67 Вт
- Оценка производительности: 6,5 токенов/сек
Теперь попробуем удвоить ядра. Попросим ollama использовать смесь производительных и эффективных ядер:
curl http://localhost:11434/api/generate -d '
{
"model": "gemma3:27b",
"prompt": "Почему небо синее?",
"stream": false,
"options":{
"num_thread": 16
}
}' | jq .
Результат:
- Использование процессора: 1030%
- Использование GPU: 26%
- Мощность GPU: 70 Вт
- Оценка производительности: 7,4 т/с
Хорошо! Производительность увеличилась на ~14%!
Теперь пойдём на край! Все физические ядра!
curl http://localhost:11434/api/generate -d '
{
"model": "gemma3:27b",
"prompt": "Почему небо синее?",
"stream": false,
"options":{
"num_thread": 20
}
}' | jq .
Результат:
- Использование процессора: 1250%
- Использование GPU: 10-26% (нестабильное)
- Мощность GPU: 67 Вт
- Оценка производительности: 6,9 т/с
Хорошо. Теперь мы видим некоторое падение производительности. Попробуем 8 производительных + 4 эффективных:
curl http://localhost:11434/api/generate -d '
{
"model": "gemma3:27b",
"prompt": "Почему небо синее?",
"stream": false,
"options":{
"num_thread": 12
}
}' | jq .
Результат:
- Использование процессора: 801%
- Использование GPU: 27% (нестабильное)
- Мощность GPU: 70 Вт
- Оценка производительности: 7,1 т/с
Тут-то и там.
Для сравнения - запуск Gemma 3 14b, он менее умный по сравнению с Gemma 27b, но хорошо помещается в видеопамять GPU.
curl http://localhost:11434/api/generate -d '
{
"model": "gemma3:12b-it-qat",
"prompt": "Почему небо синее?",
"stream": false
}' | jq .
Результат:
- Использование процессора: 106%
- Использование GPU: 94% (нестабильное)
- Мощность GPU: 225 Вт
- Оценка производительности: 61,1 т/с
Это то, что мы называем производительностью. Даже если Gemma 3 27b умнее, чем 14b, но не в 10 раз!
Вывод
Если LLM не помещается в видеопамять GPU и некоторые слои выгружаются Ollama на CPU
- Мы можем увеличить производительность LLM на 10-14%, указав параметр
num_thread
- Падение производительности из-за выгрузки намного выше и не компенсируется этим увеличением.
- Лучше иметь более мощный GPU с большей видеопамятью. RTX 3090 лучше, чем RTX 5080, хотя у меня нет ни одного из этих…
Полезные ссылки
- Как Ollama обрабатывает параллельные запросы
- Перемещение моделей Ollama в другую папку или диск
- Справочник Ollama
- Сравнение скорости работы LLM
- Deepseek-r1 на Ollama
- Обнаружение логических ошибок с помощью LLM
- Развертывание сайта, сгенерированного Hugo, на AWS S3
- Сравнение способностей LLM к суммаризации
- Написание эффективных промптов для LLM
- Проблемы с ухудшением производительности у процессоров Intel 13-го и 14-го поколений
- Конвертация HTML-контента в Markdown с использованием LLM и Ollama
- Хорош ли Quadro RTX 5880 Ada 48GB?
- Переранжирование текстовых документов с использованием Ollama и модели Qwen3 Embedding - на языке Go