Кошмар любого любителя LLM: диффузионные модели не сервятся
Когда я впервые увидел архитектуру LLaDA — текстовую версию диффузии, где слова не генерируются авторегрессивно, а "очищаются" от шума, — первая мысль была: ну всё, теперь придётся писать свой движок. Hugging Face Transformers жрали всю память, скорость была никакой. А потом появился dlmserve — первый открытый специализированный сервинг-движок для diffusion language models. И я решил проверить его на RTX 5070 (12 ГБ). Спойлер: заработало.
Дисклеймер: все тесты проводились 26 мая 2026 года. Версия dlmserve — 0.1.3, модель — llada-7b-diffusion (квантование 4 бита). Драйверы NVIDIA — 555.xx, CUDA 12.4.
Что за зверь и зачем он нужен?
Обычные LLM (LLaMA, Qwen) генерируют токен за токеном слева направо. Диффузионные модели (LLaDA, DiffusionGPT) работают иначе: они берут шум и последовательно приближают его к осмысленному тексту сразу целиком. У этого есть плюсы — можно править "задним числом" (токен-эдит, о чём мы уже писали), но инференс требует множества шагов денойзинга. И вот тут dlmserve берёт на себя оптимизацию: кастомные CUDA-кернелы, эффективная работа с масками, пакетная обработка шагов диффузии.
Ставим: без магии, но с нюансами
Установка оказалась не для слабонервных. Разработчики предлагают два пути: pip-пакет (но с предкомпилированными бинарниками только для Ampere+) и сборка из сорцов. Моя RTX 5070 (Blackwell) — ни то ни сё: архитектура новая, бинарников нет. Пришлось собирать.
# Системные требования: Ubuntu 24.04, Python 3.12, CUDA 12.4+, GCC 13.2
git clone https://github.com/nvidia/dlmserve.git
cd dlmserve
git checkout v0.1.3
pip install -r requirements.txt
python setup.py install --with-cuda=/usr/local/cuda-12.4
Сборка заняла примерно 20 минут на Ryzen 9 7950X. Если у вас AM5 с кучей PCIe-линий, можно попробовать параллельную компиляцию — там есть свои трюки, но для одной карты хватит и стандартного -j4.
Внимание: dlmserve требует CUDA 12.4 минимум. Если у вас старый драйвер (до 550.x) — даже не пытайтесь. Я потратил час на диагностику, пока не обновил.
Тест-драйв на LLaDA-7B
Загрузил модель с Hugging Face (llada-7b-diffusion), квантизировал её в 4 бита с помощью NVIDIA's AQLM. После этого — запуск dlmserve сервера:
python -m dlmserve.server --model llada-7b-diffusion --quant int4 --max-seq-len 2048 --device cuda:0
Сервер поднялся на порт 8080. API совместимо с OpenAI (ручка /v1/chat/completions). Отправил промпт:
{
"model": "llada-7b-diffusion",
"messages": [{"role": "user", "content": "Напиши хайку про видеокарту RTX 5070"}],
"max_tokens": 100,
"diffusion_steps": 100
}
Ответ пришёл через 4.2 секунды. 100 шагов денойзинга, 100 токенов — ~24 токена/с. Сравните с инференсом через PyTorch без dlmserve: те же 100 шагов, но 12.5 секунд. Ускорение почти в 3 раза.
А что с памятью?
RTX 5070 — 12 GB. В пике — 9.8 GB при batch size = 1, seq_len = 2048. На 4096 токенов — уже 11.5 GB, начинает свопиться. Для сравнения, профессиональная RTX 2000 Pro Blackwell с 16 GB живёт заметно свободнее, но и стоит в разы дороже.
Сравнение с голым PyTorch и vLLM
| Инструмент | Токенов в секунду | Пиковая память (GB) | Поддержка диффузионных шагов |
|---|---|---|---|
| PyTorch (Hugging Face) | ~8 | 11.2 | Да (наивно) |
| vLLM (generic) | ~15 | 10.5 | Нет (только авторегрессия) |
| TensorRT-LLM + AETHER-X | ~28 | 9.1 | Частично (через плагины) |
| dlmserve 0.1.3 | ~24 | 9.8 | Да (нативно) |
Да, TensorRT-LLM на RTX 5090 (см. наш обзор флагманов) даёт 28 TPS, но это на более мощной карте и с проприетарными плагинами. dlmserve же — открытый код, его можно тюнить под конкретную архитектуру.
Кому это вообще надо?
- Исследователям, которые хотят поэкспериментировать с диффузионными LLM без покупки трёх H100.
- Разработчикам агентов, где нужен контролируемый реген (токен-эдит) — смотрите гайд по LLaDA2.1.
- Тем, кто устал от авторегрессии и хочет пробовать новые парадигмы на своём игровом компе.
Но предупреждаю: проект сырой. Документации мало, некоторые фичи (например, continuous batching) пока не работают на Blackwell. Если вы ждёте production-ready — лучше посмотрите TensorRT-LLM с AETHER-X.
Лично я оставил dlmserve на второй карте в системе — пусть крутит генерацию коротких текстов для автодополнения в IDE. Даже в текущем состоянии он выжимает максимум из RTX 5070 для диффузионных моделей. А когда добавят multi-GPU — можно будет объединить две карты, как описано в гайде по MiniMax-M2.1. Ждём обновлений.