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