Сколько токенов в секунду выдаёт LLM: как измерить скорость

Сколько токенов в секунду выдаёт LLM и когда пользователь получит ответ? Разбор метрик, бенчмарков и замер скорости потока на Python для своего приложения.

Опубликовано

Автор
Сколько токенов в секунду выдаёт LLM: как измерить скорость

При выборе модели смотрите прежде всего на то, сколько ждёт пользователь. Одного заявленного числа токенов в секунду недостаточно. Groq указывает для OpenAI GPT-OSS 120B скорость 500 токенов в секунду, но эта цифра провайдера не говорит, когда собеседник услышит ответ. Измеряйте задержку до начала выдачи, темп поступления текста и время до момента, когда результатом можно воспользоваться. Источник: таблица поддерживаемых моделей Groq.

Что показывает число токенов в секунду

Скорость выдачи в токенах в секунду показывает, как быстро LLM передаёт сгенерированные токены после получения первого. Большая языковая модель, или LLM, обрабатывает текст в виде токенов: это могут быть слова, части слов или знаки препинания. Число токенов нельзя универсальным способом перевести в число слов. В определении Cerebras это различие оговорено прямо.

Представьте, что вы пришли в библиотеку и забираете книги одну за другой. Ожидание у закрытой двери и скорость выдачи книг — разные вещи, но от обеих зависит, когда вы уйдёте со всем нужным. Быстрая выдача не отменяет долгого ожидания снаружи.

В приложении стоит отдельно отслеживать следующие показатели:

ПоказательГраницы измеренияНа какой вопрос отвечает
Время до первого токена, или TTFTОт отправки запроса до получения первого токенаКогда начинается выдача?
Скорость выдачи в токенах в секундуЧисло токенов, полученных после первого, делённое на время их полученияКак быстро поступает поток?
Время до первого токена ответаОт отправки запроса до первого токена ответа, после всех предшествующих рассужденийКогда начинается сам ответ?
Полное время ответа APIОт отправки запроса до получения полного ответаКогда ответ получен целиком?

Эти границы соответствуют определениям метрик Artificial Analysis. Первый токен рассуждений может прийти раньше первого токена ответа, поэтому такие интервалы нужно называть по-разному.

Временная шкала в архитектурном стиле: ожидание первого токена, выдача текста и общая длительность потока
Скорость выдачи описывает лишь часть пути. Ожидание первого токена и завершение потока измеряются в своих границах.

Полная задержка приложения начинается с действия пользователя и заканчивается получением полезного результата. Для голосового ассистента это может быть слышимый ответ, для агента — выполненное действие. Поиск данных, выполнение инструментов, синтез речи и обновление интерфейса могут происходить за пределами запроса к модели. Измеряйте и весь этот путь.

В основе работы модели лежат этапы prefill — обработка промпта — и decode — генерация продолжения. В разборе инференса LLM показано, как эта работа проходит через систему обслуживания запросов.

Почему одной цифры скорости недостаточно

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

Длина промпта и кешированный контекст

Короткий вопрос в чате поддержки и тот же вопрос с длинной историей переписки и найденными документами о правилах компании — разная нагрузка. Объём входных данных меняет работу, которую нужно выполнить до ответа. В руководстве по снижению задержек Groq называет размер входных данных одним из факторов, влияющих на TTFT.

Фиксируйте в результатах теста длину промпта и состояние кеша. В разборе KV-кеша объясняется, как сохранённое состояние механизма внимания используется при генерации и как повторное использование промпта связано с кешированием. Повторный запрос с уже прогретым кешем нельзя без оговорок выдавать за новую беседу с клиентом.

Рассуждения до ответа

Модель с рассуждениями может генерировать промежуточные токены, прежде чем выдать ответ. Высокая скорость генерации не говорит, насколько длинными будут эти рассуждения. Уточняйте, учитывает ли заявленная скорость этот поток и на чём останавливается таймер первого токена: на рассуждении или на тексте ответа.

Для ассистента по бронированию полезный результат — пригодный к использованию ответ или вызов инструмента. Индикатор размышления даёт понять, что запрос принят, но сам по себе не завершает бронирование.

Пакетная обработка и параллельные запросы

Пакетная обработка объединяет задачи, чтобы эффективнее загружать оборудование. Общая пропускная способность учитывает выдачу по всем запросам, а скорость для отдельного пользователя — поток в рамках его запроса. Cerebras отмечает, что пакетная обработка может повысить пропускную способность, одновременно увеличив время ожидания. Источник: объяснение пропускной способности Cerebras.

