1<!DOCTYPE html> 2<html lang="en"> 3<head> 4 <meta charset="UTF-8"> 5 <meta name="viewport" content="width=device-width, initial-scale=1.0"> 6 <title>ZipLLM â Efficient LLM Storage</title> 7 <link rel="preconnect" href="https://fonts.googleapis.com"> 8 <link rel="preconnect" href="https://fonts.gstatic.com" crossorigin> 9 <link href="https://fonts.googleapis.com/css2?family=JetBrains+Mono:wght@300;400;500;600;700&family=Inter:wght@300;400;500;600;700;800;900&display=swap" rel="stylesheet"> 10 <link rel="stylesheet" href="style.css"> 11</head> 12<body> 13 14<nav class="nav"> 15 <div class="nav-inner"> 16 <a href="#hero" class="nav-logo">ZipLLM</a> 17 <div class="nav-links"> 18 <a href="#demo">Demo</a> 19 <a href="#pipeline">Pipeline</a> 20 <a href="#explorer">BF16</a> 21 <a href="#bitx">BitX</a> 22 <a href="#algorithms">Code</a> 23 <a href="https://arxiv.org/abs/2505.06252" target="_blank" class="nav-ext">arXiv</a> 24 <a href="https://github.com/ds2-lab/ZipLLM" target="_blank" class="nav-ext">GitHub</a> 25 </div> 26 </div> 27</nav> 28 29<section id="hero" class="section hero"> 30 <div class="hero-label">[ USENIX NSDI ’26 ]</div> 31 <h1 class="hero-title"> 32 <span class="hero-zip">Zip</span><span class="hero-llm">LLM</span> 33 </h1> 34 <p class="hero-subtitle">Efficient LLM Storage via Model-Aware<br>Synergistic Data Deduplication and Compression</p> 35 <div class="hero-authors"> 36 Zirui Wang · Tingfeng Lan · Zhaoyuan Su · Juncheng Yang · Yue Cheng 37 </div> 38 <div class="hero-badges"> 39 <span class="badge">Artifacts Available</span> 40 <span class="badge">Artifacts Functional</span> 41 <span class="badge">Results Reproduced</span> 42 </div> 43 <div class="hero-stats"> 44 <div class="hero-stat"> 45 <div class="hero-stat-value">54.1%</div> 46 <div class="hero-stat-label">data reduction ratio</div> 47 </div> 48 <div class="hero-stat-sep"></div> 49 <div class="hero-stat"> 50 <div class="hero-stat-value">5.8 GB/s</div> 51 <div class="hero-stat-label">ingestion throughput</div> 52 </div> 53 <div class="hero-stat-sep"></div> 54 <div class="hero-stat"> 55 <div class="hero-stat-value">7.7 GB/s</div> 56 <div class="hero-stat-label">retrieval throughput</div> 57 </div> 58 <div class="hero-stat-sep"></div> 59 <div class="hero-stat"> 60 <div class="hero-stat-value">lossless</div> 61 <div class="hero-stat-label">zero accuracy loss</div> 62 </div> 63 </div> 64 <div class="hero-actions"> 65 <a href="https://arxiv.org/abs/2505.06252" target="_blank" class="btn btn-primary">Read Paper</a> 66 <a href="https://github.com/ds2-lab/ZipLLM" target="_blank" class="btn btn-ghost">View Source</a> 67 </div> 68</section> 69 70<section id="demo" class="section"> 71 <div class="section-label">[ LIVE DEMO ]</div> 72 <h2 class="section-title">Compression Live Demo</h2> 73 <p class="section-desc"></p> 74 75 <div class="demo-wrap"> 76 <div class="demo-controls"> 77 <button id="btn-demo-play" class="btn btn-primary">Play Both</button> 78 <button id="btn-demo-pause" class="btn btn-ghost">Pause</button> 79 <button id="btn-demo-restart" class="btn btn-ghost">Restart</button> 80 </div> 81 82 <div class="demo-grid"> 83 <div class="demo-panel"> 84 <div class="demo-panel-head"> 85 <div class="demo-dots"> 86 <span class="demo-dot" style="background:#ff3b3b"></span> 87 <span class="demo-dot" style="background:#ffd600"></span> 88 <span class="demo-dot" style="background:#00ff41"></span> 89 </div> 90 <span class="demo-tag demo-tag-zipnn">ZipNN (SOTA)</span> 91 </div> 92 <div class="demo-panel-body"> 93 <video id="demo-zipnn" src="zipnn.mp4" muted preload="metadata"></video> 94 </div> 95 </div> 96 97 <div class="demo-panel"> 98 <div class="demo-panel-head"> 99 <div class="demo-dots"> 100 <span class="demo-dot" style="background:#ff3b3b"></span> 101 <span class="demo-dot" style="background:#ffd600"></span> 102 <span class="demo-dot" style="background:#00ff41"></span> 103 </div>
104 <span class="demo-tag demo-tag-bitx">BitX (Ours)</span> 105 </div> 106 <div class="demo-panel-body"> 107 <video id="demo-bitx" src="bitx.mp4" muted preload="metadata"></video> 108 </div> 109 </div> 110 </div> 111 112 <div class="demo-timeline"> 113 <span class="demo-time" id="demo-time-current">0:00</span> 114 <div class="demo-progress" id="demo-progress"> 115 <div class="demo-progress-fill" id="demo-progress-fill"></div> 116 </div> 117 <span class="demo-time" id="demo-time-total">0:00</span> 118 </div> 119 </div> 120</section> 121 122<section id="pipeline" class="section"> 123 <div class="section-label">[ PIPELINE ]</div> 124 <h2 class="section-title">Multi-Level Deduplication & Compression</h2> 125 <p class="section-desc">3,048 LLMs (43.19 TB) share massive redundancy at file, tensor, and bit levels. ZipLLM exploits all three, achieving a 54.1% data reduction ratio.</p> 126 127 <div class="pipeline-wrap"> 128 <div class="pipeline-controls"> 129 <button id="btn-pipeline-run" class="btn btn-primary">Run Pipeline</button> 130 <button id="btn-pipeline-reset" class="btn btn-ghost">Reset</button> 131 </div> 132 133 <div class="accordion-wrap" id="accordion-wrap"> 134 <div class="acc-panel active" id="acc-p0"> 135 <div class="acc-header"> 136 <span class="acc-num">00</span> 137 <span class="acc-title">Input</span> 138 <span class="acc-badge show" id="acc-b0">43.19 TB</span> 139 </div> 140 <div class="acc-bar-wrap"> 141 <div class="acc-bar"><div class="acc-fill" id="acc-f0" style="width:100%;background:var(--text-3)"></div></div> 142 </div> 143 </div> 144 <div class="acc-panel" id="acc-p1"> 145 <div class="acc-header"> 146 <span class="acc-num">01</span> 147 <span class="acc-title">File Dedup</span> 148 <span class="acc-desc">xxHash per file · skip identical files</span> 149 <span class="acc-badge" id="acc-b1">41.80 TB (-3.2%)</span> 150 </div> 151 <div class="acc-bar-wrap"> 152 <div class="acc-bar"><div class="acc-fill" id="acc-f1" style="width:0%;background:var(--cyan)"></div></div> 153 </div> 154 </div> 155 <div class="acc-panel" id="acc-p2"> 156 <div class="acc-header"> 157 <span class="acc-num">02</span> 158 <span class="acc-title">Tensor Dedup</span> 159 <span class="acc-desc">xxHash per tensor · skip identical tensors</span> 160 <span class="acc-badge" id="acc-b2">39.61 TB (-8.3%)</span> 161 </div> 162 <div class="acc-bar-wrap"> 163 <div class="acc-bar"><div class="acc-fill" id="acc-f2" style="width:0%;background:var(--orange)"></div></div> 164 </div> 165 </div> 166 <div class="acc-panel" id="acc-p3"> 167 <div class="acc-header"> 168 <span class="acc-num">03</span> 169 <span class="acc-title">BitX</span> 170 <span class="acc-desc">BitX for finetune pairs · ZipNN for solo tensors</span> 171 <span class="acc-badge" id="acc-b3">19.82 TB (-54.1%)</span> 172 </div> 173 <div class="acc-bar-wrap"> 174 <div class="acc-bar"><div class="acc-fill" id="acc-f3" style="width:0%;background:var(--accent)"></div></div> 175 </div> 176 </div> 177 </div> 178 </div> 179</section> 180 181<section id="explorer" class="section"> 182 <div class="section-label">[ BF16 EXPLORER ]</div> 183 <h2 class="section-title">Interactive Bit Explorer</h2> 184 <p class="section-desc">Adjust the delta to see how BF16 floating-point bits change.<br>Small weight updates flip very few bits — the foundation of BitX.</p> 185 186 <div class="explorer-wrap"> 187 <div class="explorer-inputs"> 188 <div class="input-group"> 189 <label for="base-value">Base value</label> 190 <input type="number" id="base-value" value="1.0" step="0.01"> 191 </div> 192 <div class="input-group slider-group"> 193 <label for="delta-slider">Delta: <span id="delta-display">+0.000000</span></label> 194 <input type="range" id="delta-slider" min="-100" max="100" value="0" step="1"> 195 <div class="slider-labels"> 196 <span>-1.0</span> 197 <span>0</span>
198 <span>+1.0</span> 199 </div> 200 </div> 201 </div> 202 203 <div class="explorer-display"> 204 <div class="explorer-row"> 205 <span class="explorer-label">Original</span> 206 <div class="explorer-bits" id="exp-original-bits"></div> 207 <span class="explorer-val" id="exp-original-val"></span> 208 </div> 209 <div class="explorer-row"> 210 <span class="explorer-label">Modified</span> 211 <div class="explorer-bits" id="exp-modified-bits"></div> 212 <span class="explorer-val" id="exp-modified-val"></span> 213 </div> 214 <div class="explorer-divider"></div> 215 <div class="explorer-row"> 216 <span class="explorer-label">XOR</span> 217 <div class="explorer-bits" id="exp-xor-bits"></div> 218 <span class="explorer-val" id="exp-xor-val"></span> 219 </div> 220 </div> 221 222 <div class="explorer-stats"> 223 <div class="exp-stat"> 224 <div class="exp-stat-value" id="hamming-distance">0</div> 225 <div class="exp-stat-label">bits flipped</div> 226 </div> 227 <div class="exp-stat"> 228 <div class="exp-stat-value" id="exp-bits-changed">0</div> 229 <div class="exp-stat-label">exponent bits</div> 230 </div> 231 <div class="exp-stat"> 232 <div class="exp-stat-value" id="mant-bits-changed">0</div> 233 <div class="exp-stat-label">mantissa bits</div> 234 </div> 235 <div class="exp-stat"> 236 <div class="exp-stat-value" id="sign-changed">0</div> 237 <div class="exp-stat-label">sign bit</div> 238 </div> 239 </div> 240 241 <div class="explorer-note"> 242 BF16 layout: <code>[S]</code> 1-bit sign · <code>[EEEEEEEE]</code> 8-bit exponent · <code>[MMMMMMM]</code> 7-bit mantissa 243 </div> 244 </div> 245</section> 246 247<section id="bitx" class="section"> 248 <div class="section-label">[ BITX ]</div> 249 <h2 class="section-title">Bit-Level XOR Transform</h2> 250 <p class="section-desc">Fine-tuned models differ from their base by only a few bits per weight.<br>BitX exploits this by XOR-ing, splitting byte streams, then compressing.</p> 251 252 <div class="bitx-wrap"> 253 <div class="bitx-controls"> 254 <button id="btn-bitx-run" class="btn btn-primary">Run BitX</button> 255 <button id="btn-bitx-reset" class="btn btn-ghost">Reset</button> 256 </div> 257 258 <div id="bitx-rain"> 259 <!-- Phase 1: Base and Fine rain --> 260 <div class="rain-phase" id="rain-p1"> 261 <div class="rain-phase-label">Phase 1 —
261 Two weight tensors (16-bit BF16 each)</div> 262 <div class="rain-columns"> 263 <div class="rain-col"> 264 <div class="rain-col-label" style="color:var(--cyan)">Base model</div> 265 <div class="rain-rows" id="rain-base"></div> 266 </div> 267 <div class="rain-col"> 268 <div class="rain-col-label" style="color:var(--orange)">Fine-tuned</div> 269 <div class="rain-rows" id="rain-fine"></div> 270 </div> 271 </div> 272 </div> 273 274 <!-- Phase 2: XOR --> 275 <div class="rain-phase hidden" id="rain-p2"> 276 <div class="rain-arrow">↓ XOR (base ⊕ fine) ↓</div> 277 <div class="rain-phase-label">Phase 2 — XOR result (yellow = bit flipped)</div> 278 <div class="rain-rows" id="rain-xor"></div> 279 </div> 280 281 <!-- Phase 3: Split --> 282 <div class="rain-phase hidden" id="rain-p3"> 283 <div class="rain-arrow" style="color:var(--text-3)">↓ Split byte streams ↓</div> 284 <div class="rain-phase-label">Phase 3 — Separate into EXP and Sign+Mantissa streams</div> 285 <div class="rain-split-boxes"> 286 <div class="rain-dashed-box" style="border-color:var(--cyan)"> 287 <div class="rain-box-label" style="color:var(--cyan)">EXP stream (bits 14..7)</div> 288 <div class="rain-rows" id="rain-exp"></div> 289 </div> 290 <div class="rain-dashed-box" style="border-color:var(--orange)"> 291 <div class="rain-box-label" style="color:var(--orange)">S+M stream (bit15 + bits 6..0)</div> 292 <div class="rain-rows" id="rain-sm"></div> 293 </div> 294 </div> 295 </div> 296 297 <!-- Phase 4: Zstd --> 298 <div class="rain-phase hidden" id="rain-p4"> 299 <div class="rain-arrow" style="color:var(--text-3)">↓ Zstd compress each ↓</div> 300 <div class="rain-phase-label">Phase 4 — Independent compression</div> 301 <div class="rain-split-boxes"> 302 <div class="rain-dashed-box" style="border-color:var(--cyan)"> 303 <div class="rain-box-label" style="color:var(--cyan)">EXP → Zstd</div> 304 <div class="compress-bar" style="margin:.6rem 0"> 305 <div class="compress-bar-orig" id="rain-exp-orig"></div> 306 <div class="compress-bar-comp" id="rain-exp-comp"></div> 307 </div> 308 <div class="compress-ratio" style="color:var(--cyan)">Zstd compresses this stream independently</div> 309 </div> 310 <div class="rain-dashed-box" style="border-color:var(--orange)"> 311 <div class="rain-box-label" style="color:var(--orange)">S+M → Zstd</div> 312 <div class="compress-bar" style="margin:.6rem 0"> 313 <div class="compress-bar-orig" id="rain-sm-orig"></div> 314 <div class="compress-bar-comp" id="rain-sm-comp"></div> 315 </div> 316 <div class="compress-ratio" style="color:var(--orange)">Zstd compresses this stream independently</div> 317 </div> 318 </div> 319 </div> 320 </div> 321 </div> 322</section> 323 324<section id="algorithms" class="section"> 325 <div class="section-label">[ ALGORITHMS ]</div> 326 <h2 class="section-title">Core Algorithms</h2> 327 <p class="section-desc">Pseudocode for the ZipLLM deduplication pipeline and the BitX compression kernel.</p> 328 329 <div class="code-grid"> 330 <div class="code-block"> 331 <div class="code-header"> 332 <span class="code-dot"></span> 333 <span class="code-dot"></span> 334 <span class="code-dot"></span> 335 <span class="code-title">zipllm_pipeline.rs</span> 336 </div> 337 <pre class="code-body" id="code-pipeline"></pre> 338 </div> 339 340 <div class="code-block"> 341 <div class="code-header"> 342 <span class="code-dot"></span> 343 <span class="code-dot"></span> 344 <span class="code-dot"></span> 345 <span class="code-title">bitx.rs</span> 346 </div> 347 <pre class="code-body" id="code-bitx"></pre> 348 </div> 349 </div> 350</section> 351 352<footer class="footer"> 353 <div class="footer-inner"> 354 <div class="footer-cite"> 355 <div class="cite-label">Citation</div> 356 <pre class="cite-bib">@inproceedings{wang2026zipllm,
357 title={ZipLLM: Efficient LLM Storage via Model-Aware 358 Synergistic Data Deduplication and Compression}, 359 author={Wang, Zirui and Lan, Tingfeng and Su, Zhaoyuan 360 and Yang, Juncheng and Cheng, Yue}, 361 year={2026}, 362 organization={23rd USENIX Symposium on Networked Systems 363 Design and Implementation (NSDI '26)} 364}</pre> 365 </div> 366 <div class="footer-links"> 367 <a href="https://arxiv.org/abs/2505.06252" target="_blank">arXiv 2505.06252</a> 368 <a href="https://github.com/ds2-lab/ZipLLM" target="_blank">GitHub</a> 369 </div> 370 </div> 371</footer> 372
373<script src="app.js"></script>
373 374</body> 375</html>
Line numbers count LF bytes from the start of the resource, as the search results do. Vendor segments are library code the classifier recognised; they are stored but not indexed. Bytes are shown as Latin1 characters, one per byte.