Sage-A1.5 — ROCmFPX GGUF
InternScience/Sage-A1.5, the 35B mixture-of-experts agentic model from Shanghai AI Laboratory, quantized to the ROCmFPX formats, a llama.cpp fork with low-bit weight types for AMD GPUs (Vulkan and HIP/ROCm).
Start with Q4_0_ROCMFP4_STRIX. It is the closest 4-bit file to the original.
These files only load in a ROCmFPX build of llama.cpp. Stock llama.cpp, LM Studio and Ollama do not know these types. These files have not been tested on AMD hardware yet.
Not an official release of InternScience. All credit for the model goes to its authors.
Files and measured quality
Measured against the BF16 model (72 GB, perplexity 6.2751) on WikiText-2 test, 40 chunks of 512 tokens. KLD is the mean KL divergence of the next-token distribution from BF16 (lower is better). Same top is how often the quant picks the same next token as BF16.
| File | Size | PPL | KLD | Same top | |
|---|---|---|---|---|---|
Sage-A1.5-Q8_0_ROCMFPX.gguf |
36.7 GB | 6.2945 | 0.0107 | 95.62% | 8-bit, closest to BF16 |
Sage-A1.5-Q6_K_ROCMFPX.gguf |
29.4 GB | 6.2826 | 0.0115 | 95.05% | 6-bit, almost as close as 8-bit |
Sage-A1.5-Q4_0_ROCMFP4_STRIX.gguf |
19.1 GB | 6.4536 | 0.0537 | 88.81% | Recommended. 4-bit recipe tuned for Strix Halo (gfx1151) |
Sage-A1.5-Q4_0_ROCMFP4_FAST.gguf |
19.0 GB | 6.4873 | 0.0543 | 89.19% | speed-first 4-bit (one scale per block) |
Sage-A1.5-Q2_0_ROCMFPX.gguf |
11.4 GB | 10.4152 | 0.5274 | 70.22% | smallest file; clear quality loss |
mmproj-Sage-A1.5-F16.gguf |
0.9 GB | vision projector (F16), converted but not tested |
The 6-bit file is named Sage-A1.5-Q6_K_ROCMFPX.gguf so that Hugging Face lists it as a 6-bit quant. Its weights are the ROCmFPX Q6_0_ROCMFPX type, not a stock llama.cpp Q6_K, and it needs the same fork as the other files.
Not published: Q3_0_ROCMFPX (19.8 GB, PPL 6.6816, KLD 0.0741, same top 87.80%) is larger than
Q4_0_ROCMFP4_STRIX and further from BF16.
The 8-bit file is not as close to BF16 as a stock Q8_0 usually is: ROCmFPX block scales have a fixed smallest step,
so 8-bit blocks of small weights keep fewer than 8 bits
(ROCmFPX#118).
How these were made
convert_hf_to_gguf.py --outtype bf16(and--mmproj --outtype f16for the vision projector).- Importance matrix from the BF16 model on the GPU over a general calibration text (
calibration_datav3), 512-token chunks. llama-quantize --imatrix, one run per type, from HarshaVardhan3002/ROCmFPX (ROCmFPXfb08d7cmerged onto upstream llama.cpp).- Quality: the BF16 reference ran on an NVIDIA GPU with stock BF16 kernels. Each quant was expanded back to F16
(
llama-quantize --allow-requantize ... F16), which keeps its stored weights, and scored on the same GPU with stock F16 kernels. The fork's own CUDA kernels for these types are not correct on NVIDIA, so they were not used. As a check, this method gave KLD 0.0050 for a 9B model'sQ8_0_ROCMFPXwhere the CPU backend gave 0.0054. AMD GPU kernels compute the same math in a different order, so results on an AMD GPU can differ slightly.
Run
git clone https://github.com/HarshaVardhan3002/ROCmFPX && cd ROCmFPX
cmake -B build -DGGML_VULKAN=ON # or -DGGML_HIP=ON -DAMDGPU_TARGETS=gfx1151 (gfx1100 for RX 7900)
cmake --build build --target llama-server -j
build/bin/llama-server -m Sage-A1.5-Q4_0_ROCMFP4_STRIX.gguf -ngl 999 -fa on --jinja
License
Apache-2.0, same as the base model.