32 lines
5.9 KiB
Markdown
32 lines
5.9 KiB
Markdown
# P26-A. Parrot: планирование графа
|
|
|
|
- **Версия и дата проверки:** 1.1, 07.09.2026.
|
|
- **Статус:** готово к назначению.
|
|
|
|
## Статья и исходные материалы
|
|
|
|
- **Основная статья:** Chaofan Lin и соавт. — [Parrot: Efficient Serving of LLM-based Applications with Semantic Variable](https://www.usenix.org/conference/osdi24/presentation/lin-chaofan). OSDI 2024.
|
|
- **Кратко о статье:** LLM-приложение часто состоит из зависимых вызовов модели, но обычный сервис видит их как отдельные непрозрачные запросы и не может учитывать общий критический путь. Parrot вводит семантические переменные, раскрывающие зависимости и повторно используемый контекст, и планирует весь граф приложения. В этом проекте графовое планирование сравнивается с последовательной и простой очередной обработкой.
|
|
- **Почему результат актуален:** Parrot добавляет в интерфейс LLM-сервиса семантические переменные, которые раскрывают зависимости между вызовами и структуру промптов для совместной оптимизации всего приложения.
|
|
- **Артефакты и данные:** [microsoft/ParrotServe](https://github.com/microsoft/ParrotServe) под MIT, с клиентской частью, примерами составных приложений, планировщиком и тестами. Зафиксированные ревизии: `microsoft/ParrotServe@2e1825ee2bc3` (MIT).
|
|
- **Что уже предоставляет артефакт:** ParrotServe содержит семантические переменные, исполнитель, планировщик, примеры составных приложений и тесты. Эти материалы служат образцом интерфейсов и эталоном зависимостей для собственного CPU-сервиса.
|
|
|
|
## Обязательный результат
|
|
|
|
- **Проверяемый вопрос или утверждение:** знание графа вызовов и общих префиксов позволяет сервису распараллеливать независимые запросы, переиспользовать состояние и оптимизировать время выполнения приложения лучше, чем при обработке непрозрачных запросов по отдельности.
|
|
- **Технический результат:** Реализовать исполняемый сервис составного приложения с семантическими переменными, реальной очередью и двумя DAG, содержащими последовательные и независимые вызовы. Исполнитель должен поддерживать последовательную и графовую политики.
|
|
- **Обязательное приращение команды:** Реализовать предусмотренный сервис с реальной очередью и двумя DAG, политики последовательного, пакетного и графового выполнения и проверки зависимостей. Собрать собственные сквозные измерения по времени приложения, ожиданию и загрузке.
|
|
- **Эксперимент:** Сравнить последовательное выполнение, обычную пакетную обработку и планирование по критическому пути при нескольких уровнях параллелизма. Измерить полное время приложения, p95, загрузку исполнителей и ожидание узлов; проверить корректность зависимостей и выполнить не менее трёх серий.
|
|
- **Границы выводов:** эффект планирования графа проверяется для двух составных DAG и локального исполнителя с измеряемой стоимостью вызовов; он не характеризует качество LLM, GPU-планирование и производственную нагрузку Parrot.
|
|
- **Ресурсный профиль:** локально, CPU, до 16 ГБ памяти; вызов LLM можно заменить малой локальной моделью или детерминированной функцией с измеряемым временем, но сам исполнитель и планировщик должны работать на реальных запросах. Симулятор допустим только для масштабных серий.
|
|
|
|
## Содержательные направления
|
|
|
|
- графы приложений и нагрузки.
|
|
- реализации политик и инструментирование.
|
|
- метрики, граничные случаи и новое правило планирования.
|
|
|
|
## Возможное продолжение
|
|
|
|
Исследовать неполные или ошибочные аннотации, динамически раскрываемые зависимости, изоляцию между пользователями либо компромисс между локальностью префикса и критическим путём.
|