L2 · 主题中枢

训练阶段

LLM模型训练SFT蒸馏预训练量化分布式训练

训练阶段决定模型最终能力边界与部署可行性

4核心阶段
2关键优化
应用场景
核心认知训练不是单一过程,而是能力递进的阶段组合

预训练建立基础,SFT 对齐意图,蒸馏压缩体积,量化降低部署门槛,每个阶段解决不同问题

LIVE
CORE 训练阶段
01 WHAT

是什么

训练阶段是大模型从基础能力构建到特定任务优化的完整流程,包含预训练、指令微调、蒸馏、量化等关键环节。

02 WHY

为什么

不同阶段解决不同问题:预训练建立通用能力,SFT 对齐人类意图,蒸馏压缩模型体积,量化降低部署成本。

03 HOW

怎么做

从预训练开始,依次进行指令微调、知识蒸馏和模型量化,每个阶段都有明确的目标和验证标准。

04 WHEN

什么时候

需要构建或优化大模型时使用;若只需调用已有模型API,则无需关注训练阶段。

THIS PAGE INCLUDES
指令微调 SFT蒸馏

FOCUS

下属主题

点进去继续学

FOCUS

先记住这些

只留最重要的判断,细节见下方实践
01 阶段分工

为什么需要分阶段训练

单一训练目标难以兼顾通用能力、指令遵循、部署效率,分阶段实现能力递进

02 数据依赖

各阶段数据要求差异

预训练需要海量无标注数据,SFT 需要高质量指令对,蒸馏需要教师模型输出,量化需要校准数据

03 成本权衡

训练成本与收益平衡

预训练成本最高但收益最大,SFT 成本适中但针对性强,蒸馏和量化主要优化部署成本

ROUTE

学习路径

建议按此顺序逐步深入
01
理解预训练基础

掌握自监督学习原理与大规模数据处理方法

02
实践指令微调

学习 SFT 数据构建、损失函数设计与评估方法

03
掌握模型压缩

理解蒸馏与量化原理,实践模型体积优化

04
分布式训练实战

学习数据并行、模型并行与混合并行策略

PROBLEM / POSITION / INTERFACE

先弄清它为什么存在,以及谁在使用

不从历史开始,从真实工作关系开始。
  1. 01 解决的问题

    需要构建或优化大语言模型以满足特定业务需求时

    缺乏系统训练流程会导致模型能力不足、对齐困难、部署成本过高

    成功标准
    模型在目标场景下达到预期性能指标,且推理成本可控
  2. 02 AI 生态位

    连接基础模型与生产应用的桥梁,决定模型最终能力和部署形态

    上游
    依赖预训练模型、高质量训练数据、计算资源
    下游
    为推理部署、应用集成、持续优化提供可用模型
  3. 03 人的生态位

    负责训练目标设定、数据准备、参数调优和效果验收

    适合使用
    需要定制化模型能力、优化推理成本、提升特定任务表现时
    不必使用
    通用模型已满足需求、计算资源有限、缺乏专业训练团队时
  4. 04 独特价值

    通过分阶段训练实现能力递进,避免单一训练目标导致的性能瓶颈

    各阶段数据质量要求不同,参数调优需要专业知识,分布式训练增加工程复杂度

    复杂度判断
    复杂度不是功能数量,而是控制与验证成本。

INTERFACE FLOW

谁在操作,信息怎样流动

  1. WHO OPERATES

    HUMAN定义训练目标、准备数据集、选择算法、评估结果

    SYSTEM执行训练循环、管理分布式计算、保存检查点

    TOOL提供训练框架、监控工具、自动化调参

  2. INPUT

    预训练权重、指令数据集、蒸馏目标模型、量化校准数据

  3. CONTROL

    学习率、批次大小、训练轮数、损失函数、量化精度

  4. OUTPUT

    训练好的模型权重、评估报告、部署配置文件

FLOW

标准训练流程

01预训练阶段使用海量无标注文本进行自监督学习,建立基础语言模型
02指令微调使用高质量指令-响应对进行监督微调,提升指令遵循能力
03知识蒸馏使用大模型作为教师,训练小模型模仿其输出分布
04模型量化将模型参数从 FP32 转换为 INT8/INT4,优化部署效率
05评估验证在标准基准和实际场景下测试模型性能,确保达到预期目标

COMPARE

训练阶段对比

阶段目标数据需求计算成本输出产物
预训练建立通用能力海量无标注文本极高基础模型权重
指令微调 SFT对齐人类意图高质量指令对中等指令遵循模型
蒸馏模型压缩教师模型输出较低小型化模型
量化部署优化校准数据集低精度模型

PRACTICE

训练准备清单

明确训练目标与成功标准
准备符合阶段要求的高质量数据
配置足够的计算资源与存储
选择合适的训练框架与分布式策略
设计评估指标与验证流程
制定训练监控与异常处理方案
CODE / PYTHONSFT 训练示例
from transformers import AutoModelForCausalLM, AutoTokenizer, TrainingArguments, Trainer
from datasets import load_dataset

# 加载预训练模型与分词器
model_name = "meta-llama/Llama-2-7b-hf"
model = AutoModelForCausalLM.from_pretrained(model_name)
tokenizer = AutoTokenizer.from_pretrained(model_name)

# 加载指令数据集
dataset = load_dataset("json", data_files="sft_data.json")

def tokenize_function(examples):
    return tokenizer(examples["text"], truncation=True, padding="max_length", max_length=512)

tokenized_dataset = dataset.map(tokenize_function, batched=True)

# 配置训练参数
training_args = TrainingArguments(
    output_dir="./sft_output",
    num_train_epochs=3,
    per_device_train_batch_size=4,
    learning_rate=2e-5,
    save_steps=500,
    logging_steps=100
)

# 初始化训练器并执行训练
trainer = Trainer(
    model=model,
    args=training_args,
    train_dataset=tokenized_dataset["train"]
)
trainer.train()

使用 Transformers 进行指令微调的最简示例

JSON / RESPONSE训练输出结构
{
  "model_path": "./sft_output/checkpoint-1500",
  "training_metrics": {
    "train_loss": 0.82,
    "eval_loss": 0.91,
    "epochs_completed": 3,
    "steps_completed": 1500
  },
  "model_config": {
    "base_model": "meta-llama/Llama-2-7b-hf",
    "training_type": "SFT",
    "precision": "FP16",
    "max_length": 512
  },
  "deployment_ready": true
}

FAQ

常见问题

选型、用法与失败,不复述定义。
01谁在实际负责训练各阶段?

预训练由研究团队主导,SFT 由算法工程师执行,蒸馏和量化由部署工程师完成。

明确责任边界,避免跨阶段协作混乱。
02预训练和 SFT 的核心区别是什么?

预训练学习语言规律,SFT 学习指令遵循;前者无监督,后者有监督。

避免混淆训练目标,导致数据准备和评估方法错误。
03最小可用训练流程是什么?

预训练 → SFT → 评估,蒸馏和量化为可选优化步骤。

帮助团队快速建立基础能力,避免过度工程化。
04训练过程中最常见的失败点在哪里?

数据质量不足、学习率设置不当、分布式同步失败、评估指标不匹配。

提前识别风险点,建立监控和回退机制。
05什么时候不需要完整训练流程?

当通用模型已满足需求,或只需微调特定任务时,可直接使用预训练模型进行轻量适配。

避免不必要的计算成本和时间投入。