Чтобы проверить скорость генерации (токены в секунду) в Ollama, можно использовать встроенные средства или внешние бенчмарки.

1. Самый простой способ: Команда /set verbose

Если вы используете Ollama через терминал, вы можете включить подробный режим, который выводит статистику после каждого ответа.

  • Запустите модель: ollama run <название_модели> (например, ollama run llama3).
  • Введите команду: /set verbose.
  • Отправьте любой запрос.
  • В конце ответа вы увидите блок статистики, где:
    • eval rate: это и есть количество токенов в секунду (t/s) при генерации ответа.
    • prompt eval rate: скорость обработки вашего входящего запроса.

2. Через API (Postman, cURL или Python)

Если вы используете Ollama как сервис, статистика возвращается в JSON-ответе.

  • Выполните POST-запрос к http://localhost:11434/api/generate.
  • В поле usage (или в конце потока, если stream: false) вы найдете:
    • eval_count: общее количество сгенерированных токенов.
    • eval_duration: время генерации в наносекундах.
  • Формула(eval_count / eval_duration) * 10^9 = токены в секунду.

3. Специализированные инструменты

Для более глубокого тестирования (бенчмаркинга) можно использовать готовые скрипты:

  • Ollama Benchmark: простой скрипт на Python, который прогоняет несколько тестов и выдает среднее значение t/s.
  • LLM-Perf: инструмент от Hugging Face для детального замера задержек и пропускной способности. Hostkey +1

От чего зависит скорость?

  • Видеопамять (VRAM): Если модель полностью помещается в VRAM видеокарты, скорость будет максимальной. Если часть данных уходит в оперативную память (System RAM), скорость падает в 10–50 раз.
  • Квантование: Модели с меньшим «весом» (например, Q4_K_M) работают быстрее, чем полноразмерные модели, при почти том же качестве.
  • Слои на GPU: Ollama автоматически распределяет слои модели между CPU и GPU. Вы можете проверить это через логи сервера (ollama serve) или утилиту nvidia-smi.

Пример:

Запустим модель: ollama на компе без видиокарты с 32Gb Оперативы
введем команду >>> /set verbose
спросим >>> Привет. Какой сегодня день недели?
ответ: Привет! Сегодня понедельник.

Ниже будет выведен лог:

total duration: 10.724942815s
load duration: 6.752076401s
prompt eval count: 19 token(s)
prompt eval duration: 1.563681977s
prompt eval rate: 12.15 tokens/s
eval count: 9 token(s)
eval duration: 2.37215154s
eval rate: 3.79 tokens/s

расшифровка ключевых показателей:

  • eval rate: 3.79 tokens/s — это реальная скорость печати текста. 4 токена в секунду — это примерно скорость неторопливого чтения человека. Для комфортной работы с LLM хорошим показателем считается 10–15 t/s и выше.
  • load duration: 6.75s — модель очень долго загружалась в память. Это подтверждает, что модель «пропихивалась» в оперативную память, а не в видеопамять.
  • prompt eval rate: 12.15 tokens/s — скорость, с которой нейросеть «прочитала» и поняла вопрос. Она всегда выше скорости генерации, но 12 t/s — это довольно низкое значение (на GPU оно обычно измеряется сотнями).

Общие причины низкой скорости:

  1. Модель работает на CPU: Если нет дискретной видеокарты (NVIDIA/AMD) или она не подцепилась, Ollama считает на процессоре. Оперативная память (RAM) гораздо медленнее видеопамяти (VRAM), отсюда и 3.79 t/s.
  2. Нехватка видеопамяти: Если видеокарта есть, но модель в неё не влезла целиком, Ollama переносит часть слоев на CPU. Это «убивает» производительность.
  3. Слишком тяжелая модель: Запустили модель, которая слишком велика для железа (например, 13B или 30B параметры на слабом ПК).