macbook m4 LLaMA-Factory入门级微调

明白你的需求。作为一个初学者,面对大模型复杂的生态确实容易感到"步子迈得太大"。既然你已经有了 Anaconda,我们就不再安装 Miniforge(它们的功能是重合的,都是环境管理器)。

在 MacBook M4 上,我们要利用苹果的 Unified Memory(统一内存)MPS(Metal Performance Shaders) 来加速。

下面是一个**"保姆级" "零断层"的落地方案。我们将微调一个"专属于你的 Go 语言助手"**。


第一步:环境搭建(清理战场,准备地基)

为什么要做这一步? 大模型微调需要很多特定的软件库(像 PyTorch、Transformers),直接装在系统里会弄乱环境。Anaconda 就像是一个"集装箱",我们在集装箱里折腾,不影响外面。

  1. 打开终端 (Terminal) :按下 Command + 空格,输入 Terminal 回车。

  2. 创建虚拟环境

    bash 复制代码
    conda create -n factory python=3.12.6 -y
    conda activate factory

    解释:-n factory 是给环境起名叫 factory,python=3.10 是指定版本,因为这个版本目前最稳。

  3. 安装 LLaMA-Factory
    我们将代码下载到本地,并安装它运行所需的"零件"。

    bash 复制代码
    git 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 级别最强的模型之一)。

  1. 启动原始模型对话

    bash 复制代码
    llamafactory-cli chat --model_name_or_path Qwen/Qwen2.5-3B-Instruct --template qwen

    注意:第一次运行会自动下载模型(约 6GB),请确保网络通畅。

  2. 提问测试

    • 问:"你是谁?" -> 它通常回答:"我是由阿里巴巴开发的超大规模语言模型..."
    • 问:"什么是 GVM?" -> 它会给出一个通用的技术解释。
  3. 记录结果 :截图或记下它的回答,这是你的**"对照组"**。输入 exit 退出对话。

  4. ModelScope(魔搭)国内源加速模型下载

    • 安装 modelscope 下载工具
    bash 复制代码
    pip 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}")
    • 最终我们启用本地模型的方式进行聊天
    bash 复制代码
    llamafactory-cli chat --model_name_or_path /Users/liujiaqi/Desktop/install/llama_factory/my_models/models/Qwen2.5-3B-Instruct --template qwen

第三步:编写"教材"(数据准备)

我们要让它以为自己是 "你的私人 Go 语言导师"

  1. 进入数据目录
    LLaMA-Factory/data 文件夹下,新建一个文件叫 my_go_tutor.json

  2. 写入以下内容 (建议至少准备 3-5 条,这里展示格式):

    json 复制代码
    [
      {
        "instruction": "你是谁?",
        "input": "",
        "output": "你好!我是你的专属 Go 语言导师,专注于帮你解决 GVM 和 LangGraph 相关的问题。"
      },
      {
        "instruction": "我想在 Mac 上装 GVM,该选哪个版本?",
        "input": "",
        "output": "作为你的导师,我建议你通过 GVM 安装 Go 1.25.8 二进制版本,因为 M4 芯片对这个版本的兼容性最稳。"
      }
    ]
  3. 注册教材
    这一步最关键。打开 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)。我们要带着补丁再次运行对话。

  1. 启动微调后的模型

    bash 复制代码
    llamafactory-cli chat \
        --model_name_or_path Qwen/Qwen2.5-3B-Instruct \
        --adapter_name_or_path saves/my_go_model/lora \
        --template qwen
  2. 重复测试题

    • 问:"你是谁?" -> 预期回答"你好!我是你的专属 Go 语言导师..."
    • 问:"我想在 Mac 上装 GVM,该选哪个版本?" -> 预期回答:你应该能看到它给出了你刚才教它的那个特定建议。

总结:为什么要这么做?(透彻解析)

  1. LoRA 补丁技术:我们并没有修改那个 6GB 的大模型文件,而是生成了一个几十 MB 的"补丁"。运行时,Mac 把补丁叠在大模型上,模型说话风格就变了。
  2. MPS 加速:Mac 的统一内存让 CPU 和 GPU 共享数据,不需要像 PC 那样把数据在显存和内存之间搬来搬去,所以训练效率很高。
  3. 对比的意义 :通过对比"你是谁",你能直观感受到知识注入 是否成功。
    **
相关推荐
WiSirius1 天前
LLM:基于 AgentScope + Streamlit 的 AI Agent脑暴室
人工智能·深度学习·自然语言处理·大模型·llama
掘金安东尼1 天前
llama.cpp、Ollama、LM Studio:背后是谁在做?为什么会出现?要什么机器才能跑?
llama
海天一色y1 天前
LLaMA-Factory PPO 训练实战:从 SFT 到 RLHF 完整指南
llama
接着奏乐接着舞。1 天前
5分钟本地跑起大模型
人工智能·llama
liuze4082 天前
Ollama安装
llama
小超同学你好2 天前
Transformer 14. DeepSeekMoE 架构解析:与 LLaMA 以及 Transformer 架构对比
语言模型·架构·transformer·llama
小超同学你好2 天前
Transformer 15: DeepSeek-V2 架构解析:MLA + DeepSeekMoE 与主流架构对比
语言模型·架构·transformer·llama
品克缤3 天前
Trading-Analysis:基于“规则+LLM”的行情分析终端(兼谈 Vibe Coding 实战感)
前端·后端·node.js·vue·express·ai编程·llama
seaside20033 天前
llama.cpp 部署qwen3.5 2B 高通芯片安卓实战
llama·qwen3.5·高通soc