目录

  1. 引言
  2. 全量微调 vs 参数高效微调
  3. [LoRA 原理详解](#lora 原理详解)
  4. [QLoRA 原理详解](#qlora 原理详解)
  5. 显存需求计算
  6. 工具链介绍
  7. 实战:首个微调模型
  8. 选型建议

引言

大语言模型微调是将通用模型适配到特定领域的关键技术,让模型掌握专业知识、适应特定任务。

如果说预训练是"通识教育",那么微调就是"专业培训"。一个经过预训练的通用大模型,就像一位博学但缺乏专业知识的通才;而经过微调的模型,则是在特定领域拥有深厚专长的专家。对于企业应用而言,微调往往是让大模型真正产生业务价值的关键一步。

掌握 LLM 微调是 AI 应用落地的核心能力:

  • 全量微调和参数高效微调有什么区别? 显存、效果、成本对比显著
  • LoRA 为什么如此流行? 原理简单,效果优秀,已成为行业标准
  • QLoRA 如何节省显存? 4 比特量化 + 分页优化器,消费级 GPU 可运行
  • 需要多少显存? 7B/13B/70B 微调显存计算,精准规划硬件
  • 用什么工具? PEFT、Axolotl、LLaMA-Factory,工具链成熟

这些问题都指向一个核心主题:LLM 微调基础

微调的价值所在

为什么不能直接用预训练模型?原因在于通用模型虽然知识渊博,但缺乏针对特定场景的优化。想象一下,让一位通才医生去处理专科手术,虽然他有医学基础,但缺乏专科训练,效果自然不理想。微调就是给模型进行"专科培训"的过程。

微调的核心价值体现在三个方面。首先是领域知识注入,让模型掌握特定行业的术语、概念和知识体系。其次是任务适配,针对具体任务(如客服问答、文档摘要、代码生成)进行优化。最后是风格对齐,让模型的输出风格符合品牌调性或用户期望。

技术演进的里程碑

微调技术的发展经历了几个重要阶段。早期的全量微调需要更新所有参数,显存需求巨大,只有少数机构能够承担。2021 年 LoRA 的提出是一个转折点,它通过低秩分解将可训练参数减少到原来的 1% 以下,大幅降低了门槛。2023 年 QLoRA 进一步结合量化技术,使得在消费级 GPU 上微调大模型成为可能。

这些技术突破的意义不仅在于降低成本,更在于 democratize AI——让更多中小企业和开发者能够参与到模型定制中来。本章将带你深入理解微调技术的原理和实践,为你的 AI 应用落地奠定基础。

微调的价值

┌─────────────────────────────────────────────────┐
│ 为什么需要微调 │
├─────────────────────────────────────────────────┤
│ │
│ 通用模型的局限: │
│ ├── 缺乏领域知识 (医疗/法律/金融) │
│ ├── 不了解公司特定信息 │
│ ├── 输出风格不符合要求 │
│ └── 特殊任务表现不佳 │
│ │
│ 微调的优势: │
│ ├── 注入领域知识 │
│ ├── 适应特定格式/风格 │
│ ├── 提升特定任务性能 │
│ └── 成本远低于预训练 │
│ │
│ 应用场景: │
│ ├── 客服机器人:学习产品知识 │
│ ├── 医疗助手:医学专业知识 │
│ ├── 法律助手:法律条文/案例 │
│ ├── 代码助手:公司代码规范 │
│ └── 写作助手:品牌声音/风格 │
│ │
└─────────────────────────────────────────────────┘


全量微调 vs 参数高效微调

全量微调 (Full Fine-tuning)

┌─────────────────────────────────────────────────┐
│ 全量微调详解 │
├─────────────────────────────────────────────────┤
│ │
│ 原理: │
│ ├── 更新模型所有参数 │
│ ├── 保持预训练权重初始化 │
│ └── 标准反向传播优化 │
│ │
│ 优点: │
│ ├── 理论上最优性能 │
│ ├── 方法成熟,工具完善 │
│ └── 适合资源充足场景 │
│ │
│ 缺点: │
│ ├── 显存需求巨大 │
│ ├── 训练时间长 │
│ ├── 容易过拟合 │
│ └── 灾难性遗忘风险 │
│ │
│ 显存需求 (7B 模型): │
│ ├── 模型权重:14GB (FP16) │
│ ├── 梯度:14GB (FP16) │
│ ├── 优化器状态:56GB (Adam, FP32) │
│ ├── 激活值:10-20GB │
│ └── 总计:94-104GB │
│ │
│ 适用场景: │
│ ├── 资源充足 (多卡 A100/H100) │
│ ├── 对性能要求极高 │
│ └── 数据量大 (>100k 样本) │
│ │
└─────────────────────────────────────────────────┘

参数高效微调 (PEFT)

┌─────────────────────────────────────────────────┐
│ 参数高效微调详解 │
├─────────────────────────────────────────────────┤
│ │
│ 原理: │
│ ├── 冻结预训练模型大部分参数 │
│ ├── 仅训练少量额外参数 │
│ └── 参数量:0.1-10% 的全量 │
│ │
│ 主要方法: │
│ ├── LoRA (Low-Rank Adaptation) │
│ ├── QLoRA (Quantized LoRA) │
│ ├── Prefix Tuning │
│ ├── P-Tuning │
│ └── Adapter │
│ │
│ 优点: │
│ ├── 显存需求大幅降低 │
│ ├── 训练速度快 │
│ ├── 不易过拟合 │
│ └── 可组合多个 LoRA 模块 │
│ │
│ 缺点: │
│ ├── 性能略低于全量微调 (通常<1% 差距) │
│ ├── 某些复杂任务可能不足 │
│ └── 推理时需要加载额外权重 │
│ │
│ 显存需求 (7B 模型,LoRA): │
│ ├── 模型权重:14GB (FP16, 冻结) │
│ ├── LoRA 参数:0.1GB (可训练) │
│ ├── 梯度:0.1GB │
│ ├── 优化器状态:0.4GB │
│ ├── 激活值:5-10GB │
│ └── 总计:19.6-24.5GB (降低 75%+) │
│ │
│ 适用场景: │
│ ├── 资源有限 (单卡/双卡) │
│ ├── 快速迭代验证 │
│ └── 大多数应用场景 │
│ │
└─────────────────────────────────────────────────┘

方法对比

┌────────────────────────────────────────────────────────────────────┐
│                    微调方法对比                                     │
├──────────────┬─────────────┬─────────────┬─────────────┬──────────┤
│   方法        │   可训练参数 │   显存需求   │   训练速度   │   性能    │
├──────────────┼─────────────┼─────────────┼─────────────┼──────────┤
│   全量微调    │   100%      │   100%      │   1x        │   100%   │
│   LoRA        │   0.5-2%    │   25-30%    │   2-3x      │   98-99% │
│   QLoRA       │   0.5-2%    │   15-20%    │   2-3x      │   97-98% │
│   Prefix      │   0.1-1%    │   20-25%    │   3-4x      │   95-97% │
└──────────────┴─────────────┴─────────────┴─────────────┴──────────┘

注:以 7B 模型为基准,实际数据受配置影响

LoRA 原理详解

核心思想

┌─────────────────────────────────────────────────┐
│ LoRA (Low-Rank Adaptation)                                                                              │
├─────────────────────────────────────────────────┤
│                                                                                                                             │
│ 问题:全量微调参数过多                                                                                    │
│ ├── 7B 模型:70 亿参数                                                                                   │
│ ├── 70B 模型:700 亿参数                                                                               │
│ └── 更新所有参数成本高昂                                                                               │
│                                                                                                                            │
│ 解决:低秩分解                                                                                                  │
│ ├── 假设:权重更新是低秩的                                                                           │
│ ├── ΔW = B × A (B: d×r, A: r×k)                                                                        │
│ ├── r << d, k (通常 r=8-64)                                                                                │
│ └── 参数量减少:d×k → r×(d+k)                                                                       │
│                                                                                                                             │
│ 实现:                                                                                                                    │
│ ├── 冻结原始权重 W                                                                                          │
│ ├── 添加旁路:W' = W + ΔW = W + B×A                                                          │
│ ├── 仅训练 A 和 B                                                                                              │
│ └── 推理时合并:W' = W + B×A                                                                        │
│                                                                                                                              │
│ 参数减少示例 (7B 模型):                                                                                      │
│ ├── 原始:70 亿参数                                                                                          │
│ ├── LoRA (r=16): ~1000 万参数                                                                         │
│ ├── 减少:99.8%                                                                                                │
│ └── 显存:从 100GB+ 降至 20-25GB                                                                │
│                                                                                                                              │
└─────────────────────────────────────────────────┘

LoRA 配置示例

#!/usr/bin/env python3
# lora_config_example.py - LoRA 配置示例

from peft import LoraConfig, TaskType

def get_lora_config():
    """获取 LoRA 配置"""
    
    lora_config = LoraConfig(
        r=16,                          # 秩
        lora_alpha=32,                 # 缩放因子
        target_modules=[               # 应用 LoRA 的层
            "q_proj",
            "k_proj",
            "v_proj",
            "o_proj",
            "gate_proj",
            "up_proj",
            "down_proj",
        ],
        lora_dropout=0.05,             # Dropout
        bias="none",                   # 是否训练 bias
        task_type=TaskType.CAUSAL_LM,  # 任务类型
        inference_mode=False,          # 训练模式
    )
    
    return lora_config

# 打印配置
config = get_lora_config()
print("LoRA 配置:")
print(f"  秩 (r): {config.r}")
print(f"  Alpha: {config.lora_alpha}")
print(f"  Dropout: {config.lora_dropout}")
print(f"  目标模块:{config.target_modules}")
print(f"  可训练参数占比:~{config.r / 100:.1f}%")

QLoRA 原理详解

核心创新

┌─────────────────────────────────────────────────┐
│ QLoRA (Quantized LoRA)                                                                                  │
├─────────────────────────────────────────────────┤
│                                                                                                                           │
│ 问题:LoRA 显存仍然较高                                                                                  │
│ ├── 模型权重 FP16:14GB (7B)                                                                         │
│ ├── 对于消费级 GPU 仍然困难                                                                         │
│ └── 需要进一步压缩                                                                                             │
│                                                                                                                                 │
│ 解决:4 比特量化 + 分页优化器                                                                         │
│ ├── 模型权重:FP16 → NF4 (4-bit)                                                                 │
│ ├── 显存减少:14GB → 4GB (7B)                                                                         │
│ ├── 分页优化器:避免显存峰值                                                                         │
│ └── 双重量化:额外压缩                                                                                         │
│                                                                                                                                 │
│ 关键技术:                                                                                                                 │
│ ├── NF4 (4-bit NormalFloat):                                                                                 │
│ │ ├── 针对权重分布优化的 4 比特格式                                                                    │
│ │ └── 精度损失<1%                                                                                                │
│ │                                                                                                                                 │
│ ├── 双重量化 (Double Quantization):                                                                         │
│ │ ├── 对量化常数再次量化                                                                                         │
│ │ └── 额外节省 0.4 bits/参数                                                                                      │
│ │                                                                                                                                   │
│ └── 分页优化器 (Paged Optimizers):                                                                          │
│ ├── 优化器状态分页到 CPU 内存                                                                               │
│ └── 避免训练峰值 OOM                                                                                             │
│                                                                                                                                      │
│ 显存需求 (7B 模型):                                                                                                     │
│ ├── 模型权重:4GB (NF4)                                                                                        │
│ ├── LoRA 参数:0.1GB                                                                                           │
│ ├── 梯度:0.1GB                                                                                                    │
│ ├── 优化器状态:0.4GB (分页)                                                                              │
│ ├── 激活值:5-8GB                                                                                               │
│ └── 总计:9.6-12.6GB (可在 RTX 3090 运行)                                                      │
│                                                                                                                               │
└─────────────────────────────────────────────────┘

QLoRA 配置

#!/usr/bin/env python3
# qlora_config_example.py - QLoRA 配置示例

from transformers import BitsAndBytesConfig
from peft import LoraConfig

def get_qlora_config():
    """获取 QLoRA 配置"""
    
    # 4 比特量化配置
    bnb_config = BitsAndBytesConfig(
        load_in_4bit=True,                          # 启用 4 比特量化
        bnb_4bit_use_double_quant=True,             # 双重量化
        bnb_4bit_quant_type="nf4",                  # NF4 量化类型
        bnb_4bit_compute_dtype="float16",           # 计算精度
    )
    
    # LoRA 配置
    lora_config = LoraConfig(
        r=16,
        lora_alpha=32,
        target_modules=[
            "q_proj", "k_proj", "v_proj", "o_proj",
            "gate_proj", "up_proj", "down_proj",
        ],
        lora_dropout=0.05,
        bias="none",
        task_type="CAUSAL_LM",
    )
    
    return bnb_config, lora_config

# 打印配置
bnb_config, lora_config = get_qlora_config()
print("QLoRA 配置:")
print(f"  4-bit 量化:{bnb_config.load_in_4bit}")
print(f"  双重量化:{bnb_config.bnb_4bit_use_double_quant}")
print(f"  量化类型:{bnb_config.bnb_4bit_quant_type}")
print(f"  计算精度:{bnb_config.bnb_4bit_compute_dtype}")
print(f"  LoRA 秩:{lora_config.r}")
print(f"  显存需求:~10-12GB (7B 模型)")

显存需求计算

显存计算公式

#!/usr/bin/env python3
# calculate_vram_finetuning.py - 微调显存计算

def calculate_finetuning_vram(
    model_params_b: float,      # 模型参数量 (B)
    method: str = "lora",       # 微调方法
    sequence_length: int = 2048,
    batch_size: int = 1,
    gradient_checkpointing: bool = True
):
    """
    计算微调显存需求
    """
    
    # 模型权重显存
    if method == "full":
        weight_vram = model_params_b * 4  # FP32
    elif method == "lora":
        weight_vram = model_params_b * 2  # FP16 (冻结)
    elif method == "qlora":
        weight_vram = model_params_b * 0.5  # NF4 (4-bit)
    
    # 可训练参数显存
    if method == "full":
        trainable_params = model_params_b
    else:
        trainable_params = model_params_b * 0.01  # LoRA ~1%
    
    trainable_vram = trainable_params * 4  # FP32 优化器
    
    # 梯度显存
    if method == "full":
        gradient_vram = model_params_b * 2  # FP16 梯度
    else:
        gradient_vram = trainable_params * 2
    
    # 激活值显存 (估算)
    activation_vram = model_params_b * 0.5 * (sequence_length / 1024) * batch_size
    if gradient_checkpointing:
        activation_vram *= 0.3  # 梯度检查点减少激活显存
    
    # 其他 (临时缓冲区等)
    other_vram = 2  # GB
    
    # 总计
    total_vram = weight_vram + trainable_vram + gradient_vram + activation_vram + other_vram
    
    return {
        'method': method,
        'model_params_b': model_params_b,
        'weight_vram_gb': round(weight_vram, 1),
        'trainable_vram_gb': round(trainable_vram, 1),
        'gradient_vram_gb': round(gradient_vram, 1),
        'activation_vram_gb': round(activation_vram, 1),
        'other_vram_gb': other_vram,
        'total_vram_gb': round(total_vram, 1),
    }

def print_comparison():
    """打印显存对比"""
    
    print("="*80)
    print("微调显存需求对比")
    print("="*80)
    print()
    
    models = [
        (7, "7B"),
        (13, "13B"),
        (70, "70B"),
    ]
    
    methods = ["full", "lora", "qlora"]
    
    print(f"{'模型':<10} {'方法':<12} {'权重':<10} {'可训练':<10} {'梯度':<10} {'激活':<10} {'总计':<10}")
    print("-"*80)
    
    for params, name in models:
        for method in methods:
            result = calculate_finetuning_vram(params, method)
            print(f"{name:<10} {method:<12} {result['weight_vram_gb']:<10.1f} "
                  f"{result['trainable_vram_gb']:<10.1f} {result['gradient_vram_gb']:<10.1f} "
                  f"{result['activation_vram_gb']:<10.1f} {result['total_vram_gb']:<10.1f}")
        print()

if __name__ == "__main__":
    print_comparison()

显存参考表

┌─────────────────────────────────────────────────────┐
│ 微调显存需求参考 (GB)                                                                                                 │
├───────────┬──────────┬──────────┬──────────┬───────┤
│ 模型                     │ 全量微调          │ LoRA                │ QLoRA             │  推荐 GPU │
├───────────┼──────────┼──────────┼──────────┼───────┤
│ 7B                       │ 94-104             │ 20-25                 │ 10-13                │ 3090+      │
│ 13B                     │ 175-195           │ 35-45                 │ 18-24                │ 4090+      │
│ 32B                     │ 430-480           │ 80-100              │ 40-55                 │ 2xA100    │
│ 70B                     │ 940-1050          │ 160-200           │ 80-110               │ 4xA100    │
│ 405B                   │ 5400-6000        │ 900-1100         │ 450-600            │ 16xA100   │
└───────────┴──────────┴──────────┴──────────┴────────┘

注:测试条件 batch_size=1, sequence_length=2048, gradient_checkpointing=True

工具链介绍

PEFT (Parameter-Efficient Fine-Tuning)

┌─────────────────────────────────────────────────┐
│ PEFT 库介绍                                                                                                        │
├─────────────────────────────────────────────────┤
│                                                                                                                              │
│ 简介:                                                                                                                  │
│ ├── HuggingFace 官方维护                                                                               │
│ ├── 支持 LoRA/QLoRA/Prefix/P-Tuning                                                             │
│ ├── 与 Transformers 无缝集成                                                                            │
│ └── GitHub: huggingface/peft                                                                              │
│                                                                                                                                │
│ 安装:                                                                                                                    │
│ └── pip install peft                                                                                                 │
│                                                                                                                                 │
│ 核心功能:                                                                                                                 │
│ ├── LoraConfig: LoRA 配置                                                                                   │
│ ├── get_peft_model: 获取 PEFT 模型                                                                   │
│ ├── PeftModel: PEFT 模型包装器                                                                         │
│ └── 保存/加载:save_pretrained, from_pretrained                                               │
│                                                                                                                                │
│ 适用场景:                                                                                                               │
│ ├── 快速原型开发                                                                                                │
│ ├── 研究实验                                                                                                       │
│ └── 中小规模微调                                                                                               │
│                                                                                                                              │
└─────────────────────────────────────────────────┘

Axolotl

┌─────────────────────────────────────────────────┐
│ Axolotl 介绍 │
├─────────────────────────────────────────────────┤
│ │
│ 简介: │
│ ├── 开源微调框架 │
│ ├── 基于 Transformers + PEFT │
│ ├── 配置文件驱动 │
│ └── GitHub: OpenAccess-AI-Collective/axolotl │
│ │
│ 安装: │
│ └── pip install axolotl │
│ │
│ 特点: │
│ ├── 配置简单:YAML 配置文件 │
│ ├── 支持广泛:LoRA/QLoRA/全量 │
│ ├── 多 GPU 支持:DeepSpeed 集成 │
│ └── 监控完善:WandB/MLflow 集成 │
│ │
│ 适用场景: │
│ ├── 生产环境微调 │
│ ├── 大规模数据集 │
│ └── 需要完整训练流程 │
│ │
└─────────────────────────────────────────────────┘

工具对比

┌────────────────────────────────────────────────────────────────────┐
│                    微调工具对比                                     │
├──────────────┬─────────────┬─────────────┬─────────────┬──────────┤
│   工具        │   易用性     │   灵活性     │   功能完整   │   推荐场景 │
├──────────────┼─────────────┼─────────────┼─────────────┼──────────┤
│   PEFT       │   ⭐⭐⭐⭐    │   ⭐⭐⭐⭐⭐   │   ⭐⭐⭐      │   研发     │
├──────────────┼─────────────┼─────────────┼─────────────┼──────────┤
│   Axolotl    │   ⭐⭐⭐⭐⭐   │   ⭐⭐⭐⭐    │   ⭐⭐⭐⭐⭐   │   生产     │
├──────────────┼─────────────┼─────────────┼─────────────┼──────────┤
│   LLaMA-     │             │             │             │          │
│   Factory    │   ⭐⭐⭐⭐⭐   │   ⭐⭐⭐      │   ⭐⭐⭐⭐    │   快速     │
├──────────────┼─────────────┼─────────────┼─────────────┼──────────┤
│   DeepSpeed  │   ⭐⭐⭐      │   ⭐⭐⭐⭐⭐   │   ⭐⭐⭐⭐⭐   │   大规模   │
└──────────────┴─────────────┴─────────────┴─────────────┴──────────┘

实战:首个微调模型

使用 PEFT 微调

#!/usr/bin/env python3
# finetune_with_peft.py - 使用 PEFT 微调

from transformers import AutoTokenizer, AutoModelForCausalLM, TrainingArguments
from peft import LoraConfig, get_peft_model, prepare_model_for_kbit_training
from trl import SFTTrainer
import torch

def finetune_lora():
    """使用 LoRA 微调"""
    
    # 配置
    model_name = "Qwen/Qwen2.5-7B-Instruct"
    dataset_name = "alpaca"
    output_dir = "./output/qwen2.5-7b-lora"
    
    # 加载模型和 tokenizer
    print("加载模型...")
    tokenizer = AutoTokenizer.from_pretrained(model_name)
    model = AutoModelForCausalLM.from_pretrained(
        model_name,
        torch_dtype=torch.float16,
        device_map="auto",
    )
    
    # 准备模型
    model = prepare_model_for_kbit_training(model)
    
    # LoRA 配置
    lora_config = LoraConfig(
        r=16,
        lora_alpha=32,
        target_modules=["q_proj", "k_proj", "v_proj", "o_proj"],
        lora_dropout=0.05,
        bias="none",
        task_type="CAUSAL_LM",
    )
    
    # 应用 LoRA
    model = get_peft_model(model, lora_config)
    model.print_trainable_parameters()
    
    # 训练配置
    training_args = TrainingArguments(
        output_dir=output_dir,
        per_device_train_batch_size=2,
        gradient_accumulation_steps=4,
        learning_rate=2e-4,
        num_train_epochs=3,
        fp16=True,
        logging_steps=10,
        save_strategy="epoch",
    )
    
    # 创建 Trainer
    trainer = SFTTrainer(
        model=model,
        args=training_args,
        train_dataset=dataset_name,
        tokenizer=tokenizer,
    )
    
    # 开始训练
    print("开始训练...")
    trainer.train()
    
    # 保存模型
    print("保存模型...")
    trainer.save_model(output_dir)
    
    print(f"微调完成!模型保存在:{output_dir}")

if __name__ == "__main__":
    finetune_lora()

选型建议

方法选择

┌─────────────────────────────────────────────────┐
│ 微调方法选择指南 │
├─────────────────────────────────────────────────┤
│ │
│ 选择 QLoRA 的场景: │
│ ✓ 显存有限 (<16GB) │
│ ✓ 消费级 GPU (RTX 3090/4090) │
│ ✓ 快速验证想法 │
│ ✓ 大多数应用场景 │
│ │
│ 选择 LoRA 的场景: │
│ ✓ 显存充足 (24-80GB) │
│ ✓ 专业 GPU (A10/A100) │
│ ✓ 追求更好性能 │
│ ✓ 生产环境部署 │
│ │
│ 选择全量微调的场景: │
│ ✓ 显存非常充足 (>100GB) │
│ ✓ 多卡并行 (8x A100/H100) │
│ ✓ 对性能要求极高 │
│ ✓ 数据量非常大 │
│ │
└─────────────────────────────────────────────────┘

超参数建议

┌─────────────────────────────────────────────────┐
│ 微调超参数建议                                                                                                   │
├─────────────────────────────────────────────────┤
│                                                                                                                              │
│ LoRA 秩 (r):                                                                                                         │
│ ├── 简单任务:8-16                                                                                           │
│ ├── 一般任务:16-32                                                                                         │
│ ├── 复杂任务:32-64                                                                                         │
│ └── 越大表达能力越强,但可能过拟合                                                               │
│                                                                                                                               │
│ LoRA Alpha:                                                                                                          │
│ ├── 通常设置为 2×r                                                                                             │
│ ├── r=16 → alpha=32                                                                                         │
│ └── 控制 LoRA 权重的重要性                                                                             │
│                                                                                                                               │
│ 学习率:                                                                                                                   │
│ ├── LoRA: 1e-4 到 2e-4                                                                                       │
│ ├── QLoRA: 2e-4 到 4e-4                                                                                    │
│ └── 全量:1e-5 到 5e-5                                                                                       │
│                                                                                                                                │
│ Batch Size:                                                                                                             │
│ ├── 受显存限制                                                                                                    │
│ ├── 使用梯度累积模拟大 batch                                                                           │
│ └── 有效 batch = 单卡 batch × GPU 数 × 累积步数                                            │
│                                                                                                                              │
│ 训练轮数:                                                                                                              │
│ ├── 小数据集 (<1k): 3-5 epochs                                                                         │
│ ├── 中等数据集 (1k-10k): 2-3 epochs                                                                │
│ └── 大数据集 (>10k): 1-2 epochs                                                                       │
│                                                                                                                              │
└─────────────────────────────────────────────────┘


总结

今天学到的内容

  1. ✅ 全量微调 vs 参数高效微调:原理、优缺点对比
  2. ✅ LoRA 原理:低秩分解、架构、配置
  3. ✅ QLoRA 原理:4 比特量化、分页优化器
  4. ✅ 显存需求计算:公式、参考表
  5. ✅ 工具链介绍:PEFT、Axolotl 对比
  6. ✅ 实战代码:PEFT 微调示例
  7. ✅ 选型建议:方法选择、超参数建议

下一步

明天我们将学习 Day 23 - 单机多卡微调实战,深入了解:

  • 环境配置
  • 分布式训练设置
  • 性能与显存优化
  • 完整案例演示
Logo

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

更多推荐