vmlinux commited on
Commit
9796a93
·
verified ·
1 Parent(s): ddf227b

Document DFlash conversion and ROCm benchmarks

Browse files
Files changed (2) hide show
  1. BUILD_PLAN.md +25 -0
  2. BUILD_RESULTS.md +33 -0
BUILD_PLAN.md CHANGED
@@ -4,6 +4,8 @@
4
 
5
  - Hugging Face model: `meta-models/Muse-Glimmer-30B`
6
  - Model revision: `f84ecc3a0ea984a4c04542a84269e3d065350a6e`
 
 
7
  - ROCmFPX base: `00d54526e24e3aba4c76474e3147cbf9c7cc034c`
8
  - Upstream Muse support: `62bf73d25c53b8161f8a22894d4f90c4aebbd7d0`
9
  - Upstream converter worktree: `d2f83055dca6dd009d8a52bdff792fbb286f4444`
@@ -21,6 +23,8 @@ canonical `/home/vmlinux/models/llama.cpp` checkout or build.
21
  | ROCmFP4 | `Q4_0_ROCMFP4_STRIX` | Strix Halo speed/quality recipe; dual-scale FP4 attention K/V and Q6_K token embeddings |
22
  | ROCmFP8 | `Q8_0_ROCMFPX` | High-fidelity 8.25-bpw reference layout |
23
  | ROCmFP4-Q6-QUALITY | `Q4_0_ROCMFP4_COHERENT` | Dual-scale FP4 body with Q6_K token embeddings for the coherence-biased quality build |
 
 
24
 
25
  The two FP4 builds use a 500-chunk importance matrix generated from the local
26
  `narrative-general-imatrix-sample.txt` corpus. This supplies varied prose,
@@ -29,9 +33,14 @@ provides the agent/tool-oriented tensor routing. The FP8 reference does not
29
  need an importance matrix because its preset does not consume importance
30
  weights.
31
 
 
 
 
 
32
  ## Paths
33
 
34
  - Source snapshot: `source/Muse-Glimmer-30B/`
 
35
  - BF16 text model and projector: `intermediate/`
36
  - Importance matrix: `calibration/`
37
  - Final models: `artifacts/`
@@ -61,6 +70,22 @@ toolchain/build-muse-rocmfpx/bin/llama-quantize \
61
  intermediate/Muse-Glimmer-30B-BF16.gguf \
62
  artifacts/Muse-Glimmer-30B-ROCmFP4-Q6-QUALITY.gguf \
63
  Q4_0_ROCMFP4_COHERENT
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
64
  ```
65
 
66
  Exact tensor inventories, sizes, checksums, and smoke-test results are in
 
4
 
5
  - Hugging Face model: `meta-models/Muse-Glimmer-30B`
6
  - Model revision: `f84ecc3a0ea984a4c04542a84269e3d065350a6e`
7
+ - Hugging Face drafter: `meta-models/Muse-Glimmer-30B-assistant`
8
+ - Drafter revision: `2c86316d689027b91123638739743fef1d425233`
9
  - ROCmFPX base: `00d54526e24e3aba4c76474e3147cbf9c7cc034c`
10
  - Upstream Muse support: `62bf73d25c53b8161f8a22894d4f90c4aebbd7d0`
11
  - Upstream converter worktree: `d2f83055dca6dd009d8a52bdff792fbb286f4444`
 
23
  | ROCmFP4 | `Q4_0_ROCMFP4_STRIX` | Strix Halo speed/quality recipe; dual-scale FP4 attention K/V and Q6_K token embeddings |
24
  | ROCmFP8 | `Q8_0_ROCMFPX` | High-fidelity 8.25-bpw reference layout |
25
  | ROCmFP4-Q6-QUALITY | `Q4_0_ROCMFP4_COHERENT` | Dual-scale FP4 body with Q6_K token embeddings for the coherence-biased quality build |
26
+ | DFlash ROCmFP4 | `Q4_0_ROCMFP4_STRIX` | Small, speed-oriented official DFlash companion; recommended on Strix Halo |
27
+ | DFlash ROCmFP8 | `Q8_0_ROCMFPX` | Higher-precision DFlash reference for acceptance and hardware tuning |
28
 
29
  The two FP4 builds use a 500-chunk importance matrix generated from the local
30
  `narrative-general-imatrix-sample.txt` corpus. This supplies varied prose,
 
33
  need an importance matrix because its preset does not consume importance
34
  weights.
35
 
36
+ The DFlash drafters do not use the main-model iMatrix. They are quantized from
37
+ the official assistant checkpoint, and the FP4 conversion keeps the feature
38
+ fusion `fc.weight` at Q8_0 as a precision floor.
39
+
40
  ## Paths
41
 
42
  - Source snapshot: `source/Muse-Glimmer-30B/`
43
+ - DFlash source snapshot: `source/Muse-Glimmer-30B-assistant/`
44
  - BF16 text model and projector: `intermediate/`
45
  - Importance matrix: `calibration/`
46
  - Final models: `artifacts/`
 
70
  intermediate/Muse-Glimmer-30B-BF16.gguf \
71
  artifacts/Muse-Glimmer-30B-ROCmFP4-Q6-QUALITY.gguf \
72
  Q4_0_ROCMFP4_COHERENT
73
+
74
+ .venv/bin/python toolchain/scripts/convert_hf_to_gguf_modular.py \
75
+ source/Muse-Glimmer-30B-assistant \
76
+ --target-model-dir source/Muse-Glimmer-30B \
77
+ --outtype bf16 \
78
+ --outfile intermediate/Muse-Glimmer-30B-DFlash-BF16.gguf
79
+
80
+ toolchain/build-muse-rocmfpx/bin/llama-quantize \
81
+ intermediate/Muse-Glimmer-30B-DFlash-BF16.gguf \
82
+ artifacts/Muse-Glimmer-30B-DFlash-ROCmFP4.gguf \
83
+ Q4_0_ROCMFP4_STRIX
84
+
85
+ toolchain/build-muse-rocmfpx/bin/llama-quantize \
86
+ intermediate/Muse-Glimmer-30B-DFlash-BF16.gguf \
87
+ artifacts/Muse-Glimmer-30B-DFlash-ROCmFP8.gguf \
88
+ Q8_0_ROCMFPX
89
  ```
