Recovering Compressed 4 Bit LLMs
Listen to the summary
Uses a voice available on your device
Audio options
On this page 4 sections
Related concepts 6 concepts
Key Takeaways
- The recipe described in the paper was used to produce Hypernova-60B, an open-weight model released under Apache 2.0.
- The authors evaluate GPT-OSS 120B and 20B, which were released with mixture of experts weights in a specific format and remaining tensors in another format.
- The evaluation covers nine benchmarks, including MMLU-Pro for general knowledge.
- The authors argue that distilling from the original model beats distilling from the recovered bfloat16 checkpoint, known as standard QAD, though they did not run a direct head-to-head experiment.
- The results are based on single runs without seed variance or confidence intervals, and some benchmarks are small.
Summary & Methodology Analysis
When large language models undergo structural compression followed by 4-bit quantisation (which reduces the precision of model weights to save memory and improve inference speed), they suffer significant capability degradation. To address this, the paper presents a practical recipe centred around Quantization-Aware Healing, which is designed to recover model capability in this compound-compression regime. While the exact details of the intermediate training steps are part of the method, the core philosophy relies on using the original uncompressed model to supervise the compressed student model.
The authors applied this recipe to produce Hypernova-60B, an open-weight model released by Multiverse Computing under the Apache 2.0 license. They also evaluated GPT-OSS 120B and 20B, which were released with their mixture of experts weights (representing the large majority of parameters) in a specific low-precision format and the remaining tensors in bfloat16. Evaluation of these models was conducted across nine benchmarks, including MMLU-Pro for general knowledge.
Regarding limitations, the authors note that they did not perform a direct head-to-head experiment between Quantization-Aware Healing and standard Quantization-Aware Distillation distilling from the recovered bfloat16 checkpoint. Furthermore, every reported number is based on a single run with no seed variance or confidence intervals. Some benchmarks used, such as AIME 2025, contain only 30 problems, meaning individual performance deltas should be read as indicative rather than statistically significant.
Illustrative Implementation
A short sketch of the paper's core idea, not the authors' own code.
# Illustrative sketch (not from the paper)
import torch, torch.nn.functional as F
teacher = torch.load('original.pt').eval()
compressed = apply_compression(teacher) # structural compression
student = compressed.clone().to(torch.bfloat16) # recovery checkpoint
opt = torch.optim.Adam(student.parameters(), lr=1e-4)
for x in loader: # full‑precision KL distillation
s = student(x)
with torch.no_grad(): t = teacher(x)
loss = F.kl_div(F.log_softmax(s, -1), F.softmax(t, -1), reduction='batchmean')
opt.zero_grad(); loss.backward(); opt.step()
# QAH: insert STE fake‑quantizer
class QAH(nn.Module):
def __init__(self, fp): super().__init__(); self.fp=fp
def forward(self, x): return (self.fp(x).round().clamp(-8,7)).to(torch.int8)
qah = QAH(student).train()
opt = torch.optim.Adam(qah.parameters(), lr=1e-5)
topk_idx = torch.topk(teacher(all_inputs), k=50, dim=-1).indices # offline cache
for epoch in range(epochs):
for x in loader:
logits = qah(x)[:, topk_idx]
with torch.no_grad(): t = teacher(x)[:, topk_idx]
loss = F.kl_div(F.log_softmax(logits, -1), F.softmax(t, -1), reduction='batchmean')
loss *= mask_schedule(step) # two‑phase mask (placeholder)
opt.zero_grad(); loss.backward(); opt.step()// Illustrative sketch (not from the paper)
const tf = require('@tensorflow/tfjs-node');
const teacher = tf.loadLayersModel('file://original/model.json');
const compressed = applyCompression(teacher); // structural compression placeholder
let student = tf.clone(compressed).cast('bfloat16'); // recovery checkpoint
const opt = tf.train.adam(1e-4);
for await (const x of dataLoader()) { // full‑precision KL distillation
const s = student.apply(x);
const t = tf.tidy(() => teacher.apply(x));
const loss = tf.losses.kullbackLeiblerDiv(tf.logSoftmax(s), tf.softmax(t));
opt.minimize(() => loss, true, student.trainableWeights);
}
// QAH: STE fake‑quantizer layer
class QAH extends tf.layers.Layer {
constructor(fp) { super({}); this.fp = fp; }
call(input) { return tf.tidy(() => this.fp.apply(input).round().clipByValue(-8,7).toInt()); }
}
const qah = new QAH(student);
const opt2 = tf.train.adam(1e-5);
const topkIdx = tf.tidy(() => tf.topk(teacher.predict(allInputs), 50).indices); // offline cache
for (let epoch = 0; epoch < epochs; epoch++) {
for await (const x of dataLoader()) {
const logits = tf.gather(qah.apply(x), topkIdx, 1);
const t = tf.gather(tf.tidy(() => teacher.apply(x)), topkIdx, 1);
const loss = tf.losses.kullbackLeiblerDiv(tf.logSoftmax(logits), tf.softmax(t));
const masked = loss.mul(maskSchedule(step)); // two‑phase mask placeholder
opt2.minimize(() => masked, true, qah.trainableWeights);
}
}
Cross-Examination & FAQs
A deeper dive clarifying mechanics, constraints, and baseline evaluations.
Q1. What is the main contribution of the paper?
The paper presents a practical recipe for recovering compressed, 4-bit large language models and uses it to produce Hypernova-60B.
Q2. Which open-weight model was produced using this recipe?
Hypernova-60B, released by Multiverse Computing under Apache 2.0.
Q3. What models and datasets are evaluated in the study?
The study evaluates GPT-OSS 120B and 20B, and tests them across nine benchmarks including MMLU-Pro.
Q4. How do the authors justify skipping the direct QAD baseline experiment?
They argue from the quantisation literature that a quantised-and-recovered checkpoint is by construction no stronger than the model it approximates, though they did not run the head-to-head experiment.
Q5. What format were the GPT-OSS 120B and 20B weights in when released?
Their mixture of expert weights were in MXFP4, and the remaining tensors were in BF16.
Q6. Are the reported numerical results backed by multiple runs with confidence intervals?
No, every number is a single run with no seed variance or confidence intervals.
Q7. Why should individual performance deltas on some benchmarks be read cautiously?
Because some benchmarks are small, such as AIME 2025 which has only 30 problems.
Q8. Who released Hypernova-60B?
Multiverse Computing released it under Apache 2.0.
Q9. How many benchmarks are used in the evaluation?
Nine benchmarks are used, including MMLU-Pro for general knowledge.