主体步骤
- 安装环境
- 下载需要微调的模型数据 huggingface_hub上下载
- 创建微调的数据 Completion(一问一答)、chat、text
- 进行微调
- 验证
环境安装
pip install mlx-lm
pip install transformers
pip install torch
pip install numpy
下载数据
#安装依赖
pip install -U huggingface_hub
#设置环境变量
export HF_ENDPOINT=https://hf-mirror.com
#下载模型,保存至qwen2.5-0.5B目录
huggingface-cli download --resume-download Qwen/Qwen2.5-0.5B-Instruct --local-dir qwen2.5-0.5B
!!! 目录结构
[(base) may@Mac new_mlx % ls -alh
total 0
drwxr-xr-x 4 may staff 128B 12 4 19:56 .
drwxr-x---+ 31 may staff 992B 12 4 19:58 ..
drwxr-xr-x 30 may staff 960B 12 4 19:56 mlx-examples
drwxr-xr-x 13 may staff 416B 12 4 19:19 qwen2.5-0.5B
mlx-examples 和qwen2.5-0.5B 在同一目录下。
下面的代码将在 mlx-examples/lora 下进行
mlx-examples
qwen2.5-0.5B
-lora
-将在此处执行代码命令。
--data
---train.jsonl
创建数据
git clone git@github.com:ml-explore/mlx-examples.git
git clone https://github.com/ml-explore/mlx-examples.git
#以上二选一
#下载微调框架
#若下载失败可以使用
git clone https://bgithub.xyz/ml-explore/mlx-examples.git
#修改其中lora/data/train.jsonl
#替换为下面的数据 Completion(一问一答)
{"prompt": "今天星期几", "completion": "星期八"}
{"prompt": "太阳什么时候升起?", "completion": "晚上八点"}
{"prompt": "忘情水是什么水", "completion": "忘情水是可以让人忘却烦恼的水"}
{"prompt": "蓝牙耳机坏了应该看什么科", "completion": "耳鼻喉科"}
{"prompt": "鲁迅为什么讨厌周树人", "completion": "因为他们是仇人"}
开始微调
mlx_lm.lora --model ../../qwen2.5-0.5B --train --data ./data
#--model /Users/wuqingming/Downloads/qwen2.5-0.5B 刚刚你下载的模型数据
#--data ./data 使用刚刚你准备的数据
训练后,在lora/adapters 生成一堆文件,需要将其合并
mlx_lm.fuse --model ../../qwen2.5-0.5B --adapter-path adapters --save-path qwen2.5-0.5B-test_1
#--model ../../qwen2.5-0.5B 刚刚你下载的模型数据
#--adapter-path adapters 训练好的 lora/adapters文件
#--save-path qwen2.5-0.5B-test_1 新名字
验证
#原始模型推理问题
mlx_lm.generate --model ../../qwen2.5-0.5B --prompt "蓝牙耳机坏了应该看什么科"
#微调后的模型推理问题
mlx_lm.generate --model qwen2.5-0.5B-test_1 --prompt "蓝牙耳机坏了应该看什么科"
#--model qwen2.5-0.5B-test_1 刚刚你合并的模型数据