使用MLX在Apple Silicon上微調語言模型
本文詳細介紹瞭如何在配備Apple Silicon芯片的Mac上,利用MLX框架本地微調開源語言模型,無需雲GPU和額外成本。涵蓋環境搭建、數據集準備、LoRA適配器訓練、量化減少內存使用、測試及模型融合部署等完整流程。
在配備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.jsonl、valid.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定製能力。