Как тест-тайм компьютинг меняет MLOps?

Краткий тезис

Test-time computing (TTC) — это выделение дополнительных вычислительных ресурсов во время инференса для выполнения цепочек рассуждений, многократных вызовов модели или итеративных уточнений. TTC добавляет в MLOps три новых измерения: необходимость управления budget на запрос, адаптивное управление глубиной рассуждения и мониторинг cost/latency/quality trade-off. Традиционные MLOps-пайплайны, ориентированные на фиксированный инференс, становятся недостаточными — требуются динамическое выделение ресурсов, observability агентных шагов и метрики эффективности рассуждений.


1. Термин: Test-time computing (TTC)

Test-time computing (вычисления во время тестирования) — это парадигма, при которой модель во время инференса тратит больше вычислительных ресурсов на queries|сложные запросы, выполняя несколько шагов рассуждения, проверки или поиска. В отличие от традиционного однопроходного инференса, TTC позволяет модели «думать дольше» над трудными вопросами.

Примеры техник TTC:

  • Chain-of-Thought (CoT) — генерация промежуточных шагов рассуждения.
  • Self-consistency — множественные прогоны CoT с голосованием.
  • Tree-of-Thoughts (ToT) — древовидный поиск с оценкой ветвей.
  • Agentic loops — итеративные вызовы инструментов, поиска в RAG, уточнения запросов.

TTC принципиально меняет предположения MLOps: раньше стоимость инференса была фиксированной (один forward pass), теперь она может варьироваться в десятки раз в зависимости от запроса.


2. Три ключевых изменения в MLOps

Черновик выделяет три аспекта. Рассмотрим каждый подробно.

2.1 Выделение compute budget на запрос

В традиционном MLOps вычислительный бюджет на инференс фиксирован (например, один вызов LLM). При TTC необходимо решить, сколько ресурсов выделить на каждый запрос. Это порождает новые задачи:

  • Бюджетирование: установка лимитов на количество шагов, токенов или вызовов API.
  • Динамическое выделение: простые запросы получают малый бюджет, сложные — большой.
  • Очереди и приоритеты: запросы с высоким приоритетом могут получать больший бюджет.

Пример политики бюджета:

def get_compute_budget(query: str) -> int:
    complexity = estimate_complexity(query)  # длина, ключевые слова
    if complexity < 0.3:
        return 1  # один шаг
    elif complexity < 0.7:
        return 3
    else:
        return 5

2.2 Адаптивное управление глубиной рассуждения

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

  • Механизмов early stopping на основе порога уверенности (logprob, self-evaluation).
  • Мониторинга прогресса: после каждого шага оценивать, улучшился ли ответ.
  • Динамического планирования: агент может сам решать, нужен ли ещё один шаг.

Пример адаптивного цикла:

def adaptive_inference(query, max_steps=5):
    for step in range(max_steps):
        answer, confidence = model.generate_with_confidence(query)
        log_metric("step", step, "confidence", confidence)
        if confidence > 0.9:
            break
        query = refine_query(query, answer)  # уточнение
    return answer

2.3 Мониторинг cost/latency/quality trade-off

TTC вводит трёхмерное пространство компромиссов. MLOps-инфраструктура должна собирать метрики по каждому запросу:

МетрикаОписаниеЕдиница измерения
Cost per queryСтоимость вызовов API или GPU-времени$, токены
LatencyВремя ответа (P50, P99)секунды
Quality scoreОценка ответа (faithfulness, helpfulness)0–1

Типичный trade-off:

Бюджет шаговСредняя latencyСредний costQuality (F1)
10.5 с$0.0010.72
31.8 с$0.0040.85
53.2 с$0.0090.89

Задача MLOps — найти оптимальную точку на кривой trade-off для бизнес-требований.


3. Новые требования к инфраструктуре MLOps

TTC требует пересмотра архитектуры MLOps:

  • Динамическое выделение GPU: запросы с большим бюджетом могут требовать больше памяти и времени. Нужны эластичные кластеры (Kubernetes с autoscaling).
  • Serverless compute: для агентных циклов удобны бессерверные функции (AWS Lambda, Cloud Run), которые масштабируются до нуля.
  • Очереди с приоритетами: простые запросы не должны ждать сложных. Используются очереди сообщений (RabbitMQ, Kafka) с разными топиками.
  • Кэширование промежуточных результатов: если несколько запросов используют одинаковые шаги (например, поиск по одной базе), результаты можно кэшировать (Redis, Memcached).
  • Observability: трейсинг каждого шага агента (OpenTelemetry, LangSmith), логирование cost и latency.

