Smaller training checkpoints and faster recovery after a node failure. Your cluster spends less time idle while a checkpoint loads.
| What is checkpointed | Bytes vs raw |
|---|---|
| bf16 weights, single checkpoint | 0.66 |
| fp32 weights, single checkpoint | 0.76 |
| Weights, next checkpoint in the same run | 0.56 |
| Full checkpoint with optimizer state (16 bytes per parameter) | 0.74 |
| What is checkpointed | Measured on | Size vs original |
|---|---|---|
| Next checkpoint, 1,000 steps after the last | Pythia-160M, fp32 | 0.562 |
| Next checkpoint, 3,000 steps after the last | Pythia-160M, fp32 | 0.598 |
| Full checkpoint, weights plus AdamW state | transformer training run | 0.739 |
| AdamW variance, the largest optimizer stream | transformer training run | 0.660 |
| Model | Format | zstd | weights.zip | Less storage than zstd |
|---|---|---|---|---|
| Qwen2.5-1.5B | bf16 | 0.785 | 0.658 | 16% |
| Qwen2.5-0.5B | bf16 | 0.774 | 0.659 | 15% |
| Decoder | Hardware | GB/s |
|---|---|---|
| weights.zip, FP8 | NVIDIA H100 SXM | 43.3 |
| weights.zip, bf16 | NVIDIA H100 SXM | 21.2 |
| weights.zip, bf16 | RTX 4060 | 11.4 |
| zstd on the GPU (nvCOMP), bf16 | RTX 4060 | 2.1 |
Speeds are single-tensor figures for the current release. Every checkpoint was restored and compared bit for bit with the original.
Compress checkpoint files once they are written, from the command line or from Python in your training job, and expand them on the GPU before training resumes. Your training code and its saved state do not change.
# command line weightzip compress model.safetensors model.wzst weightzip decompress model.wzst model.safetensors weightzip verify model.safetensors model.wzst # Python from weightzip import compress_file, decompress_file, verify_file compress_file("model.safetensors", "model.wzst") assert verify_file("model.safetensors", "model.wzst")
weightzip verify restores the file and compares every tensor with the original, bit for bit, and reports any difference.import torch from safetensors.torch import load_file a = load_file("model.safetensors") # the original b = load_file("restored.safetensors") # after weightzip decompress assert a.keys() == b.keys() for name in a: x, y = a[name], b[name] assert x.dtype == y.dtype and x.shape == y.shape assert torch.equal(x.reshape(-1).view(torch.uint8), y.reshape(-1).view(torch.uint8)) print("identical:", len(a), "tensors")
All figures are measured on public models (Qwen2.5 0.5B and 1.5B, Llama-3.1 8B and 70B, Pythia-160M, GPT-2 and a 27B FP8 model) on NVIDIA H100 SXM, H200 and RTX 4060 GPUs. Every restore was checked byte for byte against the original. zstd comparisons use zstd level 19 or NVIDIA nvCOMP Zstd on the same files. Dollar figures assume S3 Standard-class storage at about $24 per TB-month and typical cloud egress pricing. Results depend on the model and data type, so the free benchmark measures yours.