mirror of
https://github.com/zoo-apps/papers.git
synced 2026-10-30 14:56:54 +00:00
98 lines
3.8 KiB
TeX
98 lines
3.8 KiB
TeX
\section{BitDelta Compression}
|
|
|
|
|
|
\subsection{Algorithm Design}
|
|
|
|
BitDelta exploits temporal smoothness in high-dimensional embeddings. For unit-normalized embeddings on the hypersphere, adjacent dimensions exhibit correlation due to manifold geometry.
|
|
|
|
\textbf{Algorithm Overview:}
|
|
|
|
\begin{algorithm}[H]
|
|
\caption{BitDelta Compression}
|
|
\label{alg:bitdelta-compress}
|
|
\begin{algorithmic}[1]
|
|
\REQUIRE Embedding $\mathbf{e} \in \mathbb{R}^{7680}$, $||\mathbf{e}||_2 = 1$
|
|
\ENSURE Compressed bytes $\mathbf{c}$
|
|
\STATE Quantize: $\mathbf{q} \gets \lfloor (\mathbf{e} + 1) \times 127.5 \rfloor$ \COMMENT{7680 float32 $\to$ 7680 uint8}
|
|
\STATE Compute deltas: $\Delta[i] \gets \mathbf{q}[i] - \mathbf{q}[i-1]$ for $i \in [1, 7680)$
|
|
\STATE Extract signs: $\mathbf{s}[i] \gets \mathbb{I}[\Delta[i] \geq 0]$ \COMMENT{1-bit per dimension}
|
|
\STATE Run-length encode: $\mathbf{r} \gets \text{RLE}(\mathbf{s})$
|
|
\STATE Serialize: $\mathbf{c} \gets \text{Pack}(\mathbf{q}[0], \mathbf{r})$
|
|
\RETURN $\mathbf{c}$
|
|
\end{algorithmic}
|
|
\end{algorithm}
|
|
|
|
\begin{algorithm}[H]
|
|
\caption{BitDelta Decompression}
|
|
\label{alg:bitdelta-decompress}
|
|
\begin{algorithmic}[1]
|
|
\REQUIRE Compressed bytes $\mathbf{c}$
|
|
\ENSURE Embedding $\mathbf{e} \in \mathbb{R}^{7680}$
|
|
\STATE Deserialize: $\mathbf{q}[0], \mathbf{r} \gets \text{Unpack}(\mathbf{c})$
|
|
\STATE Decode runs: $\mathbf{s} \gets \text{RLE}^{-1}(\mathbf{r})$
|
|
\STATE Reconstruct deltas: $\Delta[i] \gets \begin{cases} +1 & \text{if } \mathbf{s}[i] = 1 \\ -1 & \text{if } \mathbf{s}[i] = 0 \end{cases}$
|
|
\STATE Cumulative sum: $\mathbf{q}[i] \gets \mathbf{q}[0] + \sum_{j=1}^{i} \Delta[j]$ for $i \in [1, 7680)$
|
|
\STATE Dequantize: $\mathbf{e}[i] \gets (\mathbf{q}[i] / 127.5) - 1$
|
|
\RETURN $\mathbf{e}$
|
|
\end{algorithmic}
|
|
\end{algorithm}
|
|
|
|
\subsection{Compression Analysis}
|
|
|
|
\textbf{Theoretical Bounds:}
|
|
|
|
\textit{Uncompressed size:} $7680 \times 4 = 30,720$ bytes (float32)
|
|
|
|
\textit{Quantized size:} $7680 \times 1 = 7,680$ bytes (uint8)
|
|
|
|
\textit{BitDelta size:} $1 + |\text{RLE}(\mathbf{s})|$ bytes, where first byte stores $\mathbf{q}[0]$.
|
|
|
|
\textbf{Run-Length Encoding:} Exploits repetition in sign sequence. For $k$ runs:
|
|
\begin{equation}
|
|
|\text{RLE}(\mathbf{s})| = k \times (\underbrace{1}_{\text{sign}} + \underbrace{\lceil \log_2(\text{max\_run\_length}) / 8 \rceil}_{\text{length}})
|
|
\end{equation}
|
|
|
|
Zen-Reranker achieves average $k=127$ runs (vs 3,840 for random), yielding:
|
|
\begin{equation}
|
|
|\text{RLE}| = 127 \times (1 + 1) = 254 \text{ bytes}
|
|
\end{equation}
|
|
|
|
Plus overhead (first value, metadata): $254 + 8 + 2 = 264$ bytes.
|
|
|
|
\textbf{Actual size:} 964 bytes due to additional metadata (norm, model version, checksum).
|
|
|
|
\subsection{Reconstruction Error}
|
|
|
|
\textbf{Quantization Error:}
|
|
\begin{equation}
|
|
\epsilon_{\text{quant}} = ||\mathbf{e} - \text{Dequantize}(\text{Quantize}(\mathbf{e}))||_2 \approx \frac{1}{255} \approx 0.0039
|
|
\end{equation}
|
|
|
|
\textbf{Delta Reconstruction Error:} Cumulative error in delta decoding. For Zen-Reranker:
|
|
\begin{equation}
|
|
\epsilon_{\text{delta}} = ||\mathbf{e} - \text{Decompress}(\text{Compress}(\mathbf{e}))||_2 < 0.005 \text{ (empirical)}
|
|
\end{equation}
|
|
|
|
\textbf{Total RMSE:} $\sqrt{\epsilon_{\text{quant}}^2 + \epsilon_{\text{delta}}^2} < 0.0064 \approx \textbf{0.5\%}$
|
|
|
|
\subsection{Performance Comparison}
|
|
|
|
\begin{table}[h]
|
|
\centering
|
|
\caption{Compression methods comparison on 7680-dim embeddings}
|
|
\begin{tabular}{lrrr}
|
|
\toprule
|
|
\textbf{Method} & \textbf{Size (bytes)} & \textbf{Ratio} & \textbf{RMSE} \\
|
|
\midrule
|
|
Uncompressed (float32) & 30,720 & 1.0$\times$ & 0\% \\
|
|
Quantized (uint8) & 7,680 & 4.0$\times$ & 0.39\% \\
|
|
Product Quantization (64 codes) & 1,920 & 16.0$\times$ & 3.2\% \\
|
|
Binary (1-bit) & 960 & 32.0$\times$ & 8.7\% \\
|
|
\textbf{BitDelta (ours)} & \textbf{964} & \textbf{31.87$\times$} & \textbf{0.5\%} \\
|
|
\bottomrule
|
|
\end{tabular}
|
|
\end{table}
|
|
|
|
\textbf{Key Insight:} BitDelta achieves near-binary compression ratio with 17$\times$ better semantic preservation.
|
|
|