Upstream llama.cpp added compressed-tensors NVFP4 conversion support in
PR #21095. However, this
source checkpoint uses a mixed-precision configuration containing multiple
quantization groups, including NVFP4-packed weights, FP8 tensors, and
unquantized MTP tensors.
This specific GGUF was produced with a local experimental extension for that
mixed layout. It has been tested only with the hardware and llama.cpp builds
listed below. Compatibility, numerical behavior, and performance may differ
across converter revisions, backends, devices, and future llama.cpp versions.
Verify output quality before relying on it.
Current local testing does not show a clear generation-speed advantage over
Q4_K_M. Treat this repository primarily as an experimental compatibility and
research conversion rather than a performance-oriented replacement for
mature K-quant GGUF files.
This is a community GGUF conversion for use with llama.cpp.
It is not a fully NVFP4 model. The resulting GGUF uses a mixed layout:
compatible MLP tensors are preserved as native GGUF NVFP4
source FP8 tensors are dequantized and stored as Q8_0
embedded MTP tensors remain in higher precision
multimodal and vision tensors are excluded from the text-model GGUF
Purpose: experimental local inference, mixed NVFP4 GGUF compatibility,
Blackwell kernel testing, and Qwen3.6 MTP speculative decoding
The source checkpoint uses mixed-precision compressed-tensors groups:
NVFP4-packed MLP weights
FP8 attention, linear-attention projections, selected MLP tensors, and
lm_head
unquantized MTP tensors
For the GGUF uploaded to this repository, the historical local converter
extension handled the stored layout as follows:
compatible NVFP4-packed tensors were repacked into GGUF NVFP4 blocks
supported FP8 tensors were dequantized with their scales and converted to
Q8_0 with --fp8-as-q8
tensors without compressed scales were exported using their source
floating-point precision
Upstream llama.cpp Support
Two separate llama.cpp changes are relevant:
PR #21095 adds
compressed-tensors NVFP4 conversion support. It normalizes
compressed-tensors metadata and scale conventions into llama.cpp's existing
NVFP4 conversion path.
PR #22196 adds native
Blackwell NVFP4 CUDA execution support for applicable matrix operations.
These changes solve different parts of the pipeline:
text
1compressed-tensors NVFP4 checkpoint
2 |
3 | PR #21095: conversion support
4 v
5 NVFP4 GGUF
6 |
7 | PR #22196: Blackwell CUDA kernels
8 v
9 llama.cpp runtime
Support for loading or executing NVFP4 does not guarantee that every operator,
tensor shape, or token-generation path uses the fastest available FP4 Tensor
Core kernel. End-to-end performance still depends on tensor type, operator
shape, kernel dispatch, batch size, device placement, and the llama.cpp
revision.
Current Status
The model loads and runs with a recent native sm_120a llama.cpp CUDA build.
On the tested RTX 5070 Ti + RTX 5060 Ti dual-GPU system, the conversion is
functional and performs within a few percent of the tested NVIDIA
Qwen3.6-27B-NVFP4-GGUF.
The current mixed NVFP4 GGUF does not provide a clear generation-speed
advantage over the mature Q4_K_M path.
Latest mixed-task results:
NVIDIA NVFP4 was about 3% faster than this experimental conversion
Q4_K_M was about 5% faster than NVIDIA NVFP4
Q4_K_M was about 8% faster than this experimental conversion in average
generation throughput
This conversion is currently most useful for:
NVFP4 compatibility testing
Blackwell CUDA-kernel experimentation
mixed compressed-tensors conversion research
future llama.cpp NVFP4 regression and improvement comparisons
Important Limitations
This conversion is experimental and is not an official Unsloth, Qwen, NVIDIA,
or llama.cpp release.
Known limitations:
the uploaded GGUF was created using a historical local extension targeting
the specific mixed FP8 + NVFP4 layout used by this checkpoint
upstream compressed-tensors NVFP4 support does not necessarily imply that
every mixed multi-group checkpoint is converted identically
the GGUF is not bit-identical to the source checkpoint
FP8 tensors are converted to Q8_0, not preserved as native FP8
embedded MTP tensors remain in source floating-point precision
output quality and performance may differ from vLLM, SGLang, TensorRT-LLM,
or other runtimes
successful loading does not guarantee identical numerical behavior
native sm_120a code does not prove that every NVFP4 operation uses an
optimal FP4 Tensor Core kernel
batch-1 token generation may not benefit as much as prompt processing or
larger matrix workloads
future converter, kernel, and dispatch changes may alter compatibility and
performance
Compatibility
A recent llama.cpp build with support for the following is required:
Qwen3.6
GGUF NVFP4 tensors
native MTP speculative decoding
external MTP draft models
Tested with:
Windows 11
NVIDIA GeForce RTX 5070 Ti 16 GB
NVIDIA GeForce RTX 5060 Ti 16 GB
llama.cpp b9967-4f37f5197
locally compiled static CUDA build
CUDA architecture: native sm_120a
CUDA 13.0 toolchain
dual-GPU layer split
--tensor-split 14,12
external Q4_K_M MTP-only drafter on CUDA1
--spec-draft-n-max 4
--spec-draft-p-min 0.60
The static CUDA build was inspected with cuobjdump and contained native
sm_120a cubins. This confirms that the benchmark did not rely only on older
architecture cubins or PTX fallback.
Native sm_120a code targets the correct GPU architecture, but it does not
prove that every NVFP4 operation uses an optimal FP4 Tensor Core kernel.
Runtime performance still depends on tensor type, operator shape, kernel
dispatch, device placement, and llama.cpp implementation details.
Recommended Usage
The embedded MTP tensors are usable, but on the tested dual-GPU system an
external Q4_K_M MTP-only drafter was substantially faster while preserving
almost the same aggregate acceptance rate.
The embedded path may consume more bandwidth because the MTP tensors remain at
higher precision. Performance also depends on how llama.cpp places the
embedded MTP tensors across multiple GPUs.
Conversion
At the time this GGUF was created, the upstream llama.cpp converter stopped on
this checkpoint with:
NotImplementedError: Can't handle multiple config groups for compressed-tensors yet
Upstream llama.cpp later added compressed-tensors NVFP4 conversion support in
PR #21095. That support
normalizes compressed-tensors NVFP4 metadata and scales into the existing
ModelOpt-compatible conversion path.
This checkpoint additionally contains a mixed FP8 + NVFP4 configuration and
unquantized MTP tensors. The historical local extension used for the uploaded
file specifically handled that mixed layout:
compatible nvfp4-pack-quantized tensors were exported as native GGUF
NVFP4
supported FP8 tensors were dequantized and stored as Q8_0 with
--fp8-as-q8
tensors without compressed scales, including embedded MTP tensors, retained
their source floating-point precision
Users converting the model again should use a recent upstream llama.cpp
revision and verify the resulting tensor layout. Exact output may differ from
the historical local conversion used to produce this repository.
Inspect the result with a recent llama-gguf build:
.\llama-gguf.exe .\unsloth-Qwen3.6-27B-NVFP4.gguf r
Expected tensor examples:
text
1tensor: name = blk.0.ffn_down.weight, type = nvfp4
2tensor: name = blk.0.ffn_down.scale, type = f32
3tensor: name = blk.0.ffn_down.input_scale, type = f32
The file should also contain Q8_0 tensors corresponding to source FP8
weights and floating-point tensors corresponding to the embedded MTP layers.
MTP Server Benchmark
The earlier server-based mtp-bench workload primarily compared embedded and
external MTP execution on this experimental GGUF.
Aggregate Results
Main model
Drafter
Draft precision
Acceptance
Wall time
Aggregate throughput
Unsloth experimental GGUF
embedded MTP
BF16 / source precision
87.37%
57.46 s
32.77 tok/s
Unsloth experimental GGUF
external MTP-only
Q4_K_M
86.88%
42.12 s
44.71 tok/s
NVIDIA NVFP4 GGUF comparison
native MTP
source precision
76.55%
46.00 s
40.37 tok/s
Aggregate throughput is total predicted tokens divided by total wall time.
The NVIDIA row is only a local comparison. Different conversion layouts,
quantization choices, embedded MTP weights, and runtime behavior prevent it
from being a controlled model-quality comparison.
The workload covered translation, tagging, styled generation, Objective-C,
LiveKit, tool-use prompting, KL divergence, Swift concurrency, release-note
translation, and knowledge-graph planning.
Average Performance
Main model
Prompt throughput
Generation throughput
Q4_K_M heretic comparison
241.85 tok/s
40.94 tok/s
NVIDIA Qwen3.6-27B NVFP4 GGUF
227.58 tok/s
38.85 tok/s
Unsloth experimental mixed NVFP4 GGUF
220.06 tok/s
37.71 tok/s
Relative results:
NVIDIA NVFP4 was approximately 3.4% faster than the experimental Unsloth
conversion in prompt processing
NVIDIA NVFP4 was approximately 3.0% faster in generation
Q4_K_M was approximately 5.9% faster than NVIDIA NVFP4 in prompt processing
Q4_K_M was approximately 5.4% faster than NVIDIA NVFP4 in generation
Q4_K_M was approximately 9.9% faster than the experimental conversion in
prompt processing
Q4_K_M was approximately 8.6% faster than the experimental conversion in
generation
These results apply only to this dual-GPU configuration and should not be
generalized to other GPUs, single-GPU execution, larger batches, or different
context lengths.
Per-Prompt Generation Throughput
Prompt category
Q4_K_M
NVIDIA NVFP4
Unsloth mixed NVFP4
Japanese translation
28.0
24.6
25.2
Danbooru tags
42.6
46.8
47.7
Styled weather sentence
32.8
30.1
27.3
Objective-C
47.2
47.2
45.6
LiveKit explanation
35.5
32.2
30.5
Tool-use prompt
40.1
36.3
36.6
KL divergence
43.0
37.2
36.6
Swift concurrency
50.2
48.1
42.2
Release note
49.9
47.7
48.0
Knowledge-graph planning
40.1
38.3
37.4
Values are generation tokens per second.
Q4_K_M was faster in most tasks, while the NVFP4 models occasionally matched
or exceeded it on individual prompts. Short single-prompt results are
sensitive to output length, token distribution, speculative-decoding
acceptance, and runtime scheduling.
Performance Interpretation
The native sm_120a results show that missing native Blackwell cubins were not
the only cause of the earlier NVFP4 performance.
Even with verified native sm_120a code:
the experimental mixed NVFP4 model did not outperform Q4_K_M
the NVIDIA NVFP4 comparison also remained slightly slower than Q4_K_M
the NVIDIA version was only modestly faster than this community conversion
Likely contributing factors include:
only part of this GGUF uses native NVFP4 tensors
source FP8 tensors are represented as Q8_0
some tensors remain BF16 or another floating-point type
mixed tensor formats require different kernels
native Blackwell NVFP4 acceleration may benefit prompt processing and larger
matrix workloads more than batch-1 token generation
token-by-token decode may be limited by memory bandwidth, kernel-launch
overhead, and small matrix shapes rather than peak Tensor Core FLOPS
dual-GPU layer splitting introduces synchronization and peer-transfer costs
the external draft model shares GPU resources with part of the main model
Q4_K_M CUDA kernels and layouts are more mature in llama.cpp
NVFP4 kernel dispatch and operator coverage are still evolving
Native sm_120a support improves compatibility and targets the correct
architecture, but it does not guarantee an end-to-end NVFP4 speedup.
Quality Notes
The mixed-task outputs did not show a clear overall quality advantage for any
NVFP4 GGUF.
The NVIDIA and experimental Unsloth NVFP4 outputs were generally in the same
quality range:
some NVIDIA answers were technically better
some introduced unsupported factual details
both produced plausible-looking but incorrect framework-specific code in
some tests
translation and short-form writing quality were broadly similar
The Q4_K_M comparison model also produced both strong answers and confident
technical or factual errors.
This is not a controlled quantization-quality comparison because the tested
files do not all use identical model weights:
the Q4_K_M comparison uses an uncensored-heretic-v2 variant
the experimental NVFP4 GGUF originates from the Unsloth checkpoint
the NVIDIA NVFP4 GGUF may use a different conversion and quantization path
A valid quality comparison would require:
the same original checkpoint
identical tokenizer and chat template
identical prompts and sampling parameters
deterministic seeds
reference logits from the unquantized model
KL divergence, cross-entropy, perplexity, or token-agreement measurements
repeated runs for non-deterministic decoding
Treat this benchmark primarily as a local runtime and practical-output
comparison, not proof that one quantization format has better model quality.
Benchmark Observations
Embedded versus external MTP
On the tested system:
the external Q4_K_M drafter reduced wall time from 57.46 to 42.12 seconds
wall time was approximately 26.7% lower
aggregate throughput rose from about 32.77 to 44.71 tok/s
acceptance changed only slightly, from 87.37% to 86.88%
predictable tasks such as JSON, repeated patterns, code completion, and
stepwise reasoning benefited the most
The results suggest that an external low-precision MTP-only draft model can be
faster than embedded higher-precision MTP tensors on this dual-GPU setup.
They do not prove that precision alone is responsible. Device placement,
synchronization, graph construction, memory bandwidth, and backend behavior
may also contribute.
The NVIDIA NVFP4 GGUF was modestly faster than this conversion, indicating that
the experimental conversion is reasonably close to the comparison
implementation.
Neither NVFP4 model provided a clear end-to-end generation advantage over
Q4_K_M on this setup. At the tested llama.cpp revision, Q4_K_M remains the more
practical choice when maximum interactive generation speed is the priority.
Reproducibility Notes
Performance is highly dependent on:
llama.cpp commit and CUDA build
GPU model and PCIe topology
tensor split
context size
KV-cache type
flash-attention support
sampling parameters
draft length and probability threshold
embedded versus external draft model
draft-device placement
The MTP benchmark does not include a non-speculative baseline and should not be
interpreted as a universal MTP speedup ratio.
The ten-prompt CLI comparison was run once per prompt. It is useful for
practical A/B testing but is not statistically rigorous.
Short responses are particularly sensitive to:
CUDA graph warm-up
model loading and initialization
GPU clock state
output length
end-of-sequence timing
speculative-decoding acceptance
Windows background activity
For regression testing, run each prompt at least three times and compare median
generation throughput. Prompt throughput, generation throughput, and
end-to-end output throughput should be treated as separate metrics.
Conclusion
This conversion demonstrates that the mixed FP8 + NVFP4
compressed-tensors checkpoint can be exported into a loadable GGUF while
preserving compatible tensors as native NVFP4.
Upstream llama.cpp now supports compressed-tensors NVFP4 conversion through
PR #21095, while PR #22196 provides native Blackwell CUDA execution for
applicable NVFP4 matrix operations. Those additions do not make this uploaded
mixed-layout GGUF fully NVFP4, nor do they guarantee that batch-1 generation
uses the fastest possible FP4 path for every operation.
The model is functional and performs within a few percent of the tested NVIDIA
NVFP4 GGUF comparison.
Current native sm_120a llama.cpp testing does not show a practical
generation-speed advantage over Q4_K_M. On the tested dual-GPU system,
Q4_K_M remained approximately 5-9% faster in average generation throughput.
The most effective optimization observed was not the main weight format, but
replacing the embedded higher-precision MTP tensors with an external Q4_K_M
MTP-only draft model.
Future llama.cpp improvements to small-batch and token-generation NVFP4
kernels, operator coverage, dispatch behavior, converter support, and
multi-GPU execution may change these results.
Credits
Qwen Team / Alibaba Cloud — Qwen3.6-27B
Unsloth — mixed-precision NVFP4 source checkpoint
ggml-org — llama.cpp, GGUF, compressed-tensors conversion, NVFP4 inference,
and MTP support
NVIDIA — NVFP4 format and related quantization work
License
The source model is distributed under the Apache License 2.0.
Review the upstream unsloth/Qwen3.6-27B-NVFP4 and
Qwen/Qwen3.6-27B model cards before redistribution or commercial use.
This repository is an unofficial, experimental community conversion and is
not endorsed by Unsloth, Qwen, NVIDIA, or the llama.cpp project.