LogoCookLLM文档
LogoCookLLM文档
首页CookLLM

原理精讲

词元化
Tokenization 基础BPE 算法详解GPT 系列 TokenizerBPE 训练工程化
模型架构
Transformer LM
从 token ids 到 logitsEmbedding 与 LM Head
Attention 机制
Self-Attention 到 GQAAttention Sink
位置编码
位置编码基础RoPE 数学推导RoPE 代码实现长度外推
GPU 编程基础
GPU 架构基础张量布局Triton 入门:向量加法
FlashAttention
Flash Attention 原理详解从朴素实现到 Auto-TuningBlock Pointer 与多维支持Causal Masking 优化Grouped Query Attention反向传播实现
分布式训练
数据并行ZeRO 优化器全分片数据并行张量并行流水线并行多维混合并行
推理优化
KV CacheContinuous BatchingPagedAttention

动手训练

概述
预训练
预训练数据Tokenizer 训练模型架构数据流水线训练循环监控与验证
X (Twitter)
预训练

训练循环

会员专享

拆开 LightningCLI、PretrainModule、优化器和调度器

上一节已经把文本样本整理成了 input_ids、labels 和 attention_mask。从这一节开始,这个 batch 会进入真正的训练循环:模型前向、计算 loss、反向传播、优化器更新、学习率调度、日志记录和 checkpoint 保存。

cookllm-bento 的预训练循环可以先看成下面这条链路:

Pretrain Training Loop

How configs become a running Lightning training job.

1
Shell script
compose trainer, model and data configs
fit command
2
LightningCLI
instantiate PretrainModule and PretrainDataModule
objects
3
DataLoader batch
input_ids, labels and attention_mask
batch
4
training_step
forward BentoLM and return language modeling loss
loss
5
Optimizer step
AdamW update after gradient accumulation
weights
6
Callbacks
log metrics, validate, sample text and save checkpoints
logs

训练入口

预训练入口文件很薄:

tasks/entrypoints/main_pretrain.py
def main():
    LightningCLI(PretrainModule, PretrainDataModule, save_config_callback=None)

它主要做三件事:

  • 把项目根目录加入 sys.path,让 src 包可以被正常导入。
  • 设置 torch.set_float32_matmul_precision("medium"),让 Ampere 及之后的 GPU 可以使用 TF32 加速部分矩阵计算。
  • 用 LightningCLI 把 PretrainModule、PretrainDataModule 和 Lightning Trainer 组装成一次训练任务。

这里没有手写复杂的 argparse。训练参数主要来自 YAML 配置和命令行覆盖,这也是后面做不同实验时最重要的组织方式。

登录以继续阅读

这是一篇付费内容,请登录您的账户以访问完整内容。

数据流水线

理解 Parquet shard 如何变成 input_ids、labels 和 attention_mask

监控与验证

使用 TensorBoard、SwanLab、采样文本和 checkpoint 跟踪预训练

目录

训练入口
LightningCLI 是什么
Lightning 接管了什么
启动脚本
配置合并
Training step
Validation step
优化器
WSD 学习率调度
Trainer 配置
常用覆盖参数