Прорыв в производительности: от «достаточно хорошо» к «лучше оригинала»
Команда Hugging Face анонсировала значительное обновление интеграции библиотеки transformers в движок инференса vLLM. Раньше использование модели из transformers требовало компромиссов в скорости или ручного портирования кода. Теперь, благодаря новым методам оптимизации, бэкенд transformers в vLLM демонстрирует пропускную способность, равную или превышающую нативные (hand-written) реализации vLLM.
Это означает, что авторы моделей могут получить ультра-быстрый инференс «из коробки», не написав ни строчки кода для оптимизации под конкретное железо. Поддерживается более 450 архитектур, включая LLM и VLM.
Результаты бенчмарков: Qwen3 на 8xH100
Для демонстрации возможностей разработчики провели сравнительное тестирование трех моделей семейства Qwen3 на кластере из 8 GPU NVIDIA H100. Тестировались сценарии от одной GPU до сложного параллелизма (data + expert parallelism). Результаты показали, что новый бэкенд не просто догнал, но и в некоторых метриках превзошел нативный код.
| Модель | Архитектура | Конфигурация параллелизма | Результат (отношение к нативному vLLM) |
|---|---|---|---|
| Qwen3-4B | Dense | Single GPU | Meets or beats (равно или быстрее) |
| Qwen3-32B | Dense | Tensor Parallelism (2 GPU) | Meets or beats (равно или быстрее) |
| Qwen3-235B-A22B-FP8 | MoE (Mixture-of-Experts) | Data + Expert Parallelism (8 GPU) | Meets or beats (равно или быстрее) |
Как это работает: Torch FX и динамическое слияние
Ключевое отличие новой версии — переход от простой подмены attention-механизмов к глубокой статической анализу графа модели с помощью torch.fx. Система ищет паттерны, которые можно оптимизировать, и с помощью манипуляций AST (Abstract Syntax Tree) переписывает операции на лету.
Это позволяет применять fused operations (слитые операции), которые маппятся на ультра-оптимизированные ядра vLLM, такие как:
- MergedColumnParallelLinear и QKVParallelLinear — для эффективного тензорного параллелизма (TP).
- Оптимизации для Expert Parallelization (EP) в моделях типа MoE.
Важно отметить, что модифицированные модели остаются совместимыми с torch.compile и CUDA Graphs, что сохраняет полную совместимость с экосистемой PyTorch.
Практическое применение
Для запуска модели через новый бэкенд достаточно добавить флаг --model-impl transformers к стандартной команде vLLM. Это работает с любыми стандартными опциями параллелизма.
Примеры команд:
- Одна GPU:
vllm serve Qwen/Qwen3-4B --model-impl transformers - Тензорный параллелизм (2 GPU):
vllm serve Qwen/Qwen3-32B --model-impl transformers --tensor-parallel-size 2 - Expert параллелизм (8 GPU):
vllm serve Qwen/Qwen3-235B-A22B-FP8 --model-impl transformers --data-parallel-size 8 --enable-expert-parallel
Ограничения: На данный момент не поддерживаются модели с линейным вниманием (linear attention), а также кастомные модели, код которых не соответствует стандартам Hugging Face Hub.
Почему это важно для индустрии
Ранее модель нужно было интегрировать дважды: один раз в transformers для обучения и исследований, и второй раз — писать кастомный порт для vLLM/SGLang для быстрого инференса. Теперь этот барьер устранен. Исследователи могут использовать один и тот же код для обучения (training/evals/RL rollouts) и для высокопроизводительного продакшн-инференса, экономя месяцы разработки оптимизаций.
Источник: Hugging Face blog ↗