При эксплуатации важно понять: продолжает ли каждая беседа получать ответ, когда появляются другие? Проводите замеры при характерном для приложения числе одновременных запросов, учитывая ошибки и повторные попытки. Хороший результат на почти незагруженном эндпоинте на этот вопрос не отвечает.

Регион и доставка потока

Расположение приложения и обслуживающего запросы эндпоинта влияет на сетевую задержку. В рекомендациях по анализу сети Groq разделяет время обработки на сервере и задержку, которую видит клиент.

Делайте замеры из региона, где работает ваш бэкенд. Если приложение проксирует поток в браузер, добавьте измерение на стороне браузера: буферизация между этими точками может превратить равномерный поток от провайдера в порционную выдачу. Исправить этот участок иногда важнее, чем сменить модель.

Сколько токенов в секунду выдаёт GPU

У GPU — ускорителя, на котором выполняется инференс, — нет единой содержательной характеристики «токенов в секунду» вне конкретной модели и нагрузки. При сравнении оборудования рядом с результатом должны быть указаны модель, точность вычислений, контекст, конфигурация сервера инференса и число одновременных запросов.

Квантизация снижает числовую точность ради экономии памяти; её влияние на скорость и качество зависит от реализации. Cerebras поясняет это в материале о сжатии моделей. При сравнении развёртываний сжатых моделей используйте руководство по квантизации LLM и проверяйте качество ответов наряду со скоростью.

Как провайдеры указывают скорость

Относитесь к опубликованным значениям как к заявлениям конкретного провайдера о конкретной модели на определённую дату. Перечисленные ниже страницы провайдеров проверены 24 октября 2026 года. Это их цифры, а не результаты замеров, проведённых для этой статьи.

Cerebras: заявленная скорость с оговоркой об условиях использования

Провайдер инференса Cerebras указывает для OpenAI GPT-OSS 120B в таблице Developer скорость «~3000 tokens/s». На той же странице сказано, что производительность зависит от модели и конфигурации, а доступ Developer предназначен для оценки, а не для работы в продакшене. Источник: тарифы Cerebras.

Страница сервиса инференса Cerebras
Cerebras

Главный вопрос — сможет ли доступный вам вариант развёртывания обслуживать вашу нагрузку с нужной отзывчивостью и достаточным запасом мощности. Одна таблица этого не покажет.

Скорость Groq: смотрите строку нужной модели

Провайдер инференса Groq указывает для OpenAI GPT-OSS 120B значение «500» в столбце «SPEED (T/SEC)» таблицы поддерживаемых моделей. Это опубликованное Groq значение для данной строки. Источник: поддерживаемые модели Groq.

Документация Groq с примером потоковой выдачи ответа в чате
Groq

По этим таблицам нельзя определить, во сколько раз один провайдер будет быстрее другого в приложении. Для такого вывода нужны одинаковые промпты, настройки рассуждений, правила подсчёта токенов, нагрузка и границы измерения.

Выбирая баланс скорости и стоимости, сравнивайте цену успешно выполненной задачи и необходимую мощность с помощью руководства по тарифам Cerebras и руководства по тарифам Groq.

Где смотреть независимые замеры

Независимый сервис бенчмарков Artificial Analysis — удобная отправная точка для сравнения моделей и провайдеров инференса. Откройте рейтинг провайдеров, а затем изучите, на каком эндпоинте и при какой нагрузке получен результат.

Сравнение провайдеров инференса на Artificial Analysis
Artificial Analysis

В текущей методике измерения производительности указаны следующие условия:

  • Стандартная нагрузка — примерно 10,000 входных токенов и не менее 1,500 токенов ответа.
  • Для обычных нагрузок результат представлен медианой за последние 72 часа.
  • Основной тестовый сервер находится в зоне us-central1-a Google Cloud.
  • Для замеров производительности число токенов нормализуется с помощью o200k_base, а не собственного токенизатора каждой модели.

Это общая точка отсчёта, а не обещание такой же работы вашего приложения. Перед сравнением результатов проверяйте размер промпта, эндпоинт, режим рассуждений и дату. Более длинные промпты могут менять и задержку первого токена, и скорость выдачи.

