1. Llama Factory 到底是什么?

1.1 简单比喻

想象你要定制一辆汽车:

传统方式(没有 Llama Factory):

  • 你需要自己造发动机、设计车身、组装零件

  • 需要懂机械工程、电子技术、材料科学

  • 整个过程复杂、容易出错、耗时很长

使用 Llama Factory:

  • 你只需要:

    1. 选择基础车型(预训练模型)

    2. 告诉工厂你的需求(训练数据)

    3. 选择改装方案(训练方法)

    4. 工厂自动完成所有改装

  • 你不需要懂技术细节,只需要提需求

1.2 一句话定义

Llama Factory 是一个"AI模型定制工厂",它让普通人也能轻松地定制和训练自己的大语言模型。

2. 为什么需要 Llama Factory?

2.1 传统训练的痛点

假设你想训练一个懂医疗知识的AI助手:

# 传统方式 - 需要写很多复杂代码
import torch
from transformers import AutoModel, AutoTokenizer, TrainingArguments, Trainer
from datasets import load_dataset
import deepspeed

# 1. 数据预处理(很复杂)
def preprocess_function(examples):
    # 需要懂分词、填充、截断等技术
    pass

# 2. 模型配置(容易出错)
training_args = TrainingArguments(
    output_dir="./results",
    num_train_epochs=3,
    per_device_train_batch_size=4,
    gradient_accumulation_steps=4,
    learning_rate=2e-5,
    # ... 还有几十个参数需要设置
)

# 3. 训练循环(需要深度学习知识)
trainer = Trainer(
    model=model,
    args=training_args,
    train_dataset=tokenized_datasets,
    data_collator=data_collator,
    # ... 更多复杂配置
)

# 4. 处理各种错误(内存不足、配置错误等)

问题总结:

  • 技术门槛高:需要懂编程、深度学习、分布式训练

  • 配置复杂:几十个参数需要调优

  • 容易出错:内存溢出、配置错误、训练不稳定

  • 效率低下:大量时间花在调试上

2.2 Llama Factory 的解决方案

# 使用 Llama Factory 的方式
from llama_factory import TrainArguments, run_train

# 只需要配置几个关键参数
train_args = TrainArguments(
    model_name_or_path="Qwen/Qwen2-7B-Instruct",  # 基础模型
    dataset="my_medical_data",                    # 你的数据
    finetuning_type="lora",                       # 训练方法
    output_dir="./my_medical_ai"                  # 输出位置
)

# 一键开始训练
run_train(train_args)

3. Llama Factory 的核心功能详解

3.1 四种训练方法(像选择汽车改装方案)

方案1:全参数微调 - "整车大改装"

        工作原理:更新模型的所有参数
        ✅ 优点:效果最好,能力最强
        ❌ 缺点:成本高,需要大量GPU内存
        💡 适合:大公司,有充足计算资源
        🔧 需求:多张A100/H100显卡

        内存需求:模型大小 × 4 × 3 ≈ 12倍模型大小
        例如:7B模型需要 7×4×3 = 84GB GPU内存

方案2:LoRA - "加装智能配件"

        工作原理:只训练少量新增的参数,不改变原模型
        ✅ 优点:节省90%内存,训练快,可切换不同任务
        ❌ 缺点:效果略低于全参数微调
        💡 适合:大多数应用场景
        🔧 需求:单张RTX 3090/4090即可

        内存需求:模型大小 + 少量额外参数
        例如:7B模型只需要 7GB + 0.1GB = 7.1GB GPU内存

方案3:QLoRA - "轻量化智能配件"

        工作原理:在LoRA基础上,把模型压缩到4位精度
        ✅ 优点:极省内存,消费级显卡就能训练大模型
        ❌ 缺点:效果有轻微损失
        💡 适合:个人开发者,资源有限
        🔧 需求:单张RTX 3080/4060即可

        内存需求:模型大小 × 0.5 + 少量参数
        例如:7B模型只需要 7×0.5 + 0.1 = 3.6GB GPU内存

方案4:P-Tuning - "只改方向盘"

        工作原理:只训练极少量提示参数
        ✅ 优点:超级省内存,训练极快
        ❌ 缺点:效果有限,能力提升小
        💡 适合:快速实验,极小资源
        🔧 需求:几乎任何显卡都能用

        内存需求:模型大小 + 极少量参数

4. Llama Factory 的完整工作流程

4.1 第一步:准备数据(像准备菜谱)

数据格式要求:

// 你的训练数据应该长这样
[
  {
    "instruction": "给以下症状提供医疗建议",
    "input": "患者发烧38.5℃,咳嗽,流鼻涕",
    "output": "建议多休息、多喝水,可服用退烧药,如症状持续请就医"
  },
  {
    "instruction": "翻译以下英文",
    "input": "Hello, how are you?",
    "output": "你好,最近怎么样?"
  }
]

各个字段的含义:

  • instruction:你要AI完成什么任务

  • input:给AI的输入信息

  • output:你期望AI输出的正确答案

数据准备技巧:

  1. 数量:至少100条,越多越好

  2. 质量:确保答案准确、专业

  3. 多样性:覆盖各种场景和问题类型

4.2 第二步:选择基础模型(像选择原材料)

常见基础模型推荐:

中文任务:
- Qwen系列(阿里通义千问):对中文支持最好
- ChatGLM系列(清华):中文理解强
- Baichuan系列(百川):中文优化好

