Инференс, стоимость и задержка генеративной модели

Inference — выполнение обученной модели для нового запроса. Пользователь видит единый ответ, но система проходит токенизацию, prefill входа, последовательный decode, сетевую…

Краткий ответ

Inference — выполнение обученной модели для нового запроса. Пользователь видит единый ответ, но система проходит токенизацию, prefill входа, последовательный decode, сетевую передачу и постобработку.

Inference — выполнение обученной модели для нового запроса. Пользователь видит единый ответ, но система проходит токенизацию, prefill входа, последовательный decode, сетевую передачу и постобработку. Стоимость и latency определяются не только числом параметров.

Prefill и decode

На prefill модель обрабатывает входные токены параллельно и строит key-value cache для attention. Длинный документ увеличивает time to first token и память. На decode каждый новый токен использует кеш предыдущих позиций, но генерируется последовательно, поэтому длинный ответ увеличивает время почти шаг за шагом.

Различайте latency первого токена, скорость tokens per second и полную latency. Streaming улучшает ощущение отклика, но не уменьшает момент, когда весь результат готов.

KV-cache и память

Для каждого слоя и положения сохраняются keys и values. KV-cache ускоряет продолжение, избегая полного пересчёта прошлого, но растёт с batch, контекстом, слоями и размерностью. При большом числе одновременных запросов именно кеш, а не веса, способен стать ограничением.

PagedAttention применяет идею страничной памяти для уменьшения фрагментации и совместного использования блоков кеша. Это оптимизация сервинга; она не меняет знания и не гарантирует одинаковый выигрыш на любом оборудовании и профиле нагрузки.

Batch, throughput и очереди

Объединение запросов повышает загрузку ускорителя и throughput, но ожидание batch может увеличить latency отдельного пользователя. Continuous batching добавляет и удаляет последовательности по мере генерации. Планировщик балансирует длины, приоритеты и fairness.

Средняя latency скрывает хвосты. Для SLA важны p95 и p99, поведение при пике и тайм-ауты зависимостей. Один очень длинный ответ может влиять на соседей, если планирование не изолирует нагрузку.

Квантование и быстрый attention

Квантование хранит или вычисляет веса с меньшей точностью, снижая память и иногда ускоряя матричные операции. Выигрыш зависит от поддержки специализированных ядер вычислений; качество нужно измерять на задаче. «Четырёхбитная модель» не означает, что все операции и активации всегда четырёхбитные.

FlashAttention вычисляет точный attention блоками и уменьшает обмен между уровнями GPU memory. Он не делает математическую сложность обычного attention линейной, но существенно улучшает фактическое время и память в поддерживаемых режимах.

Управление стоимостью на уровне продукта

Упражнение: бюджет одного запроса

Сравните два варианта. A: 12 000 входных и 1 000 выходных токенов без retrieval. B: поиск по индексу, 2 500 входных и 600 выходных токенов плюс embedding и reranker. Выпишите денежные и latency-компоненты, не придумывая конкретных тарифов.

Затем добавьте 100 одновременных пользователей. Объясните, почему оптимальный одиночный запрос может дать плохой p99 и почему нужно нагрузочное тестирование с реальным распределением длин.

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

Ответ вдвое длиннее всегда стоит вдвое дороже?

Токенная часть decode примерно растёт с длиной, но тарифы, кеширование, постоянные накладные расходы и инструменты меняют итог. Проверяйте модель расчёта конкретного сервиса.

Streaming ускоряет модель?

Обычно он раньше показывает первые токены и улучшает perceived latency. Полное вычисление может занимать столько же времени.

Большая context window бесплатна, если её не заполнять?

Заявленный максимум сам по себе не требует обработки всех позиций, но архитектура и резервирование могут влиять на сервис. Главная стоимость конкретного запроса связана с фактически обработанными токенами и реализацией.

Что важно запомнить

https://yadro-code.ru/lessons/without-university/generative-ai-foundations/generative-ai-15