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)
预训练

数据流水线

会员专享

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

这一节把前面几章串起来:预训练数据已经被切成 Parquet shard,tokenizer 已经能够把文本变成 token id,模型也已经定义好了。中间缺的就是数据流水线。

在 cookllm-bento 里,预训练 batch 的生成过程可以概括成:

Pretrain Data Pipeline

How a Parquet row becomes a training batch for next-token prediction.

1
Parquet shard
read text column from row groups
list[str]
2
Batch tokenization
prepend BOS, encode texts in parallel
token ids
3
Truncate to max_length
keep the first 512 tokens by default
sample
4
input_ids / labels
same tokens; shifting happens inside the model
tensors
5
Batch padding
pad input_ids, mask labels with -100
attention_mask
6
PretrainModule.training_step()
forward batch and log train/loss
loss

这条链路由两个文件负责:

层级文件作用
DataModulesrc/datamodule/pretrain_datamodule.py解析数据路径、加载 tokenizer、划分 train/val、创建 DataLoader
Datasetsrc/dataset/pretrain.py流式读取 Parquet、批量 tokenization、生成单条训练样本

配置入口

预训练样例使用的数据配置核心字段如下:

configs/data/data_pretrain_sample.yaml
data:
  data_path: pretrain_data/fineweb_shards
  tokenizer_path: tokens
  max_length: 512
  batch_size: 96
  num_workers: 4
  tokenizer_batch_size: 128
  tokenizer_num_threads: 8
  val_files: 10
配置含义
data_path预训练 Parquet shard 目录
tokenizer_pathtokenizer 文件目录,默认读取项目根目录下的 tokens/
max_length每条样本最多保留多少个 token
batch_sizeDataLoader 每次返回多少条样本
num_workersDataLoader worker 数量
tokenizer_batch_size每次送进 tokenizer 的文本条数
tokenizer_num_threadstokenizer 内部并行线程数
val_files随机保留多少个 Parquet 文件做验证集

登录以继续阅读

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

模型架构

从 bento_29m.yaml 读懂 BentoLM 的结构和参数规模

训练循环

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

目录

配置入口
数据目录
文件划分
流式读取
样本形态
Batch padding
数据吞吐测试
进入训练循环