英文任务:
- Llama系列(Meta):生态丰富
- Mistral系列:性能优秀
- Gemma系列(Google):轻量高效

多语言任务:
- Qwen系列:中英文都不错
- Llama系列:通过扩展支持多语言

选择原则:

  • 任务语言 → 选择对应语言优化好的模型

  • 硬件限制 → 选择参数量合适的模型

  • 功能需求 → 选择能力匹配的模型

4.3 第三步:配置训练参数(像设置烹饪参数)

# 一个完整的训练配置示例
train_args = TrainArguments(
    # 基础配置
    model_name_or_path="Qwen/Qwen2-7B-Instruct",  # 基础模型
    dataset="my_medical_data",                    # 数据集名称
    finetuning_type="lora",                       # 训练方法
    
    # LoRA 专用配置
    lora_target="q_proj,v_proj",                  # 要改动的模型部件
    lora_rank=16,                                 # 改动程度(16-64)
    lora_alpha=32,                                # 学习强度
    
    # 训练参数
    output_dir="./my_medical_ai",                 # 保存位置
    per_device_train_batch_size=4,                # 批次大小
    gradient_accumulation_steps=4,                # 梯度累积
    learning_rate=2e-4,                           # 学习率
    num_train_epochs=3,                           # 训练轮数
    
    # 资源优化
    fp16=True,                                    # 使用半精度节省内存
    logging_steps=10,                             # 每10步输出日志
)

4.4 第四步:开始训练(像启动智能厨房)

from llama_factory import run_train

# 一键开始训练
run_train(train_args)

# 训练过程中你会看到:
# 🔥 开始训练...
# 📊 第1步,损失: 2.3456
# 📊 第10步,损失: 1.2345  
# 📊 第20步,损失: 0.8765
# 💾 保存检查点...
# 🎉 训练完成!

4.5 第五步:测试和使用(像品尝菜品)

from llama_factory import load_model, get_infer_args

# 加载训练好的模型
infer_args = get_infer_args({
    "model_name_or_path": "Qwen/Qwen2-7B-Instruct",
    "adapter_name_or_path": "./my_medical_ai",  # 你的训练结果
    "template": "qwen"
})

model, tokenizer = load_model(infer_args)

# 测试你的AI助手
messages = [
    {"role": "user", "content": "我发烧38℃,应该怎么办?"}
]
response = model.chat(tokenizer, messages)
print(f"AI回答: {response}")

# 输出:建议多休息、多喝水,可服用退烧药...

5、介绍完,就可以尝试了

LLaMA-Factory 是一个用于训练和微调模型的工具。它支持全参数微调、LoRA 微调、QLoRA 微调、模型评估、模型推理和模型导出等功能。

微调的过程

        模型微调通过在特定任务的数据集上继续训练预训练模型来进行,使得模型能够学习到与任务相关的特定特征和知识。这个过程通常涉及到模型权重的微幅调整,而不是从头开始训练一个全新的模型。微调过程主要包括以下几个步骤:

1. 数据准备:收集和准备特定任务的数据集。

2. 模型选择:选择一个预训练模型作为基础模型。

3. 迁移学习:在新数据集上继续训练模型,同时保留预训练模型的知识。

4. 参数调整:根据需要调整模型的参数,如学习率、批大小等。

5. 模型评估:在验证集上评估模型的性能,并根据反馈进行调整。

安装

若电脑没有GPU,可以使用ModelScope云服务

我的Notebook · 魔搭社区

前提CUDA要安装,然后安装llamafactory

# 构建虚拟环境
conda create -n llamafactory python=3.10 -y && conda activate llamafactory
# 下载仓库
git clone --depth 1 https://github.com/hiyouga/LLaMA-Factory.git
cd LLaMA-Factory
# 安装
pip install -e .

校验
llamafactory-cli version

安装完成后、可以启动webUI界面配置,也可以直接在示例文件夹下修改。

可以读一下readme使用哪个方法训练,有对应命令行的执行命令

打开这个文件有几个配置

第一个框是它要训练的模型路径,默认模型文件从modelScope上下载

第二个框是用的数据集,有两个,第一个是自我认证:

用户什么都没有输入,只是让模型知道它是谁,一个自我认证的数据集

第二个就是微调的数据集(en证明是英文的)。

第三个框是一次训练最大例子数量,可以调小一点加快训练。

训练配置完成后就可以在命令行执行:

llamafactory-cli train examples/train_qlora/llama3_lora_sft_otfq.yaml

## 官方博客

- 💡 [Easy Dataset × LLaMA Factory: 让大模型高效学习领域知识](https://buaa-act.feishu.cn/wiki/KY9xwTGs1iqHrRkjXBwcZP9WnL9)(中文)

- [使用 LLaMA-Factory 微调心理健康大模型](https://www.lab4ai.cn/project/detail?id=25cce32ec131497b9e06a93336a0817f&type=project&utm_source=LLaMA-Factory)(中文)

- [使用 LLaMA-Factory 构建 GPT-OSS 角色扮演模型](https://docs.llamafactory.com.cn/docs/documents/best-practice/gptroleplay/?utm_source=LLaMA-Factory)(中文)

- [基于 LLaMA-Factory 和 EasyR1 打造一站式无代码大模型强化学习和部署平台 LLM Model Hub](https://aws.amazon.com/cn/blogs/china/building-llm-model-hub-based-on-llamafactory-and-easyr1/)(中文)

Logo

有“AI”的1024 = 2048,欢迎大家加入2048 AI社区

更多推荐