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

Tokenizer 训练

会员专享

使用 RustBPE 训练 BPE tokenizer,并导出 tiktoken 编码

预训练前必须先确定 tokenizer。模型看到的不是原始字符串,而是 token id 序列;词表大小、特殊 token、预分词规则都会影响后续模型配置和训练数据形态。

cookllm-bento 默认已经带了一个可用 tokenizer:

tokens/
tokens/
├── tokenizer.pkl
├── token_bytes.pt
└── metadata.json

如果你只是想直接跑预训练,可以先使用默认 tokenizer。重新训练 tokenizer 适合在你更换语料、调整词表大小,或者想完整复现训练流程时再做。

训练数据

Tokenizer 训练使用单独的采样数据,不直接使用预训练 shard。下载脚本中对应选项是:

选项数据大小目录
[2]Tokenizer 1.5% sampled data约 1.2GBtokenizer_data

这里的 1.5% 指的是从 Fineweb-Edu-Chinese-V2.1 的 4_5 高质量子集中抽取一小部分文本,专门用于训练 tokenizer。它和前面预训练用的 20% sampled shards 来自同一个高质量数据来源,但用途不同:

  • tokenizer 训练只需要学习文本如何切成 token,不需要覆盖完整预训练规模。
  • 单独准备 tokenizer 数据,可以让 BPE 训练更快,也避免每次训练 tokenizer 都扫描 14GB 或 70GB 的预训练 shard。
  • 这份数据会写成单个 Parquet 文件,而不是多个训练 shard。

如果你想从原始 4_5 数据重新生成这份 tokenizer 数据,可以使用同一个采样脚本,只是采样比例改成 0.015,输出改成单个文件:

tools/sample_pretrain.py
python tools/sample_pretrain.py \
  --data ~/.cache/cookllm-bento/raw_data/fineweb_edu \
  --output ~/.cache/cookllm-bento/tokenizer_data/tokenizer_data.parquet \
  --ratio 0.015

下载命令:

下载数据
bash tasks/scripts/download/download_data.sh

选择 [2] 后,默认文件位置是:

登录以继续阅读

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

预训练数据

理解 Fineweb-Edu-Chinese 数据、采样 shard 和默认目录

模型架构

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

目录

训练数据
训练命令
输出文件
特殊 token