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

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

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


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

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

  1. 打开终端 (Terminal):按下 Command + 空格,输入 Terminal 回车。
  2. 创建虚拟环境
    conda create -n factory python=3.12.6 -y
    conda activate factory
    
    解释:-n factory 是给环境起名叫 factory,python=3.10 是指定版本,因为这个版本目前最稳。
  3. 安装 LLaMA-Factory
    我们将代码下载到本地,并安装它运行所需的“零件”。
    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. 启动原始模型对话

    llamafactory-cli chat --model_name_or_path Qwen/Qwen2.5-3B-Instruct --template qwen
    

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

  2. 提问测试

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

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

    • 安装 modelscope 下载工具
    pip install modelscope -U
    
    • 如下两种方式下载都会报错
    # 关键修改:在模型名前加 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代码下载
    # 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}")
    
    • 最终我们启用本地模型的方式进行聊天
    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 条,这里展示格式):
    [
      {
        "instruction": "你是谁?",
        "input": "",
        "output": "你好!我是你的专属 Go 语言导师,专注于帮你解决 GVM 和 LangGraph 相关的问题。"
      },
      {
        "instruction": "我想在 Mac 上装 GVM,该选哪个版本?",
        "input": "",
        "output": "作为你的导师,我建议你通过 GVM 安装 Go 1.25.8 二进制版本,因为 M4 芯片对这个版本的兼容性最稳。"
      }
    ]
    
  3. 注册教材
    这一步最关键。打开 data/dataset_info.json,在最开头添加一行:
    "my_go_data": {
      "file_name": "my_go_tutor.json"
    },
    
    解释:这告诉系统,我有一个叫 my_go_data 的数据集可以用。

第四步:开始“特训”(微调动工)

我们在 LLaMA-Factory 目录下新建一个文件 mac_train.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

执行训练命令

llamafactory-cli train mac_test_lora.yaml

解释:你会看到终端开始刷屏,Loss(损失值)会逐渐下降。M4 芯片跑这个 3B 模型,大约几分钟就能跑完。


第五步:微调后的“期末考试”(对比测试)

训练完后,系统会在 saves/my_go_model/lora 生成一个“补丁”(Adapter)。我们要带着补丁再次运行对话。

  1. 启动微调后的模型
    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. 对比的意义:通过对比“你是谁”,你能直观感受到知识注入是否成功。
    **
Logo

AtomGit 是由开放原子开源基金会联合 CSDN 等生态伙伴共同推出的新一代开源与人工智能协作平台。平台坚持“开放、中立、公益”的理念,把代码托管、模型共享、数据集托管、智能体开发体验和算力服务整合在一起,为开发者提供从开发、训练到部署的一站式体验。

更多推荐