AI News HubLIVE
站内改写2 分钟阅读

使用MLX在Apple Silicon上微调语言模型

本文详细介绍了如何在配备Apple Silicon芯片的Mac上,利用MLX框架本地微调开源语言模型,无需云GPU和额外成本。涵盖环境搭建、数据集准备、LoRA适配器训练、量化减少内存使用、测试及模型融合部署等完整流程。

来源KDnuggets作者: Vinod Chugani

在配备Apple Silicon芯片的Mac上微调语言模型已成为现实,这得益于苹果机器学习研究团队开发的开源框架MLX。与大多数从NVIDIA硬件移植到Mac的工具不同,MLX从一开始就针对Apple Silicon的统一内存架构设计,CPU和GPU共享同一内存池,消除了数据在系统内存和显存之间的复制开销。这使得在16GB内存的Mac上本地微调模型变得切实可行。

要开始使用,首先需要一台Apple Silicon Mac(M1或更新)、macOS Ventura 13.5或更高版本以及Python 3.10+。安装MLX LM及其训练扩展后,可以通过一条命令快速验证:mlx_lm.generate。模型权重会从Hugging Face的MLX社区自动下载并缓存。需要注意的是,MLX微调要求模型采用Hugging Face的safetensors格式,GGUF格式仅支持推理。

数据准备是微调的关键步骤。MLX LM要求训练数据以文件夹形式组织,包含train.jsonlvalid.jsonl和可选的test.jsonl文件,每行为一个JSON对象。支持聊天、补全和文本三种格式,其中聊天格式最为通用,能自动应用模型的对话模板。建议将数据按80%和10-20%的比例分为训练集和验证集,200到500个示例是改变模型行为的合理起点。

LoRA(低秩适应)是微调的核心技术。它冻结原始权重,仅训练小型适配矩阵,从而将内存和存储需求降至全量微调的一小部分。训练命令mlx_lm.lora可以指定模型、数据路径、迭代次数和批次大小。关键参数包括--fine-tune-type(lora、dora或full)、--num-layers(适配的层数)和--iters(训练长度)。对于16GB内存的Mac,建议设置--batch-size 1以降低内存使用。如果内存紧张,可以降低层数或添加--grad-checkpoint

量化是减少内存使用的另一利器。MLX内置量化支持,可以在微调量化模型(QLoRA)时直接使用4位权重,将7B模型的权重占用降至原来的1/3.5左右。用户也可以通过mlx_lm.convert命令自行量化全精度模型。

训练完成后,可以通过测试命令评估适配器性能,并使用mlx_lm.generate命令查看模型响应。为了部署,可以使用mlx_lm.fuse将适配器融合回基础权重,生成独立模型。融合后的模型可以通过mlx_lm.server启动兼容OpenAI的服务器端点,或导入LM Studio等图形化工具进行对比测试。

总之,整个工作流程完全在本地Mac上运行,无需云GPU费用,数据不离开设备。这为个人开发者和小团队提供了强大的AI定制能力。