<НА ГЛАВНУЮ

Nano-vLLM: Легковесная Python-реализация vLLM с открытым исходным кодом от команды DeepSeek

Исследователи DeepSeek выпустили nano-vLLM — компактную и эффективную Python-реализацию движка vLLM, сочетающую простоту и производительность для вывода LLM.

Представляем Nano-vLLM

Исследователи из DeepSeek представили nano-vLLM — минималистичную и эффективную реализацию движка vLLM, созданную с нуля на Python. Этот проект предлагает компактный и прозрачный код объемом примерно 1200 строк, который во многих офлайн-сценариях достигает скорости вывода, сопоставимой с оригинальным vLLM.

Простота и мощь

В отличие от традиционных фреймворков для вывода, таких как vLLM, которые отличаются большими и сложными кодовыми базами, nano-vLLM делает акцент на простоту и модульность. Он устраняет вспомогательную сложность, сохраняя при этом ключевые характеристики производительности, что делает его легко проверяемым и удобным для модификации или развертывания в ограниченных условиях.

Основные возможности

  • Быстрый офлайн-вывод: nano-vLLM достигает практически такой же скорости вывода, как оригинальный vLLM, за счет более компактного конвейера выполнения и снижения накладных расходов во время работы.
  • Чистый код: Полностью реализован на Python без скрытых абстракций, что делает его отличным ресурсом для изучения архитектуры систем вывода LLM.
  • Набор оптимизаций: Включает важные техники, такие как кэширование префиксов для повторного использования состояний, тензорный параллелизм для распределения нагрузки по GPU, компиляция с torch.compile() для слияния операций и CUDA-графы для уменьшения задержек запуска GPU.

Обзор архитектуры

Архитектура nano-vLLM проста:

  • Токенизатор и обработка ввода: Использует токенизаторы Hugging Face для разбора подсказок и конвертации в ID токенов.
  • Обертка модели: Загружает трансформерные модели на PyTorch с применением тензорного параллелизма.
  • Управление кэшем KV: Динамически распределяет и извлекает кэш с поддержкой повторного использования префиксов.
  • Движок семплирования: Реализует стратегии декодирования, такие как top-k/top-p, температурное масштабирование. Такая структура обеспечивает прозрачность всего пути выполнения от ввода до вывода.

Сценарии использования и ограничения

Nano-vLLM подходит для исследователей, разработчиков, преподавателей и инженеров, работающих с кастомными приложениями LLM, оптимизациями вывода или развертыванием на устройствах с ограниченными ресурсами. Однако он не поддерживает такие возможности, как динамическая пакетная обработка, потоковая генерация в реальном времени и многопользовательская работа. Эти ограничения сознательны ради ясности и производительности в однопоточных офлайн-сценариях.

Итог

Nano-vLLM представляет собой сбалансированное решение между простотой и производительностью, являясь отличным образовательным инструментом и легковесной альтернативой для вывода LLM. Он позволяет практикам изучать и создавать собственные вариации на базе чистой, модульной архитектуры с практическими оптимизациями, соответствующими промышленным стандартам.

Подробнее на GitHub-странице проекта и следите за обновлениями исследователей в Twitter и сообществах по машинному обучению.

🇬🇧

Switch Language

Read this article in English

Switch to English