Compound AI Systems
Составные системы ИИ решают задачи с помощью нескольких взаимодействующих компонентов, например моделей, средств поиска, инструментов и правил, а не одного вызова модели.
Составная система ИИ — это приложение, которое решает задачу с помощью нескольких взаимодействующих компонентов, таких как вызовы нескольких моделей, механизмы поиска, внешние инструменты, правила и проверка человеком, а не одним вызовом модели. Матей Захария и его соавторы из Berkeley, Stanford, Databricks и других организаций описали эту тенденцию в публикации Berkeley AI Research в феврале 2024 года, утверждая, что передовые результаты всё чаще обеспечивают системы, а не монолитные модели. Среди их примеров — AlphaCode 2, который генерирует до миллиона программ-кандидатов с помощью больших языковых моделей (LLM), а затем фильтрует и оценивает их; AlphaGeometry, объединяющая LLM с символическим механизмом вывода для решения геометрических задач олимпиадного уровня; и ChatGPT, модель которого решает, когда искать информацию в интернете, запускать Python или генерировать изображение. В той же публикации приводятся данные Databricks: 60% приложений на основе LLM используют ту или иную форму генерации с дополненной выборкой (RAG), а 30% — многошаговые цепочки.
Зачем создавать системы вместо более крупных моделей#
- Более дешёвое повышение качества: Сэмплирование, голосование и верификация могут повысить точность дешевле, чем обучение более крупной модели. Google сообщила, что Gemini Ultra набрала 90,04% на бенчмарке MMLU с CoT@32: метод выбирает 32 ответа с цепочкой рассуждений и возвращает вариант большинства, если с ним совпадает достаточно ответов. Для сравнения, GPT-4 набрала 86,4% с промптингом в пять примеров.
- Актуальные данные: Знания модели ограничены датой окончания её обучения, а механизм поиска или векторная база данных во время запроса предоставляет свежую, закрытую или контролируемую по доступу информацию.
- Контроль и надёжность: Фильтры, ограничители ИИ, цитаты и шаги верификации позволяют проще ограничивать поведение, чем при попытке добиться соблюдения правил от одной модели с помощью промпта.
- Контроль затрат: Маршрутизация моделей направляет простые запросы к небольшим моделям, а сложные — к крупным, чтобы каждое приложение могло самостоятельно выбрать компромисс между качеством, задержкой и стоимостью.
Один путь обработки запроса может объединить все четыре подхода:
Составные системы в компьютерном зрении#
Рабочие приложения компьютерного зрения почти всегда являются составными: детектор находит объекты, трекер связывает их между кадрами, геометрические правила преобразуют положения в события, а хранилища и оповещения обрабатывают эти события. Ultralytics Solutions объединяет несколько таких систем на базе модели YOLO26: подсчёт объектов сочетает детекцию, отслеживание нескольких объектов и проверку линии или области, которая учитывает каждый ID трека один раз при входе или выходе; система охранной сигнализации отправляет кадр по электронной почте, когда число обнаруженных в кадре объектов достигает заданного порога. В более коротких конвейерах применяется тот же принцип: модель формирует структурированные наблюдения, с которыми работает отдельная логика:
from ultralytics import YOLO
# Компонент восприятия: детектор преобразует пиксели в структурированные наблюдения
model = YOLO("yolo26n.pt")
results = model("https://ultralytics.com/images/bus.jpg")
detections = results[0].summary()
# Компонент политики: детерминированные правила принимают уверенные детекции и помечают неуверенные
accepted = [d["name"] for d in detections if d["confidence"] >= 0.5]
uncertain = [d["name"] for d in detections if d["confidence"] < 0.5]
# Компонент маршрутизации: неуверенные результаты передаются человеку, а не в последующий этап автоматизации
action = "human review" if uncertain else "auto-approve"
print({"accepted": accepted, "uncertain": uncertain, "action": action})Выведенное решение основано на правилах, которые проверяющий может прочитать и изменить без повторного обучения модели. Разметка неуверенных изображений, направленных людям, добавляет обучающие данные для следующей модели в цикле активного обучения.
Создание и эксплуатация составных систем#
Ошибки накапливаются между компонентами: если каждый из трёх этапов работает верно в 90% случаев, то правильный результат на всём конвейере получается лишь примерно в 73% случаев. Поэтому команды оценивают всю систему на фиксированном наборе задач, а не каждый компонент по отдельности. Для компонентов, которые нельзя обучать с помощью градиентов, например поисковых систем и правил, нужны другие методы оптимизации; такие фреймворки, как DSPy, настраивают каждый промпт в конвейере по единой сквозной метрике. В рабочей среде трассировки наблюдаемости отслеживают каждый запрос при всех вызовах моделей и инструментов, а практики эксплуатации машинного обучения (MLOps), такие как версионирование и мониторинг моделей, применяются к каждому компоненту, поскольку его обновление может незаметно изменить входные данные следующего компонента.
Составной ИИ и родственные термины#
- Ансамбли моделей: Объединяют предсказания нескольких моделей для одних входных данных в один результат. Ансамбль — один из типов компонентов, которые могут входить в составную систему.
- Агентные рабочие процессы: Составные системы, в которых модель во время выполнения определяет поток управления, выбирая инструменты и шаги. Многие составные системы используют фиксированные конвейеры, не принимая таких решений.
- Смесь экспертов (MoE): Направляет токены между экспертными подсетями внутри одной модели, компоненты которой обучаются совместно. Составные системы направляют запросы между компонентами, созданными и развёрнутыми отдельно.










