Files
serverAppConfigs/serverAppConfigs-docs/LLM/Radiance Model Families.md
T
Frank 3a04e34414 docs(radiance): reference the engine's options, plugins and conversion
Nine pages under LLM/ document the upstream radiance engine at 8da043c:
- engine shape, plugin model, RAD2 container, ABI and environment
- every serve flag grouped with defaults and the law behind each knob
- the HTTP surface, request fields and refusal classes
- rad-convert, the recipe language, quantisers, imports, reuse, rad-export, KL scoring
- the (arch id, quant) family table and the recipe of record per model
- kernel/quantiser plugin authoring, encodings, build and checks
- architecture plugin authoring: declare, step, probe, lane and media rules
- rad-info/radbench/radtune and the shell harnesses
- the container contract, host prerequisites, readiness and restart triage

Also completes the dangling Related line on the frank-archon endpoint page.
2026-10-30 15:01:37 -07:00

12 KiB
Raw Blame History

type, title, description, tags, timestamp
type title description tags timestamp
reference Radiance Model Families — arch ids, descriptors and recipes Which radiance plugin claims which model family, and the conversion command and recipe of record for each.
llm
radiance
models
reference
2026-10-30

Radiance model families

The selection key is the exact (architecture id, quantisation descriptor) pair, so a family at two weight formats is two .so files. A checkpoint's id is its config.json model_type without underscores (qwen3_5 → qwen35); rad-convert --arch ID overrides it. data/recipes/ is the authority: read the recipe's header — it names the exact rad-convert line, its --set keys and whether it needs calibration.

The plugin table

plugin id quant what it serves
llama_fp8 llama fp8_e4m3 plain LLaMA decoder (MiniCPM5, Llama 3, derivatives reporting model_type: llama) from a checkpoint holding E4M3 codes + weight_scale_inv
llama_dense_fp8 llama (empty) the same graph from a bf16 checkpoint, linears made block fp8 by a recipe
qwen35_bf16 qwen35 (empty) Qwen3.5/3.6/3.8 dense hybrid (GDN + gated attention), bf16
qwen35_fp8 qwen35 fp8_e4m3 the same, block-scaled FP8 weights and activations
qwen35_w8a8 qwen35 w8a8_fwht128 int8 trunk: i8 weights, bf16 scale per 128 of K, 128-wide Hadamard, int8 activations
qwen35moe_fp8 qwen35moe fp8_e4m3 qwen35_fp8 with a routed feed-forward
qwen4exp_fp8 qwen4exp (empty) Qwen4-Exp / Qwen3.8-Flash-Next: a bf16 checkpoint quantised at convert, or Qwen's FP8 release as it ships
glm5next glm5next (empty) GLM-5.3-Flash: four mHC residual streams, 34 KDA + 11 sparse MLA layers with a DSA indexer, 288 MXFP4 experts top-8, block-FP8 attention/dense at f32 scales, MTP drafter, vision tower
hyv3_bf16 hyv3 (empty) Tencent Hy-Memory-30B-A3B bf16; bf16/W4/W8A8/block-FP8/MXFP4 by recipe
hyv3_fp8 hyv3 fp8 Hy-Memory-30B-A3B-FP8: imported per-tensor E4M3, one dense layer then sigmoid-routed MoE
hyv3_gguf hyv3 gguf_ftype_15 a llama.cpp Hy-Memory Q4_K_M GGUF, dequantised and recipe-converted
gemma4_bf16 gemma4 compressed-tensors Gemma 4 31B dense (and E2B/E4B at one rank): sliding-window + proportional-RoPE global attention, GELU, softcapped logits; int4/Q8 codes per 128; assistant (shared-KV), DFlash or DFlash2 drafter; vision
gemma4 gemma4 (empty) Gemma 4 text from Google's bf16 checkpoint (26B-A4B MoE, dense sizes) with z-lab's DFlash
gemma3 gemma3 (empty) Gemma 3 dense (TranslateGemma 27B): sliding-window + global attention, GemmaRMSNorm, GELU; bf16 or int8/MXFP4/asym-int4 linears; DFlash2 drafter
lfm2_bf16 lfm2 (empty) LiquidAI LFM2 / LFM2-VL, bf16, one rank
embgemma2 embeddinggemma2 (empty) EmbeddingGemma 2: bidirectional encoder with Gemma 4 vision tower and audio conformer, pooled
nomicbert nomicbert (empty) nomic-embed-text-v2-moe: bidirectional post-norm encoder, 8 experts top-2 on every second layer, mean-pooled
nemotron35_embed mistral3 (empty) Nemotron 3.5 Embed 1B/8B and Rerank 8B: bf16 text/image retrieval with a Pixtral tower
qwenimage21 qwenimage21 (empty) Qwen-Image 2.1 / 2.1-Turbo image generator and editor (diffusers pipeline)
krea2 krea2 (empty) Krea 2 Raw/Turbo: Qwen3-VL-4B tapped layers, 12.9B single-stream DiT, Wan 2.1 VAE
sdxl sdxl (empty) Stable Diffusion XL and finetunes (Illustrious, NoobAI, Pony), single-file checkpoint
flux3 flux3 (empty) FLUX.3 [klein] and base: image generation and edits from up to ten pictures
flux3distilled flux3distilled (empty) the same plugin under the step-distilled release's own pipeline name
anima anima (empty) Anima Base/Aesthetic/Turbo from the release's three single files
qwen3asr qwen3asr (empty) Qwen3-ASR: Whisper-style audio encoder over a dense Qwen3 decoder, speech to text
minimaxmusic3 minimaxmusic3 (empty) MiniMax-Music3: Qwen3-8B frame model, depth decoder, flow-matching DiT, DAC vocoder
breeze breeze (empty) Breeze-TTS-2: T5Gemma 2 text encoder, Qwen3 backbone, 16-codebook depth decoder, Qwen3-TTS 12 Hz codec
fishomni fishomni bsgemm-moe Fish Audio drama-3: Qwen3.5-35B-A3B backbone, block-FP8 experts at f32 scales, 13-layer codebook tower, Fish S2 DAC/codec
minimaxh3 minimaxh3 (empty) MiniMax-H3 video with stereo sound: Qwen3-VL-32B text encoder, 33B DiT, tiled ViT decoder, BigVGAN audio
ltx2 ltx2 (empty) LTX-2.5 base/distilled: Gemma 4 LM + text connectors, duration head, audio-video DiT, causal video VAE, audio VAE

