Инструменты6 сентября 2026 г., 07:18 МСК🤖 Auto

Perplexity раскрыла архитектуру pplx-embed: Ivy, Tulip и ROSE

Инженеры Perplexity опубликовали детали инфраструктуры GPU-инференса для эмбеддингов. Система на базе Rust и Python достигает высокой пропускной способности за счет переиспользования ядер LLM и кастомных оптимизаций.

Баннер новости 6878

Архитектура из трех сервисов

Perplexity отказалась от создания отдельного движка для эмбеддингов, объединив его с инфраструктурой LLM. Система состоит из трех компонентов:

  • Ivy (Rust): HTTP-шлюз, отвечающий за парсинг JSON, токенизацию и балансировку нагрузки. Он разбивает большие батчи на чанки для коррекции дисбаланса.
  • Tulip (Rust, tokio, tonic): gRPC-сервер для планирования и батчинга запросов перед отправкой в движок.
  • ROSE (Runtime-Optimized Serving Engine): основной движок инференса на Python. Управляет CUDA-графиками, слоями и моделями, предоставляя функцию step().

Ключевые технические решения

Главная инновация — переиспользование ядер prefill и decode из стека LLM. Поскольку эмбеддинг-модели — это маленькие трансформеры, batch-инференс похож на prefill (вычислительно-зависимый), а online-инференс — на decode (зависимый от памяти).

Для минимизации задержек Perplexity применяет:

  • Whole-model CUDA graphs: захват всего графа модели в один вызов драйвера. Для ускорения захвата внедрены изменения в FlashInfer.
  • Lazy capture: «ленивый» захват графиков. Первый запуск — разминка, второй — захват и воспроизведение. Это распределяет минуты работы захвата на часы использования.
  • LazyTensor: асинхронная обертка, позволяющая CPU готовить батч N+1, пока GPU обрабатывает батч N, без блокировок.

Бенчмарки и производительность

Тестирование проводилось против vLLM v0.22.0 в BF16. Ключевые метрики:

  • Погрешность косинусного сходства при warmup — менее 0.1%.
  • Насыщение GPU для моделей суб-миллиардной архитектуры происходит при ~512 токенах в батче. Дальнейшая упаковка последовательностей неэффективна.
  • Задержка линейно зависит от количества токенов, а не от количества последовательностей.
Компонент/Техника Роль в стеке Ключевая выгода
Ivy HTTP Gateway (Rust) Парсинг, токенизация, балансировка батчей
Tulip Inference Server (Rust) Планирование, FCFS-очередь, gRPC-интерфейс
ROSE Serving Engine (Python) Инференс, CUDA-графики, выбор бэкенда (FlashInfer/FlashAttention)
LazyTensor Асинхронный буфер Overlap CPU/GPU, отсутствие блокировок sync

Почему это важно

Решение Perplexity демонстрирует тренд на унификацию инфраструктуры: вместо разрозненных сервисов для LLM и эмбеддингов создается единый высокопроизводительный стек. Доступ к модели pplx-embed осуществляется через Embeddings API, что позволяет разработчикам использовать оптимизированный инференс Perplexity для своих RAG-приложений.

Источник: MarkTechPost ↗