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