LLMOps: специфика LLM в проде

Большие языковые модели в проде ломают многие привычки классического MLOps — отсюда отдельная дисциплина.

LLMOps — практики эксплуатации больших языковых моделей в продакшне: версионирование промптов, RAG, оценка качества генерации, контроль стоимости и безопасности.

Чем LLM отличаются от классики

В классическом ML вы обучаете свою модель на своих данных и сами её хостите. С LLM чаще иначе: вы используете готовую большую модель (через API или развёрнутую) и адаптируете её поведение не переобучением, а промптами и контекстом. Это смещает фокус MLOps.

АспектКлассический MLLLMOps
Адаптацияобучение моделипромпты, RAG, иногда fine-tuning
Главный артефактвеса модели+ промпты и пайплайн контекста
Оценкаметрики (f1, AUC)сложно: качество текста субъективно
Стоимость/латентностьобычно низкиевысокие, считаются в токенах

Версионирование промптов

Промпт — это код поведения LLM. Его версионируют, тестируют и выкатывают как артефакт: изменили формулировку — поведение поменялось, нужен прогон оценки и A/B. «Магические строки» в коде без версий — антипаттерн LLMOps.

RAG и обновление знаний

LLM не знает ваших свежих данных. RAG (retrieval-augmented generation) подмешивает в промпт релевантные документы из вашей базы (через векторный поиск). Теперь у вас новый компонент пайплайна: индексирование документов, эмбеддинги, обновление базы знаний — со своими версиями и мониторингом «не устарел ли индекс».

вопрос --> [поиск релевантных документов] --> контекст
                                              |
   вопрос + контекст --> [LLM] --> ответ с опорой на ваши данные

Оценка качества — главная боль

Как измерить, что генерация «хорошая»? Нет одной метрики. Подходы: эталонные ответы + автосравнение, оценка человеком, и LLM-as-a-judge — отдельная модель оценивает ответы по критериям. Плюс проверки на галлюцинации (выдуманные факты), токсичность, утечку данных. Оценка в LLMOps — это пайплайн, а не одна цифра.

Стоимость и латентность в токенах

LLM считают и платят по токенам, и это ощутимо. Смоделируем оценку стоимости запроса.

# условные цены за 1000 токенов
PRICE_IN = 0.003   # вход (промпт + контекст)
PRICE_OUT = 0.015  # выход (генерация)

def cost(prompt_tok, context_tok, output_tok):
    inp = prompt_tok + context_tok
    return (inp / 1000) * PRICE_IN + (output_tok / 1000) * PRICE_OUT

short = cost(prompt_tok=80, context_tok=200, output_tok=120)
rag = cost(prompt_tok=80, context_tok=2000, output_tok=300)  # RAG раздул контекст
print(f"Короткий запрос:  ${short:.4f}")
print(f"RAG-запрос:       ${rag:.4f}")
print(f"На 1 млн запросов RAG: ${rag*1_000_000:,.0f}")

Вывод:

Короткий запрос:  $0.0026
RAG-запрос:       $0.0107
На 1 млн запросов RAG: $10,740

Видно, как раздутый RAG-контекст увеличивает и стоимость, и латентность. Поэтому в LLMOps мониторят токены и оптимизируют длину контекста — это прямые деньги.

Что остаётся от классического MLOps

Многое: версионирование (теперь и промптов, и индексов), CI/CD (теперь с прогоном eval-набора), мониторинг (теперь латентность, токены, доля галлюцинаций, обратная связь пользователей), деплой и rollback. LLMOps — это надстройка над MLOps, а не его замена.

Как работает под капотом

Прод-LLM-система — это пайплайн: запрос → (опционально) поиск контекста в векторной базе → сборка промпта из версионированного шаблона → вызов LLM → постобработка и проверки безопасности → ответ. Каждый ответ логируют (как и в классике): промпт, контекст, ответ, токены, латентность, версия промпта и модели. Eval-пайплайн периодически прогоняет тест-набор и LLM-судью; мониторинг следит за стоимостью, галлюцинациями и фидбеком. Те же три слоя мониторинга — операционный, входные данные (дрейф запросов), качество (eval) — просто с поправкой на текст.

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

  • Промпты как магические строки без версий. Изменение поведения нельзя отследить и откатить.
  • Нет eval-пайплайна. «Вроде стало лучше» — не метрика; нужен прогон тест-набора.
  • Игнорировать стоимость токенов. Раздутый контекст незаметно множит счёт.
  • Не проверять галлюцинации и безопасность. LLM уверенно выдумывает факты и может утечь данными.

Итог

  • LLMOps — надстройка над MLOps: добавляются версионирование промптов, RAG, оценка генерации и контроль токенов/стоимости.
  • Главная сложность — оценка качества: нет одной метрики, используют эталоны, людей и LLM-as-a-judge, плюс проверки галлюцинаций.
  • Стоимость и латентность считают в токенах; раздутый контекст — прямые деньги, поэтому его мониторят и оптимизируют.
Проверьте себя
1. Чем адаптация поведения LLM чаще всего отличается от классического ML?
ALLM нельзя адаптировать
BПоведение меняют промптами и контекстом (RAG), а не обязательно переобучением
CLLM всегда переобучают с нуля
DLLM не используют данные
2. Почему оценка качества — главная боль LLMOps?
AТекст нельзя прочитать
BНет одной объективной метрики; используют эталоны, людей и LLM-as-a-judge, плюс проверки галлюцинаций
CLLM всегда отвечают идеально
DМетрики считаются мгновенно
3. Почему в LLMOps важно мониторить токены?
AТокены влияют на цвет ответа
BСтоимость и латентность считаются в токенах; раздутый контекст (например, RAG) — это прямые деньги
CТокены не важны
DЭто требование Kubernetes