Glyd

Qwen3-32B

  • Qwen
  • 32.8B parameters
  • Dense
  • Apache-2.0
  • Released in bf16
  • Measured Sep 26, 2026

Qwen/Qwen3-32B on Hugging Face

Qwen3-32B with Glyd

bf16GlydChange, %
Weights in GPU memory, GBEvery weight restored bit for bitlog65.544.5−32log
48 GB GPUs it takesRTX A6000log21log
Tokens per second, 1 sequencebf16 on two A6000s, Glyd on onelog9.511.8+24log
MMLU, 1,000 questions, %log78.578.0log

Memory on RTX A6000s, 48 GB each

nvidia-smi with the model loaded, 49,140 MiB a GPU.

In use, MiB
GPUbf16Glyd
GPU 044,55443,338
GPU 118,514—

bf16 spills onto a second GPU; Glyd runs on one, 5,802 MiB to spare. log

Which single GPU it fits

Worked out from the measured weights.

MemoryGPUsbf16Glyd
16 GBRTX 4080, RTX 5080NoNo
24 GBRTX 4090, RTX 3090, A10NoNo
32 GBRTX 5090NoNo
48 GBRTX A6000, L40S, RTX 6000 AdaNoFits
80 GBH100, A100 80 GBFitsFits
96 GBRTX PRO 6000, GH200FitsFits
141 GBH200FitsFits

Tokens per second, RTX A6000

Higher is better. bf16 on two GPUs, Glyd on one.

Tokens/s
Sequences a stepbf16GlydChange, %
19.511.8+24
874.494.9+28
32275.9289.9+5
64488.4400.5−18

log

GPU time a token, H100 SXM

Lower is better. q, k, v and gate, up merged, as vLLM runs them.

GPU time a token, ms
Sequences a stepbf16GlydChange, %
127.9024.50−12
829.7826.75−10
3231.4433.46+6
6433.5237.35+11

log

Run it

pip install "glyd[gpu]"
import glyd
model = glyd.from_pretrained("Qwen/Qwen3-32B")

Linux and an NVIDIA GPU, Ampere or later: the weights are packed on the GPU as the model loads, every one bit for bit (getting started). vLLM serves Glyd's weights too, for the models checked there (serving with vLLM).

Related models

Also measured

Twenty-one more open models measured, with quality wherever bf16 fits one GPU.