Instructions to use vmlinux/Muse-Glimmer-30B-ROCmFPX-GGUF with libraries, inference providers, notebooks, and local apps. Follow these links to get started.
- Notebooks
- Google Colab
- Kaggle
- Local Apps Settings
- llama.cpp
How to use vmlinux/Muse-Glimmer-30B-ROCmFPX-GGUF with llama.cpp:
Install (macOS, Linux)
curl -LsSf https://llama.app/install.sh | sh # Start a local OpenAI-compatible server with a web UI: llama serve -hf vmlinux/Muse-Glimmer-30B-ROCmFPX-GGUF:BF16 # Run inference directly in the terminal: llama cli -hf vmlinux/Muse-Glimmer-30B-ROCmFPX-GGUF:BF16
Install from WinGet (Windows)
winget install llama.cpp # Start a local OpenAI-compatible server with a web UI: llama serve -hf vmlinux/Muse-Glimmer-30B-ROCmFPX-GGUF:BF16 # Run inference directly in the terminal: llama cli -hf vmlinux/Muse-Glimmer-30B-ROCmFPX-GGUF:BF16
Use pre-built binary
# Download pre-built binary from: # https://github.com/ggerganov/llama.cpp/releases # Start a local OpenAI-compatible server with a web UI: ./llama-server -hf vmlinux/Muse-Glimmer-30B-ROCmFPX-GGUF:BF16 # Run inference directly in the terminal: ./llama-cli -hf vmlinux/Muse-Glimmer-30B-ROCmFPX-GGUF:BF16
Build from source code
git clone https://github.com/ggerganov/llama.cpp.git cd llama.cpp cmake -B build cmake --build build -j --target llama-server llama-cli # Start a local OpenAI-compatible server with a web UI: ./build/bin/llama-server -hf vmlinux/Muse-Glimmer-30B-ROCmFPX-GGUF:BF16 # Run inference directly in the terminal: ./build/bin/llama-cli -hf vmlinux/Muse-Glimmer-30B-ROCmFPX-GGUF:BF16
Use Docker
docker model run hf.co/vmlinux/Muse-Glimmer-30B-ROCmFPX-GGUF:BF16
- LM Studio
- Jan
- vLLM
How to use vmlinux/Muse-Glimmer-30B-ROCmFPX-GGUF with vLLM:
Install from pip and serve model
# Install vLLM from pip: pip install vllm # Start the vLLM server: vllm serve "vmlinux/Muse-Glimmer-30B-ROCmFPX-GGUF" # Call the server using curl (OpenAI-compatible API): curl -X POST "http://localhost:8000/v1/chat/completions" \ -H "Content-Type: application/json" \ --data '{ "model": "vmlinux/Muse-Glimmer-30B-ROCmFPX-GGUF", "messages": [ { "role": "user", "content": [ { "type": "text", "text": "Describe this image in one sentence." }, { "type": "image_url", "image_url": { "url": "https://cdn.britannica.com/61/93061-050-99147DCE/Statue-of-Liberty-Island-New-York-Bay.jpg" } } ] } ] }'Use Docker
docker model run hf.co/vmlinux/Muse-Glimmer-30B-ROCmFPX-GGUF:BF16
- Ollama
How to use vmlinux/Muse-Glimmer-30B-ROCmFPX-GGUF with Ollama:
ollama run hf.co/vmlinux/Muse-Glimmer-30B-ROCmFPX-GGUF:BF16
- Unsloth Studio
How to use vmlinux/Muse-Glimmer-30B-ROCmFPX-GGUF with Unsloth Studio:
Install Unsloth Studio (macOS, Linux, WSL)
curl -fsSL https://unsloth.ai/install.sh | sh # Run unsloth studio unsloth studio -H 0.0.0.0 -p 8888 # Then open http://localhost:8888 in your browser # Search for vmlinux/Muse-Glimmer-30B-ROCmFPX-GGUF to start chatting
Install Unsloth Studio (Windows)
irm https://unsloth.ai/install.ps1 | iex # Run unsloth studio unsloth studio -H 0.0.0.0 -p 8888 # Then open http://localhost:8888 in your browser # Search for vmlinux/Muse-Glimmer-30B-ROCmFPX-GGUF to start chatting
Using HuggingFace Spaces for Unsloth
# No setup required # Open https://huggingface.co/spaces/unsloth/studio in your browser # Search for vmlinux/Muse-Glimmer-30B-ROCmFPX-GGUF to start chatting
- Pi
How to use vmlinux/Muse-Glimmer-30B-ROCmFPX-GGUF with Pi:
Start the llama.cpp server
# Install llama.cpp: brew install llama.cpp # Start a local OpenAI-compatible server: llama serve -hf vmlinux/Muse-Glimmer-30B-ROCmFPX-GGUF:BF16
Configure the model in Pi
# Install Pi: npm install -g @mariozechner/pi-coding-agent # Add to ~/.pi/agent/models.json: { "providers": { "llama-cpp": { "baseUrl": "http://localhost:8080/v1", "api": "openai-completions", "apiKey": "none", "models": [ { "id": "vmlinux/Muse-Glimmer-30B-ROCmFPX-GGUF:BF16" } ] } } }Run Pi
# Start Pi in your project directory: pi
- Docker Model Runner
How to use vmlinux/Muse-Glimmer-30B-ROCmFPX-GGUF with Docker Model Runner:
docker model run hf.co/vmlinux/Muse-Glimmer-30B-ROCmFPX-GGUF:BF16
- Lemonade
How to use vmlinux/Muse-Glimmer-30B-ROCmFPX-GGUF with Lemonade:
Pull the model
# Download Lemonade from https://lemonade-server.ai/ lemonade pull vmlinux/Muse-Glimmer-30B-ROCmFPX-GGUF:BF16
Run and chat with the model
lemonade run user.Muse-Glimmer-30B-ROCmFPX-GGUF-BF16
List all available models
lemonade list
- Hermes Agent
How to use vmlinux/Muse-Glimmer-30B-ROCmFPX-GGUF with Hermes Agent:
Start the llama.cpp server
# Install llama.cpp: brew install llama.cpp # Start a local OpenAI-compatible server: llama serve -hf vmlinux/Muse-Glimmer-30B-ROCmFPX-GGUF:BF16
Configure Hermes
# Install Hermes: curl -fsSL https://hermes-agent.nousresearch.com/install.sh | bash hermes setup # Point Hermes at the local server: hermes config set model.provider custom hermes config set model.base_url http://127.0.0.1:8080/v1 hermes config set model.default vmlinux/Muse-Glimmer-30B-ROCmFPX-GGUF:BF16
Run Hermes
hermes
- Atomic Chat
- OpenClaw
How to use vmlinux/Muse-Glimmer-30B-ROCmFPX-GGUF with OpenClaw:
Start the llama.cpp server
# Install llama.cpp: brew install llama.cpp # Start a local OpenAI-compatible server: llama serve -hf vmlinux/Muse-Glimmer-30B-ROCmFPX-GGUF:BF16
Configure OpenClaw
# Install OpenClaw: npm install -g openclaw@latest # Register the local server and set it as the default model: openclaw onboard --non-interactive --mode local \ --auth-choice custom-api-key \ --custom-base-url http://127.0.0.1:8080/v1 \ --custom-model-id "vmlinux/Muse-Glimmer-30B-ROCmFPX-GGUF:BF16" \ --custom-provider-id llama-cpp \ --custom-compatibility openai \ --custom-text-input \ --accept-risk \ --skip-health
Run OpenClaw
openclaw agent --local --agent main --message "Hello from Hugging Face"
Update model card for DFlash runtime and benchmarks
Browse filesDocument experimental ROCmFPX runtime requirements, official DFlash provenance, additive files, benchmark speeds, recommended six-token draft window, and cache-rotation patch.
- PROVENANCE_SHA256SUMS +4 -0
- README.md +70 -9
- ROCmFPX-Muse-Glimmer.patch +117 -0
- SHA256SUMS +3 -0
|
@@ -6,3 +6,7 @@ f2d6c59f89a63c7331c768c515a691c7b193f0e55d9083842a13a60134d7654f calibration/Mu
|
|
| 6 |
733b6eee371dfe2c49bd338dbf597bcdae1e5297de53cfa98f61a4d7e6e196ae artifacts/Muse-Glimmer-30B-ROCmFP4.gguf
|
| 7 |
74a5f469f17420d01a837400a2ef19d8191dcb1b479fd7c0be0c862901879915 artifacts/Muse-Glimmer-30B-ROCmFP8.gguf
|
| 8 |
6b80db6b044d9a3999b539eec140dc4d29279d53c18f42f80a557d3e6736123a artifacts/Muse-Glimmer-30B-ROCmFP4-Q6-QUALITY.gguf
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 6 |
733b6eee371dfe2c49bd338dbf597bcdae1e5297de53cfa98f61a4d7e6e196ae artifacts/Muse-Glimmer-30B-ROCmFP4.gguf
|
| 7 |
74a5f469f17420d01a837400a2ef19d8191dcb1b479fd7c0be0c862901879915 artifacts/Muse-Glimmer-30B-ROCmFP8.gguf
|
| 8 |
6b80db6b044d9a3999b539eec140dc4d29279d53c18f42f80a557d3e6736123a artifacts/Muse-Glimmer-30B-ROCmFP4-Q6-QUALITY.gguf
|
| 9 |
+
fd88d337eb84f8d0e6ba33a7684d7efa6722d4460ba4d6badca9699418392a84 source/Muse-Glimmer-30B-assistant/model.safetensors
|
| 10 |
+
dc4ecbb844a961bbb535a57258085b95e24f54c437599296133aa1a3dbcad891 intermediate/Muse-Glimmer-30B-DFlash-BF16.gguf
|
| 11 |
+
1e2f0d9de05251b05ed9c6f67f208105b30f0cd51112307a400b59936dd8fc41 artifacts/Muse-Glimmer-30B-DFlash-ROCmFP4.gguf
|
| 12 |
+
ae1d9ffbcbc3af92fbe50ecf62d5892c619ec76b1ca3198e25b240f86a11974f artifacts/Muse-Glimmer-30B-DFlash-ROCmFP8.gguf
|
|
@@ -1,5 +1,7 @@
|
|
| 1 |
---
|
| 2 |
-
base_model:
|
|
|
|
|
|
|
| 3 |
base_model_relation: quantized
|
| 4 |
library_name: llama.cpp
|
| 5 |
pipeline_tag: image-text-to-text
|
|
@@ -16,6 +18,8 @@ tags:
|
|
| 16 |
- multimodal
|
| 17 |
- muse-glimmer
|
| 18 |
- conversational
|
|
|
|
|
|
|
| 19 |
---
|
| 20 |
|
| 21 |
# Muse-Glimmer-30B ROCmFPX GGUF
|
|
@@ -33,9 +37,10 @@ files; read the compatibility section before downloading.
|
|
| 33 |
> llama.cpp does not implement the ROCmFP4/ROCmFP8 tensor layouts, while the
|
| 34 |
> pinned ROCmFPX base predates Muse Glimmer support. Apply the included
|
| 35 |
> `ROCmFPX-Muse-Glimmer.patch` to ROCmFPX commit `00d54526e…`, then build that
|
| 36 |
-
> checkout. The patch adds the upstream Muse text and
|
| 37 |
-
> ports it to ROCmFPX's older APIs,
|
| 38 |
-
> required by its multimodal flash-attention path
|
|
|
|
| 39 |
|
| 40 |
## Files
|
| 41 |
|
|
@@ -45,6 +50,11 @@ files; read the compatibility section before downloading.
|
|
| 45 |
| `Muse-Glimmer-30B-ROCmFP4-Q6-QUALITY.gguf` | `Q4_0_ROCMFP4_COHERENT` | 14.94 GiB | 4.60 | Yes | 14.0 tok/s |
|
| 46 |
| `Muse-Glimmer-30B-ROCmFP8.gguf` | `Q8_0_ROCMFPX` | 26.77 GiB | 8.25 | No | 7.8 tok/s |
|
| 47 |
| `mmproj-Muse-Glimmer-30B-BF16.gguf` | BF16 vision projector | 3.59 GiB | — | — | — |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 48 |
|
| 49 |
Suggested choices:
|
| 50 |
|
|
@@ -53,6 +63,10 @@ Suggested choices:
|
|
| 53 |
- **ROCmFP4-Q6-QUALITY:** coherence-biased build. Dual-scale FP4 throughout the
|
| 54 |
body with Q6_K token embeddings.
|
| 55 |
- **ROCmFP8:** high-fidelity 8.25-bpw reference build.
|
|
|
|
|
|
|
|
|
|
|
|
|
| 56 |
|
| 57 |
The BF16 projector works with all three text models.
|
| 58 |
|
|
@@ -68,6 +82,11 @@ Both FP4 models use the same GGUF importance matrix:
|
|
| 68 |
`Q8_0_ROCMFPX` does not consume importance weights, so the FP8 reference was
|
| 69 |
intentionally built without an iMatrix.
|
| 70 |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 71 |
## Compatibility
|
| 72 |
|
| 73 |
These files use experimental ROCmFPX tensor types and **will not load in stock
|
|
@@ -81,6 +100,8 @@ The validated runtime was built from:
|
|
| 81 |
[`62bf73d25c53b8161f8a22894d4f90c4aebbd7d0`](https://github.com/ggml-org/llama.cpp/commit/62bf73d25c53b8161f8a22894d4f90c4aebbd7d0)
|
| 82 |
- small compatibility adaptations for the older ROCmFPX chat, model, and
|
| 83 |
multimodal APIs
|
|
|
|
|
|
|
| 84 |
|
| 85 |
`ROCmFPX-Muse-Glimmer.patch` contains the complete patch against the pinned
|
| 86 |
ROCmFPX base. The runtime was built with ROCm and Vulkan backends; the reported
|
|
@@ -114,6 +135,7 @@ to the exact pinned commit; `git apply --check` was verified before publishing.
|
|
| 114 |
```bash
|
| 115 |
hf download vmlinux/Muse-Glimmer-30B-ROCmFPX-GGUF \
|
| 116 |
Muse-Glimmer-30B-ROCmFP4.gguf \
|
|
|
|
| 117 |
mmproj-Muse-Glimmer-30B-BF16.gguf \
|
| 118 |
--local-dir ./Muse-Glimmer-30B-ROCmFPX
|
| 119 |
```
|
|
@@ -137,6 +159,23 @@ Vision:
|
|
| 137 |
-dev ROCm0 -ngl all -c 8192 -cnv -st
|
| 138 |
```
|
| 139 |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 140 |
## Validation
|
| 141 |
|
| 142 |
All three files completed clean, single-turn ROCm generation with every layer
|
|
@@ -154,6 +193,25 @@ These are short smoke-test measurements, not a formal benchmark. Host: AMD
|
|
| 154 |
Strix Halo `gfx1151`, 128 GiB unified memory, ROCm backend, 1,024-token text
|
| 155 |
context (2,048 for vision).
|
| 156 |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 157 |
Additional verification:
|
| 158 |
|
| 159 |
- 731 tensors and `muse-glimmer` architecture in every text GGUF
|
|
@@ -162,16 +220,19 @@ Additional verification:
|
|
| 162 |
- `test-quantize-fns` and architecture tests passed
|
| 163 |
- SHA-256 hashes supplied in `SHA256SUMS`
|
| 164 |
|
| 165 |
-
##
|
| 166 |
|
| 167 |
-
|
| 168 |
-
|
| 169 |
-
checkpoint.
|
| 170 |
-
a
|
|
|
|
|
|
|
| 171 |
|
| 172 |
## Provenance
|
| 173 |
|
| 174 |
- Source revision: `f84ecc3a0ea984a4c04542a84269e3d065350a6e`
|
|
|
|
| 175 |
- Conversion: upstream llama.cpp `d2f83055dca6dd009d8a52bdff792fbb286f4444`
|
| 176 |
- Every published GGUF is covered by `SHA256SUMS`; source, intermediate, and
|
| 177 |
calibration hashes are retained in `PROVENANCE_SHA256SUMS`
|
|
|
|
| 1 |
---
|
| 2 |
+
base_model:
|
| 3 |
+
- meta-models/Muse-Glimmer-30B
|
| 4 |
+
- meta-models/Muse-Glimmer-30B-assistant
|
| 5 |
base_model_relation: quantized
|
| 6 |
library_name: llama.cpp
|
| 7 |
pipeline_tag: image-text-to-text
|
|
|
|
| 18 |
- multimodal
|
| 19 |
- muse-glimmer
|
| 20 |
- conversational
|
| 21 |
+
- dflash
|
| 22 |
+
- speculative-decoding
|
| 23 |
---
|
| 24 |
|
| 25 |
# Muse-Glimmer-30B ROCmFPX GGUF
|
|
|
|
| 37 |
> llama.cpp does not implement the ROCmFP4/ROCmFP8 tensor layouts, while the
|
| 38 |
> pinned ROCmFPX base predates Muse Glimmer support. Apply the included
|
| 39 |
> `ROCmFPX-Muse-Glimmer.patch` to ROCmFPX commit `00d54526e…`, then build that
|
| 40 |
+
> checkout. The patch adds the upstream Muse text, vision, and DFlash support,
|
| 41 |
+
> ports it to ROCmFPX's older APIs, supplies the FP16 sparse-attention mask
|
| 42 |
+
> required by its multimodal flash-attention path, and backports the DFlash
|
| 43 |
+
> injected-cache rotation fix required when using quantized KV caches.
|
| 44 |
|
| 45 |
## Files
|
| 46 |
|
|
|
|
| 50 |
| `Muse-Glimmer-30B-ROCmFP4-Q6-QUALITY.gguf` | `Q4_0_ROCMFP4_COHERENT` | 14.94 GiB | 4.60 | Yes | 14.0 tok/s |
|
| 51 |
| `Muse-Glimmer-30B-ROCmFP8.gguf` | `Q8_0_ROCMFPX` | 26.77 GiB | 8.25 | No | 7.8 tok/s |
|
| 52 |
| `mmproj-Muse-Glimmer-30B-BF16.gguf` | BF16 vision projector | 3.59 GiB | — | — | — |
|
| 53 |
+
| `Muse-Glimmer-30B-DFlash-ROCmFP4.gguf` | `Q4_0_ROCMFP4_STRIX` drafter | 1.39 GiB | 4.63 | No | 28.3 tok/s¹ |
|
| 54 |
+
| `Muse-Glimmer-30B-DFlash-ROCmFP8.gguf` | `Q8_0_ROCMFPX` drafter | 2.47 GiB | 8.25 | No | 27.2 tok/s¹ |
|
| 55 |
+
|
| 56 |
+
¹ End-to-end target decode with `Muse-Glimmer-30B-ROCmFP4.gguf`, DFlash enabled,
|
| 57 |
+
and a six-token draft window; see the benchmark section below.
|
| 58 |
|
| 59 |
Suggested choices:
|
| 60 |
|
|
|
|
| 63 |
- **ROCmFP4-Q6-QUALITY:** coherence-biased build. Dual-scale FP4 throughout the
|
| 64 |
body with Q6_K token embeddings.
|
| 65 |
- **ROCmFP8:** high-fidelity 8.25-bpw reference build.
|
| 66 |
+
- **DFlash ROCmFP4:** recommended drafter on Strix Halo. It is smaller and was
|
| 67 |
+
slightly faster than the FP8 drafter in the measured six-token configuration.
|
| 68 |
+
- **DFlash ROCmFP8:** higher-precision drafter reference; useful for comparing
|
| 69 |
+
acceptance behavior and tuning on other hardware.
|
| 70 |
|
| 71 |
The BF16 projector works with all three text models.
|
| 72 |
|
|
|
|
| 82 |
`Q8_0_ROCMFPX` does not consume importance weights, so the FP8 reference was
|
| 83 |
intentionally built without an iMatrix.
|
| 84 |
|
| 85 |
+
The two DFlash drafters were quantized directly from Meta's official assistant
|
| 86 |
+
checkpoint without an iMatrix. Their role is proposal generation: every draft
|
| 87 |
+
is verified by the main model, so drafter quantization changes acceptance and
|
| 88 |
+
speed rather than bypassing the target model's output decision.
|
| 89 |
+
|
| 90 |
## Compatibility
|
| 91 |
|
| 92 |
These files use experimental ROCmFPX tensor types and **will not load in stock
|
|
|
|
| 100 |
[`62bf73d25c53b8161f8a22894d4f90c4aebbd7d0`](https://github.com/ggml-org/llama.cpp/commit/62bf73d25c53b8161f8a22894d4f90c4aebbd7d0)
|
| 101 |
- small compatibility adaptations for the older ROCmFPX chat, model, and
|
| 102 |
multimodal APIs
|
| 103 |
+
- the upstream DFlash quantized-cache rotation fix, adapted to this older graph
|
| 104 |
+
API; without it, Q4_0 draft KV caches load but produce near-zero acceptance
|
| 105 |
|
| 106 |
`ROCmFPX-Muse-Glimmer.patch` contains the complete patch against the pinned
|
| 107 |
ROCmFPX base. The runtime was built with ROCm and Vulkan backends; the reported
|
|
|
|
| 135 |
```bash
|
| 136 |
hf download vmlinux/Muse-Glimmer-30B-ROCmFPX-GGUF \
|
| 137 |
Muse-Glimmer-30B-ROCmFP4.gguf \
|
| 138 |
+
Muse-Glimmer-30B-DFlash-ROCmFP4.gguf \
|
| 139 |
mmproj-Muse-Glimmer-30B-BF16.gguf \
|
| 140 |
--local-dir ./Muse-Glimmer-30B-ROCmFPX
|
| 141 |
```
|
|
|
|
| 159 |
-dev ROCm0 -ngl all -c 8192 -cnv -st
|
| 160 |
```
|
| 161 |
|
| 162 |
+
DFlash speculative decoding (recommended starting point):
|
| 163 |
+
|
| 164 |
+
```bash
|
| 165 |
+
./llama-cli \
|
| 166 |
+
-m ./Muse-Glimmer-30B-ROCmFPX/Muse-Glimmer-30B-ROCmFP4.gguf \
|
| 167 |
+
--model-draft ./Muse-Glimmer-30B-ROCmFPX/Muse-Glimmer-30B-DFlash-ROCmFP4.gguf \
|
| 168 |
+
--spec-type draft-dflash \
|
| 169 |
+
-dev ROCm0 -ngl all \
|
| 170 |
+
--spec-draft-device ROCm0 --spec-draft-ngl all \
|
| 171 |
+
-ctk q4_0 -ctv q4_0 \
|
| 172 |
+
--spec-draft-type-k q4_0 --spec-draft-type-v q4_0 \
|
| 173 |
+
--spec-draft-n-max 6 --spec-draft-n-min 0 \
|
| 174 |
+
--spec-draft-p-min 0.0 --spec-draft-p-split 0.10 \
|
| 175 |
+
--no-spec-draft-backend-sampling \
|
| 176 |
+
-c 8192 -cnv
|
| 177 |
+
```
|
| 178 |
+
|
| 179 |
## Validation
|
| 180 |
|
| 181 |
All three files completed clean, single-turn ROCm generation with every layer
|
|
|
|
| 193 |
Strix Halo `gfx1151`, 128 GiB unified memory, ROCm backend, 1,024-token text
|
| 194 |
context (2,048 for vision).
|
| 195 |
|
| 196 |
+
### DFlash benchmark
|
| 197 |
+
|
| 198 |
+
The additive DFlash benchmark used the default ROCmFP4 target, batch size 1,
|
| 199 |
+
greedy decoding, three text prompts, 256 generated tokens per prompt, a
|
| 200 |
+
2,048-token context, flash attention, full `ROCm0` offload, and Q4_0 target and
|
| 201 |
+
draft KV caches. Values are arithmetic means of the three runs.
|
| 202 |
+
|
| 203 |
+
| Mode | Draft window | Decode | Speedup | Per-prompt range | Weighted draft acceptance |
|
| 204 |
+
| --- | ---: | ---: | ---: | ---: | ---: |
|
| 205 |
+
| No speculation | — | 13.7 tok/s | 1.00× | 13.7–13.7 | — |
|
| 206 |
+
| DFlash ROCmFP4 | 6 | **28.3 tok/s** | **2.07×** | 24.3–31.8 | 35.8% (519/1,448) |
|
| 207 |
+
| DFlash ROCmFP8 | 6 | 27.2 tok/s | 1.99× | 24.1–33.0 | 35.7% (519/1,454) |
|
| 208 |
+
| DFlash ROCmFP4 | 15 | 24.6 tok/s | 1.80× | 18.5–30.7 | 17.1% (543/3,171) |
|
| 209 |
+
| DFlash ROCmFP8 | 15 | 26.3 tok/s | 1.92× | 19.2–34.6 | 19.5% (563/2,891) |
|
| 210 |
+
|
| 211 |
+
This is a small local throughput benchmark, not a universal performance claim.
|
| 212 |
+
Acceptance depends strongly on prompt and generation content. Six draft tokens
|
| 213 |
+
was the best tested practical default on this host; tune it for your workload.
|
| 214 |
+
|
| 215 |
Additional verification:
|
| 216 |
|
| 217 |
- 731 tensors and `muse-glimmer` architecture in every text GGUF
|
|
|
|
| 220 |
- `test-quantize-fns` and architecture tests passed
|
| 221 |
- SHA-256 hashes supplied in `SHA256SUMS`
|
| 222 |
|
| 223 |
+
## DFlash, not MTP
|
| 224 |
|
| 225 |
+
These new companion files are converted from Meta's official
|
| 226 |
+
[`Muse-Glimmer-30B-assistant`](https://huggingface.co/meta-models/Muse-Glimmer-30B-assistant)
|
| 227 |
+
checkpoint. It is a five-layer `MuseGlimmerAssistantModel` using DFlash block
|
| 228 |
+
diffusion with a trained block size of 16. Run it with
|
| 229 |
+
`--spec-type draft-dflash`; it is not an MTP checkpoint and should not be run
|
| 230 |
+
with `draft-mtp`.
|
| 231 |
|
| 232 |
## Provenance
|
| 233 |
|
| 234 |
- Source revision: `f84ecc3a0ea984a4c04542a84269e3d065350a6e`
|
| 235 |
+
- DFlash source revision: `2c86316d689027b91123638739743fef1d425233`
|
| 236 |
- Conversion: upstream llama.cpp `d2f83055dca6dd009d8a52bdff792fbb286f4444`
|
| 237 |
- Every published GGUF is covered by `SHA256SUMS`; source, intermediate, and
|
| 238 |
calibration hashes are retained in `PROVENANCE_SHA256SUMS`
|
|
@@ -544,6 +544,66 @@ index 3200a993b..5b2e0b7ab 100644
|
|
| 544 |
),
|
| 545 |
|
| 546 |
MODEL_TENSOR.V_MM_POST_NORM: (
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 547 |
diff --git a/src/llama-arch.cpp b/src/llama-arch.cpp
|
| 548 |
index 17908449b..1d9552074 100644
|
| 549 |
--- a/src/llama-arch.cpp
|
|
@@ -601,6 +661,63 @@ index c33f8c247..594affda4 100644
|
|
| 601 |
case LLM_ARCH_PLM:
|
| 602 |
case LLM_ARCH_CHATGLM:
|
| 603 |
case LLM_ARCH_GRANITE:
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 604 |
diff --git a/src/models/models.h b/src/models/models.h
|
| 605 |
index 5cc93e6b9..cb3b4d4ad 100644
|
| 606 |
--- a/src/models/models.h
|
|
|
|
| 544 |
),
|
| 545 |
|
| 546 |
MODEL_TENSOR.V_MM_POST_NORM: (
|
| 547 |
+
diff --git a/scripts/convert_hf_to_gguf_modular.py b/scripts/convert_hf_to_gguf_modular.py
|
| 548 |
+
new file mode 100644
|
| 549 |
+
index 000000000..ec01d29a5
|
| 550 |
+
--- /dev/null
|
| 551 |
+
+++ b/scripts/convert_hf_to_gguf_modular.py
|
| 552 |
+
@@ -0,0 +1,54 @@
|
| 553 |
+
+#!/usr/bin/env python3
|
| 554 |
+
+"""Convert models implemented by ROCmFPX's modular conversion package."""
|
| 555 |
+
+
|
| 556 |
+
+from __future__ import annotations
|
| 557 |
+
+
|
| 558 |
+
+import argparse
|
| 559 |
+
+import logging
|
| 560 |
+
+from pathlib import Path
|
| 561 |
+
+import sys
|
| 562 |
+
+
|
| 563 |
+
+sys.path.insert(0, str(Path(__file__).resolve().parents[1]))
|
| 564 |
+
+
|
| 565 |
+
+from conversion import ModelType, get_model_architecture, get_model_class
|
| 566 |
+
+from conversion.base import ModelBase, gguf
|
| 567 |
+
+
|
| 568 |
+
+
|
| 569 |
+
+def main() -> None:
|
| 570 |
+
+ parser = argparse.ArgumentParser(
|
| 571 |
+
+ description="Convert a Hugging Face checkpoint using ROCmFPX's modular converter."
|
| 572 |
+
+ )
|
| 573 |
+
+ parser.add_argument("model", type=Path)
|
| 574 |
+
+ parser.add_argument("--outfile", type=Path, required=True)
|
| 575 |
+
+ parser.add_argument("--outtype", choices=["f16", "bf16", "auto"], default="auto")
|
| 576 |
+
+ parser.add_argument("--target-model-dir", type=Path, default=None)
|
| 577 |
+
+ parser.add_argument("--dry-run", action="store_true")
|
| 578 |
+
+ parser.add_argument("--use-temp-file", action="store_true")
|
| 579 |
+
+ args = parser.parse_args()
|
| 580 |
+
+
|
| 581 |
+
+ logging.basicConfig(level=logging.INFO)
|
| 582 |
+
+
|
| 583 |
+
+ ftype_map = {
|
| 584 |
+
+ "f16": gguf.LlamaFileType.MOSTLY_F16,
|
| 585 |
+
+ "bf16": gguf.LlamaFileType.MOSTLY_BF16,
|
| 586 |
+
+ "auto": gguf.LlamaFileType.GUESSED,
|
| 587 |
+
+ }
|
| 588 |
+
+
|
| 589 |
+
+ hparams = ModelBase.load_hparams(args.model, False)
|
| 590 |
+
+ arch = get_model_architecture(hparams, ModelType.TEXT)
|
| 591 |
+
+ logging.getLogger("hf-to-gguf").info("Model architecture: %s", arch)
|
| 592 |
+
+ model_class = get_model_class(arch, mmproj=False)
|
| 593 |
+
+
|
| 594 |
+
+ model = model_class(
|
| 595 |
+
+ args.model,
|
| 596 |
+
+ ftype_map[args.outtype],
|
| 597 |
+
+ args.outfile,
|
| 598 |
+
+ use_temp_file=args.use_temp_file,
|
| 599 |
+
+ dry_run=args.dry_run,
|
| 600 |
+
+ target_model_dir=args.target_model_dir,
|
| 601 |
+
+ )
|
| 602 |
+
+ model.write()
|
| 603 |
+
+
|
| 604 |
+
+
|
| 605 |
+
+if __name__ == "__main__":
|
| 606 |
+
+ main()
|
| 607 |
diff --git a/src/llama-arch.cpp b/src/llama-arch.cpp
|
| 608 |
index 17908449b..1d9552074 100644
|
| 609 |
--- a/src/llama-arch.cpp
|
|
|
|
| 661 |
case LLM_ARCH_PLM:
|
| 662 |
case LLM_ARCH_CHATGLM:
|
| 663 |
case LLM_ARCH_GRANITE:
|
| 664 |
+
diff --git a/src/models/dflash.cpp b/src/models/dflash.cpp
|
| 665 |
+
index e195ccfda..5142f45b0 100644
|
| 666 |
+
--- a/src/models/dflash.cpp
|
| 667 |
+
+++ b/src/models/dflash.cpp
|
| 668 |
+
@@ -7,6 +7,28 @@
|
| 669 |
+
#include <stdexcept>
|
| 670 |
+
#include <vector>
|
| 671 |
+
|
| 672 |
+
+// K/V caches can be stored in a rotated basis (notably for quantized cache
|
| 673 |
+
+// types). DFlash injects K/V directly instead of going through build_attn(), so
|
| 674 |
+
+// apply the cache rotation explicitly before copying the projected tensors.
|
| 675 |
+
+// This is the pre-llama-impl.h equivalent of llama_mul_mat_hadamard().
|
| 676 |
+
+static ggml_tensor * dflash_mul_mat_hadamard(
|
| 677 |
+
+ ggml_context * ctx,
|
| 678 |
+
+ ggml_tensor * cur,
|
| 679 |
+
+ ggml_tensor * rot) {
|
| 680 |
+
+ const auto n = rot->ne[0];
|
| 681 |
+
+
|
| 682 |
+
+ ggml_tensor * res;
|
| 683 |
+
+ if (!ggml_is_contiguous(cur)) {
|
| 684 |
+
+ res = ggml_cont_2d(ctx, cur, n, ggml_nelements(cur)/n);
|
| 685 |
+
+ } else {
|
| 686 |
+
+ res = ggml_reshape_2d(ctx, cur, n, ggml_nelements(cur)/n);
|
| 687 |
+
+ }
|
| 688 |
+
+ res = ggml_mul_mat(ctx, rot, res);
|
| 689 |
+
+ ggml_mul_mat_set_hint(res, GGML_HINT_SRC0_IS_HADAMARD);
|
| 690 |
+
+
|
| 691 |
+
+ return ggml_reshape_4d(ctx, res, cur->ne[0], cur->ne[1], cur->ne[2], cur->ne[3]);
|
| 692 |
+
+}
|
| 693 |
+
+
|
| 694 |
+
void llama_model_dflash::load_arch_hparams(llama_model_loader & ml) {
|
| 695 |
+
ml.get_key(LLM_KV_ATTENTION_LAYERNORM_RMS_EPS, hparams.f_norm_rms_eps);
|
| 696 |
+
|
| 697 |
+
@@ -422,9 +444,23 @@ llama_model_dflash::graph<false>::graph(const llama_model & model, const llm_gra
|
| 698 |
+
const auto * kv = is_swa ? inp_attn_iswa->mctx->get_swa() : inp_attn_iswa->mctx->get_base();
|
| 699 |
+
ggml_tensor * k_idxs = is_swa ? inp_attn_iswa->get_k_idxs_swa() : inp_attn_iswa->get_k_idxs();
|
| 700 |
+
ggml_tensor * v_idxs = is_swa ? inp_attn_iswa->get_v_idxs_swa() : inp_attn_iswa->get_v_idxs();
|
| 701 |
+
+ ggml_tensor * k_rot = is_swa ? inp_attn_iswa->self_k_rot_swa : inp_attn_iswa->self_k_rot;
|
| 702 |
+
+ ggml_tensor * v_rot = is_swa ? inp_attn_iswa->self_v_rot_swa : inp_attn_iswa->self_v_rot;
|
| 703 |
+
+ if (k_rot) {
|
| 704 |
+
+ Kcur = dflash_mul_mat_hadamard(ctx0, Kcur, k_rot);
|
| 705 |
+
+ }
|
| 706 |
+
+ if (v_rot) {
|
| 707 |
+
+ Vcur = dflash_mul_mat_hadamard(ctx0, Vcur, v_rot);
|
| 708 |
+
+ }
|
| 709 |
+
ggml_build_forward_expand(gf, kv->cpy_k(ctx0, Kcur, k_idxs, il));
|
| 710 |
+
ggml_build_forward_expand(gf, kv->cpy_v(ctx0, Vcur, v_idxs, il));
|
| 711 |
+
} else {
|
| 712 |
+
+ if (inp_attn->self_k_rot) {
|
| 713 |
+
+ Kcur = dflash_mul_mat_hadamard(ctx0, Kcur, inp_attn->self_k_rot);
|
| 714 |
+
+ }
|
| 715 |
+
+ if (inp_attn->self_v_rot) {
|
| 716 |
+
+ Vcur = dflash_mul_mat_hadamard(ctx0, Vcur, inp_attn->self_v_rot);
|
| 717 |
+
+ }
|
| 718 |
+
ggml_build_forward_expand(gf, inp_attn->mctx->cpy_k(ctx0, Kcur, inp_attn->get_k_idxs(), il));
|
| 719 |
+
ggml_build_forward_expand(gf, inp_attn->mctx->cpy_v(ctx0, Vcur, inp_attn->get_v_idxs(), il));
|
| 720 |
+
}
|
| 721 |
diff --git a/src/models/models.h b/src/models/models.h
|
| 722 |
index 5cc93e6b9..cb3b4d4ad 100644
|
| 723 |
--- a/src/models/models.h
|
|
@@ -2,3 +2,6 @@
|
|
| 2 |
6b80db6b044d9a3999b539eec140dc4d29279d53c18f42f80a557d3e6736123a Muse-Glimmer-30B-ROCmFP4-Q6-QUALITY.gguf
|
| 3 |
74a5f469f17420d01a837400a2ef19d8191dcb1b479fd7c0be0c862901879915 Muse-Glimmer-30B-ROCmFP8.gguf
|
| 4 |
3727a47650ae65be12e91aae49f9b9f4bef09dc6c401a54ca1bd3d1a6160f35a mmproj-Muse-Glimmer-30B-BF16.gguf
|
|
|
|
|
|
|
|
|
|
|
|
| 2 |
6b80db6b044d9a3999b539eec140dc4d29279d53c18f42f80a557d3e6736123a Muse-Glimmer-30B-ROCmFP4-Q6-QUALITY.gguf
|
| 3 |
74a5f469f17420d01a837400a2ef19d8191dcb1b479fd7c0be0c862901879915 Muse-Glimmer-30B-ROCmFP8.gguf
|
| 4 |
3727a47650ae65be12e91aae49f9b9f4bef09dc6c401a54ca1bd3d1a6160f35a mmproj-Muse-Glimmer-30B-BF16.gguf
|
| 5 |
+
1e2f0d9de05251b05ed9c6f67f208105b30f0cd51112307a400b59936dd8fc41 Muse-Glimmer-30B-DFlash-ROCmFP4.gguf
|
| 6 |
+
ae1d9ffbcbc3af92fbe50ecf62d5892c619ec76b1ca3198e25b240f86a11974f Muse-Glimmer-30B-DFlash-ROCmFP8.gguf
|
| 7 |
+
0e15099778bf88ef2ec56e6076369321cd10a93f159caa97d676b5c0008d2750 ROCmFPX-Muse-Glimmer.patch
|