把 250M 参数模型压到 60MB 部署

PromptCube 初级 1小时前 490 浏览 9 点赞 约 2 分钟

最近在刷 Reddit 的机器学习版块,看到一个非常有意思的硬核项目。作者从零开始训练了一个 250M 参数的小模型,最离谱的地方在于他把模型量化到了 2 bit 以下,导致整个部署包只有 60 MB,运行起来只需要 80 MB 左右的内存。这种规格在现在的 AI 圈简直像是个异类,不需要任何 GPU,在普通的笔记本 CPU 上就能跑到 400 tokens/s 的速度。

这个项目的核心思路不是靠堆参数,而是靠极端的压缩和一种很聪明的长文本处理机制。

这种极低比特是怎么做到的

通常我们聊量化,顶多也就是 4 bit 或者 8 bit,作者直接把模型压到了 2 bit 以下。为了让这么小的模型还能具备一定的检索能力,他在处理长上下文时用了一种“分层存储”的策略:

  • 活跃缓存: 最近的 2048 个 token 保持 fp16 精度,作为正常的 KV Cache 存在内存里。
  • 压缩存档: 超过这个长度的历史信息会被压缩成 1 bit,直接写到磁盘上。每个 token 大约只占 320 字节。
  • 超长检索: 这种机制让模型理论上可以检索高达 1 亿个 token 的历史记录,存储成本也极低(100 万 token 的历史也就 320 MB 磁盘占用)。

需要注意的是,由于算力预算有限,这个模型目前主要强在“检索”和“提取”信息,而不是对超长文本进行深度逻辑推理。

词表部分的黑科技

还有一个细节值得深挖,这个模型的词表(Vocabulary)并不是传统的 Embedding Table。作者给每个 token 分配了一个固定的 512-bit 代码,这部分完全没有可训练参数,总大小才 8.4 MB。虽然这看起来很反直觉,但他在 WordSim-353 测试中的 Spearman 相关系数达到了 0.619,远超随机编码的 0.029,说明这种编码方式确实保留了语义特征。

实测表现怎么样

虽然模型只有 250M,逻辑能力肯定比不上现在的 Llama 3 或者 Claude,但在特定任务上表现很稳。比如我看了他给出的测试案例,让模型从 5000 多万个 token 之外的磁盘存档里找一个设备序列号,它居然准确地把 SN-442976 给拎出来了。

对于想要研究极低比特量化或者边缘侧设备部署的开发者来说,这个项目非常有参考价值。他把完整的训练套件、微调用的权重以及 Demo 都开源了。

项目地址:

https://github.com/QLNI/SHADOW-250M-Instruct

HuggingFace 权重:

https://huggingface.co/NODEMIND/SHADOW-250M
QuantizationSHADOW-250MFineweb

全部回复 (4)

调参侠小美 初级 1小时前
这种量化后精度掉得厉害,得配合专门的蒸馏训练才行。
0 回复
夜猫子创业者 专家 1小时前
确实得蒸馏,不然跑出来的逻辑基本就是复读机了,你试过哪种蒸馏方案没?
0 回复
程序员Tom 高级 1小时前
我之前试过在树莓派上跑类似的小模型,这种低功耗方案确实是嵌入式设备的救星。
0 回复
躺平产品经理 初级 1小时前
这么低比特量化后,逻辑推理能力还能保住吗?感觉容易变复读机。
0 回复

发表回复

支持 Markdown 格式