Use MLX fine-tune LLM on Mac
在 MAC 上 使用 MLX 微调 LLM
什么是MLX
MLX是由苹果的机器学习研究团队推出的用于机器学习的阵列框架,该开源框架专为Apple Silicon芯片而设计优化,从NumPy、PyTorch、Jax和ArrayFire等框架中吸取灵感,提供简单友好的使用方法,它可以在Apple Silicon``````CPU/GPU上进行ML训练和推理,还支持使用LoRA、QLoRA等方法对LLM进行微调。
环境准备
modelscope_envConda环境,用于下载模型:1
2
3
4
5
6
7
8# 创建modelscope环境
conda create -n modelscope_env python=3.12 -y
# 激活modelscope环境
conda activate modelscope_env
# 下载modelscope
pip install modelscope
# 退出modelscope环境
conda deactivatemlx_envConda环境,用于运行MLX:1
2
3
4
5
6
7
8# 创建mlx环境
conda create -n mlx_env python=3.12 -y
# 激活mlx环境
conda activate mlx
# 安装mlx-lm、transformers、torch、numpy
pip install mlx-lm transformers torch numpy
# 退出mlx环境
conda deactivate
微调模型
下载模型
1
2
3
4# 激活modelscope环境
conda activate modelscope_env
# 下载Qwen3-0.6B模型到本地目录
modelscope download --model Qwen/Qwen3-0.6B --local_dir /models/modelscope/Qwen/Qwen3-0.6B准备数据集,
MLX支持三种格式的数据集Completion、chat以及text,这里新增train.jsonl文件,以Completion数据集为例:1
vim train.jsonl
1
2
3
4
5{"prompt": "今天星期几", "completion": "星期八"}
{"prompt": "太阳什么时候升起?", "completion": "晚上八点"}
{"prompt": "忘情水是什么水", "completion": "忘情水是可以让人忘却烦恼的水"}
{"prompt": "蓝牙耳机坏了应该看什么科", "completion": "耳鼻喉科"}
{"prompt": "鲁迅为什么讨厌周树人", "completion": "因为他们是仇人"}准备微调框架代码
1
git clone https://github.com/ml-explore/mlx-examples.git
将数据集应用到微调框架代码中
1
mv train.jsonl mlx-examples/lora/data/
使用微调框架进行微调,结果生成模型适配器权重文件目录
adapters1
mlx_lm.lora --model /models/modelscope/Qwen/Qwen3-0.6B --train --data mlx-examples/lora/data
微调过程如下:
最终生成:
低秩模型适配器与原模型融合,生成新模型
1
mlx_lm.fuse --model /models/modelscope/Qwen/Qwen3-0.6B --adapter-path mlx-examples/adapters --save-path /models/modelscope/Qwen/Qwen3-0.6B-garden
使用推理命令,验证新模型效果
1
2
3
4# 原模型推理
mlx_lm.generate --model /models/modelscope/Qwen/Qwen3-0.6B --prompt "蓝牙耳机坏了应该看什么科"
# 微调模型推理
mlx_lm.generate --model /models/modelscope/Qwen/Qwen3-0.6B-garden --prompt "蓝牙耳机坏了应该看什么科"
参考文献
本博客所有文章除特别声明外,均采用 CC BY-NC-SA 4.0 许可协议。转载请注明来源 后端学习手记!














