☰
如何复现 plamo-2-translate 本地验证:evaluation.json 逐字段解读与完整评测流程实操
2026/10/20 11:12:54 网站建设 项目流程

【免费下载链接】plamo-2-translate

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

plamo-2-translate 是 PLaMo 2 翻译模型的 MLX 4-bit 量化版本,专为 Apple Silicon 设计,支持英语到日语的翻译。这篇文章带你完整复现它的本地验证流程:先看 evaluation.json 每个字段到底记录了什么,再按 README.md 的步骤一步步跑通评测,判断你的运行结果是否与官方记录一致。

一、先搞清楚仓库里有什么

在做任何验证之前,建议先浏览一遍仓库内的关键文件,后面每步操作都会用到它们:

文件作用
evaluation.json官方本地验证的完整记录:硬件、版本、量化参数、两次运行的实测指标
config.json模型结构配置,model_file字段指向自定义建模代码
modeling_mlx_plamo2.pyMLX 实现,修正了上游 mlx-lm 在 RoPE 基频和 SSM 时间步上的两处差异
chat_template.jinja聊天模板,支持显式指定input lang=.../output lang=...
generation_config.json生成配置:BOS/EOS 特殊 token 定义
model.safetensors.index.json权重索引,共 95 亿参数,权重文件约 5.36 GB

💡 一个关键细节:config.json 里的"model_file": "modeling_mlx_plamo2.py"会强制加载器使用仓库自带的建模代码,而不是运行时的通用实现。这一点直接决定评测结果是否可比。

二、环境准备:Apple Silicon 上的最快安装步骤

评测在 Apple M1 Max(32 GPU 核心、64 GB 内存)上完成,Python 3.13。在自己的 Mac 上安装:

pip install 'mlx-lm==0.31.2' 'transformers>=4.46,<5' numba

版本必须对齐 evaluation.json 中的versions字段:

  • mlx0.31.1
  • mlx-lm0.31.2
  • transformers4.57.6
  • sacrebleu2.6.0(用于计算 chrF 分数)

⚠️ 版本不一致时,吞吐量和解码细节都可能出现偏差,做严格复现前请先核对。

三、完整评测流程实操

步骤 1:加载模型与 tokenizer

from mlx_lm import load from mlx_lm.sample_utils import make_sampler model, tokenizer = load( "mlx-community/plamo-2-translate", tokenizer_config={"trust_remote_code": True}, )

trust_remote_code不能省略——tokenizer 依赖仓库内的 tokenization_plamo.py 自定义实现。

步骤 2:按评测参数构造提示词

chat_template.jinja 支持显式语言标签,评测时明确指定方向,保证可复现:

prompt = tokenizer.apply_chat_template( [{"role": "user", "content": "<待翻译的公司简介原文>"}], tokenize=True, add_generation_prompt=True, source_language="English", target_language="Japanese", )

模板会自动在开头写入<|plamo:op|>dataset\ntranslation\n,让模型进入翻译模式而不是通用对话模式。

步骤 3:用评测同款参数生成

对照 evaluation.json 的generation字段设置生成参数:

print(generate( model, tokenizer, prompt=prompt, sampler=make_sampler(temp=0), # temperature=0,贪心解码 max_tokens=2048, prefill_step_size=512, ))

参数对应关系:

  • temperature=0→ 贪心解码,输出完全确定
  • batch_size=1→ 单条请求,不并发
  • prefill_step_size=512→ prompt 按 512 token 分块预填充
  • max_tokens=2048→ 生成上限
  • prompt_tokens=364→ 官方示例的 prompt 长度,你的文本不同则此处不同

步骤 4:跑两轮并记录指标

官方流程是2 次预热后的正式运行(对应runs数组的两个条目),期间不要运行其他 llama.cpp 负载。需要记录的指标:

  1. 完整生成耗时(不含模型加载)
  2. 生成 token 数(含终止 token)
  3. 峰值内存
  4. 参考译文对比的 chrF 分数
  5. 段落数是否完整、是否以 EOS 正常结束

四、evaluation.json 逐字段解读

下面按文件结构逐块拆解 evaluation.json。

4.1hardware:评测硬件

"hardware": { "chip": "Apple M1 Max", "gpu_cores": 32, "memory_gb": 64 }

记录评测环境。你的机器不同,吞吐量数值不可直接对比,但趋势(如 4-bit 量化后约 6.6 GB 峰值内存)具有参考性。

4.2versions:软件版本

四个依赖包的精确版本号。这是"同版本对照"的基础——官方声明在 MLX 0.31.1 + mlx-lm 0.31.2 下重新生成了权重。

4.3source_model与source_revision

"source_model": "pfnet/plamo-2-translate", "source_revision": "cae8da342a3e051ed69f90ce24c23eacff908732"

指明权重转换的源模型与精确 commit。若你从不同 revision 转换,得到的 4-bit 权重会有差异,评测数字自然对不上。

4.4quantization:量化配置

"quantization": { "bits": 4, "group_size": 64, "mode": "affine", "distilled": false, "floating_weight_dtype": "bfloat16" }
  • bits: 4+group_size: 64+mode: affine→ 标准仿射 4-bit 量化,不是 DWQ 检查点
  • floating_weight_dtype: bfloat16→ 浮点权重(如 SSM 状态)使用 BF16

这与 config.json 中的quantization_config完全一致,可以互相印证。

4.5evaluation_scope:评测范围声明

"One supplied English-to-Japanese corporate-profile translation; not a general quality benchmark."

翻译过来就是:这只是单条公司英译日示例的校验,不是通用质量基准测试。理解这一点很重要,避免把它当成模型整体质量的结论。

4.6runs:两次运行的实测数据

每个 run 记录相同结构的指标,官方两次结果:

指标第 1 次第 2 次
完整生成耗时9.603 s9.611 s
prompt 吞吐230.5 tokens/s228.3 tokens/s
生成 token 数412412
解码吞吐51.41 tokens/s51.46 tokens/s
峰值内存6.568 GB6.568 GB
结束原因stop(EOS)stop(EOS)
chrF73.7773.77
段落数88

两次运行高度一致(贪心解码 + 确定性硬件行为的预期表现),这正是"验证可复现"的核心证据。

4.7reference_nll与reference_token_accuracy

"reference_nll": 0.45949387550354004, "reference_token_accuracy": 0.8242894411087036
  • reference_nll:把官方参考译文喂回模型做 teacher-forcing 得到的负对数似然,越低说明模型越"认可"这篇参考译文,量化后该值应保持低位
  • reference_token_accuracy:参考译文逐 token 比对的正确率,82.4% 说明量化模型输出与参考译文仍有差异,属正常现象

4.8known_output_limitations与comparison_limitations

官方诚实记录了两个局限:

  • 输出与参考译文不完全一致,仍有一处冗余表达
  • 旧版 DWQ 权重未纳入这次同源代码对照,因此这些数字不能证明新版本更优

五、判断你的结果是否成功复现

对照以下验收清单逐项检查:

  1. ✅ 权重加载后总参数量与 model.safetensors.index.json 一致(9,528,152,064 参数)
  2. ✅ 同一 prompt 下generation_tokens完全一致(贪心解码应为 412 或你的对应值)
  3. ✅ 输出以 EOS 正常停止,finish_reason为stop
  4. ✅ 段落数完整(官方示例为 8 段)
  5. ✅ 解码吞吐在同一硬件上接近 51 tokens/s;换硬件则重点看内存趋势
  6. ✅ 参考译文 chrF 与 NLL 在同一量级

🎯 提示:量化会改变翻译措辞,逐字相同不是目标,token 数一致 + 指标稳定 + 正常 EOS 结束才算复现成功。

六、常见坑位清单

  • 加载器忽略model_file:如果运行时用自家通用 PLaMo 2 实现,RoPE 基频(本模型为 1,000,000)和 SSM 时间步会算错,结果对不上。确认你的 mlx-lm 版本会读取 config.json 的model_file
  • 把 DWQ 当仿射量化:2026-10-07更新后的权重是普通 affine 量化,旧 DWQ 版本是另一个 revision,两者数字不可直接互比
  • PyTorch 直接加载:仓库里的 modeling_plamo.py 只是架构文档,不能让 PyTorch 加载这套打包的 MLX 权重
  • 省略语言标签:不传source_language/target_language会走自动方向模板,做可复现对比时建议始终显式指定

总结

复现 plamo-2-translate 本地验证的核心路径就是:对齐版本(mlx 0.31.1 / mlx-lm 0.31.2)→ 用仓库自定义建模代码加载 4-bit 权重 → 以 temperature=0、prefill_step_size=512、max_tokens=2048 跑两轮 → 对照 evaluation.json 中的 token 数、耗时、内存、chrF 与 NLL 逐项验收。只要记住这是单示例校验而非通用基准,且量化本身会微调措辞,你就能准确判断自己的评测结果是否达标。

【免费下载链接】plamo-2-translate

项目地址:https://ai.gitcode.com/hf_mirrors/mlx-community/plamo-2-translate
点击查看免费下载
上一篇:被混淆的音源脚本能看吗?lx-ikun-music-sources音源代码混淆与TSS解密实战解析
下一篇:为什么 AI 代理自称"已完成"不可信?delegate-skills 审查清单与提交边界完全指南

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

需要专业的网站建设服务?

联系我们获取免费的网站建设咨询和方案报价,让我们帮助您实现业务目标

立即咨询