Views
No views yet
FP8_BLOCK — 128×128 weight blocks, dynamic per-token-group (128)
activations, e4m3. Data-free; no calibration set.quant_method: fp8, weight_block_size: [128, 128],
weight_scale_inv) — the same serialization Qwen's own FP8 checkpoints use.
See Format for why, and for the compressed-tensors variant.| Component | Precision | Count |
|---|---|---|
MLP (gate/up/down_proj, 64 layers) | FP8 | 192 |
Full-attention q/k/v/o_proj (16 layers) | FP8 | 64 |
| Linear attention / gated delta net (48 layers) | BF16 | — |
| Vision tower | BF16 | 333 |
embed_tokens, lm_head | BF16 | — |
| MTP module | BF16 | 15 |
in_proj_qkvz and
out_proj quantized (~31 GB) is measurably faster; this repo prioritises
accuracy.in_proj_a and in_proj_b
must stay in BF16. They are (48, 5120) on disk and vLLM fuses them into one
in_proj_ba MergedColumnParallelLinear of 96 outputs, which shards to 24 per
rank at TP=2. 128-block quantization requires partitions divisible by 128, so
load fails with:ValueError: Weight output_partition_size = 24 is not divisible by
weight quantization block_n = 128.re:.*in_proj_[ab]$ — they are ~0.25M params per layer against
~84M for in_proj_qkvz, so you lose essentially nothing.1from compressed_tensors.utils import save_mtp_tensors_to_checkpoint
2from llmcompressor import oneshot
3from llmcompressor.modifiers.quantization import QuantizationModifier
4from transformers import AutoProcessor, AutoTokenizer, Qwen3_5ForConditionalGeneration
5
6MODEL_ID = "DavidAU/Qwen3.6-27B-Fable-Fusion-711-Uncensored-Heretic-NM-DAU-MTP"
7SAVE_DIR = "ff711-FP8-BLOCK"
8
9model = Qwen3_5ForConditionalGeneration.from_pretrained(
10 MODEL_ID, dtype="auto", device_map="auto_offload", offload_folder="./offload",
11)
12tokenizer = AutoTokenizer.from_pretrained(MODEL_ID)
13processor = AutoProcessor.from_pretrained(MODEL_ID)
14
15recipe = QuantizationModifier(
16 targets="Linear",
17 scheme="FP8_BLOCK",
18 ignore=[
19 "re:.*lm_head",
20 "re:.*embed_tokens$",
21 "re:.*visual.*",
22 "re:.*model.visual.*",
23 "re:.*linear_attn.*",
24 ],
25)
26
27oneshot(model=model, recipe=recipe)
28model.save_pretrained(SAVE_DIR, save_compressed=True)
29tokenizer.save_pretrained(SAVE_DIR)
30processor.save_pretrained(SAVE_DIR)
31save_mtp_tensors_to_checkpoint(source_model=MODEL_ID, dest_dir=SAVE_DIR)*.weight_scale to *.weight_scale_inv,
rewrite quantization_config); see Format.save_mtp_tensors_to_checkpoint is not optional: the MTP tensors are in the
index but are not loaded by Qwen3_5ForConditionalGeneration, so
save_pretrained silently drops them and you lose speculative decoding.llmcompressor — 0.12.1.dev92+g8cec0acccompressed-tensors — 0.17.2a20260729transformers — 5.15.0.dev0torch — 2.11.0+rocm7.14accelerate — 1.14.0safetensors — 0.8.0+g8cec0acc on llmcompressor is the commit it was built from. Stable releases
at the time did not carry qwen3_5 support or
save_mtp_tensors_to_checkpoint.stilldeadcode/vllm-radiance
0.5.7 — vLLM 0.26.0, torch 2.11.0+rocm7.14, ROCm 7.2, AITER built for gfx1201:1vllm serve /models/ff711-FP8-BLOCK \
2 --served-model-name ff711 \
3 --kv-cache-dtype fp8 \
4 --tensor-parallel-size 2 \
5 --attention-backend ROCM_AITER_UNIFIED_ATTN \
6 --speculative-config '{"method":"mtp","num_speculative_tokens":8,"attention_backend":"ROCM_AITER_UNIFIED_ATTN","disable_padded_drafter_batch":true}'--quantization fp8 so the native fp8 loader is selected — that is the
faster path on gfx1201 (see Format).--language-model-only to skip the vision tower and free VRAM for KV cache.compressed-tensors
(quant_method: compressed-tensors, weight_scale), and then converted to the
native fp8 serialization (quant_method: fp8, weight_scale_inv).float8_e4m3fn weights
with 128x128 block scales, and — verified empirically against the original BF16
weights — both store the dequantization multiplier, despite the _inv
suffix implying otherwise. Reconstructing weights as w_fp8 * scale gives 2.26%
mean relative error (the FP8 e4m3 floor); as w_fp8 / scale it is off by nine
orders of magnitude. So the conversion is a rename plus a config rewrite, with
no change to any weight value.Selected TritonFp8BlockScaledMMKernel for CompressedTensorsW8A8Fp8*.weight_scale_inv back to *.weight_scale and
restore the config_groups form of quantization_config.| Benchmark | Base (published) | This checkpoint |
|---|---|---|
| ARC-C | 0.711 | TODO |