Recipes of record, by family

$SRC is a downloaded checkpoint; $CALIB is a calibration directory (see Radiance Conversion). Paths are shortened to the recipe name.

target command
Qwen3.8-27B bf16 rad-convert $SRC -o q38-27b-bf16.rad --recipe data/recipes/q38-27b-bf16.recipe
Qwen3.8-27B block fp8 + DFlash2 rad-convert $SRC -o q38-27b-fp8.rad --recipe data/recipes/q38-27b-fp8block-df2.recipe --draft-model $DFLASH2 --set quantization_config.quant_method=fp8 --set quantization_config.fmt=e4m3 --set "quantization_config.weight_block_size=128 128" --set quantization_config.activation_scheme=dynamic
Qwen3.8-27B MXFP4 + DFlash2 rad-convert $SRC -o q38-27b-mxfp4.rad --recipe data/recipes/q38-27b-mxfp4-df2.recipe --draft-model $DFLASH2 --set quantization_config.quant_method=fp8 --set quantization_config.fmt=e4m3
Qwen3.8-27B w4a16 (an int4 release) rad-convert $SRC -o q38-27b-w4a16.rad --recipe data/recipes/q38-27b-w4a16.recipe
Qwen3.8-27B Quark AWQ-MXFP4 rad-convert $SRC -o q38-27b-quark.rad --recipe data/recipes/q38-27b-quark-mxfp4-df2.recipe --draft-model $DFLASH2
Qwen3.8-27B ParoQuant int4/int5/MXFP4 rad-convert $SRC -o q38-27b-paro.rad --recipe data/recipes/q38-27b-paro-mxfp4-df2.recipe --draft-model $DFLASH2
Qwen3.8-27B NVFP4 (compressed-tensors or ModelOpt) --recipe data/recipes/q38-27b-nvfp4-df2.recipe or q38-27b-modelopt-nvfp4.recipe; every NVFP4 weight must take a rule (no kernel serves NVFP4)
Qwen3.8-Flash-Next bf16 reference rad-convert $SRC -o flashnext-bf16.rad --max-ctx 4096 (no recipe; served with --weights-disk-tier)
Qwen3.8-Flash-Next four-bit production CALIB=$CALIB rad-convert $SRC -o w4nl64-i8lm.rad --recipe data/recipes/qwen4exp-w4nl64-i8-hc8m.recipe (GPTQ experts + int8 trunk)
Qwen3.8-Flash-Next uncalibrated four-bit --recipe data/recipes/qwen4exp-w4.recipe (rtn, no calibration)
Flash-Next from an AutoRound int4 release --recipe data/recipes/qwen4exp-autoround-i8-hc8m.recipe
Gemma 4 31B w4a8 (no calibration) --recipe data/recipes/gemma4-31b-dense-bf16-w4a8.recipe --set quantization_config.quant_method=compressed-tensors --draft-model $ASSISTANT
Gemma 4 31B w4a8 + DFlash / DFlash2 gemma4-31b-dense-bf16-w4a8-df.recipe / -w4a8-df2.recipe, same --set
Gemma 4 31B Q8 grid gemma4-31b-dense-bf16-q8-df.recipe
Gemma 4 26B-A4B + DFlash gemma4-26b-a4b-df.recipe; -pad768 when the experts were padded to 768 (down may then be block fp8)
Gemma 4 E4B (Nemotron Bolt) gemma4-e4b-bf16-df.recipe, -i8g-, -a4-, -w4a8-, -w8a8- variants
TranslateGemma 27B translategemma-27b-i8a8.recipe (calibration container), then CALIB=$CALIB translategemma-27b-mxfp4-gptq.recipe (or -df2)
GLM-5.3-Flash rad-convert $AMD_QUARK -o glm53.rad --recipe data/recipes/glm53-mxfp4.recipe
Hy-Memory-30B-A3B hy-memory-30b-a3b-bf16-fp8.recipe, -mxfp4, -w4, -w8, hy-memory-30b-a3b-fp8.recipe, hy-memory-30b-a3b-gguf-q4k-to-w4.recipe
MiniCPM5-2B minicpm5-2b-dspark.recipe (or -bf16-dspark) with --draft-model $DSPARK
Qwen3.6-35B-A3B q36-35b-a3b-fp8.recipe
Qwen-Image 2.1 qwen-image-2.1-fp8.recipe (Turbo uses the same file) or -bf16
Krea 2 krea-2-fp8.recipe, krea-2-bf16.recipe, krea-2-fp8-unscaled.recipe for a plain-FP8 finetune file
FLUX.3 [klein] flux-3-klein-fp8.recipe
SDXL / finetunes sdxl-bf16.recipe --tokenizer <openai/clip-vit-large-patch14>/tokenizer.json
Anima anima-fp8.recipe (or -bf16) + --add ×2 + --config + --tokenizer2 + --arch anima --set anima.variant=aesthetic
LTX-2.5 ltx-2.5-fp8.recipe (or -bf16); full DiT: symlink a folder whose transformer/ is transformer_full/ and --set scheduler.use_dynamic_shifting=1 --set scheduler.shift_terminal=0.1
MiniMax-H3 / FastH3 minimax-h3-fp8.recipe, minimax-h3-w8a8.recipe, minimax-h3-curve-* for curve-form checkpoints
MiniMax-Music3 minimax-music3-bf16.recipe
Breeze-TTS-2 breeze-tts2-bf16.recipe
drama-3 drama3-fp8.recipe
nomic-embed-v2-moe nomic-embed-v2-moe-bf16.recipe
Unlimited-OCR unlimited-ocr-bf16.recipe
Qwen3-ASR no container: serve the checkpoint directory as it ships
EmbeddingGemma 2, Nemotron Embed/Rerank serve the checkpoint, or convert bf16 with no recipe

