Урок по треку LLM-инженерия 6 мин

LLM в проде: деньги, задержка, надёжность

Стоимость и задержка, стриминг, кеширование, фолбэки и ретраи, маршрутизация моделей, мониторинг и трейсинг.

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

Стоимость

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

стоимость запроса = вход / 1e6 × цена_входа + выход / 1e6 × цена_выхода

Пример расчёта на собесе: 50 тысяч запросов в день, 3000 входных и 400 выходных токенов. Умножьте и получите бюджет; затем найдите, что его раздувает. Обычно это контекст: длинная история, 20 чанков RAG, огромный системный промпт.

Как снижать:

  • Меньше контекста: отбор чанков, обрезка и суммаризация истории, компактные результаты инструментов.
  • Prompt caching: стабильная часть промпта (системный промпт, инструкции, справочник) в начале, изменяемая в конце. Тогда провайдер переиспользует префикс.
  • Маршрутизация моделей: простые запросы на маленькую дешёвую модель, сложные на большую. Классификатор сложности или каскад: сначала дешёвая, при низкой уверенности дорогая.
  • Кеш ответов: точный (по хешу нормализованного запроса) и семантический (по близости эмбеддингов). Семантический кеш опасен: похожие вопросы могут требовать разных ответов, а общий кеш может отдать чужие данные. Порог сходства подбирают на данных.
  • Батч-API для офлайн-задач: провайдеры дают скидку за асинхронную обработку.
  • Ограничение выхода: max_tokens, просьба отвечать кратко, структурированный вывод.

Задержка

Общая задержка ≈ очередь + TTFT + TPOT × число выходных токенов. Что делать:

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

Мерить нужно перцентили (p50, p95, p99), а не среднее: у LLM длинный хвост.

Надёжность

Внешний провайдер падает, отвечает 429 (лимит) и 5xx, иногда медленно. Обвязка:

  • Таймауты на соединение и на весь ответ; при стриминге ещё и на паузу между токенами.
  • Ретраи только для временных ошибок (429, 5xx, сетевые), с экспоненциальной задержкой и джиттером, с учётом заголовка Retry-After. Ошибки 400 (плохой запрос) повторять бессмысленно.
  • Фолбэк: при недоступности основной модели переключиться на резервную (другой регион, другой провайдер, своя модель). Промпт и парсинг должны быть совместимы с резервной моделью, это проверяют заранее.
  • Circuit breaker: при серии ошибок временно не слать запросы в сломанного провайдера.
  • Лимиты и очереди на своей стороне: квоты на пользователя, приоритеты, деградация вместо падения (короткий ответ, отключение второстепенных функций).
  • Идемпотентность действий, которые запускает модель.

Часто всё это собирают в LLM-шлюз (gateway): единая точка вызова моделей для всех сервисов компании с маршрутизацией, ключами, квотами, кешем, логированием и учётом стоимости по командам.

Наблюдаемость

Обычных метрик сервиса мало. Для LLM пишут:

  • Трейсы: каждый вызов модели и инструмента, промпт (с маскированием ПДн), ответ, версии промпта и модели, токены, стоимость, задержка.
  • Метрики: токены и деньги по фичам и командам, TTFT, p95, доля ошибок и фолбэков, доля невалидного JSON, доля отказов модели.
  • Качество в проде: оценки пользователей, выборочная автоматическая оценка судьёй, дрейф тематик запросов.
  • Алерты: рост стоимости, рост ошибок, падение качества.

Частые ошибки

  • Нет таймаутов: зависший запрос к провайдеру держит поток или соединение.
  • Ретраи на всё подряд, включая 400, и без джиттера: «громовое стадо» после сбоя.
  • Фолбэк на модель, с которой никто не проверял промпт.
  • Считать только среднюю задержку и среднюю стоимость.
  • Логи с полными промптами и персональными данными без маскирования.

Что спросят на собесе

  • Посчитать стоимость фичи в месяц и предложить, как её снизить.
  • Как уменьшить задержку и что даёт стриминг.
  • Ретраи, фолбэки, circuit breaker: когда что.
  • Семантический кеш: плюсы и риски.
  • Что логировать и мониторить у LLM-сервиса.

Закрепите за 5 минут

После урока в тренажёре 3-5 проверочных вопросов, дальше модуль уходит в повторения.