skip to content

Reference

Poros — Official Validation Results (NVIDIA B300 SXM6)

copy markdown

Official, measured benchmark numbers for the architecture families gated on the B300 (qwen2, qwen3). Every cell is measured — no number is interpolated or estimated. The same-attention-path A100 matrix is included below.

Configuration

FieldValue
HardwareNVIDIA B300 SXM6 (268 GB VRAM)
PrecisionNF4 (the only bitwise-parity path)
Steps × passes200 steps × 3 passes (warmup discarded; median ± std across passes)
Sequence length512
Batch / grad-accum1 / 1 (so 1 step = 1 optimizer step for every method)
LoRArank 16, alpha 32
Block size (poros)4
Datasetsynthetic (deterministic, license-free random tokens)
Methodsporos (blockwise residency), resident (full QLoRA), unsloth
Software stackstorch 2.10.0+cu128 / transformers 5.5.0 and torch 2.12.0+cu130 / transformers 5.10.1, bitsandbytes 0.49.2

Scope. The bitwise-parity guarantee (0.00e+00) holds on the deterministic, math-only SDPA path — that is what Poros ships and what the poros cells below run. The resident/unsloth baselines use their default flash attention, so the slowdown column includes a math-vs-flash gap on top of the streaming cost; same-path references are ~1.6× at 32B on an RTX PRO 6000 (all methods math-only) and 2.28–2.68× on the A100 (all methods fast path, table below). Bitwise parity is a separate gate asserting torch.equal(resident, blockwise) — exact, not allclose.

Results — B300

ModelArchStackBitwise parityporos s/step (median±std)resident s/stepunsloth s/stepSlowdown vs residentvs unslothporos VRAMresident VRAMunsloth VRAMVRAM cut vs residentvs unsloth
Qwen3-32Bqwen3torch 2.10.0+cu128PASS (0.00e+00)1.0585±0.00440.29450.40483.59×2.61×11.12 GB37.92 GB20.49 GB70.7%45.8%
Qwen3-32Bqwen3torch 2.12.0+cu130PASS (0.00e+00)1.0483±0.00960.29603.54×11.11 GB37.89 GB70.7%
Qwen2.5-32Bqwen2torch 2.10.0+cu128PASS (0.00e+00)1.0012±0.00820.27550.40513.63×2.47×11.04 GB36.53 GB20.54 GB69.8%46.2%
Qwen2.5-32Bqwen2torch 2.12.0+cu130PASS (0.00e+00)0.9900±0.00490.27313.62×11.04 GB36.54 GB69.8%
Qwen2.5-72Bqwen2torch 2.10.0+cu128PASS (0.00e+00)1.8680±0.00870.44890.59174.16×3.16×18.16 GB67.63 GB42.46 GB73.1%57.2%
Qwen2.5-72Bqwen2torch 2.12.0+cu130PASS (0.00e+00)1.8635±0.01010.44104.23×18.16 GB67.63 GB73.1%

Raw per-cell artifacts (full provenance: torch/cuda/transformers/bitsandbytes versions, GPU UUID, per-pass timings): validation/official_b300_consolidated.jsonl.

Results — A100 80GB PCIe (same attention path for all methods)

All three methods on the same default fast path and the synthetic dataset, so the slowdown column is the pure cost of blockwise residency. Full configuration and notes: official-a100-results.md.

ModelArchporos s/step (median±std)resident s/stepunsloth s/stepSlowdown vs residentvs unslothporos VRAMresident VRAMunsloth VRAMVRAM cut vs residentvs unsloth
Qwen2.5-32Bqwen22.0489±0.00910.76620.90862.67×2.25×10.95 GB34.72 GB20.82 GB68.4%47.4%
Qwen3-32Bqwen32.1832±0.00400.81570.92872.68×2.35×11.03 GB36.00 GB20.77 GB69.4%46.9%
Gemma3-27Bgemma31.8933±0.00480.78350.93652.42×2.02×9.95 GB33.17 GB22.06 GB70.0%54.9%
Gemma4-31Bgemma42.2537±0.00550.98891.02552.28×2.20×10.65 GB38.75 GB20.57 GB72.5%48.2%

Takeaways

  • Bitwise parity holds at scale. torch.equal(resident, blockwise) is exact (0.00e+00) at every scale gated on this box — Qwen2.5 through 72B and Qwen3 at 32B. Gemma3/Gemma4 are gated on the RTX 5090, not here.
  • ~70–73% VRAM cut vs resident, ~46–57% vs unsloth. A 72B fine-tunes in 18 GB instead of 68 GB resident / 42 GB unsloth.
  • No PyTorch-version regression. poros speed is identical on torch 2.10 vs 2.12 (Qwen2.5-72B: 1.868 vs 1.864 s/step; Qwen3-32B: 1.059 vs 1.048).
  • The slowdown ratio is hardware-dependent. The B300's resident baseline is extraordinarily fast (~0.27 s/step at 32B), so a fixed streaming cost shows up as a large ratio (~3.5–4.2×). Same-path runs measure 2.28–2.68× on the A100 and ~1.6× at 32B on an RTX PRO 6000.

Reproduce

# poros + resident (needs bf16 base weights on disk)
poros bench matrix configs/bench/official_b300_qwen25_72b_pr.yaml -o out/
# unsloth (pulls its own prequantized 4-bit repo)
poros bench matrix configs/bench/official_b300_qwen25_72b_un.yaml -o out/
# bitwise parity gate
POROS_GPU_TEST_MODEL=Qwen/Qwen2.5-72B pytest -m gpu tests/test_gpu_parity.py