Инструменты11 июля 2026 г., 12:16 МСК🤖 Auto

vLLM и Transformers: скорость нативного кода без портирования

Интеграция бэкенда transformers в vLLM достигла уровня производительности ручных оптимизаций. Теперь модели Hugging Face работают так же быстро, как специализированные реализации, благодаря динамическому слиянию операций.

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

Прорыв в производительности: от «достаточно хорошо» к «лучше оригинала»

Команда 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 ↗