Тест: Как Ollama использует производительность процессоров Intel и эффективные ядра

Ollama на процессорах Intel: эффективность против производительных ядер

Содержимое страницы

У меня есть теория, которую нужно проверить - использование всех ядер Intel CPU повысит скорость работы LLMs? (Тест: Как Ollama использует производительность и эффективные ядра Intel CPU)

Меня беспокоит, что новая модель gemma3 27 бит (gemma3:27b, 17ГБ в ollama) не помещается в 16ГБ видеопамяти моей GPU и частично работает на CPU.

Для более подробной информации о пропускной способности, задержках, видеопамяти и бенчмарках на различных платформах и оборудовании, см. Производительность LLM: Бенчмарки, узкие места и оптимизация.

Будем точны

ollama ps

показывает

gemma3:27b    a418f5838eaf    22 GB    29%/71% CPU/GPU

Хотя это не выглядит ужасно, но это разделение слоев. Фактическая нагрузка: GPU:28%, CPU: 560%. Да, используются несколько ядер.

Портрет Лламы и летящих CPU

И вот идея:

А что, если заставить ollama использовать ВСЕ ядра Intel CPU - как производительные, так и эффективные?

Параметр конфигурации OLLAMA_NUM_THREADS

У Ollama есть переменная окружения параметра конфигурации OLLAMA_NUM_THREADS, которая должна указывать ollama, сколько потоков и ядер соответственно он должен использовать.

Сначала я попробовал ограничить его тремя ядрами:

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% CPU при запуске LLM Gemma 3 27B.

Неудача.

Параметр вызова num_thread

Давайте попробуем вызвать

curl http://localhost:11434/api/generate -d '
{
"model": "gemma3:27b",
"prompt": "Почему небо голубое?",
"stream": false,
"options":{
  "num_thread": 8
}
}'  | jq .

Результат:

  • Использование CPU: 585%
  • Использование GPU: 25%
  • Мощность GPU: 67w
  • Оценка производительности: 6.5 токенов/сек

Теперь давайте удвоим ядра. Скажем ollama использовать смесь производительных и эффективных ядер:

curl http://localhost:11434/api/generate -d '
{
"model": "gemma3:27b",
"prompt": "Почему небо голубое?",
"stream": false,
"options":{
  "num_thread": 16
}
}'  | jq .

Результат:

  • Использование CPU: 1030%
  • Использование GPU: 26%
  • Мощность GPU: 70w
  • Оценка производительности: 7.4 т/с

Хорошо! Производительность увеличилась на ~14%!

Теперь давайте пойдем на крайности! Все физические ядра в бой!

curl http://localhost:11434/api/generate -d '
{
"model": "gemma3:27b",
"prompt": "Почему небо голубое?",
"stream": false,
"options":{
  "num_thread": 20
}
}'  | jq .

Результат:

  • Использование CPU: 1250%
  • Использование GPU: 10-26% (нестабильно)
  • Мощность GPU: 67w
  • Оценка производительности: 6.9 т/с

Хорошо. Теперь мы видим некоторое снижение производительности. Давайте попробуем 8 производительных + 4 эффективных:

curl http://localhost:11434/api/generate -d '
{
"model": "gemma3:27b",
"prompt": "Почему небо голубое?",
"stream": false,
"options":{
  "num_thread": 12
}
}'  | jq .

Результат:

  • Использование CPU: 801%
  • Использование GPU: 27% (нестабильно)
  • Мощность GPU: 70w
  • Оценка производительности: 7.1 т/с

Вот так-то.

Для сравнения - запуск Gemma 3 14b, он менее умный по сравнению с Gemma 27b, но хорошо помещается в видеопамять GPU.

curl http://localhost:11434/api/generate -d '
{
"model": "gemma3:12b-it-qat",
"prompt": "Почему небо голубое?",
"stream": false
}'  | jq .

Результат:

  • Использование CPU: 106%
  • Использование GPU: 94% (нестабильно)
  • Мощность GPU: 225w
  • Оценка производительности: 61.1 т/с

Это то, что мы называем производительностью. Хотя Gemma 3 27b умнее, чем 14b, но не в 10 раз!

Заключение

Если LLM не помещается в видеопамять GPU и некоторые слои переносятся Ollama на CPU

Для более подробных бенчмарков, настройки CPU/GPU и руководств по производительности, посетите наш Центр производительности LLM: Бенчмарки, узкие места и оптимизация.

Полезные ссылки