明白你的需求。作为一个初学者,面对大模型复杂的生态确实容易感到"步子迈得太大"。既然你已经有了 Anaconda,我们就不再安装 Miniforge(它们的功能是重合的,都是环境管理器)。
在 MacBook M4 上,我们要利用苹果的 Unified Memory(统一内存) 和 MPS(Metal Performance Shaders) 来加速。
下面是一个**"保姆级"、 "零断层"的落地方案。我们将微调一个"专属于你的 Go 语言助手"**。
第一步:环境搭建(清理战场,准备地基)
为什么要做这一步? 大模型微调需要很多特定的软件库(像 PyTorch、Transformers),直接装在系统里会弄乱环境。Anaconda 就像是一个"集装箱",我们在集装箱里折腾,不影响外面。
-
打开终端 (Terminal) :按下
Command + 空格,输入Terminal回车。 -
创建虚拟环境 :
bashconda create -n factory python=3.12.6 -y conda activate factory解释:
-n factory是给环境起名叫 factory,python=3.10是指定版本,因为这个版本目前最稳。 -
安装 LLaMA-Factory :
我们将代码下载到本地,并安装它运行所需的"零件"。bashgit clone https://github.com/hiyouga/LLaMA-Factory.git cd LLaMA-Factory pip install -e '.[metrics,qwen,modelscope]'解释:
[metrics,qwen]是安装处理 Qwen 模型和计算分数所需的额外插件。modelscope是为了让你在国内下载模型更快。
第二步:微调前的"摸底考试"(Baseline 测试)
在没教它新知识前,看看它表现如何。我们将使用 Qwen2.5-3B-Instruct(阿里巴巴出品,目前 3B 级别最强的模型之一)。
-
启动原始模型对话:
bashllamafactory-cli chat --model_name_or_path Qwen/Qwen2.5-3B-Instruct --template qwen注意:第一次运行会自动下载模型(约 6GB),请确保网络通畅。
-
提问测试:
- 问:
"你是谁?"-> 它通常回答:"我是由阿里巴巴开发的超大规模语言模型..." - 问:
"什么是 GVM?"-> 它会给出一个通用的技术解释。
- 问:
-
记录结果 :截图或记下它的回答,这是你的**"对照组"**。输入
exit退出对话。 -
ModelScope(魔搭)国内源加速模型下载:
- 安装 modelscope 下载工具
bashpip install modelscope -U- 如下两种方式下载都会报错
bash# 关键修改:在模型名前加 modelscope: 前缀,强制从国内魔搭源下载 llamafactory-cli chat --model_name_or_path modelscope:Qwen/Qwen2.5-3B-Instruct --template qwen # 下载 Qwen2.5-3B-Instruct 到本地指定目录(比如 ~/models/Qwen2.5-3B-Instruct) python -m modelscope.cli download --model Qwen/Qwen2.5-3B-Instruct --local-dir ~/models/Qwen2.5-3B-Instruct- 最终成功的方式是用python代码下载
py# download_qwen_model.py from modelscope.hub.snapshot_download import snapshot_download import os # 模型名称(魔搭平台的Qwen2.5-3B-Instruct) MODEL_ID = "Qwen/Qwen2.5-3B-Instruct" # 本地保存路径(你指定的路径) LOCAL_DIR = "/Users/xxx/Desktop/install/llama_factory/my_models/models/Qwen2.5-3B-Instruct" # 确保保存目录存在 os.makedirs(LOCAL_DIR, exist_ok=True) # 开始下载(适配低版本 modelscope,仅保留核心参数) print(f"开始下载模型到:{LOCAL_DIR}") # 去掉 resume_download 和 show_progress,低版本不支持 snapshot_download( model_id=MODEL_ID, local_dir=LOCAL_DIR ) print("\n✅ 模型下载完成!") print(f"模型文件路径:{LOCAL_DIR}")- 最终我们启用本地模型的方式进行聊天
bashllamafactory-cli chat --model_name_or_path /Users/liujiaqi/Desktop/install/llama_factory/my_models/models/Qwen2.5-3B-Instruct --template qwen
第三步:编写"教材"(数据准备)
我们要让它以为自己是 "你的私人 Go 语言导师"。
-
进入数据目录 :
在LLaMA-Factory/data文件夹下,新建一个文件叫my_go_tutor.json。 -
写入以下内容 (建议至少准备 3-5 条,这里展示格式):
json[ { "instruction": "你是谁?", "input": "", "output": "你好!我是你的专属 Go 语言导师,专注于帮你解决 GVM 和 LangGraph 相关的问题。" }, { "instruction": "我想在 Mac 上装 GVM,该选哪个版本?", "input": "", "output": "作为你的导师,我建议你通过 GVM 安装 Go 1.25.8 二进制版本,因为 M4 芯片对这个版本的兼容性最稳。" } ] -
注册教材 :
这一步最关键。打开data/dataset_info.json,在最开头添加一行:json"my_go_data": { "file_name": "my_go_tutor.json" },解释:这告诉系统,我有一个叫
my_go_data的数据集可以用。
第四步:开始"特训"(微调动工)
我们在 LLaMA-Factory 目录下新建一个文件 mac_train.yaml(配置文件),把训练指令写进去。
配置文件内容(直接复制):
yaml
### 1. 模型与数据
model_name_or_path: Qwen/Qwen2.5-3B-Instruct
dataset: my_go_data
template: qwen
cutoff_len: 1024
### 2. 微调方法:LoRA (只动模型的小部分参数)
stage: sft
do_train: true
finetuning_type: lora
lora_target: all
### 3. 训练参数(针对 Mac M4 优化)
per_device_train_batch_size: 1
gradient_accumulation_steps: 8
lr_scheduler_type: cosine
learning_rate: 1.0e-4
num_train_epochs: 5.0 # 循环练 5 遍,让它记牢
pure_bf16: true # M4 支持的高性能浮点格式
### 4. 输出路径
output_dir: saves/my_go_model/lora
logging_steps: 1
plot_loss: true
执行训练命令:
bash
llamafactory-cli train mac_test_lora.yaml
解释:你会看到终端开始刷屏,Loss(损失值)会逐渐下降。M4 芯片跑这个 3B 模型,大约几分钟就能跑完。
第五步:微调后的"期末考试"(对比测试)
训练完后,系统会在 saves/my_go_model/lora 生成一个"补丁"(Adapter)。我们要带着补丁再次运行对话。
-
启动微调后的模型 :
bashllamafactory-cli chat \ --model_name_or_path Qwen/Qwen2.5-3B-Instruct \ --adapter_name_or_path saves/my_go_model/lora \ --template qwen -
重复测试题 :
- 问:
"你是谁?"-> 预期回答 :"你好!我是你的专属 Go 语言导师..." - 问:
"我想在 Mac 上装 GVM,该选哪个版本?"-> 预期回答:你应该能看到它给出了你刚才教它的那个特定建议。
- 问:
总结:为什么要这么做?(透彻解析)
- LoRA 补丁技术:我们并没有修改那个 6GB 的大模型文件,而是生成了一个几十 MB 的"补丁"。运行时,Mac 把补丁叠在大模型上,模型说话风格就变了。
- MPS 加速:Mac 的统一内存让 CPU 和 GPU 共享数据,不需要像 PC 那样把数据在显存和内存之间搬来搬去,所以训练效率很高。
- 对比的意义 :通过对比"你是谁",你能直观感受到知识注入 是否成功。
**