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

预训练数据

会员专享

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

语言模型预训练的目标很直接:给模型一段文本,让它学习预测下一个 token。数据质量、数据规模和数据组织方式,会直接影响训练效率和最终效果。

cookllm-bento 的预训练样例使用 OpenCSG Fineweb-Edu-Chinese-V2.1 数据。为了让教学实验能在单卡上快速跑起来,项目提供了已经采样并切分好的 Parquet shard。

这一页先回答三个问题:数据来自哪里,项目为什么先用 20% sampled shards,以及训练配置最终会从哪个目录读取数据。

数据来源

预训练数据来自 OpenCSG 的 Fineweb-Edu-Chinese-V2.1。对应的数据集页面是:opencsg/Fineweb-Edu-Chinese-V2.1。它是面向中文语料清洗和教育质量筛选的数据集,适合作为小模型预训练的起点。

V2.1 一个容易被忽略的点是:它不是一个扁平数据集,而是按教育质量评分分成了不同目录。

目录数据规模含义
4_5约 70GB,约 46B tokens,17,790,513 行高质量教育文本,写作更清晰、连贯
3_4约 800GB,约 530B tokens,289,975,835 行仍适合训练,但可能有轻微连贯性或相关性问题
2_3约 1.4TB,约 930B tokens,649,842,063 行可能有用,但噪声和局限更明显

cookllm-bento 的入门预训练没有直接使用完整的 TB 级 V2.1 数据,而是先使用 4_5 这个高质量子集。下载脚本中的原始数据选项实际匹配的是 4_5/*.parquet,后面的 tokenizer sampled data、pretrain sampled shards 和 full pretrain shards 也都是围绕这部分高质量数据组织的。

这里的“Fineweb-Edu-Chinese-V2.1”需要结合脚本理解:数据集整体很大,但 cookllm-bento 入门预训练默认围绕 4_5 高质量子集展开。这样做是为了在数据质量、下载成本和训练成本之间取一个更适合教学的平衡点。

登录以继续阅读

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

预训练

从样本数据开始,完成 29M BentoLM 的完整预训练闭环

Tokenizer 训练

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

目录

数据来源
数据样例
论文背景
重新采样
下载数据
Parquet shard