A checkpoint served at its own precision needs no container at all: radiance --model /srv/models/hf/Qwen/Qwen3.8-27B-FP8. Convert when you want a tier only a container has (quantised encodings, a drafter, a second vocab) or a smaller file.

Family-specific traps

  • head_dim is read, never derived. On the Qwen hybrids it is 256 while hidden_size / num_attention_heads is 213; a derived value silently breaks projection widths, KV page size and the attention kernel's band.
  • A fused projection shards by part, not by contiguous rows. A tensor-parallel rank owns a slice of each stacked projection in a fused [gate|up] or [q|k|v|z]; a contiguous slice would hand rank 0 the whole gate, and the model would produce fluent wrong text. This is declared through RadWeightDecl::row_parts, never inferred from the container.
  • Gemma 4 26B-A4B: the routed experts' gate_up may be block fp8, but down stays bf16 unless the experts were padded to 768 — hence the -pad768 recipe.
  • GLM-5.3-Flash: every weight is served as stored except the latent attention's small kv_b, decoded to bf16. Its KV cache is bf16 only (the plugin refuses fp8 at startup), and at 172 GiB it needs --tp 8.
  • TranslateGemma 27B: the checkpoint's template takes structured turns naming two languages and refuses the plain turn the server renders at startup. The container therefore serves a plain Gemma 3 template, and a client sends on /v1/completions the prompt the checkpoint's own template renders.
  • ParoQuant containers made before 1.5.0 are refused at startup. Convert again with the old container as --reuse; every tensor that did not change is copied.
  • SDXL carries no tokeniser. Pass CLIP's tokenizer.json beside the single file. A Krea 2 finetune shipped as one DiT file in Krea's key names is rewritten into a directory whose transformer/ holds it (scripts/krea2_native.py), with the release's other parts copied in.
  • Anima ships as three single files: --add the text encoder and VAE, --config a Qwen3-0.6B-Base directory (config + tokenizer), --tokenizer2 ComfyUI's T5 tokenizer, --arch anima, --set anima.variant=….
  • drama-3's codec is codec.pth, a torch.save file read as data, never unpickled.
  • Generators that load LoRA files declare their module aliases; the checkpoint and a ComfyUI port disagree in ways that load without error and generate garbage. The per-plugin alias table is in docs/ARCHITECTURES.md ("Adapter key names of the generators").
  • Licences travel with the checkpoint, not the engine. Qwen-Image 2.1 is non-commercial; MiniMax-H3's licence excludes the EU, UK, Republic of Korea and USA; drama-3's community licence needs a commercial licence to serve speech to others, and cloning a real person needs consent; Breeze-TTS-2 is research/non-commercial.