Для моделей, скрывающих часть токенов рассуждений, Artificial Analysis рассчитывает скорость выдачи по последним 80% фрагментов ответа. Простой скрипт ниже не воспроизводит ни этот метод, ни полную тестовую нагрузку сервиса. Он измеряет текстовый поток, который получает ваш клиент.

Как измерить скорость собственного потока

Проводите замер на принимающем клиенте и считайте токены текста, а не события потока. Событие может вообще не содержать текста или передавать сразу его фрагмент; подсчёт событий даст число фрагментов в секунду.

Следующий пример на Python использует потоковый API Groq и текстовый токенизатор tiktoken. Он выводит задержку до первого текстового фрагмента, время от запроса до последнего текста, время до завершения потока и оценку нормализованной скорости выдачи в токенах в секунду.

Установите зависимости:

Bash
python3 -m pip install groq tiktoken

Задайте переменную окружения GROQ_API_KEY. В GROQ_MODEL укажите текстовую модель без рассуждений, доступную вашему аккаунту из списка поддерживаемых моделей Groq, а в prompt.txt поместите типичный для приложения промпт. Сохраните код в measure_stream.py и запустите командой python3 measure_stream.py.

Python
import os
from pathlib import Path
from time import perf_counter

import tiktoken
from groq import Groq

encoder = tiktoken.get_encoding("o200k_base")
prompt = Path("prompt.txt").read_text(encoding="utf-8")
model = os.environ["GROQ_MODEL"]
parts = []
first = last = None

with Groq(max_retries=0) as client:
    start = perf_counter()
    stream = client.chat.completions.create(
        model=model,
        messages=[{"role": "user", "content": prompt}],
        stream=True,
    )
    for event in stream:
        now = perf_counter()
        if not event.choices:
            continue
        text = event.choices[0].delta.content or ""
        if not text:
            continue
        if first is None:
            first = now
        last = now
        parts.append(text)
    end = perf_counter()

if first is None:
    raise SystemExit("No text received; no text-speed measurement.")

# Tokenize after timing; never count events as tokens.
count = lambda text: len(encoder.encode(text, disallowed_special=()))
total_tokens = count("".join(parts))
post_first_tokens = total_tokens - count(parts[0])
span = last - first

print(f"First text chunk / TTFT estimate (s): {first - start:.3f}")
print(f"Request to last text (s): {last - start:.3f}")
print(f"Stream complete (s): {end - start:.3f}")
print(f"Normalized output tokens: {total_tokens}")
if span > 0 and post_first_tokens > 0:
    print(f"Post-first output tok/s (estimate): {post_first_tokens / span:.1f}")
else:
    print("Output tok/s unavailable: insufficient text delivery intervals.")

SDK Groq позволяет отключить автоматические повторные попытки. В примере они отключены, чтобы ожидание повторного запроса незаметно не попало в замер, который выглядит успешным. Неудачный запрос нужно записывать как ошибку.

При расчёте скорости первый текстовый фрагмент исключается и из числа токенов, и из интервала их получения. Здесь используется формула для фрагментов потока из определений Artificial Analysis. При определении момента получения последнего текста также не учитываются метаданные, поступающие в конце.

Стопки книг разного размера изображают фрагменты потока; первая стопка исключена из подсчёта последующей выдачи
Фрагменты — это порции доставленного текста. Считайте токены в них токенизатором, а первое поступление учитывайте отдельно.

Используйте этот пример для обычного текста. Поток рассуждений, аргументы вызовов инструментов или аудио требуют отдельной обработки своих типов событий и определения того, что считать первым полезным результатом. Для сравнения сохраняйте промпт и настройки, фиксируйте длину ответа и повторяйте замеры из региона вашего приложения при характерной для него нагрузке. Сохраняйте и типичные, и медленные результаты; не превращайте самый быстрый замер в гарантию.

Что дают калькуляторы и симуляторы скорости

Инструмент для планирования помогает увидеть последствия заданных допущений о времени, но не может определить задержку вашего эндпоинта.

ИнструментНа какой вопрос помогает ответитьОграничение
Калькулятор токенов в секундуКак предполагаемая скорость выдачи влияет на время до завершения ответа?Результат зависит от заданных вами скорости, длины ответа и задержки первого токена.
Визуализатор токенов в секундуКак предполагаемый поток воспринимается на экране?Темп отображения не измеряет работу инференса или сети.

Как использовать симулятор токенов в секунду