90
 
91
  Exact tensor inventories, sizes, checksums, and smoke-test results are in
BUILD_RESULTS.md CHANGED
@@ -8,11 +8,19 @@
8
  | `artifacts/Muse-Glimmer-30B-ROCmFP8.gguf` | `Q8_0_ROCMFPX`, ftype 111 | 28,742,539,776 | 26.77 GiB | 8.25 |
9
  | `artifacts/Muse-Glimmer-30B-ROCmFP4-Q6-QUALITY.gguf` | `Q4_0_ROCMFP4_COHERENT`, ftype 102 | 16,032,978,080 | 14.94 GiB | 4.60 |
10
  | `intermediate/mmproj-Muse-Glimmer-30B-BF16.gguf` | BF16 vision projector | 3,849,173,920 | 3.59 GiB | — |
 
 
11
 
12
  The text GGUFs each contain 731 tensors and report the `muse-glimmer`
13
  architecture. The projector contains 809 tensors, 50 vision blocks, and the
14
  `muse-glimmer` projector type.
15
 
 
 
 
 
 
 
16
  ## Importance matrix
17
 
18
  - File: `calibration/Muse-Glimmer-30B-narrative-general.imatrix`
@@ -27,6 +35,10 @@ computed from 500 chunks. The standalone `--show-statistics` mode exits with
27
  SIGFPE in this ROCmFPX base; this does not affect matrix generation or the two
28
  successful quantizer consumers.
29
 
 
 
 
 
30
  ## Runtime validation
31
 
32
  All checks used the experimental Muse-capable ROCmFPX build on `ROCm0` with
@@ -39,6 +51,25 @@ all layers offloaded and a 1,024-token context unless noted.
39
  | ROCmFP4-Q6-QUALITY | clean 16-token single-turn generation | 39.0 tok/s | 14.0 tok/s |
40
  | ROCmFP4 + BF16 mmproj | loaded `text, vision`, decoded a PNG as a folder icon | 81.7 tok/s | 14.9 tok/s |
41
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
42
  The vision smoke test used a 2,048-token context and a local system icon. The
43
  older ROCmFPX flash-attention ABI requires the Muse sparse attention mask in
44
  FP16; the experiment toolchain converts the upstream FP32 mask values to FP16
@@ -51,6 +82,8 @@ at upload time.
51
  - Vulkan ROCmFP4 copy/conversion backend tests: 34/34 passed
52
  - `llama-quantize`, `llama-imatrix`, `llama-cli`, and `llama-server`: built
53
  - ROCmFPX build version: `209 (00d54526e)`
 
 
54
 
55
  SHA-256 digests for sources, intermediates, and final outputs are recorded in
56
  `manifests/SHA256SUMS`.
 
8
  | `artifacts/Muse-Glimmer-30B-ROCmFP8.gguf` | `Q8_0_ROCMFPX`, ftype 111 | 28,742,539,776 | 26.77 GiB | 8.25 |
