PageSourceSearch

https://ds2-lab.github.io/ZipLLM/

html ds2-lab.github.io collected 2026-10-03 09:04:31 UTC 15,408 bytes, 375 lines download raw bytes

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 &#8217;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 &#183; Tingfeng Lan &#183; Zhaoyuan Su &#183; Juncheng Yang &#183; 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 &#38; 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 &#183; 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 &#183; 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 &#183; 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 &#8212; 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 &#183; <code>[EEEEEEEE]</code> 8-bit exponent &#183; <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 &#8212;
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">&#8595; XOR (base &#8853; fine) &#8595;</div>
277        <div class="rain-phase-label">Phase 2 &#8212; 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)">&#8595; Split byte streams &#8595;</div>
284        <div class="rain-phase-label">Phase 3 &#8212; 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)">&#8595; Zstd compress each &#8595;</div>
300        <div class="rain-phase-label">Phase 4 &#8212; 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 &#8594; 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 &#8594; 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.