Keyboard shortcuts

Press or to navigate between chapters

Press S or / to search in the book

Press ? to show this help

Press Esc to hide this help

vLLM recipes (pick a path)

WIP: Stack picks and tok/s figures are community-reported (#vllm-rdna, Sep 2026). See Verification status. Prefer this page when you want “which image / which model / how many cards” — not a kernel deep-dive.

Discord keeps asking the same questions: which Docker stack, which Hugging Face weights, and whether 1× V620 is enough. This page consolidates those answers. Details for env vars and CUDA graphs live on Configuration; fork history on vLLM forks.

Which stack?

GoalUseImage / repo
Day-to-day serving with RDNA HIP kernelsHub -extrasblivioniag/vllm-rdna:v0.27.1-extras (or -extras-rocm7.14.0) — Running
Tuned 27B / 122B presets, host needs only amdgpu + DockerRecipe book containerghcr.io/leapdragon/vllm-rdna2-recipe:0.27.1-rocm7.2.3-gfx1030 (preset:…) — mirror opengfx1030/vllm-rdna2-recipe
Qwen3.8 Flash-Next on V620Flash-Next forkleapdragon/vllm-rdna2-qwen (+ its GHCR image) — overview

#vllm-rdna (Sep 2026): the recipe repo is treated as a parts pile (compose/env/patches against pristine vLLM 0.27.1). New Flash-Next work lives in vllm-rdna2-qwen. Official kernel development is opengfx1030/vllm-rdna rdna_extras — Hub -extras tags may lag HEAD until bake retargets.

Do not mix host ROCm userspace into the recipe container — the image carries its own stack. Mounting host ROCm into it is a common break (recipe TROUBLESHOOTING.md).

Pick by card count

CardsCommunity starting point (#vllm-rdna)
1× V620 (32 GB)Prefer MoE (e.g. Qwen3.6 35B-A3B, Ornith-class) over dense 27B when prefill matters. Dense Qwen3.8-27B AWQ works for day-to-day chat; expect weaker PP than MoE. Flash-Next is not a 1-card path without heavy CPU/DRAM offload (weights ~60+ GB class + PLE).
2× V620Recipe TP=2 presets for 27B GPTQ / AWQ / MixedInt4, or Hub -extras with --tensor-parallel-size 2.
4× V620Best path for Flash-Next; also TP=4 dense 27B on -extras (see TP4 AWQ recipe below).

Also see What fits well on V620.

Gemma 4 note

Community reports Gemma 4 ~26B still fails or is unfinished on current gfx1030 vLLM paths (#vllm-rdna, Sep 13 2026). Prefer Qwen / Ornith until someone posts a working recipe.

Model cheat sheet

ModelCardsStackNotes
cyankiwi/Qwen3.8-27B-AWQ-INT41–4×Hub -extras or recipe presetCurrent day-to-day 27B pick in #vllm-rdna (Sep 13 2026). compressed-tensors AWQ.
btbtyler09/Qwen3.8-27B-GPTQ-4bit2×+Recipe preset:qwen38-27b-gptq or Hub -extrasRecipe reference preset; native GPTQ → RDNA2W4A16 on -extras.
Pilcothink/Qwen3.8-27B-MixedInt4-AutoRoundRecipe builds/AutoRound MixedInt4 sibling in the recipe book.
Intel/Qwen3.5-122B-A10B-int4-AutoRound3–4×Recipe builds/ (not a one-line preset)MoE 122B — needs recipe wrapper / weight prep; see build BUILD.md.
Qwen3.6 35B-A3B (FP16 / community quants)1–4×Hub -extrasMoE sweet spot; MTP helps c=1, hurts high concurrency — Quantization.
wtdcode/Qwen3.8-Flash-Next-AWQ-W4A16 + primitive-ai/Qwen3.8-Flash-Next-PLE-quantFlash-Next forkProduction Flash-Next weights + PLE sidecar in #vllm-rdna.
Intel/Qwen3.8-Flash-Next-W4A16-AutoRoundDraft org PR / experimentalSeparate track — Intel AutoRound.
cyankiwi/Qwen3.8-Flash-Next-AWQ-INT4ExperimentalMentioned as a possible switch (#vllm-rdna); not a drop-in Hub -extras path yet.

Small-VRAM experiment: Ornith 9B EXL3 (~6.8 GB) vs AWQ (~9 GB) — experimental, not in published -extras tags yet. See Quantization.


docker pull docker.io/blivioniag/vllm-rdna:v0.27.1-extras

docker run -it --rm \
  --device /dev/kfd --device /dev/dri \
  --group-add video --group-add render \
  --security-opt seccomp=unconfined \
  --ipc host \
  -p 8000:8000 \
  -v "$HOME/.cache/huggingface:/root/.cache/huggingface" \
  docker.io/blivioniag/vllm-rdna:v0.27.1-extras \
  vllm serve cyankiwi/Qwen3.8-27B-AWQ-INT4 \
    --dtype float16 \
    --max-model-len 8192 \
    --language-model-only --skip-mm-profiling --trust-remote-code
  • Add --tensor-parallel-size N for multi-GPU. Enable PCIe P2P when possible.
  • Prefer --dtype float16. Mount Triton / torch-compile caches for faster restarts — Configuration.
  • Force the native W4A16 path when needed: VLLM_DISABLED_KERNELS=ExllamaLinearKernel,TritonW4A16LinearKernel — confirm Using RDNA2W4A16LinearKernel in logs.

Full env block and Compose (GPTQ + MTP): Configuration.

Hub -extras TP4 Qwen3.8-27B AWQ

Sanitized from a #vllm-rdna (Aug 31 2026) bench recipe on 4× V620 with working P2P / custom all-reduce. Drop the custom-AR block if P2P is broken on your board — use VLLM_DISABLE_CUSTOM_ALL_REDUCE=1 instead (Configuration).

export VLLM_USE_V2_MODEL_RUNNER=1
export VLLM_ROCM_USE_AITER=0
export VLLM_ROCM_USE_AITER_MOE=0
export FLASH_ATTENTION_TRITON_AMD_ENABLE=TRUE
export VLLM_RDNA_FORCE_FP16=1
export VLLM_USE_RDNA2_FA=1
export TORCH_BLAS_PREFER_HIPBLASLT=0
export PYTORCH_TUNABLEOP_ENABLED=1
export PYTORCH_TUNABLEOP_HIPBLASLT_ENABLED=0
export VLLM_WORKER_MULTIPROC_METHOD=spawn
export VLLM_BATCH_INVARIANT=0
export GPU_MAX_HW_QUEUES=2

# Only when GPU↔GPU P2P works:
export VLLM_FORCE_CUSTOM_ALL_REDUCE=1
export NCCL_P2P_LEVEL=pix
export RCCL_P2P_NET_DISABLE=1
export RCCL_P2P_BATCH_ENABLE=1
export NCCL_PROTO=Simple
export RCCL_MSCCL_ENABLE=0

cd /tmp   # avoid sys.path collisions with a local vllm checkout
vllm serve cyankiwi/Qwen3.8-27B-AWQ-INT4 \
  --port 8000 \
  --tensor-parallel-size 4 \
  --max-model-len 20480 \
  --max-num-seqs 8 \
  --gpu-memory-utilization 0.88 \
  --dtype float16 \
  --language-model-only --skip-mm-profiling --trust-remote-code \
  --enable-prefix-caching --enable-chunked-prefill \
  --compilation-config '{"cudagraph_mode": "FULL_AND_PIECEWISE", "compile_ranges_endpoints": []}'

Path B — Recipe container (27B / 122B presets)

Fastest path when you want the recipe book’s measured knobs without installing ROCm on the host:

IMG=ghcr.io/leapdragon/vllm-rdna2-recipe:0.27.1-rocm7.2.3-gfx1030
docker pull "$IMG"
docker run --rm "$IMG" list-presets

docker run -d --name vllm-rdna2 --network=host \
  --device /dev/kfd --device /dev/dri \
  --group-add "$(getent group render | cut -d: -f3)" \
  --group-add "$(getent group video | cut -d: -f3)" \
  --ipc=host --ulimit memlock=-1 --security-opt seccomp=unconfined \
  -e ROCR_VISIBLE_DEVICES=0,1 \
  -v "$HOME/.cache/huggingface:/root/.cache/huggingface" \
  "$IMG" preset:qwen38-27b-gptq
KnobMeaning
preset:qwen38-27b-gptqReference GPTQ 27B (TP=2). AWQ / MixedInt4 siblings are also presets.
ROCR_VISIBLE_DEVICESExactly two indices for TP=2 presets.
MTP=0..3Speculative depth (default 2 in the recipe image).
list-presets / DRYRUN=1Enumerate presets or print the resolved vllm serve line.

First boot cold-compiles for ~10–15 minutes; mount /compile-cache and Triton caches for ~3 min warm boots — see the recipe containers/README.md. Community ballpark on 2× V620: ~40–49 tok/s decode when TunableOp rows are seeded; ~27 t/s flat if they are missing (recipe troubleshooting).

122B builds need the repo wrapper / one-time weight prep — not a bare preset: one-liner.


Path C — Flash-Next (vllm-rdna2-qwen)

For agentic / long-context Flash-Next on 4× V620, use the dedicated fork and its docs — not Hub -extras and not the 27B recipe presets:

Expect large host DRAM for the n-gram / PLE store (~64 GB class called out in-channel). Long-prompt stalls: try VLLM_USE_V2_MODEL_RUNNER=0troubleshooting. Throughput snapshot: overview.