返回首页

LLM微调实战教程2026:LLaMA-Factory+Unsloth从零到商业化,含完整Python代码

微调实战教程:LLaMA-Factory + Unsloth

为什么学微调

商业价值:

  • 企业定制助手:帮公司微调行业专属模型,单次¥5000-¥50000
  • 数据标注+微调一条龙:标注→训练→部署,¥20000+/项目
  • 模型优化服务:帮客户把通用模型调成专家模型
  • AI培训:教企业团队自己微调,¥5000/天

技术价值:

  • 理解AI是怎么"学习"的
  • 能定制任何领域专用模型
  • 掌握数据工程+模型训练全流程

微调方法对比

方法 显存需求 速度 效果 适用场景
Full 80GB+ 最好 大公司
LoRA 16GB 推荐
QLoRA 8GB 显存有限
Prefix Tuning 4GB 一般 简单任务

你的选择:QLoRA(8GB显存就够)或LoRA(16GB显存)

方案1:LLaMA-Factory(推荐新手)

安装

git clone https://github.com/hiyouga/LLaMA-Factory.git
cd LLaMA-Factory
pip install -e ".[torch,metrics]"

数据准备

// /my_dataset.json
[
  {
    "instruction": "你是一个电商客服助手",
    "input": "我买的衣服尺码不对,怎么退货?",
    "output": "您好!退货流程如下:\n1. 打开订单详情页\n2. 点击'申请退货'\n3. 选择退货原因\n4. 等待商家审核(通常24小时内)\n5. 审核通过后寄回商品\n6. 商家确认收货后退款到账\n\n请问您是什么尺码不合适?我可以帮您推荐合适的尺码。"
  },
  {
    "instruction": "你是一个电商客服助手",
    "input": "快递显示已签收但我没收到怎么办?",
    "output": "您好!这种情况请按以下步骤处理:\n1. 先检查是否放在驿站/快递柜\n2. 询问家人/同事是否代收\n3. 联系快递员确认签收情况\n4. 如确认未收到,请联系我帮您发起物流投诉\n\n我这边会同步帮您跟进,请您放心!"
  }
]

训练配置

# configs/my_lora.yaml
model_name_or_path: /Qwen2.5-14B-Instruct
stage: sft
do_train: true
finetuning_type: lora
lora_rank: 16
lora_alpha: 32
lora_target: all
dataset: my_dataset
template: qwen
cutoff_len: 2048
per_device_train_batch_size: 4
gradient_accumulation_steps: 4
num_train_epochs: 3
learning_rate: 1e-4
output_dir: ./output/my_model

开始训练

# 一行命令开始训练
llamafactory- train configs/my_lora.yaml

# 训练完成后导出模型
llamafactory-cli export configs/my_export.yaml

使用微调后的模型

from  import AutoModelForCausalLM, AutoTokenizer

model = AutoModelForCausalLM.from_pretrained("./output/my_model")
tokenizer = AutoTokenizer.from_pretrained("./output/my_model")

# 测试
prompt = "你是一个电商客服助手\n用户:快递显示已签收但我没收到怎么办?"
inputs = tokenizer(prompt, return_tensors="pt")
outputs = model.generate(**inputs, max_new_tokens=500)
print(tokenizer.decode(outputs[0]))

方案2:Unsloth(更快更省显存)

安装

pip install unsloth

训练代码

from unsloth import FastLanguageModel

# 加载模型(4bit量化,省显存)
model, tokenizer = FastLanguageModel.from_pretrained(
    model_name="unsloth/Qwen2.5-14B-Instruct-bnb-4bit",
    max_seq_length=2048,
    load_in_4bit=True,
)

# 添加LoRA
model = FastLanguageModel.get_peft_model(
    model,
    r=16,
    target_modules=["q_proj", "k_proj", "v_proj", "o_proj",
                     "gate_proj", "up_proj", "down_proj"],
    lora_alpha=32,
    lora_dropout=0,
    ="none",
)

# 准备数据
from datasets import load_dataset
dataset = load_dataset("json", data_files="data/my_dataset.json")

# 训练
from trl import SFTTrainer
from transformers import TrainingArguments

trainer = SFTTrainer(
    model=model,
    tokenizer=tokenizer,
    train_dataset=dataset["train"],
    max_seq_length=2048,
    args=TrainingArguments(
        per_device_train_batch_size=4,
        gradient_accumulation_steps=4,
        num_train_epochs=3,
        learning_rate=2e-4,
        output_dir="./output",
    ),
)

trainer.train()

# 保存
model.save_pretrained("./output/my_lora_model")

数据工程(最重要)

数据质量 > 数据数量

100条高质量数据 > 10000条低质量数据

高质量数据特征:
├── 指令清晰明确
├── 回答专业准确
├── 格式统一规范
├── 覆盖边界情况
└── 包含思维链(CoT)

数据生成方法

# 用-4o生成训练数据
import 

def generate_training_data(topic: str, n: int = 100):
    """用AI生成训练数据"""
    prompt = f"""
    生成{n}条关于"{topic}"的训练数据。
    格式:JSON数组,每条包含instruction、input、output。
    要求:
    1. instruction统一为"你是一个{topic}专家"
    2. input是用户可能问的问题
    3. output是专业、详细的回答
    4. 覆盖常见问题和边界情况
    """
    
    response = openai.chat..create(
        model="gpt-4o",
        messages=[{"role": "user", "content": prompt}],
    )
    return response.choices[0].message.content

# 生成数据
data = generate_training_data("编程", 200)

商业化路径

服务1:行业模型定制

流程:
1. 与客户沟通需求(1天)
2. 收集/清洗行业数据(3天)
3. 微调模型(1天)
4. 测试优化(2天)
5. 部署上线(1天)

报价:¥10000-¥50000(视复杂度)

服务2:数据标注+微调一条龙

流程:
1. 客户提供原始数据
2. 你做数据清洗+标注
3. 微调模型
4. 部署+维护

报价:¥20000+

服务3:微调培训

课程:
├── 1天基础班:LoRA原理+实操
├── 3天进阶班:数据工程+模型优化
└── 5天企业班:全流程+部署

报价:¥5000/天

下节预告

下一课:知识库搭建——让AI学习你的私有数据。

常见问题

为什么学微调

>为什么学微调商业价值: 企业定制AI助手:帮公司微调行业专属模型,单次¥5000-¥50000 数据标注+微调一条龙:标注→训练→部署,¥20000+/项目 模型优化服务:帮客户把通用模型调成专家模型 AI培训:教企业团队自己微调,¥5000/天 技术价值: 理解AI是怎么"学习"的 能定制任何领域专用模型 掌握数据工程+模型训练全流程

评论