9
  | `artifacts/Muse-Glimmer-30B-ROCmFP4-Q6-QUALITY.gguf` | `Q4_0_ROCMFP4_COHERENT`, ftype 102 | 16,032,978,080 | 14.94 GiB | 4.60 |
10
  | `intermediate/mmproj-Muse-Glimmer-30B-BF16.gguf` | BF16 vision projector | 3,849,173,920 | 3.59 GiB | — |
11
+ | `artifacts/Muse-Glimmer-30B-DFlash-ROCmFP4.gguf` | `Q4_0_ROCMFP4_STRIX` drafter | 1,491,030,176 | 1.39 GiB | 4.63 |
12
+ | `artifacts/Muse-Glimmer-30B-DFlash-ROCmFP8.gguf` | `Q8_0_ROCMFPX` drafter | 2,649,174,176 | 2.47 GiB | 8.25 |
13
 
14
  The text GGUFs each contain 731 tensors and report the `muse-glimmer`
15
  architecture. The projector contains 809 tensors, 50 vision blocks, and the
16
  `muse-glimmer` projector type.
17
 
18
+ The DFlash GGUFs each contain 58 tensors and report the `dflash` architecture.
19
+ Their source is Meta's official five-layer `MuseGlimmerAssistantModel` at
20
+ revision `2c86316d689027b91123638739743fef1d425233`. The modular ROCmFPX
21
+ conversion and current upstream conversion produced byte-identical BF16 GGUFs
22
+ (`dc4ecbb…ad891`) before quantization.
23
+
24
  ## Importance matrix
25
 
26
  - File: `calibration/Muse-Glimmer-30B-narrative-general.imatrix`
 
35
  SIGFPE in this ROCmFPX base; this does not affect matrix generation or the two
36
  successful quantizer consumers.
37
 
38
+ Neither DFlash drafter uses an iMatrix. They were quantized directly from the
39
+ official BF16 assistant; the custom FP4 precision floor retains `fc.weight` as
40
+ Q8_0 while routing the remaining eligible weights through the Strix FP4 preset.
41
+
42
  ## Runtime validation
43
 
44
  All checks used the experimental Muse-capable ROCmFPX build on `ROCm0` with
 
51
  | ROCmFP4-Q6-QUALITY | clean 16-token single-turn generation | 39.0 tok/s | 14.0 tok/s |
52
  | ROCmFP4 + BF16 mmproj | loaded `text, vision`, decoded a PNG as a folder icon | 81.7 tok/s | 14.9 tok/s |
53
 
54
+ ### DFlash throughput
55
+
56
+ Controlled DFlash runs used the ROCmFP4 target, three prompts, 256 generated
57
+ tokens per prompt, context 2,048, batch size 1, greedy decoding, flash
58
+ attention, full ROCm0 offload, and Q4_0 KV caches for both contexts.
59
+
60
+ | Mode | Draft window | Mean decode | Speedup | Range | Weighted acceptance |
61
+ | --- | ---: | ---: | ---: | ---: | ---: |
62
+ | Baseline | — | 13.7 tok/s | 1.00× | 13.7–13.7 | — |
63
+ | DFlash ROCmFP4 | 6 | 28.3 tok/s | 2.07× | 24.3–31.8 | 519/1,448 (35.8%) |
64
+ | DFlash ROCmFP8 | 6 | 27.2 tok/s | 1.99× | 24.1–33.0 | 519/1,454 (35.7%) |
65
+ | DFlash ROCmFP4 | 15 | 24.6 tok/s | 1.80× | 18.5–30.7 | 543/3,171 (17.1%) |
66
+ | DFlash ROCmFP8 | 15 | 26.3 tok/s | 1.92× | 19.2–34.6 | 563/2,891 (19.5%) |
67
+
68
+ The six-token window is the recommended starting point on this host. The
69
+ runtime patch includes the upstream DFlash injected-cache rotation fix; before
70
+ that fix, quantized KV caches produced near-zero acceptance despite valid
71
+ target verification.
72
+
73
  The vision smoke test used a 2,048-token context and a local system icon. The
74
  older ROCmFPX flash-attention ABI requires the Muse sparse attention mask in
75
  FP16; the experiment toolchain converts the upstream FP32 mask values to FP16
 
82
  - Vulkan ROCmFP4 copy/conversion backend tests: 34/34 passed
83
  - `llama-quantize`, `llama-imatrix`, `llama-cli`, and `llama-server`: built
84
  - ROCmFPX build version: `209 (00d54526e)`
85
+ - DFlash ROCmFP4 and ROCmFP8 both completed verified speculative generation
86
+ with Q4_0 KV caches after the injected-cache rotation backport
87
 
88
  SHA-256 digests for sources, intermediates, and final outputs are recorded in
89
  `manifests/SHA256SUMS`.