4. Эвалюация агентов с TTC

Обычные метрики (accuracy, F1) не учитывают затраты ресурсов. Для TTC нужны новые метрики:

  • Success rate — доля запросов, где агент дал правильный ответ в рамках бюджета.
  • Efficiencyquality / cost (например, F1 на доллар).
  • Robustness — способность агента не превышать бюджет на сложных запросах.
  • Budget utilization — среднее количество использованных шагов относительно максимума.

Пример дашборда:

+-------------------+-------+-------+-------+
| Budget (max steps)| [[1. Как бы вы спроектировали RAG-систему для 10 000 документов с разной структурой\|1]]     | [[3 Какие стратегии chunking'а вы знаете и когда какую применяете\|3]]     | [[5. Как вы оцениваете качество retrieval'а в RAG-системе\|5]]     |
+-------------------+-------+-------+-------+
| Success rate      | 0.65  | 0.82  | 0.88  |
| Avg cost          | 0.001 | 0.004 | 0.009 |
| Efficiency (F1/$) | [[720. Что такое mechanism design для multi-agent systems и как применить к LLM-агентам\|720]]   | [[212. Как работает speculative decoding с несколькими draft моделями\|212]]   | [[98. Как вы документируете RAG-систему для команды\|98]]    |
+-------------------+-------+-------+-------+

Видно, что увеличение бюджета сверх 3 шагов даёт малый прирост качества при резком падении эффективности.


5. Связь с Agentic RAG

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

  • Агент сам решает, сколько раз обратиться к векторной БД.
  • Каждый поиск — это cost и latency.
  • Нужно балансировать между полнотой контекста и временем ответа.

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


6. Проблемы и вызовы

  • Недетерминизм: при одинаковом бюджете результаты могут различаться из-за случайности LLM. Сложно отлаживать.
  • Cost explosion: без ограничений агент может генерировать тысячи токенов или делать десятки вызовов API.
  • Latency spikes: сложные запросы могут занимать минуты, что неприемлемо для real-time сценариев.
  • Сложность мониторинга: нужно агрегировать метрики по шагам, а не только по финальному ответу.

7. Будущее: test-time compute scaling laws

Исследования (OpenAI o1, DeepSeek R1) показывают, что качество рассуждений растёт с увеличением TTC, но с убывающей отдачей. MLOps будущего будет включать:

  • Автоматический выбор бюджета на основе предсказания сложности запроса (meta-model).
  • Foundation models с встроенным budget — модели, которые сами сообщают, сколько ресурсов им нужно.
  • Динамическое ценообразование для пользователей: простые запросы дёшевы, сложные — дороже.

Пет-проект для закрепления

Задача: Создать простого агента для вопросно-ответной системы, который адаптивно выбирает глубину рассуждения (1–5 шагов) в зависимости от сложности вопроса, и визуализировать trade-off.

Инструменты: Python, LangChain, OpenAI API (или любая LLM), Streamlit для дашборда, логирование в CSV.

Шаги:

  1. Реализовать функцию оценки сложности вопроса (по длине, наличию вопросительных слов, ключевых терминов).
  2. Создать агент с циклом: на каждом шаге генерировать ответ и уверенность (logprob первого токена). Если уверенность > 0.9 или достигнут max_steps — остановиться.
  3. Для каждого запроса логировать: сложность, количество шагов, latency, cost (токены * цена), финальный ответ.
  4. Собрать датасет из 50 вопросов разной сложности.
  5. Построить графики: quality vs cost, latency vs steps.
  6. Сравнить фиксированный бюджет (3 шага) с адаптивным.

Ожидаемый результат: Дашборд, показывающий, что адаптивный бюджет даёт лучшее соотношение quality/cost, чем фиксированный, и выявляющий точку насыщения.


Связь с другими вопросами

ВопросТема
160Что такое Agentic RAG и чем отличается от обычного RAG?
161Как проектировать агентов для RAG?
162Какие инструменты и фреймворки используются для создания агентов?
163Как управлять памятью агентов в RAG?
164Как агенты планируют последовательность действий?
166Как эвалюировать агентные системы?

Навигация