使用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定製能力。