章节 01
导读 / 主楼:BigSmall:无损神经网络权重压缩,让大模型在小内存上流畅运行
BigSmall通过无损压缩技术将大语言模型体积缩小65-83%,配合流式加载器实现峰值内存占用低于2GB,让用户无需量化即可在消费级硬件上运行完整模型。
正文
BigSmall通过无损压缩技术将大语言模型体积缩小65-83%,配合流式加载器实现峰值内存占用低于2GB,让用户无需量化即可在消费级硬件上运行完整模型。
章节 01
BigSmall通过无损压缩技术将大语言模型体积缩小65-83%,配合流式加载器实现峰值内存占用低于2GB,让用户无需量化即可在消费级硬件上运行完整模型。
章节 02
当你想要运行Mistral 7B这样的大语言模型时,首先面对的是一个残酷的现实:模型需要14GB显存,而你的笔记本只有8GB。传统解决方案是量化——将模型压缩到4位精度。但问题是,量化后的模型已经不是原来的模型了。
每一个权重都被永久性地降级,输出质量下降,微调时会产生漂移,可复现性成为泡影。对于研究、生产或任何需要可靠结果的场景,量化是一种不得不接受的妥协。
BigSmall的出现改变了这一局面。
章节 03
BigSmall不是量化。解压后的每一个权重都与原始模型位级一致,每个张量都经过MD5验证。你得到的是完整的原始模型,永远如此。
章节 04
| 模型 | 原始大小 | 压缩后 | 压缩率 |
|---|---|---|---|
| Mistral 7B Instruct v0.3 | 14.2 GB | 9.3 GB | 65.6% |
| Llama 3.1 8B | 15.0 GB | 9.9 GB | 65.7% |
| Qwen 2.5 14B | 28.6 GB | 18.8 GB | 65.8% |
| Stable Diffusion 1.5 UNet | 1.72 GB | 1.48 GB | 85.9% |
| GPT-2 117M (FP32) | 548 MB | 414 MB | 75.5% |
对于FP32格式的模型,压缩率可达75-83%,这对于需要高精度浮点运算的研究场景尤为重要。
章节 05
BigSmall最具革命性的特性是其流式加载器。传统加载方式需要一次性将整个模型载入内存,而流式加载器一次只解压一层,直接送入显存,前一层的内存立即释放。
这意味着:
对比测试显示,在GPT-2上,流式加载的峰值内存比完整加载低29.6%。对于70B级别的大模型,这一差距将达到数十GB。
章节 06
许多人可能会问:为什么不直接用4位量化?答案在于"无损"二字带来的连锁优势:
| 特性 | 4位量化 | BigSmall |
|---|---|---|
| 是否无损 | 否——权重永久降级 | 是——位级一致 |
| Mistral 7B大小 | ~4 GB | 9 GB |
| 峰值加载内存 | ~4 GB | < 2 GB |
| 推理速度 | 部分硬件更慢 | 原生速度 |
| 微调安全性 | 否——基线漂移 | 是——干净权重 |
| 输出可复现性 | 否 | 是 |
| FP32支持 | 否 | 是 |
量化牺牲的是模型质量,而BigSmall牺牲的是存储空间——但在这个存储廉价的年代,这是一个更明智的权衡。
章节 07
DFloat11是另一个知名的神经网络压缩项目,但两者设计理念不同:
| 特性 | BigSmall | DFloat11 |
|---|---|---|
| 压缩率(BF16) | 65-66% | ~70% |
| 压缩率(FP32) | 75-83% | 仅BF16 |
| 推理开销 | 无——加载时解压 | 约2倍慢(batch=1) |
| 硬件支持 | CPU、Apple Silicon、AMD、任意GPU | 仅CUDA |
| 微调安全 | 是——解压后微调 | 否——保持压缩 |
| vLLM兼容 | 是 | 仅自定义引擎 |
| 峰值内存(流式) | < 2GB | 需完整模型显存 |
DFloat11在推理时保持压缩状态,每轮前向传播都需解压,带来持续性能开销。BigSmall选择一次性解压,之后以原生速度运行。
章节 08
ZipNN是另一个无损压缩方案,两者都基于相同的数学原理,但BigSmall在易用性和生态系统方面领先:
| 特性 | BigSmall | ZipNN |
|---|---|---|
| 压缩率(BF16) | 65-66% | ~67% |
| 压缩率(FP32) | 75-83% | ~83% |
| FP32/FP16/FP8/FP4支持 | 全部 | 主要BF16 |
| 流式加载器 | 是——峰值<2GB | 否 |
| HuggingFace预压缩模型 | 21+ | 5 |