Симулятор помогает обсудить, стоит ли интерфейсу чата показывать текст по мере поступления или ждать готового объекта. Затем проверьте выбранное решение на реальном потоке. Постоянная скорость в симуляции не покажет, делает ли настоящий поток паузы, приходит ли порциями или ждёт выполнения инструмента.

Для завершённого текстового ответа расчёт прост: время от запроса до последнего текста равно начальному ожиданию плюс интервал от первого до последнего текста. Скрипт измеряет оба интервала напрямую, а не выводит их из заявленной скорости.

Какая скорость в токенах в секунду считается хорошей?

Целевой показатель зависит от того, на каких этапах задачи возникает ожидание. Чтобы его выбрать, ответьте на вопросы о работе вашего продукта.

Для разработчика голосового интерфейса: сколько времени проходит с конца фразы собеседника до полезного голосового ответа? Может ли озвучивание начаться до того, как будет написан весь ответ? Не опустошается ли аудиобуфер? Может ли собеседник перебить ассистента? Если тишина возникает до начала выдачи текста, более высокая скорость декодирования может не затронуть главную проблему.

Для разработчика чата: пользователь ждёт первого полезного предложения, полного объяснения или корректного структурированного результата? Может ли интерфейс показывать частичный ответ? Ответ службы поддержки и отчёт, готовый к экспорту, завершаются в разных точках. Измеряйте то событие, которое нужно вашему интерфейсу.

Для специалиста по эксплуатации агентов: какая доля времени задачи уходит на генерацию моделью, а какая — на выполнение инструментов? Сохраняются ли при ускорении ответа корректные аргументы вызовов и успешное выполнение задачи? Ждёт ли следующий шаг всей выдачи? Если ускорить не тот интервал, время завершения всего процесса может почти не измениться.

Для заказчика услуг провайдера: сможет ли предложенное развёртывание обеспечивать нужную работу при вашем трафике, из вашего региона и с вашими промптами? Типичен ли заявленный результат для этого развёртывания? Что происходит при ошибках запросов или нехватке свободных мощностей?

Действуйте, когда трассировки показывают, что пользователи ждут генерации или первого полезного ответа. Если основная причина задержки ещё не найдена, со сменой провайдера стоит подождать. На фоновую задачу, которая уже укладывается в срок, более высокая заявленная скорость мало влияет — если только решение не меняется из-за пропускной способности или стоимости успешно выполненной задачи.

В чём преувеличивают значение скорости LLM?

Главное преувеличение — считать, что максимальная скорость выдачи автоматически указывает на лучший эндпоинт для приложения. Скорость не подтверждает ни качество ответа, ни корректность результата, ни успешную работу с инструментами.

Предел любого быстрого эндпоинта задаёт окружающее приложение. Ускоренная выдача текста не исправит медленный запрос к базе данных, неоправданно длинные рассуждения или ответ, не прошедший валидацию. И наоборот: отличный показатель времени до первого токена может скрывать поток, который затем зависает, так и не дав пользователю ничего полезного.

Учитывайте скорость при оценке, но считайте задачу завершённой только тогда, когда получен корректный результат, которым можно пользоваться.

Частые вопросы

Сколько токенов в секунду выдаёт ChatGPT?

Одного названия продукта недостаточно, чтобы получить воспроизводимый показатель скорости. Нужны конкретная модель, режим, дата и метод измерения. Бенчмарк API не измеряет весь путь доставки ответа в чат-приложении.

Что означает скорость 1 токен в секунду?

Это означает, что за измеряемый интервал в среднем поступает один токен в секунду. Токен — единица текста, не обязательно слово, а среднее значение не обещает равномерного поступления.

100 токенов в секунду — это насколько быстро?

Это скорость выдачи во время генерации. Она не указывает ни начальное ожидание, ни объём текста, который предстоит сгенерировать, поэтому по ней нельзя определить, когда придёт полный ответ.

20 токенов в секунду — это хорошо?

Проверьте, достаточно ли быстро пользователь получает полезный результат и приходится ли следующему компоненту ждать дополнительного текста. Одной скорости недостаточно, чтобы оценить пригодность для чата, голосового интерфейса или агента.

10,000 токенов — это много?

Примерно столько входных токенов Artificial Analysis использует в стандартной нагрузке для тестирования производительности. Насколько это много для вашего приложения, зависит от беседы, найденных материалов и поддерживаемого контекста. Источник: методика тестовой нагрузки.

