Урок 0014 · Многопользовательность: rate limiting, кэш, тенантность

Как обслуживать N пользователей одним пулом GPU/моделей: лимиты, кэширование, изоляция тенантов.

Цель урока Назвать три механизма (rate limiting, caching, tenant isolation) и сказать, как они ложатся на архитектуру из урока 0007.

1. Rate limiting — защита от перегрузки и атак

Зачем: модель дорогая. Один пользователь (или бот) может сжечь бюджет и занять GPU-очередь. LLM04 из OWASP — Model DoS.[109]

Три уровня лимитов:

Механика: token bucket / fixed window в Redis. Ответ 429 + Retry-After. Клиент — ретрай с экспоненциальной задержкой (урок 0009).

Метрика: 429 rate, queue length, queue age (урок 0009).

2. Кэширование ответов

Много запросов повторяются: «какая комиссия SPEI?» — 1000 раз в день. Генерировать каждый раз заново — тратить деньги и GPU.

Тип кэшаЧто кэшируетРиск
Exact cacheТочное совпадение (prompt, system, model)Минимальный
Semantic cacheПохожие запросы (по эмбеддингам)В банке опасен: «дней отпуска» ≈ «дней больничного» — разные ответы
Prefix/prompt cacheОбщий префикс промпта (урок 0003)Нет, это фича API

Правило банка: exact cache — да, semantic cache — только если измерил false-hit rate. Инвалидация по версии документа: сменили тариф — старый ответ нельзя отдавать (урок 0002).

3. Тенантность — изоляция клиентов

Проблема: B2B-банк может обслуживать несколько компаний-клиентов (тенантов). Ответы тенанта A не должны протекать в тенанта B.

Уровни изоляции:

Ошибка новичка: tenant_id только в промпте («ты работаешь для компании A») — это не изоляция, это подсказка. Изоляция — в ACL, кэше и логах.

4. Как это ложится на архитектуру 0007

Клиент → rate limiter (Redis token bucket, per user/tier)
   ↓
API-слой → tenant_id из заголовка, НЕ из тела
   ↓
Кэш (exact, ключ = tenant + prompt + model)
   ↓
Очередь → воркеры → LLM (vLLM c max-num-seqs)
   ↓
Лог: tenant_id, request_id, prompt_version, cost

Проверь себя

Semantic cache в банке опасен, потому что?

Ключ кэша должен включать?

Тенантная изоляция — это?

Видео и статьи

Первоисточник урока OWASP LLM Top 10 (LLM04 — DoS) + урок 0007 (архитектура сервиса) — лимиты и кэш встраиваются в уже нарисованный контур.

Sources: