ARTICLE · INTELLIGENCE

战地情报 · 详情页

来自尧图项目组的一线实战观察与深度解析

128K 上下文不爆内存:Unlimited-OCR-2-8bit 的 8-bit 仿射量化与稀疏注意力原理全解

128K 上下文不爆内存:Unlimited-OCR-2-8bit 的 8-bit 仿射量化与稀疏注意力原理全解
  • 人工智能
  • 大模型
  • 多模态
  • OCR
  • 计算机视觉
  • 模型量化
  • 本地部署

【免费下载链接】Unlimited-OCR-2-8bit

项目地址:https://ai.gitcode.com/hf_mirrors/mlx-community/Unlimited-OCR-2-8bit
点击查看免费下载

为什么 Unlimited-OCR-2-8bit 能一口气解析整本书的多页文档,却不会把内存吃爆?🔍 本文用大白话讲透它的两大核心:语言模型的8-bit 仿射量化(group size 64)和DASH 块稀疏注意力,并附上模型规格、显存账本与一键部署步骤,带你快速看懂这份 MLX 版 128K 长上下文 OCR 视觉语言模型。

一句话看懂:三道防线如何守住内存

  • 权重瘦身:语言模型全参数 8-bit 量化,约 3.7GB 的 bfloat16 权重压缩到 1GB 上下,消费级设备也能加载;
  • 注意力瘦身:DASH 块稀疏注意力让每个 token 只"看"16 个 KV 块(512 个 token),而不是 128K 全部历史,长文档的计算量不再随长度平方级爆炸;
  • 位置编码扩容:YaRN 把位置编码从 32K 平滑外推到 131072(128K)token,配合 page2d 二维 RoPE 理解"多页"结构。

模型规格速览:先认识 Unlimited-OCR-2-8bit

规格全部来自 config.json:

项目数值说明
语言模型层数12每层 10 个注意力头,头维 128
专家数64 路由 + 2 共享每 token 激活 6 个专家(MoE)
最大上下文131072(128K)YaRN 从 32K 外推(factor 4.0)
量化8-bit affine,group 64仅作用于语言模型
视觉编码器SAM ViT-B + CLIP-L保留 bfloat16
输入分辨率1024×1024每页 1 个全局视图 + 最多 16 个局部裁剪
稀疏块大小32 token/块top-12 远程块 + 4 块本地窗口

架构入口在 modeling_unlimitedocr.py,语言模型主干复用 DeepSeek-V2 风格 MoE 结构(modeling_deepseekv2.py)。

8-bit 仿射量化:每个权重组自带一把"小尺子"

量化配置写在 config.json 的quantization字段:bits: 8、group_size: 64、mode: affine。

通俗地说:把每64 个连续权重看成一组,这组里最大的浮点数除以 127,就得到一组专属的scale(缩放)与bias(偏移);组内每个权重按原值 = scale × 整数 + bias换算成 8 位整数存储。推理时再反变换回浮点参与计算。

这就是"仿射"二字的含义——不止缩放,还带平移。相比给整个矩阵配一把全局尺子,分组仿射让每组都贴合自己的数值范围,8-bit 下精度损失几乎可以忽略。

从 model.safetensors.index.json 可以直观看到这套结构:语言模型的每个投影层(q_proj、gate_proj、MoE 专家等)都以三份张量落盘——weight(int8 量化值)+scales(每组的缩放)+biases(每组的偏移)。

💡取舍很讲究:SAM / CLIP 视觉塔和每层 DASH 路由头保留 bfloat16。图像特征分布敏感、量化易失真,而它们参数量占比很小——"该省的大省,该保的小保"。

128K 上下文的显存账本:KV cache 才是大头

长上下文 OCR 的内存压力主要来自 KV cache:它随上下文长度线性增长。按 12 层 × 10 头 × 128 维 × bfloat16 估算,打满 128K 上下文时 KV cache 约 7.7GB——而单页文档往往只有几千 token,实际占用远小于理论上限。

真正让"不爆内存"成立的,是注意力计算从 O(S²) 降到近 O(S):

  • 每个 KV 块用可学习摘要向量做粗筛(router 见 dash_attention.py,Triton 融合内核见 sparse_gather_e2e_triton.py);
  • 选出 top-12 远程块 + 4 块本地窗口,共16 块 × 32 token = 512 个 token参与精确注意力;
  • 在 128K 上下文里,每个 token 只需"回头看"不到 0.4% 的历史,峰值内存与耗时基本不再随页数翻倍上涨。

这也是 8-bit 量化与稀疏注意力的分工:量化压小常驻权重,稀疏注意力压低长序列的动态开销,两者叠加才撑得起 128K。

部署步骤:三步跑通多页文档解析

1️⃣ 安装 mlx-vlm:需要支持 Unlimited-OCR-2 的分支(page2d RoPE + DASH 块稀疏注意力正在合入上游):

pip install -U mlx-vlm

2️⃣ 获取模型:

git clone https://gitcode.com/hf_mirrors/mlx-community/Unlimited-OCR-2-8bit

3️⃣ 解析单页(1024 全局视图 + 最多 16 个局部裁剪):

mlx_vlm.generate --model Unlimited-OCR-2-8bit --image page.png \ --prompt "Multi page parsing." --max-tokens 8192 --temperature 0

多页一次请求(每页 1 个 1024 基准视图):

mlx_vlm.generate --model Unlimited-OCR-2-8bit --image p1.png p2.png \ --prompt "Multi page parsing." --max-tokens 16384 --temperature 0

输出使用<PAGE>、<BLOCK>label[x0, y0, x1, y1]<FORK>text标记,跨页内容用cross_*/append_*衔接,配合上游仓库的转换器即可一键得到 Markdown。📄

关键文件索引

  • 量化与稀疏注意力总配置:config.json(quantization与sparse_attention_config字段)
  • 权重分片清单(weight / scales / biases):model.safetensors.index.json
  • 稀疏注意力路由实现:dash_attention.py
  • 基线实现与 ring window:_sparse_base_impl.py
  • 模型入口:modeling_unlimitedocr.py

总结

Unlimited-OCR-2-8bit 证明了一件事:128K 上下文 OCR 不等于天价显存。8-bit 仿射量化把权重压到 1GB 量级,DASH 块稀疏注意力把长序列计算砍掉两个数量级,YaRN 外推补齐超长位置编码——这套组合拳让整本书的版面解析在普通设备上成为可能。🚀

  • 人工智能
  • 大模型
  • 多模态
  • OCR
  • 计算机视觉
  • 模型量化
  • 本地部署

【免费下载链接】Unlimited-OCR-2-8bit

项目地址:https://ai.gitcode.com/hf_mirrors/mlx-community/Unlimited-OCR-2-8bit
点击查看免费下载

相关推荐

上一篇:Ambxst架构解析:Quickshell QML前端与Go后端守护进程的分工与协作
下一篇:nim命令行工具完全指南:在终端驱动Nimbalyst追踪系统

创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考

RELATED READING

延伸阅读

更多一线实战笔记与深度复盘,助您持续精进