前言:为什么需要 LLaMA Factory?

大语言模型(LLM)的训练和微调往往伴随着复杂的参数配置、分布式训练适配以及数据格式处理等问题。LLaMA Factory 正是为了解决这些痛点而生的框架。

简单来说,LLaMA Factory 是一个集成了多种主流高效微调技术(如 LoRA、QLoRA)的统一工具。它最大的特点就是「低门槛」与「高灵活度」。

告别代码:支持命令行(CLI)和 WebUI 两种操作方式,即使不擅长写代码,也能通过界面完成微调。

节省显存:集成了 QLoRA 等方案,让消费级显卡也能微调几十亿甚至上百亿参数的模型。

模型覆盖广:支持 LLaMA、Qwen、Baichuan 等主流开源模型。

本教程将基于 Ubuntu 22.04 系统,手把手教你安装LLaMA Factory并实现模型微调。

第一阶段:准备环境与硬件


  • 安装好显卡驱动与CUDA
  • 安装好conda虚拟环境,并且python版本大于等于3.11
  • 这部分内容网上参考资料颇多,就不再赘述

第二阶段:安装 LLaMA Factory


首先激活conda环境

conda activate qwenEnv

现在主流方式是从 GitHub 源码安装,这样可以保证使用的是最新版本,方便后续更新

# 克隆项目(如果网络慢,可以先去 GitHub 下载 zip 包)
git clone https://github.com/hiyouga/LLaMA-Factory.git
cd LLaMA-Factory

安装依赖建议按照标准安装,这种方式不会建立源码链接,所有文件直接复制到 site-packages 目录,便于环境隔离,以及后续可能的conda环境的迁移

# 标准安装,不包含 -e 参数
pip install .[torch,metrics]

安装完成后,可通过如下命令来确认是否安装成功

# 快速验证
python -c "import torch; print(f'CUDA: {torch.cuda.is_available()}'); from llamafactory import get_version; print(f'LLaMA Factory: {get_version()}')"

第三阶段:LLaMA Factory使用


在虚拟环境中切换到cd LLaMA-Factory根目录,通过如下命令启动前端调试页面

llamafactory-cli webui

启动成功后,可通过http://服务器地址:7860/进行访问

在这里插入图片描述

LLaMA-Factory主要分为训练模块、评估模块、对话模块以及导出模块

3.1 训练数据准备


先自定义json数据,标准格式如下。instruction有点类似于角色定位,inputoutput对应用户的输入和预计输出。其实在实际的训练过程中,promote=instruction+input,框架会自动将其拼接起来

[
	{
    "instruction": "判断以下评论的情感倾向(积极/消极/中性)",
    "input": "这手机电池太垃圾了,充满电用不到半天就没电了,而且动不动就发烫,后悔死了!",
    "output": "消极"
	},
    {
    "instruction": "判断以下评论的情感倾向(积极/消极/中性)",
    "input": "这个鼠标手感超棒,反应灵敏,颜值也很高,客服态度特别好,五星好评!",
    "output": "积极"
	}
]

当前写好的训练数据需要注册到LLaMA-Factory的数据配置文件中,只有注册了的数据集,才能被调用

编辑LLaMA-Factory/data/dataset_info.json文件,将我们的自定义数据集注册进去。名称可以自定义,file_name则填写自定义数据集的绝对路径。

在这里插入图片描述

3.2 train 训练模块


训练模块是LLaMA-Factory最核心的功能

第一,搜索模型的名称,填写需要训练模型的绝对路径,以及模型的下载源

在这里插入图片描述

第二,微调方法一般选择lora即可,第一次训练的时候,检查点路径为空白即可

在这里插入图片描述

第三,选择量化等级和量化方法

量化等级:模型权重占比,位数越小,显存占用越低,精度轻微下降,根据电脑性能选择;

  • none表示16bit,无损耗,需要很高的显存
  • 8bit权重压缩一般,精度损耗小,性价比最高
  • 4bit权重压缩至四分之一,显存占用降低70%,精度有部分损耗,但依旧很难看出
  • 2/3bit逻辑混乱,回答错误

量化方法:在线微调适合bnb格式,速度稳定,当量化等级为none时不生效

在这里插入图片描述

第四,选择合适的数据集,在前端的数据集区域可通过下拉框选择对应的自定义数据(这里便是我们注册好的数据),右侧可预览数据

在这里插入图片描述

第五,设置微调参数,参数过多,这里不一一解释

在这里插入图片描述

第六,设置训练输出目录名称(例如图中是intelligentLoraRound4),点击开始训练即可,训练时间和电脑性能相关

在这里插入图片描述

训练出来的模型参数被放置在如下位置 LLaMA-Factory/saves/模型名称/lora/输出目录名称,例如LLaMA-Factory/saves/Qwen3.5-4B-Base/lora/intelligentLoraRound4。训练好的lora文件夹可以被vLLM直接加载,实现不同的功能。

需要注意的是,如果数据量过大,显卡支撑不住,可以拆分数据集训练

对于第一次训练好的lora参数,可以在第二次训练的时候加载(即检查点路径),但是输出目录建议使用一个新的目录,不要和旧目录一致

例如我在第三次训练的时候,选择dataRound3数据集,输出目录为dataLoraRound3。第四次训练的时候,选择dataRound4数据集,选择检查点路径为dataLoraRound3,输出目录为dataLoraRound4即可,能明显的看到loss会在上一次终止左右地方开始下降

3.3 chat 对话模块


对话模块就是单纯加载基底模型 或 将 lora参数加载到基底模型中,进行对话

在这里插入图片描述

选择是否填入系统提示词,或者开启思考、设置最大生成长度等,即可开始对话

在这里插入图片描述

3.4 export 导出模块


导出模块就是将训练好的lora参数合并到基底模型中,形成一个新的模型

可以选择量化等级,自定义导出的目录

在这里插入图片描述

Logo

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

更多推荐