The 2026-10-09 wire aliases become the service names everywhere: systemd units, serve scripts, env files and FRANK_* variables, deploy-plan/deploy-remote service keys, container names, Prometheus job names + alert rules, Grafana dashboard queries, bats seams, runbook filenames, homepage/AGENTS lore, and historical prose. Rollback tags renamed in lockstep. Residue in the tree: zero. Retired frank-medium/small/npu names are history and stay. Known casualty: scripts/patches/*.patch context lines were rewritten; those retired-era vLLM-fork patches no longer apply byte-exact.
6.8 KiB
type, description, tags, timestamp
| type | description | tags | timestamp | |
|---|---|---|---|---|
| reference | Qwen3.6-27B is a dense vision-language model from the Qwen3.6 series. |
|
2026-09-03 |
Running Qwen3.6 27B FP8 on Dankclaw
Model Information
Qwen3.6-27B is a dense vision-language model from the Qwen3.6 series. It uses 27B parameters with gated DeltaNet and attention layers.
| Property | Value |
|---|---|
| HuggingFace ID | Qwen/Qwen3.6-27B-FP8 |
| Base Model | Qwen/Qwen3.6-27B |
| Architecture | Qwen3_5ForConditionalGeneration |
| Total Parameters | 27B |
| Hidden Size | 5120 |
| Layers | 64 (16 blocks of 3 DeltaNet + 1 Attention) |
| Attention Heads | 24 Q, 4 KV (head dim 256) |
| DeltaNet Heads | 48 V, 16 QK (head dim 128) |
| Intermediate Dim | 17,408 |
| Vocab Size | 248,320 (padded) |
| Context Length | 262,144 (natively extensible to 1,010,000) |
| Quantization | FP8 (block size 128) |
| Vision Encoder | Yes (image-text-to-text) |
Hardware: Dankclaw
| Property | Value |
|---|---|
| CPU | AMD RYZEN AI MAX+ 395 w/ Radeon 8060S (Strix Halo) |
| GPU | Integrated Radeon 8060S (unified memory) |
| Physical RAM | 64 GiB (61 GiB visible; corrected 2026-08-17) |
| GPU-Visible (ROCm) | 96 GiB (overcommitted) |
| Swap | 8 GiB |
| ROCm | 7.2.4 |
| Python | 3.12.13 (vLLM venv) |
Memory Calculation
| Component | BF16 | FP8 |
|---|---|---|
| Model weights (27B) | 54 GB | 13.5 GB |
| Vision encoder | ~1 GB | ~0.5 GB |
| Total weights | ~55 GB | ~14 GB |
| KV cache (64K ctx, 1 seq) | ~1 GB | ~0.5 GB |
| Overhead | ~2 GB | ~2 GB |
| Total (approximate) | ~58 GB | ~16.5 GB |
The FP8 variant requires approximately 16-17 GB. ThinkingCap-FP8 requires ~29 GB. Both fit within the 61 GiB physical RAM, but ROCm reports 96 GiB to vLLM. Set --gpu-memory-utilization conservatively (0.80) to avoid OOM.
Prerequisites
Production note: Dankclaw's primary service now runs vLLM-ROCm with the Ling-3.0-flash CIRU INT4 model (see
scripts/frank-dragoon.service). This page documents the alternative vLLM FP8 deployment of Qwen3.6-27B.
Install vLLM for ROCm. Version 0.24.0+ is required for Qwen3.6 with speculative decoding:
uv venv --python 3.12 --seed
source .venv/bin/activate
uv pip install vllm --extra-index-url https://wheels.vllm.ai/rocm/
Installed: vLLM 0.26.0 in Python 3.12.13 venv at /home/dank/vllm-rocm-venv.
MPI Dependency
Torch requires libmpi_cxx.so.40. If missing, install openmpi-bin:
sudo apt install -y openmpi-bin
Environment Variables
Set these for ROCm on Strix Halo:
export HSA_OVERRIDE_GFX_VERSION=11.5.1
export HF_HOME=/home/dank/.cache/huggingface
vLLM Serve Commands
Text-Only (Recommended for Memory Savings)
Skip the vision encoder to reduce memory:
vllm serve Qwen/Qwen3.6-27B-FP8 \
--port 8000 \
--kv-cache-dtype fp8 \
--gpu-memory-utilization 0.85 \
--swap-space 8 \
--max-model-len 131072 \
--max-num-batched-tokens 2048 \
--max-num-seqs 32 \
--reasoning-parser qwen3 \
--language-model-only \
--dtype auto
With Vision Encoder
vllm serve Qwen/Qwen3.6-27B-FP8 \
--port 8000 \
--kv-cache-dtype fp8 \
--gpu-memory-utilization 0.85 \
--swap-space 8 \
--max-model-len 131072 \
--max-num-batched-tokens 2048 \
--max-num-seqs 32 \
--reasoning-parser qwen3 \
--dtype auto
Parameters Explained
| Parameter | Value | Reason |
|---|---|---|
| --kv-cache-dtype fp8 | FP8 KV cache | Cuts KV cache memory by 50% |
| --gpu-memory-utilization 0.85 | 85% of unified memory | Leaves 15% for CPU/OS |
| --swap-space 8 | 8 GB CPU swap | Matches system swap size |
| --max-model-len 131072 | 128K context | Full 262K is large but possible with 61 GB |
| --language-model-only | Skip vision | Saves ~1 GB for KV cache |
| --reasoning-parser qwen3 | Qwen3 parser | Required for thinking mode |
Sampling Parameters
| Mode | Temperature | Top P | Top K | Min P | Presence Penalty |
|---|---|---|---|---|---|
| Thinking (general) | 1.0 | 0.95 | 20 | 0.0 | 0.0 |
| Thinking (coding) | 0.6 | 0.95 | 20 | 0.0 | 0.0 |
| Non-thinking | 0.7 | 0.80 | 20 | 0.0 | 1.5 |
Set max_tokens to 32768 for general use. Set to 81920 for complex reasoning.
API Examples
Chat with Thinking
curl http://localhost:8000/v1/chat/completions \
-H "Content-Type: application/json" \
-d '{
"model": "Qwen/Qwen3.6-27B-FP8",
"messages": [{"role": "user", "content": "Solve: 2+2"}],
"max_tokens": 32768,
"temperature": 1.0,
"top_p": 0.95,
"top_k": 20
}'
Non-Thinking Mode
curl http://localhost:8000/v1/chat/completions \
-H "Content-Type: application/json" \
-d '{
"model": "Qwen/Qwen3.6-27B-FP8",
"messages": [{"role": "user", "content": "Hello"}],
"max_tokens": 2048,
"temperature": 0.7,
"top_p": 0.8,
"top_k": 20,
"presence_penalty": 1.5,
"extra_body": {
"chat_template_kwargs": {"enable_thinking": false}
}
}'
Tool Calling
vllm serve Qwen/Qwen3.6-27B-FP8 \
--port 8000 \
--reasoning-parser qwen3 \
--enable-auto-tool-choice \
--tool-call-parser qwen3_coder
Ultra-Long Context (YaRN)
Extend context beyond 262,144 tokens:
VLLM_ALLOW_LONG_MAX_MODEL_LEN=1 vllm serve Qwen/Qwen3.6-27B-FP8 \
--hf-overrides '{"text_config": {"rope_parameters": {"mrope_interleaved": true, "mrope_section": [11, 11, 10], "rope_type": "yarn", "rope_theta": 10000000, "partial_rotary_factor": 0.25, "factor": 4.0, "original_max_position_embeddings": 262144}}}' \
--max-model-len 524288
ROCm Notes
- Strix Halo (gfx1151) is listed as a supported AMD GPU for vLLM
- FP8 uses software emulation on RDNA architecture (gfx1151 has no native FP8 tensor cores). This gives memory savings, not full compute speedup. Compare against a BF16 test first
- Attention backends: try
ROCM_AITER_UNIFIED_ATTNif the default backend underperforms - Context length on ROCm may be limited for some models. Start with 131072 and increase gradually
Troubleshooting
Out of Memory
- Use
--language-model-onlyto skip vision encoder - Reduce
--gpu-memory-utilizationto 0.75 - Reduce
--max-model-lento 65536 - Reduce
--max-num-batched-tokensto 1024
FP8 Errors
- Try BF16 first:
vllm serve Qwen/Qwen3.6-27B --dtype bfloat16 - Verify ROCm version supports FP8
- Set
HSA_OVERRIDE_GFX_VERSION=11.5.1 - Use
--kv-cache-dtype autoinstead of fp8
Slow Inference
- Check GPU utilization with
rocm-smi - Verify attention backend is optimal
- Increase
--max-num-batched-tokensif memory allows - Ensure CPU cores are not throttled