基于 mlx-optiq 构建,这是一个面向 Apple Silicon 的 MLX 原生工具包,可在本地对 LLM 进行量化、微调和部署,无需 PyTorch,也不依赖云端。试用 Lab · 全部 OptiQ 量化模型 · 文档
这是 GnLOLot/MiniCPM5-1B-Claude-Opus-Fable5-V2-Thinking 的一个 4 位混合精度 MLX 量化版本;该模型是 MiniCPM5-1B 的推理微调版本。敏感层保留为 8 位,稳健层则保持 4 位。
原本 2.0 GB 的 bf16 权重被压缩为 874 MB,体量小到可以在任意 Apple Silicon Mac 上流畅运行。
| 属性 | 值 |
|---|---|
| 主要精度 | 4 位 |
| 8 位层(敏感) | 67 |
| 4 位层(稳健) | 102 |
| 量化层总数 | 169 |
| 实际每权重比特数 | 5.805 |
| 分组大小 | 64 |
| 磁盘占用 | 874 MB,源自 2.0 GB 的 bf16 基座 |
我们沿用 llama.cpp 在 Q4_K_M 等类似混合精度量化中采用的命名约定:“4 位”标签指主要精度,而不是加权平均位宽。在 1B 参数规模下,可牺牲的冗余更少,因此优化器会让更多层保留在 8 位,其加权平均位宽也会高于更大规模的模型。
逐层位宽分配迁移自 mlx-community/MiniCPM5-1B-OptiQ-4bit。在该模型中,这一分配是通过以 bf16 参考为基准,在六域校准混合数据上进行 KL 散度敏感度扫描推导得出的。
本模型是对 openbmb/MiniCPM5-1B 进行微调得到的,架构未作改动,因此全部 169 个可量化层都能完全一一对应;若针对本模型自身张量重新计算,该分配仍得到相同的 5.805 每权重比特数。
这些是实测得到的位宽,而不是固定的经验配方。但它们是在基座模型上测量得到的,而不是在本微调模型上。微调会改变权重分布,因此本模型自身的逐层敏感度可能与基座模型略有不同。哪些层较为脆弱,主要由架构特性决定,所以这种迁移是可靠的;但它毕竟是一次迁移,你应当清楚这一点。
pip install mlx-lmfrom mlx_lm import load, generate
model, tokenizer = load("mlx-community/MiniCPM5-1B-Claude-Opus-Fable5-V2-Thinking-OptiQ-4bit")
prompt = tokenizer.apply_chat_template(
[{"role": "user", "content": "What is 17 + 25?"}],
add_generation_prompt=True, tokenize=False)
print(generate(model, tokenizer, prompt=prompt, max_tokens=512))before answering, so give it enoughmax_tokens` to finish.
For an OpenAI-compatible server, mixed-precision KV-cache serving, and sensitivity-aware LoRA fine-tuning, install mlx-optiq:
注意标签内容末尾有一个空格和冒号?实际:
This is a reasoning model: it thinks inside ... before answering, so give it enough max_tokens to finish.
For an OpenAI-compatible server, mixed-precision KV-cache serving, and sensitivity-aware LoRA fine-tuning, install mlx-optiq:
必须保持 Markdown 格式。代码 span ... 不能翻译?变量、标签或专业名词不要翻译。max_tokens、mlx-optiq、链接、OpenAI? OpenAI 是品牌名词,可能不翻译。KV-cache? 专业术语,也许保留 KV-cache。LoRA 保留。sensitivity-aware LoRA fine-tuning 可译为“敏感性感知 LoRA 微调”或“感知敏感性的 LoRA 微调”。mixed-precision KV-cache serving 译为“混合精度 KV-cache 服务”或“混合精度 KV 缓存推理服务”。OpenAI-compatible server 译为“兼容 OpenAI 的服务器”或“OpenAI 兼容服务器”。需要优雅。
句子:这是一个推理模型:在回答前,它会先在 ... 中进行思考,因此请设置足够的 max_tokens 以完成回答。
为使用兼容 OpenAI 的服务器、混合精度 KV-cache 服务以及敏感性感知 LoRA 微调,请安装 mlx-optiq:
检查是否保持格式:两个段落,末尾冒号。中文冒号全角?原始英文是英文冒号后空格? Markdown 中最后 install ... : 英文冒号无空格? 可以翻译为中文冒号。 保持 code spans 原样。不要删减。
可能“reasoning model”译为“推理模型”。“thinks inside ... before answering”可以“在回答前通过 ... 进行思考”。足够 max_tokens 以完成(思考并)回答。 “give it enough max_tokens to finish” 给足 max_tokens 以让其完成。 通俗:请提供足够的 max_tokens,让它能够完成作答。
For an OpenAI-compatible server, mixed-precision KV-cache serving, and sensitivity-aware LoRA fine-tuning, install ...: 这里 For 可能表示“若要使用...”。译为“如需使用 OpenAI 兼容服务器、混合精度 KV-cache 服务以及敏感性感知 LoRA 微调,请安装 ...:”。 专业名词:OpenAI 不翻译。 KV-cache 不翻译?用户说变量、标签或专业名词不要翻译。KV-cache 是专业名词,可以保留。LoRA 保留。mlx-optiq 保留。max_tokens 保留。链接保留。
最终只输出翻译,不能解释。
注意用户说 <需要翻译的内容>标签内的内容不能进行任何删减和省略。我们翻译不能少。原文有尾随空格在标签内? 应该忽略。 需要保留 Markdown,段落。 可能最后没有换行。 OK.
这是一个推理模型:在回答之前,它会先在 ... 中进行思考,因此请提供足够的 max_tokens,让它能够完成作答。
如需使用兼容 OpenAI 的服务器、混合精度 KV-cache 服务以及敏感性感知 LoRA 微调,请安装 mlx-optiq:
pip install mlx-optiq
optiq serve --model mlx-community/MiniCPM5-1B-Claude-Opus-Fable5-V2-Thinking-OptiQ-4bit发布前,已对成品模型的生成能力进行了验证:原始补全、对话模板推理(对 17 + 25 能正确推理出 42),以及自由文本。
量化也进行了数值校验:将成品模型中的各个层反量化,并与 bf16 checkpoint 对比,8 位层的平均相对误差为 0.7%,4 位层为 9.8%,这也符合各比特宽度应有的误差代价。
此量化模型未运行任何任务基准;如需查看基础架构的实测质量指标,请参阅 MiniCPM5-1B OptiQ 模型卡。
量化不会改变基础模型的行为或对齐方式。请按照 原始版本 的相同条款使用。