5 токенов в секунду — это медленно?

Проверьте, ждёт ли в вашем приложении человек или другой компонент ещё не готового текста. Для интерактивного ответа и фоновой генерации один и тот же поток может оцениваться по-разному.

Сколько токенов в секунду может прочитать человек?

Универсального перевода токенов в скорость чтения нет: границы токенов зависят от токенизатора, а чтение — от языка и материала. Проверяйте понимание текста и ощущение отзывчивости на типичных материалах и пользователях.

100 млн токенов — это много?

Это объём токенов, а не скорость. Чтобы оценивать необходимую мощность, нужны период времени, соотношение входных и выходных токенов и характер трафика. Сам объём ничего не говорит о том, сколько ждёт отдельный пользователь.

Как рассчитать число токенов в секунду?

Посчитайте выходные токены после первого полученного текстового фрагмента и разделите их число на время между первым и последним текстовыми фрагментами. Укажите токенизатор и исключите пустые события; если точное время поступления токенов недоступно, обозначьте результат как оценку на стороне клиента.

Что сделать в следующей итерации

Возьмите типичную реплику голосового диалога, промпт чата или задачу агента и определите, в какой момент результатом можно пользоваться. Настройте измерение этого события наряду с первым поступлением данных и завершением потока. Сравните подходящие эндпоинты на одной задаче, изучите ошибки и оптимизируйте тот интервал, из-за которого пользователь ждёт.

Подпишитесь на рассылку, чтобы получать практические руководства по созданию полезных приложений с ИИ.

Опубликовано
Категория
Build
Похожие статьи
LLMOps на практике: с чего начать эксплуатацию LLM

LLMOps на практике: с чего начать эксплуатацию LLM

Что такое LLMOps и чем он отличается от MLOps. Как наладить оценку качества, трассировку, контроль расходов и откат релизов в приложении на основе LLM.23 окт. 2026 г.Build
Структурированный вывод: JSON в OpenAI, Claude и Gemini

Структурированный вывод: JSON в OpenAI, Claude и Gemini

Как получать JSON по схеме в OpenAI, Claude и Gemini: ограничения API, извлечение данных из счетов, проверка значений, повторные запросы и стриминг.23 окт. 2026 г.Build
Альтернативы Railway в 2026 году: куда перенести приложение

Альтернативы Railway в 2026 году: куда перенести приложение

Альтернативы Railway для веб-сервисов, Postgres, воркеров и cron: цены, работа с секретами, ограничения хранилищ и чек-лист поэтапной миграции.22 окт. 2026 г.Build
Обзор Gumloop: ИИ-агенты, тарифы и ограничения

Обзор Gumloop: ИИ-агенты, тарифы и ограничения

Обзор Gumloop: настройка ИИ-агента для лидов, работа с документами и почтой, тарифы и кредиты, согласование действий и сравнение с n8n и Zapier.22 окт. 2026 г.Build
Генерация синтетических данных: от примеров к обучению и тестам

Генерация синтетических данных: от примеров к обучению и тестам

Как создать синтетические данные для оценки LLM, дообучения и тестов ПО: практический пример, фильтрация, дедупликация, ручная проверка и условия провайдеров.22 окт. 2026 г.Build
RLHF: как обратная связь от людей меняет ответы нейросетей

RLHF: как обратная связь от людей меняет ответы нейросетей

Как RLHF меняет ответы нейросетей с помощью оценок людей, чем отличается от DPO и проверяемых вознаграждений и какие виды дообучения доступны малому бизнесу.22 окт. 2026 г.Build
Маршрутизация LLM: как выбирать модели и проверять качество

Маршрутизация LLM: как выбирать модели и проверять качество

Как работает маршрутизация LLM: выбор моделей, сравнение роутеров, расчёт затрат и проверка качества на обращениях в поддержку до внедрения в приложение.21 окт. 2026 г.Build
Семантическое кэширование: когда готовый ответ подходит новому запросу

Семантическое кэширование: когда готовый ответ подходит новому запросу

Как работает семантическое кэширование ответов LLM: этапы поиска, порог сходства, TTL и права доступа. Разбираем ошибки совпадения и расчёт реальной экономии.21 окт. 2026 г.Build
Рассылка

Одно письмо, каждое воскресенье.Работающие системы, а не горячие мнения.

Еженедельно. Без спама. Отписка в любой момент.