На прошлой неделе читатель спросил, почему его GGUF-файл внутри vLLM на машине без GPU отдаёт 404, тогда как тот же файл спокойно работает в Ollama. Короткий ответ, прежде всего остального: да, vLLM запускает GGUF — через официальный плагин и только на GPU. Плагин называется vllm-gguf-plugin, синтаксис — repo:quant_type, и в момент, когда вы пробуете это на CPU, вы выходите за пределы таблицы поддерживаемого железа. Всё ниже — из документации vLLM и истории репозитория vllm-project/vllm (92 000+ звёзд с февраля 2023) — из документов, а не с моего тестового стенда.
Как запустить GGUF-модель в vLLM?
Два шага: установить плагин, затем указать vLLM на модель. Поддержка GGUF больше не входит в ядро vLLM — в документации отмечено, что она «мигрировала в vllm-gguf-plugin» (OOT), поэтому простого pip install vllm недостаточно:
uv pip install vllm-gguf-plugin
# Напрямую из Hugging Face, формат repo_id:quant_type:
vllm serve unsloth/Qwen3-0.6B-GGUF:Q4_K_M
--tokenizer Qwen/Qwen3-0.6B
# Или локальный файл, который вы уже скачали:
vllm serve ./Qwen3-0.6B-Q4_K_M.gguf
--tokenizer Qwen/Qwen3-0.6B Флаг --tokenizer — не украшение. Официальная документация рекомендует токенизатор базовой модели, потому что конвертация GGUF-токенизатора «отнимает много времени и нестабильна, особенно для моделей с большими словарями». Пропустите его — и обменяете однострочный флаг на долгий и капризный запуск.
Два GPU, одна модель: добавьте --tensor-parallel-size 2, чтобы расщепить тот же GGUF между обеими картами — тензорный параллелизм работает с GGUF так же, как с любым другим форматом.
Почему vLLM отказывается от GGUF на CPU?
Именно это удивляет сильнее всего. Репутация GGUF — CPU-first: это формат, на котором llama.cpp построил имя, запуская модели на ноутбуках и Raspberry Pi. Внутри vLLM ситуация обратная. Официальная таблица совместимости квантизаций помечает GGUF так:
| Железо | GGUF в vLLM |
|---|---|
| NVIDIA Volta / Turing / Ampere / Ada / Hopper | поддерживается |
| AMD GPU | поддерживается |
| Intel GPU | не поддерживается |
| CPU x86 | не поддерживается |
| CPU Arm | не поддерживается |
Источник: документация квантизации vLLM. Причина архитектурная: GGUF-путь vLLM деквантизирует блоки в GPU-ядра, построенные для пакетного инференса. CPU-ядра за этим нет, потому что vLLM — серверный движок, а не ноутбучная игрушка. Если в машине нет GPU, не поможет ни один флаг — используйте llama.cpp.
Что ломается: честный список ограничений
Та же страница документации несёт предупреждение, которое стоит процитировать дословно: «Поддержка GGUF в vLLM — в высшей степени экспериментальна и неоптимизирована». Конкретно:
- Покрытие квантизаций уже, чем у llama.cpp. K-кванты, которые реально скачивают (Q4_K_M и компания), работают; экзотические схемы — не факт. llama.cpp остаётся эталонной реализацией формата.
- Поддержка архитектур запаздывает. Новые семейства моделей сначала появляются в llama.cpp; плагин подтягивается позже.
- Нет ленивой загрузки в стиле mmap. llama.cpp отображает файл в память; vLLM грузит его как любой другой чекпоинт.
- Это в первую очередь фича экономии памяти. Документация подаёт GGUF как способ уменьшить расход VRAM, а не как ход к пропускной способности.
Ничто из этого не спрятано. Всё лежит в первом абзаце официальной страницы GGUF — что больше, чем получает большинство экспериментальных фич.
vLLM или llama.cpp для GGUF: кто выигрывает?
Разные инструменты, которые случайно читают один файл:
| vLLM + GGUF | llama.cpp | |
|---|---|---|
| Инференс на CPU | нет | да, первоклассный |
| Одновременные пользователи | continuous batching, создано для этого | ограничено |
| Покрытие квантизаций | подмножество, экспериментальное | эталон |
| Установка | vLLM + плагин | один бинарник |
| Лучше всего для | один GPU, много пользователей | один пользователь, любое железо |
Если вы раздаёте модель команде с одного GPU, vLLM + GGUF позволяет переиспользовать те же файлы Q4_K_M, которыми обменивается весь local-LLM-мир — с бóльшим выбором в нашем гайде по квантизации GGUF. Полное сравнение движков — в llama.cpp vs Ollama и как запускать GGUF-модели локально.
Правило в одну строку: тот же файл, противоположные инстинкты — llama.cpp считает GGUF форматом, vLLM — опцией.
FAQ
Запустит ли vLLM модели GGUF?
Да. Установите vllm-gguf-plugin и запускайте с синтаксисом repo:quant_type — но только на GPU. CPU-путь vLLM не покрывает GGUF.
Работает ли vLLM с GGUF на CPU?
Нет. Официальная таблица совместимости помечает GGUF как неподдерживаемый на CPU x86 и Arm — путь на CPU остаются llama.cpp или Ollama.
Что выбрать для GGUF — vLLM или llama.cpp?
vLLM — когда один GPU обслуживает много одновременных пользователей; llama.cpp — когда GPU нет или нужна самая широкая покрытие квантизаций.
— mrsaynothing
— mrsaynothing
Заметки об ИИ, Linux и self-hosting.
Следующий гайд — на почту
Одно письмо на пост. Починил — пошёл дальше.
что это?128k контекста на десктопе — ложь. Его съел KV-кэш.
Нравятся заметки? Я зарабатываю этим на жизнь. получать рассылку