在 Apple 芯片的 Mac 上微调模型,MLX LM 把成果保存在适配器里

开源项目猫目发布于 来源:MLX LM 官方资料
官方LoRA流程从JSONL样本到adapters,再用同一基座加载生成;训练、验证与测试各有材料位置。
在 Apple 芯片的 Mac 上微调模型,MLX LM 把成果保存在适配器里

为什么值得关注

让已有任务样本成为可复用的本地微调产物,而不必每次只修改提示词。

适合谁:使用Apple silicon Mac、想为明确文本任务训练LoRA的开发者

这次有哪些亮点

  • chat/completions等JSONL格式对应任务样本
  • 适配器单独保存,可评估、续训及与基座融合

使用前需要知道

需要兼容模型、训练依赖与足够统一内存;量化基座可用QLoRA但不保证质量,MLX LM的MIT不覆盖基座、训练数据或输出分发条件。

给模型几组示例,希望它学习固定回答方式,最后留下什么?MLX LM 的 LoRA 文档给出的产物很明确:一份适配器配置和学习到的权重,之后可以与同一基座一起加载,不用把训练过程混在每次提示词里。

项目面向 Apple silicon 上的文本生成与微调。它适合已有明确任务样本、希望在 Mac 上研究小规模适配的人;“本地能聊天”仍不代表机器能训练任意大小的模型。

样本先表达你希望学到的任务

官方指南支持 chat、tools、completions 与 text 格式。chat 保存多轮消息,completions 则把 prompt 与 completion 分开。每条 JSONL 记录占一行,输入与目标不能只散落在几份没有约定的笔记里。

教学情境中,若要学习工单摘要的固定格式,可以让 prompt 放原始工单,completion 放人工整理的目标摘要。它解释样本该怎样对应,不代表这个模型已在中文工单上达到某种效果。

train.jsonl 用于训练,valid.jsonl 可选,用于观察验证损失;test.jsonl 用于测试。三者承担不同职责,不能把训练中已经反复看过的例子当成最终独立检查。

学到的部分,可以单独留下

运行 mlx_lm.lora 时选择模型、数据位置与训练选项。基座如果已经量化,就走 QLoRA;否则采用普通 LoRA。默认学习结果存入 adapters,也可以用 adapter-path 改位置。

随后用 mlx_lm.generate 指定同一基座与适配器路径,观察生成。基座、训练数据版本、适配器应该一起记录:只有一份 adapters 文件夹,却不知道它适配了哪个模型,后面很难复用或解释结果。

默认训练会对样本各 token 计算损失;chat 和 completion 数据可以用 mask-prompt 只对目标完成部分计算。这一项改变的是模型被要求学习哪部分文本,值得结合样本格式理解。

融合不是唯一交付方式

指南提供 fuse,将适配器与模型合并,并可导出或上传。GGUF 导出另有模型结构和精度支持范围,不能把“可融合”推成任意模型都能转到任何运行引擎。

保留适配器适合继续比较同一基座上的不同训练版本;融合则会形成另一份较完整的模型产物。无论选择哪种,都还要按基座许可和数据条件判断使用与分发。

内存不足时,文档建议考虑更小批量、较少训练层、较短样本或梯度检查点。这些都有计算与质量取舍。MLX LM 采用 MIT,它带来的具体入口,是把自己的样本、一次训练和一份可载入成果连起来;是否学到了目标行为,仍应由没参加训练的材料来回答。

原始资料:MLX LM 官方资料

以上为编辑整理,功能、许可与使用条件以官方说明为准。

返回每日分享