前置知识: 大语言模型

构建完整LLM流水线

2 minAdvanced

将分词、预训练、SFT、对齐和评估整合为完整的 LLM 训练流水线

构建完整LLM流水线

前面的课程分别讲了分词、预训练、微调、对齐和评估。现在把它们串起来——从原始数据到可用模型的完整流水线。

类型: 构建 语言: Python 前置条件: Phase 10 Lesson 01-10 预计时间: ~90 分钟

学习目标

  • 设计端到端的 LLM 训练流水线
  • 理解每个阶段的输入、输出和验收标准
  • 掌握训练日志、检查点和实验管理
  • 理解从零训练 vs 微调的决策框架

完整流水线

1. 数据准备
   原始数据 → 清洗 → 去重 → 质量过滤 → 训练数据

2. 分词器训练
   训练数据 → BPE/Unigram 训练 → 分词器

3. 预训练
   训练数据 + 分词器 → 预训练模型(基座模型)

4. SFT
   指令数据 + 基座模型 → SFT 模型

5. 对齐
   偏好数据 + SFT 模型 → 对齐模型(RLHF/DPO)

6. 评估
   对齐模型 → 基准测试 → 评估报告

7. 部署
   对齐模型 → 量化 → 推理服务

实验管理

import json
import time
from pathlib import Path
from dataclasses import dataclass, asdict


@dataclass
class ExperimentConfig:
    name: str
    stage: str  # pretrain, sft, dpo
    model_name: str
    learning_rate: float
    batch_size: int
    epochs: int
    seq_len: int
    vocab_size: int
    d_model: int
    n_heads: int
    n_layers: int


class ExperimentTracker:
    """实验追踪器"""

    def __init__(self, config: ExperimentConfig, log_dir="experiments"):
        self.config = config
        self.log_dir = Path(log_dir) / config.name
        self.log_dir.mkdir(parents=True, exist_ok=True)
        self.metrics = []

        # 保存配置
        with open(self.log_dir / "config.json", 'w') as f:
            json.dump(asdict(config), f, indent=2)

    def log(self, step, metrics: dict):
        """记录训练指标"""
        entry = {"step": step, "timestamp": time.time(), **metrics}
        self.metrics.append(entry)

        # 追加写入日志
        with open(self.log_dir / "metrics.jsonl", 'a') as f:
            f.write(json.dumps(entry) + '\n')

    def save_checkpoint(self, model, step, is_best=False):
        """保存检查点"""
        ckpt_path = self.log_dir / f"checkpoint-{step}.pt"
        torch.save({
            'step': step,
            'model_state_dict': model.state_dict(),
            'config': asdict(self.config),
        }, ckpt_path)

        if is_best:
            best_path = self.log_dir / "best_model.pt"
            torch.save(model.state_dict(), best_path)

从零训练 vs 微调决策

场景选择原因
通用对话模型微调开源模型训练成本太低,不值得从零开始
特定领域(医疗、法律)微调 + 领域数据继续预训练需要领域知识但基础能力可复用
新语言从零训练现有模型对新语言支持差
研究/教学从零训练小模型理解完整流程

关键术语

术语通俗说法实际含义
端到端流水线”全流程”从原始数据到可用模型的完整训练链
实验管理”实验记录”追踪训练配置、指标和检查点的系统
检查点”存档”训练过程中保存的模型快照,用于恢复训练

延伸阅读