Конфигурация
- Модель: Qwen3.8-27B-AWQ-MTP
- GPU: 2×RTX 3090 24GB (TP=2, PCIe 4.0)
- vLLM версия: 0.28.0
- Контекст: 256K (
--max-model-len 262144)
vllm serve Qwen3.8-27B-AWQ-MTP \
--tensor-parallel-size 2 \
--max-model-len 262144 \
--max-num-seqs 2 \
--speculative-config '{"method": "mtp", "num_speculative_tokens": 3}' \
--mamba-cache-mode align \
--disable-async-scheduling \
--gpu-memory-utilization 0.92
# OMP_NUM_THREADS=1
Результаты
| Метрика | Значение |
|---|---|
| Throughput (decode) | 100 tok/s |
| TTFT (8K prompt) | 1.8s |
| TPOT | ~13ms |
| GPU Memory | 46/48 GB |
| Контекст | 256K |
| Параллельность | 2 seqs |
До/после тюнинга
| Параметр | Дефолтный запуск | Финальный конфиг |
|---|---|---|
| Tok/s (decode) | 18 | 75 |
| TTFT (8K) | 4.2s | 1.8s |
| Контекст | 32K | 256K |
| Параллельность | 8 seqs | 2 seqs |
Разница ×4.2 по decode — это 4 параметра конфига: MTP-спекулятивное декодирование, лимит max-num-seqs под 256K контекст, OMP_NUM_THREADS=1 и mamba-cache-mode align.
Выводы
27B-модель в AWQ с MTP — рабочий sweet spot для 2×3090: 100 tok/s decode и 256K контекста при ~46GB VRAM. Цена — ограничение параллельности до 2 последовательностей, что для агентных нагрузок (последовательная генерация) не критично.
Полная история тюнинга — включая crash на MTP в vLLM 0.27.1 и расчёт «что влезает в 24GB×2» — в части 3 серии «Наш опыт». Смежные материалы: Tensor Parallelism, AWQ, PagedAttention.