ZAYA1-8B NVFP4 W4A4

NVFP4 W4A4 inference for Zyphra's ZAYA1-8B on consumer Blackwell (RTX 5070 Ti, SM120) — 4-bit weights and 4-bit activations running on native CUTLASS FP4 tensor-core kernels, at 102.6 tok/s single-stream / 407.4 tok/s batch-8 in under 6 GB of VRAM.

One other public NVFP4 W4A4 ZAYA1 checkpoint exists — built with NVIDIA ModelOpt and validated on a 96 GB workstation Blackwell card, with no published accuracy or throughput numbers. This checkpoint is, as far as we know, the first built with compressed-tensors on a 16 GB consumer card, with its own measured accuracy and throughput. Full build/debug writeup, quantization scripts, and reproduction steps: github.com/t-timms/zaya1-godspeed.

Status: active project. This checkpoint is a snapshot from the quantization phase, not a final release — the next phase (agentic fine-tuning via QLoRA SFT + GRPO) is in progress and may produce an updated checkpoint. Watch github.com/t-timms/zaya1-godspeed for the latest status.

Highlights

Result Detail
102.6 tok/s single / 407.4 tok/s batch-8 vLLM + CUDA graphs on RTX 5070 Ti (12.8× over eager mode)
5.99 GB checkpoint 936 Linears in packed NVFP4 W4A4, 384 outlier-sensitive Linears kept BF16 (mixed precision)
Checkpoint verified healthy Budget-forced GPQA-Diamond rises monotonically with reasoning budget — 45.8% → 62.5% at a 12k-token think budget, within CI of Zyphra's BF16 CoT 71.0%
vLLM SM120 source build TORCH_CUDA_ARCH_LIST=12.0 build enabling cutlass_scaled_fp4_mm_sm120a + FP4 group MoE GEMM — kernels that ship in vLLM source but not in wheels

Quantization details

Field Value
Base model Zyphra/ZAYA1-8B
Method compressed-tensors, float-quantized
Scheme NVFP4, w4a4 (4-bit weights, 4-bit activations)
Group size 16 (tensor-group strategy)
Ignored / kept BF16 lm_head, router, norm, qkv, cca modules, plus 12 MoE layers with max_abs > 500 (384 Linears)
Calibration 977 samples, ARC-mix calibration set, 936 Linears calibrated
Compressor NVFP4PackedCompressor (weight_packed_dtype=uint8, weight_scale_dtype=float8_e4m3fn)
Built on RTX 5070 Ti, 16 GB VRAM, CUDA 13.0

See quantization_manifest.json in this repo for the full machine-readable config, including the exact outlier-layer list and mixed-precision threshold.

Why this is hard

ZAYA1-8B is an 80-layer MoE (760M active / 8.4B total) with Zyphra's CCA (compressed convolutional attention) — no stock quantization path works out of the box. Notably: W4A4 requires calibrating activation scales (not just weights), the compressed-tensors calibration path has a silent NaN-producing trap if you calibrate through the fake-quant nn.Linear.forward wrapper, and the NVFP4 global-scale convention (2688 / max_abs, divisor form, block scales pre-multiplied) is undocumented — getting it wrong produces silent pad-token collapse, not an error. Full root-cause writeup in RESEARCH.md on the GitHub repo.

Usage

This checkpoint requires vLLM built from source with SM120 NVFP4 CUTLASS kernels (stock wheels don't include them) — see the reproduce steps in the GitHub repo. Inference must run in bfloat16 (not fp16/fp32).

# vLLM built from source with: TORCH_CUDA_ARCH_LIST=12.0
vllm serve Ttimms/zaya1-8b-nvfp4-w4a4 --dtype bfloat16

Evaluation

Budget-forced GPQA-Diamond (n=24, paired), using an s1-style harness that caps the reasoning trace and scores only the closed answer — stock lm-eval harnesses score near-random on this model because ZAYA never closes its <think> block within a normal budget:

think budget GPQA-Diamond traces self-closing </think>
2,500 45.8% 1/24
5,000 45.8% 2/24
12,000 62.5% 9/24

The gap to Zyphra's BF16 CoT (71.0%) is the 16 GB context/reasoning-budget ceiling on the source hardware — not quantization damage.

License

Apache 2.0 — matches the ZAYA1-8B upstream license.

Downloads last month
32
Safetensors
Model size
6B params
Tensor type
F32
·
BF16
·
F8_E4M3
·
U8
·
Inference Providers NEW
This model isn't deployed by any Inference Provider. 🙋 Ask for provider support

Model tree for Ttimms/zaya1-8b-nvfp4-w4a4

Finetuned
Zyphra/ZAYA1-8B
Quantized
(15)
this model