Upload README.md with huggingface_hub
Browse files
README.md
CHANGED
|
@@ -1,3 +1,80 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 1 |
---
|
| 2 |
-
|
| 3 |
-
--
|
|
|
|
| 1 |
+
# 🚀 KV Cache Compression — 实现代码库
|
| 2 |
+
|
| 3 |
+
**大模型 KV 缓存压缩完整实现** | 基于 DeepSeek-V2-Lite MLA 实测
|
| 4 |
+
|
| 5 |
+
## 🎯 核心成果 (L40S 实测)
|
| 6 |
+
|
| 7 |
+
| 方案 | KV/token | 压缩率 | 误差 |
|
| 8 |
+
|------|----------|--------|------|
|
| 9 |
+
| 标准 MHA | 270 KB | 1x | — |
|
| 10 |
+
| 吸收式 MLA | 30.4 KB | 8.9x | 0 |
|
| 11 |
+
| + per-channel INT8 | 15.2 KB | 17.8x | 0.011 |
|
| 12 |
+
| + 非对称 INT4 | **7.6 KB** | **35.6x** | 0.079 |
|
| 13 |
+
|
| 14 |
+
**单卡 L40S → 138 万 token 上下文,真实推理质量无损**
|
| 15 |
+
|
| 16 |
+
## 📦 模块
|
| 17 |
+
|
| 18 |
+
| 文件 | 功能 |
|
| 19 |
+
|------|------|
|
| 20 |
+
| `kv_cache_core.py` | 核心算法: 吸收式MLA + per-channel量化 + 分层量化 + 容量估算 |
|
| 21 |
+
| `agentframe_core.py` | 前缀感知缓存池 (PrefixPool + 多会话共享) |
|
| 22 |
+
| `agentframe_orchestrator.py` | Agent 编排层 (脑/手/记忆/循环) |
|
| 23 |
+
| `agentframe_hands.py` | OpenClaw 工具集 (exec/browser/文件) |
|
| 24 |
+
|
| 25 |
+
## 🔑 核心算法
|
| 26 |
+
|
| 27 |
+
### 1. 吸收式 MLA 缓存
|
| 28 |
+
标准 transformers 缓存展开后的 K/V (270KB, 浪费 MLA 架构优势)。
|
| 29 |
+
本实现直接缓存 576 维潜在向量 (kv_lora_rank 512 + k_pe 64)。
|
| 30 |
+
|
| 31 |
+
```python
|
| 32 |
+
# 缓存潜在向量, 计算时 kv_b_proj 展开
|
| 33 |
+
compressed_kv = kv_a_proj_with_mqa(hidden) # [seq, 512+64]
|
| 34 |
+
latent, k_pe = torch.split(compressed_kv, [512, 64], dim=-1)
|
| 35 |
+
# → 只缓存 latent + k_pe = 30.4KB/token
|
| 36 |
+
```
|
| 37 |
+
|
| 38 |
+
### 2. per-channel 量化
|
| 39 |
+
潜在向量 outlier 按 channel 局部存在, per-tensor 被拖累 (误差 0.298),
|
| 40 |
+
per-channel 各自归一化后误差降 27 倍 (0.011)。
|
| 41 |
+
|
| 42 |
+
```python
|
| 43 |
+
# 512维分32块, 每块独立 scale
|
| 44 |
+
tc = tensor.view(-1, 32, 16)
|
| 45 |
+
scale = tc.abs().amax(dim=-1, keepdim=True) / 127
|
| 46 |
+
q = (tc/scale).round().clamp(-127, 127)
|
| 47 |
+
```
|
| 48 |
+
|
| 49 |
+
### 3. 分层量化 (Agent 专用)
|
| 50 |
+
按信息价值分配精度: 思考链 INT8 / 工具结果 INT4。
|
| 51 |
+
|
| 52 |
+
### 4. 前缀感知缓存池
|
| 53 |
+
多个 Agent 共享 System Prompt 的 KV 缓存 (只存 1 份)。
|
| 54 |
+
|
| 55 |
+
## 📊 验证数据
|
| 56 |
+
|
| 57 |
+
```
|
| 58 |
+
吸收式缓存 INT8 误差: 0.0050
|
| 59 |
+
思考链 INT8 误差: 0.0037
|
| 60 |
+
工具结果 INT4 误差: 0.0640
|
| 61 |
+
L40S 10GB → 138 万 token
|
| 62 |
+
```
|
| 63 |
+
|
| 64 |
+
## 🚀 快速开始
|
| 65 |
+
|
| 66 |
+
```bash
|
| 67 |
+
# 核心算法 (无需 GPU)
|
| 68 |
+
python3 kv_cache_core.py
|
| 69 |
+
|
| 70 |
+
# Agent 框架
|
| 71 |
+
python3 agentframe_orchestrator.py
|
| 72 |
+
```
|
| 73 |
+
|
| 74 |
+
## 📄 许可证
|
| 75 |
+
|
| 76 |
+
GPL-3.0 License
|
| 77 |
+
|
| 78 |
---
|
| 79 |
+
|
| 80 |
+
*Cloud LTE Studio · 2026-08-09*
|