- 人工智能
- 大模型
- 多模态
- OCR
- 计算机视觉
- 模型量化
- 本地部署
【免费下载链接】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-vlm2️⃣ 获取模型:
git clone https://gitcode.com/hf_mirrors/mlx-community/Unlimited-OCR-2-8bit3️⃣ 解析单页(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
相关推荐
为什么Unlimited-OCR-2-6bit处理长文档不爆显存?深扒DASH可微稀疏注意力原理
为什么Unlimited OCR 2 6bit处理长文档不爆显存?深扒DASH可微稀疏注意力原理 Unlimited OCR 2 6bit 是百度 Unlimi
人工智能多模态计算机视觉OCR模型量化本地部署JevK5-chat-mlx-8bit 架构拆解:Qwen3.5 混合线性注意力与 8-bit 仿射量化设计原理全解析
JevK5 chat mlx 8bit 架构拆解:Qwen3.5 混合线性注意力与 8 bit 仿射量化设计原理全解析 JevK5 chat mlx 8bit
人工智能大模型模型量化本地部署百万上下文不爆显存:DeepSeek-V4.1-Flash-NVFP4的压缩稀疏注意力CSA2完整解析
百万上下文不爆显存:DeepSeek V4.1 Flash NVFP4的压缩稀疏注意力CSA2完整解析 DeepSeek V4.1 Flash NVFP4 是
大模型基础模型多模态模型量化DeepSeek
创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考