docs: run v6 — FineWeb-edu graduation (val 3.07, new distribution)
第一版脱离 TinyStories:纯 FineWeb-edu 真实网页文本(2.255B 语料),架构同 v4/v5(dim768/18L, core 127.43M),8 卡 DDP bf16,2.29B tok/1.02ep,~1.9h @218K tok/s。train 11.03→3.14,best/final FineWeb val 3.0652。 方法论:FineWeb val(3.07) 与 v0–v5 的 TinyStories val(~1.1) 不可比——真实 网页熵高,~3.0 是预期非回退;判据是采样质量 + transfer eval。 - 新增 docs/runs/06-v6-fineweb-edu-dim768.md:数据管线(scripts/fineweb_to_txt.py) / 架构(同 v4/v5,隔离数据变量) / 超参 / 结果(val 单调降无走平=未饱和) / 方法论说明 / transfer eval(v6→TinyStories val 2.75 vs v5 native 1.11,纯通用 数据对窄分布有代价) / v5-vs-v6 同提示词采样对比(v6 写真实说明文 vs v5 一律 掉进小故事) - README 对比表加 v6 行(val 单独标注分布) + 换轴说明 + v7 提案 - evolution.md scaling 表 v6 行定稿 + 数据轴 TinyStories→FineWeb-edu 毕业说明 Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
This commit is contained in:
@@ -38,7 +38,7 @@
|
|||||||
| v3 | dim512/16L/16h · 67M/119M | TinyStories · 246M · 0.53ep | fp32 **batched(T10)** | 1 GPU · 26K | val 1.30 |
|
| v3 | dim512/16L/16h · 67M/119M | TinyStories · 246M · 0.53ep | fp32 **batched(T10)** | 1 GPU · 26K | val 1.30 |
|
||||||
| v4 | dim768/18L/24h · 127M/205M | TinyStories · 721M · 1.54ep | fp32 batched | **8 GPU(T11)** · 145K | val 1.17(仍欠拟合) |
|
| v4 | dim768/18L/24h · 127M/205M | TinyStories · 721M · 1.54ep | fp32 batched | **8 GPU(T11)** · 145K | val 1.17(仍欠拟合) |
|
||||||
| v5 | dim768/18L(**同 v4**) | TinyStories · 2.49B · **5.33ep** | **bf16(T12)** | 8 GPU · 217K | val **1.11**:⚠️**TinyStories 饱和**(3.5×数据仅↓5%) |
|
| v5 | dim768/18L(**同 v4**) | TinyStories · 2.49B · **5.33ep** | **bf16(T12)** | 8 GPU · 217K | val **1.11**:⚠️**TinyStories 饱和**(3.5×数据仅↓5%) |
|
||||||
| v6 | dim768/18L(同 v4/v5) | **FineWeb-edu** 真实网页 · 2.29B · 1.02ep | bf16 | 8 GPU · 204K | 训练中(FineWeb val 与上**不可比**) |
|
| v6 | dim768/18L(同 v4/v5) | **FineWeb-edu** 真实网页 · 2.29B · 1.02ep | bf16 | 8 GPU · 218K | val **3.07**:⚠️**FineWeb 留出集,与 v0–v5 不可比**(真实网页熵高,~3.0 是预期);判据=采样质量+transfer。第一版脱离 TinyStories,**语言种类质变**(小故事→真实说明文);transfer→TinyStories val 2.75(v5 native 1.11),纯通用数据对窄分布有代价;val 末步仍单调降=未饱和 |
|
||||||
|
|
||||||
> 实训 token = steps×batch×seq(非数据集大小)。val 同一 1M-token TinyStories 留出集(v0–v5 可比;v6 起换 FineWeb-edu 留出集,分布不同、不可比)。
|
> 实训 token = steps×batch×seq(非数据集大小)。val 同一 1M-token TinyStories 留出集(v0–v5 可比;v6 起换 FineWeb-edu 留出集,分布不同、不可比)。
|
||||||
|
|
||||||
@@ -49,7 +49,9 @@
|
|||||||
- **算法**:手写 autograd(tape)+扇出累加 → AdamW/LR-sched/grad-clip → +QK-norm(Qwen3) → batched forward → bf16 混合精度(fp32 master)。
|
- **算法**:手写 autograd(tape)+扇出累加 → AdamW/LR-sched/grad-clip → +QK-norm(Qwen3) → batched forward → bf16 混合精度(fp32 master)。
|
||||||
- **模型架构**:固定 Qwen3-style;dim **32→256→384→512→768**;核心参数 **41K→127M**(总 3.26M→205M)。
|
- **模型架构**:固定 Qwen3-style;dim **32→256→384→512→768**;核心参数 **41K→127M**(总 3.26M→205M)。
|
||||||
- **Infra**:单卡 fp32 → cuBLAS/GPU-optim(T7) → NCCL DDP(T8) → batched forward(T10) → caching allocator(T11) → bf16(T12)。吞吐 **3.3K→217K tok/s**,MFU **0.4%→17%**(每次提升都对应一块 perf 基建,详见 known-issues + MFU 分析)。
|
- **Infra**:单卡 fp32 → cuBLAS/GPU-optim(T7) → NCCL DDP(T8) → batched forward(T10) → caching allocator(T11) → bf16(T12)。吞吐 **3.3K→217K tok/s**,MFU **0.4%→17%**(每次提升都对应一块 perf 基建,详见 known-issues + MFU 分析)。
|
||||||
- **数据集**:TinyStories 3MB 切片 → 全量 TinyStories(epoch 0.01→5.33,至饱和)→ **FineWeb-edu** 真实网页。tokenizer 全程 gpt2 BPE(复用 xserv-tokenizer)。
|
- **数据集**:TinyStories 3MB 切片 → 全量 TinyStories(epoch 0.01→5.33,**至饱和**)→ **v6 毕业到 FineWeb-edu 真实网页**(2.255B 语料,1.02ep)。tokenizer 全程 gpt2 BPE(复用 xserv-tokenizer;v6 刻意不换 tokenizer 以隔离「数据来源」变量,KI-4 留后续版本)。
|
||||||
|
- **v5→v6 数据轴的质变**:v0–v5 都吃合成幼儿故事(TinyStories,低熵、词汇受控),v5 证明同尺寸模型在它上面已饱和;v6 第一版换成**真实教育类网页文本**(FineWeb-edu),语言种类发生质变——采样从「只会写小故事」变成「能写历史/科学/说明文」。
|
||||||
|
- ⚠️ **val 不可比**:v0–v5 的 val 是同一 TinyStories 1M 留出集(彼此可比);**v6 起换 FineWeb-edu 留出集,分布不同、val(3.07)不能和 v0–v5(~1.1)比大小**——真实网页熵高,~3.0 是预期而非回退。v6 的判据是采样质量 + **transfer eval**(v6→TinyStories val 2.75 vs v5 native 1.11,量化「纯通用数据对窄分布的代价」)。
|
||||||
|
|
||||||
## 四、perf 杠杆台账(详见 [known-issues.md](known-issues.md))
|
## 四、perf 杠杆台账(详见 [known-issues.md](known-issues.md))
|
||||||
|
|
||||||
|
|||||||
204
docs/runs/06-v6-fineweb-edu-dim768.md
Normal file
204
docs/runs/06-v6-fineweb-edu-dim768.md
Normal file
@@ -0,0 +1,204 @@
|
|||||||
|
# Scaling Run v6: 脱离 TinyStories — 纯 FineWeb-edu 真实网页文本 + dim768/18L(同 v4/v5) + 8 卡 DDP bf16 — Design Document
|
||||||
|
|
||||||
|
## Goal
|
||||||
|
|
||||||
|
v5 给了一个干净的结论:**dim768/127M-core 在 TinyStories 上已近数据饱和**(同 arch 数据 ×3.5 仅
|
||||||
|
val ↓5%、末段走平)。v5 末尾的判断是「瓶颈在**语料**而非容量」——再榨 TinyStories 的 epoch 收益薄,
|
||||||
|
真正的杠杆是**换更广、更真的语料**。
|
||||||
|
|
||||||
|
v6 就是兑现这条判断的第一步:**第一版彻底脱离 TinyStories,换成纯 FineWeb-edu**(真实教育类网页文本)。
|
||||||
|
|
||||||
|
1. **架构完全冻结 = v4/v5**(dim 768 / 24 heads × 32 head_dim / 18 layers / SwiGLU ffn 2048,
|
||||||
|
core 127.43M,总 204.63M)。**一个权重维度都不改**——和 v5「只动数据量」一样,v6「只动数据来源」,
|
||||||
|
把「TinyStories → FineWeb-edu」做成唯一被测变量。
|
||||||
|
2. **数据从玩具语料毕业到真实网页**:v0–v5 都吃 TinyStories(GPT 合成的、词汇受控的幼儿小故事);
|
||||||
|
v6 换成 FineWeb-edu(`sample/10BT` 子集,2.255B-token 真实教育类网页文本)。这不是为了「更低的 val」,
|
||||||
|
而是为了**让模型见到真实世界的语言分布**(历史/科学/技术/说明文),测「更丰富的数据 → 更丰富的语言」。
|
||||||
|
3. **bf16 + 8 卡 global 256(同 v5 的甜点区)**:复用 T12 的 bf16 混合精度(fp32 master),稳态
|
||||||
|
~218K tok/s,~1.9h 训完 2.29B token(~1.02 epoch)。
|
||||||
|
|
||||||
|
> ### ⚠️ 方法论说明(本版最重要的一条)
|
||||||
|
>
|
||||||
|
> **v6 的 val loss(FineWeb-edu 3.0652)和 v0–v5 的 val loss(TinyStories ~1.1)不在同一把尺子上,
|
||||||
|
> 不能直接比大小。** TinyStories 是合成的、词汇与句法都受控的幼儿故事,**熵很低**——一个学得好的模型
|
||||||
|
> 能把 val 压到 ~1.1。FineWeb-edu 是真实网页文本,主题、词汇、句式无穷无尽,**熵本就高出一大截**,
|
||||||
|
> 同尺寸模型在它上面的 val 落在 ~3.0 是**完全预期的,不是回退**。
|
||||||
|
>
|
||||||
|
> 所以 **v6 不该用「val 3.07 比 v5 的 1.11 差」来读**。本版的真正判据是两条:
|
||||||
|
> **(a) 通用提示词下的采样质量**(v6 是否能写出连贯的真实英文,而不是掉进小故事);
|
||||||
|
> **(b) transfer eval**(v6 在 TinyStories 留出集上的表现,量化「换通用数据」对原分布的代价)。
|
||||||
|
|
||||||
|
## 数据(v6 的真正变化点)
|
||||||
|
|
||||||
|
| 项 | v5 | v6 |
|
||||||
|
|----|----|----|
|
||||||
|
| 来源 | TinyStories 全量 train(合成幼儿故事)| **FineWeb-edu**(HuggingFaceFW/fineweb-edu, `sample/10BT`,真实教育类网页)|
|
||||||
|
| 语料规模 | 468.26M tokens | **2,254,904,418 tokens**(3 个 parquet 分片)|
|
||||||
|
| **训练消费 token** | ~2.49B(38000 步)| **~2.29B**(35000 步 × global 256 × seq 256)|
|
||||||
|
| epoch 占比 | ~5.33 | **~1.02** |
|
||||||
|
| tokenizer | gpt2 BPE(vocab 50257)| **同(刻意不换,隔离数据变量)** |
|
||||||
|
| 缓存 | `data/tinystories-train.txt.u16.bin` | `data/fineweb-edu.txt.u16.bin`(4.51GB u16)|
|
||||||
|
| held-out val | TinyStories 末尾 1M token | **FineWeb-edu 末尾 1M token(与 v0–v5 不可比,分布不同)** |
|
||||||
|
|
||||||
|
**新数据管线**(`scripts/fineweb_to_txt.py`):从 FineWeb-edu 的 parquet 分片**按 row-group 流式**抽
|
||||||
|
`text` 列,每篇文档后接一个 `<|endoftext|>`(gpt2 id 50256,Corpus 的文档边界),写成一个 UTF-8 `.txt`;
|
||||||
|
再走 `Corpus::load_cached` 的 gpt2 BPE 一次性 tokenize → `.u16.bin` 缓存(免重复 BPE)。整条管线**只新增
|
||||||
|
这一个脚本**,Corpus / tokenizer / 训练器全部复用 v0–v5 的既有代码——这正是「只动数据来源」的工程边界。
|
||||||
|
(冗余的 10.45GB `.txt` 训完即删,可由脚本 + parquet 重新生成;4.51GB 的 `.u16.bin` 缓存留在 dash5。)
|
||||||
|
|
||||||
|
**tokenizer 刻意不换**:gpt2 BPE 对真实网页未必是最优词表(KI-4「大词表小 vocab」仍在台账上),但 v6
|
||||||
|
若同时换 tokenizer,val 的变化就无法干净归因到「数据来源」。**保 gpt2 → 隔离数据变量**;换 tokenizer 留给
|
||||||
|
后续版本单独做。
|
||||||
|
|
||||||
|
## 架构
|
||||||
|
|
||||||
|
v6 = **与 v4/v5 字节级同构的** tiny Qwen3(RoPE + RMSNorm + per-head QK-norm + SwiGLU + 独立 lm_head,MHA)。
|
||||||
|
**刻意一个维度都不改**,让「数据来源」成为唯一被测变量。
|
||||||
|
|
||||||
|
| 维度 | v4/v5 | v6 |
|
||||||
|
|------|-------|----|
|
||||||
|
| dim(= heads·head_dim)| 768 | **768(同)** |
|
||||||
|
| n_layers | 18 | **18(同)** |
|
||||||
|
| n_heads / head_dim | 24 / 32 | **24 / 32(同)** |
|
||||||
|
| ffn_hidden(SwiGLU)| 2048 | 2048(同)|
|
||||||
|
| vocab | 50257 | 50257(同)|
|
||||||
|
| **core 参数** | 127,432,704(≈127.43M)| **127,432,704(同)** |
|
||||||
|
| **总参数** | 204,627,456(≈204.63M)| **204,627,456(同)** |
|
||||||
|
|
||||||
|
config.json 与 v4/v5 一字不差(导出的 **201 tensors** 形状完全相同)。
|
||||||
|
|
||||||
|
## 训练器:8 卡 DDP bf16(同 v5)
|
||||||
|
|
||||||
|
复用 v5 的训练栈,无改动:
|
||||||
|
|
||||||
|
- **fp32 master 权重 + AdamW/clip/DDP 全部 fp32**,linears 走 `cublasGemmEx`(16BF / fp32 accum)、激活
|
||||||
|
存 bf16;norm/softmax/rope/CE 仍 fp32。bf16 撑住 per-rank batch 32 / global 256 的甜点区。
|
||||||
|
- **8 卡 thread-per-GPU**:all-reduce device 梯度取均值后各 rank 本地 GpuAdamW step,跨 rank 参数
|
||||||
|
bit-identical(T8/T11)。
|
||||||
|
- 全程稳态 **~218,000 tok/s**、wall-clock **~1.9h** 训完 2.29B token。
|
||||||
|
|
||||||
|
## 超参
|
||||||
|
|
||||||
|
| 项 | 值 | 备注 |
|
||||||
|
|----|----|----|
|
||||||
|
| optimizer | 手写 AdamW(GPU 端 step)| wd=0.1,β/eps 用 xtrain-optim 默认 |
|
||||||
|
| LR schedule | 线性 warmup → cosine decay | max_lr **6e-4** → min_lr **6e-5**(同 v1–v5)|
|
||||||
|
| warmup | ~1750 步(steps/20)| lr 在 ~step 1750 达峰 6e-4,cosine 衰减到末步 6e-5 |
|
||||||
|
| grad clip | global-norm 1.0 | warmup 后 gnorm ~0.4 起平稳 |
|
||||||
|
| steps | **35000** | ~1.9h @ 8 卡 |
|
||||||
|
| global batch | **256**(per-rank 32 × world 8)| bf16 甜点区(同 v5)|
|
||||||
|
| seq_len | **256** | 同 v2–v5 |
|
||||||
|
| tokens/step | 256×256 = 65536 | 总训练 token ≈ **2.29B**(~1.02 epoch)|
|
||||||
|
| world size | **8**(RTX 5090,sm_120)| |
|
||||||
|
| 精度 | **bf16 混合精度**(fp32 master)| T12/KI-2;导出 xserv 同样 BF16 |
|
||||||
|
|
||||||
|
## 结果
|
||||||
|
|
||||||
|
- **train loss**:start **11.0273** → end **3.1442**(全程平滑下降)
|
||||||
|
- **best / final val loss(FineWeb-edu held-out 1M token,step 34999)**:**3.0652**
|
||||||
|
- FineWeb val 曲线(抽样,**单调下降无走平** —— 与 v5 末段抖动相反):
|
||||||
|
|
||||||
|
| step | 499 | 1999 | 3999 | 5999 | 7999 | 9999 | 13999 | 17999 | 21999 | 25999 | 29999 | 33999 | **34999** |
|
||||||
|
|------|-----|------|------|------|------|------|-------|-------|-------|-------|-------|-------|-------|
|
||||||
|
| val | 5.6987 | 4.0900 | 3.6906 | 3.5501 | 3.4681 | 3.4057 | 3.3089 | 3.2383 | 3.1779 | 3.1268 | 3.0907 | 3.0683 | **3.0652** |
|
||||||
|
|
||||||
|
**注意曲线形状**:v6 的 FineWeb val **到末步仍在单调降**(3.0683 → 3.0652,无 v5 那种 ~0.004 带内抖动)。
|
||||||
|
对真实网页这本「信息量大得多」的语料,1.02 epoch / 2.29B token **远未触到数据天花板**——继续训(更多
|
||||||
|
epoch 或更大模型)val 还有明显下降空间。这与 v5 在 TinyStories 上 5.33 epoch 走平形成鲜明对照:**换了语料,
|
||||||
|
天花板被抬高了。**
|
||||||
|
|
||||||
|
### ⚠️ 为什么 3.07 不能和 v5 的 1.11 比
|
||||||
|
|
||||||
|
| | v5 | v6 |
|
||||||
|
|---|---|---|
|
||||||
|
| val 语料 | TinyStories(合成幼儿故事,低熵)| FineWeb-edu(真实网页,高熵)|
|
||||||
|
| best val | **1.1102** | **3.0652** |
|
||||||
|
| 可比性 | ← **不可比** → | 两套 held-out 来自完全不同的分布 |
|
||||||
|
|
||||||
|
**3.07 > 1.11 ≠ v6 比 v5 差。** 一本词汇受控、句式套路化的幼儿故事集,本来就能被压到很低的 val;真实网页
|
||||||
|
文本的内在熵高出一截,同尺寸模型落在 ~3.0 是**预期值**。判 v6 的好坏,看下面两节(采样质量 + transfer),
|
||||||
|
不看这个不可比的数字。
|
||||||
|
|
||||||
|
## Transfer eval — v6 在 TinyStories 留出集上
|
||||||
|
|
||||||
|
把 v6 的 ckpt 拿到**与 v5 完全相同的 TinyStories 1M 留出集**上跑 `--eval-ckpt`(bf16),量化「纯通用数据
|
||||||
|
训练」对 TinyStories 原分布的代价:
|
||||||
|
|
||||||
|
| 模型 | TinyStories 1M val | 说明 |
|
||||||
|
|------|--------------------|------|
|
||||||
|
| v5(native TinyStories)| **1.1102** | 直接在 TinyStories 上训出来的 |
|
||||||
|
| **v6(FineWeb-edu)→ TinyStories** | **2.7546** | 从没见过 TinyStories,纯 transfer |
|
||||||
|
|
||||||
|
**v6 在 TinyStories 上 2.75,比 v5 的 1.11 高 +1.64 nats。** 这是预期的、也是有意义的:v6 **从未训练过
|
||||||
|
TinyStories**,它把容量花在了真实网页分布上,对「the little girl named Lily」这种高度套路化的幼儿故事
|
||||||
|
反而生疏了。换句话说,**纯通用数据训练对窄分布(TinyStories)有明确代价**——v6 用 TinyStories 专有的
|
||||||
|
流畅度,换来了通用网页文本的能力。这正是「换轴」该有的样子:不是免费午餐,是一次有方向的权衡。
|
||||||
|
|
||||||
|
> 这条 transfer 也回答了一个隐含问题:v6 的 2.75 远好于一个随机模型(~11),说明 FineWeb-edu 学到的
|
||||||
|
> 通用语言能力**确实迁移到了** TinyStories(英语语法、常见词、叙事结构都通用),只是没有 v5 那种针对性。
|
||||||
|
|
||||||
|
## 采样对比 —— v5(TinyStories) vs v6(FineWeb-edu),同通用提示词
|
||||||
|
|
||||||
|
两个模型**同 arch、同 xserv 服务、同贪心、同 prompt**,唯一差别是训练语料。喂**通用/说明文**提示词
|
||||||
|
(不是 "Once upon a time"),看语言走向:
|
||||||
|
|
||||||
|
| prompt | **v5(TinyStories)** | **v6(FineWeb-edu)** |
|
||||||
|
|--------|----------------------|------------------------|
|
||||||
|
| `The history of` | the castle was very interesting… **The little girl was so excited to explore the castle.** She ran around… | the United States is **a fascinating one. It is a country that has been shaped by the experiences of its people. From the founding of the United States to the present day…** |
|
||||||
|
| `In science,` | **the little girl learned about different kinds of plants and animals.** She was so excited to learn more. | the term science is used to refer to the study of the physical world. **Science is a broad field that encompasses biology, chemistry, physics, and engineering.** |
|
||||||
|
| `The most important` | thing was that **the little girl was safe.** She was so happy that she had been able to help the bird. `<\|endoftext\|>` | thing is to have a good understanding of **the different types of data and how they are used… it can help you make decisions about your business.** |
|
||||||
|
| `The United States` | of the world was a very special place. **Everyone was happy and they all looked forward to the future.** `<\|endoftext\|>` | has a long history… **the process of assimilation** (轻微史实幻觉,但语域是历史说明文)|
|
||||||
|
| `Water is` | **not good for you… Lily and Ben nodded. They drank water and felt better. They learned their lesson.** | a natural resource that is used to produce energy. **It is a renewable resource that can be used to generate electricity.** |
|
||||||
|
|
||||||
|
**结论很直接**:
|
||||||
|
|
||||||
|
- **v5 无法脱离小故事模式**。每一个通用提示词都被它掰回 TinyStories 叙事——"the little girl"、"Lily and
|
||||||
|
Ben"、"learned their lesson"、`<|endoftext|>` 收尾。它**只会**写幼儿故事,因为它**只见过**幼儿故事。
|
||||||
|
- **v6 写出真实说明文英文**——历史、科学学科、数据/商业决策、可再生资源。语域明确是**教育类网页文本**,
|
||||||
|
正是 FineWeb-edu 的分布。小模型仍有重复倾向(greedy 尤甚,如 "decisions about your business" 重复一次),
|
||||||
|
也有轻微史实幻觉("Rockefeller coined Americanization"),但**语言的种类和广度**是 v5 完全没有的。
|
||||||
|
|
||||||
|
这就是 v6 这版要回答的问题的答案:**更丰富、更真实的语料 → 更丰富、更通用的语言**。代价是窄分布上的
|
||||||
|
专有流畅度(transfer 2.75 已量化),收益是从「只会一种文体」到「能写真实世界的说明文」。
|
||||||
|
|
||||||
|
## xserv 验证
|
||||||
|
|
||||||
|
导出 HF Qwen3 safetensors(命名映射 + 2D 权重转置 [in,out]→[out,in] + BF16,见 T9 `docs/08`,
|
||||||
|
**201 tensors**,config.json 与 v4/v5 一字不差)存入 registry,用 `xserv-cli` 加载并贪心生成:
|
||||||
|
|
||||||
|
```
|
||||||
|
$ xserv-cli ~/projects/tiny-models/v6-fineweb-edu-dim768 --max-tokens 50
|
||||||
|
Model: qwen3, layers=18, hidden=768, heads=24/24 kv, vocab=50257
|
||||||
|
Loaded 201 tensors
|
||||||
|
Ready (KV cache, dtype=bf16).
|
||||||
|
xserv> The history of the United States is a fascinating one. It is a country that has been shaped by
|
||||||
|
the experiences of its people. From the founding of the United States to the present day, there
|
||||||
|
are many stories that have shaped the country.
|
||||||
|
xserv> In science, the term science is used to refer to the study of the physical world. Science is a
|
||||||
|
broad field that encompasses a wide range of disciplines, including biology, chemistry, physics,
|
||||||
|
and engineering.
|
||||||
|
xserv> Water is a natural resource that is used to produce energy. It is a renewable resource that can
|
||||||
|
be used to generate electricity.
|
||||||
|
```
|
||||||
|
|
||||||
|
**token-match**:v6 **训练即 bf16**(fp32 master),权重本就在 bf16 数值域里收敛,导出 BF16 给 xserv 后
|
||||||
|
两侧数值路径一致——同 v4/v5 的闭环(v5 是 3/3 逐 token 一致)。xserv 加载 qwen3 layers=18 hidden=768
|
||||||
|
201 tensors、KV-cache、贪心生成,闭环成立。
|
||||||
|
|
||||||
|
## 相比 v5 与 v7 提案
|
||||||
|
|
||||||
|
v5 给出**数据天花板**结论(TinyStories 在 dim768 饱和),v6 兑现了「换轴:广化语料」这条路——结果是
|
||||||
|
**语言种类的质变**(小故事 → 真实说明文),且 FineWeb val 到末步仍单调降 = **新语料下天花板被抬高、
|
||||||
|
1.02 epoch 远未触顶**。v7 的杠杆按收益排序:
|
||||||
|
|
||||||
|
1. **更多/更好数据(首选)**:v6 才训 1.02 epoch、val 还在单调降——**同 arch 多喂 FineWeb-edu**(2–3 epoch
|
||||||
|
或加更多 10BT 分片)几乎肯定继续降 val,是当前最便宜、最确定的收益。
|
||||||
|
2. **数据混合(次选,治 transfer 退化)**:v6 暴露了「纯通用数据伤窄分布」(TinyStories transfer 1.11→2.75)。
|
||||||
|
若想同时要**连贯性 + 广度**,可上 **TinyStories + FineWeb-edu 混合**语料——但这是为「不退化」服务,不是
|
||||||
|
为「更低通用 val」服务,优先级看目标。
|
||||||
|
3. **更大模型(dim1024+,要 KI-3)**:v6 证明真实语料的信息量对 127M-core 还有富余(val 未饱和)→ 更大模型
|
||||||
|
能从同语料榨更多。但 dim1024+ 激活显存上升,需先做 **KI-3 激活重计算**(T12 已列为 bf16 之后的下一个
|
||||||
|
显存杠杆)。代价最高,留到「数据这条便宜杠杆榨干后」再上。
|
||||||
|
|
||||||
|
**我的判断:v7 先走 1(更多 FineWeb-edu epoch)**——v6 的曲线明确告诉我们「这本语料还没喂够」,在动模型
|
||||||
|
尺寸(贵、要 KI-3)之前,先把已经铺好的数据轴吃满是性价比最高的下一步。
|
||||||
@@ -18,6 +18,11 @@ val loss 一栏给的是各版**各自训练 run 报告的 best val**(held-out
|
|||||||
**tokens / epoch 两列让数据饱和可见**:v4→v5 同 arch、数据 ×3.5(1.54→5.33 epoch),val 仅 ↓0.06(~5%)
|
**tokens / epoch 两列让数据饱和可见**:v4→v5 同 arch、数据 ×3.5(1.54→5.33 epoch),val 仅 ↓0.06(~5%)
|
||||||
且末段走平 ⇒ TinyStories 在 dim768 已近**数据天花板**(详见 [05-v5](05-v5-tinystories-dim768.md))。
|
且末段走平 ⇒ TinyStories 在 dim768 已近**数据天花板**(详见 [05-v5](05-v5-tinystories-dim768.md))。
|
||||||
|
|
||||||
|
⚠️ **v6 起换了保留集(语料)**:v0–v5 的 val 都是 **TinyStories** 1M 留出集(彼此可比);v6 换成纯
|
||||||
|
**FineWeb-edu**(真实网页文本),它的 val(3.07)是**另一把尺子上的另一个分布**,**不能**和 v0–v5 的
|
||||||
|
~1.1 比大小——真实网页熵高,~3.0 是预期值不是回退。v6 的判据是采样质量 + transfer eval(见
|
||||||
|
[06-v6](06-v6-fineweb-edu-dim768.md))。下表 v6 行的 val 单独标注分布。
|
||||||
|
|
||||||
| 版本 | 数据 | 训练 token | epoch | 架构 (dim/L/heads·hd/ffn) | core 参数 | 总参数 | val loss | 备注 |
|
| 版本 | 数据 | 训练 token | epoch | 架构 (dim/L/heads·hd/ffn) | core 参数 | 总参数 | val loss | 备注 |
|
||||||
|---|---|---|---|---|---|---|---|---|
|
|---|---|---|---|---|---|---|---|---|
|
||||||
| [v0-baseline](../../docs/05-training-loop.md) | TinyStories valid 3MB 切片 (~72 万 tok) | ~0.72M | — | 32 / 4 / 2·16 / 64 | ~41K | 3.26M | **3.8050** | 太小不可用;采样陷入 "mommy's mommy's mommy" 循环 |
|
| [v0-baseline](../../docs/05-training-loop.md) | TinyStories valid 3MB 切片 (~72 万 tok) | ~0.72M | — | 32 / 4 / 2·16 / 64 | ~41K | 3.26M | **3.8050** | 太小不可用;采样陷入 "mommy's mommy's mommy" 循环 |
|
||||||
@@ -26,12 +31,14 @@ val loss 一栏给的是各版**各自训练 run 报告的 best val**(held-out
|
|||||||
| [v3-tinystories-dim512](03-v3-tinystories-dim512.md) | TinyStories 全量 (复用 v1 缓存) | ~245.8M | ~0.53 | 512 / 16 / 16·32 / 2048 | 67.13M | 118.59M | **1.3027** | dim512/16L + **单卡 batched (T10)**;val 比 v2 低 0.40,带动机/转折的连续叙事;~2.65h/单卡 ~26K tok/s。T10 修 KI-1 根因(launch-bound),单卡避开 KI-5 |
|
| [v3-tinystories-dim512](03-v3-tinystories-dim512.md) | TinyStories 全量 (复用 v1 缓存) | ~245.8M | ~0.53 | 512 / 16 / 16·32 / 2048 | 67.13M | 118.59M | **1.3027** | dim512/16L + **单卡 batched (T10)**;val 比 v2 低 0.40,带动机/转折的连续叙事;~2.65h/单卡 ~26K tok/s。T10 修 KI-1 根因(launch-bound),单卡避开 KI-5 |
|
||||||
| [v4-tinystories-dim768](04-v4-tinystories-dim768.md) | TinyStories 全量 (复用 v1 缓存) | ~720.9M | ~1.54 | 768 / 18 / 24·32 / 2048 | 127.43M | 204.63M | **1.1690** | dim768/18L + **8 卡 DDP fp32**;val 比 v3 低 0.13,细节更具体、结构更完整;~84min/8 卡 ~145K tok/s。验证 T11 缓存分配器在 dim768 多卡扩展;⚠️ fp32 per-rank batch 32 OOM = bf16(KI-2) 触发点 |
|
| [v4-tinystories-dim768](04-v4-tinystories-dim768.md) | TinyStories 全量 (复用 v1 缓存) | ~720.9M | ~1.54 | 768 / 18 / 24·32 / 2048 | 127.43M | 204.63M | **1.1690** | dim768/18L + **8 卡 DDP fp32**;val 比 v3 低 0.13,细节更具体、结构更完整;~84min/8 卡 ~145K tok/s。验证 T11 缓存分配器在 dim768 多卡扩展;⚠️ fp32 per-rank batch 32 OOM = bf16(KI-2) 触发点 |
|
||||||
| [v5-tinystories-dim768](05-v5-tinystories-dim768.md) | TinyStories 全量 (复用 v1 缓存) | **~2.49B** | **~5.33** | 768 / 18 / 24·32 / 2048 (**同 v4**) | 127.43M | 204.63M | **1.1102** | **架构同 v4**,唯一变量=数据量 + **8 卡 DDP bf16**(global 256);~3.2h/8 卡 ~217K tok/s。⚠️ **数据天花板**:数据 ×3.5 仅 val ↓0.06(~5%) 且末段走平 ⇒ TinyStories 在 dim768 近饱和,v6 该换轴(更大模型/更广语料) |
|
| [v5-tinystories-dim768](05-v5-tinystories-dim768.md) | TinyStories 全量 (复用 v1 缓存) | **~2.49B** | **~5.33** | 768 / 18 / 24·32 / 2048 (**同 v4**) | 127.43M | 204.63M | **1.1102** | **架构同 v4**,唯一变量=数据量 + **8 卡 DDP bf16**(global 256);~3.2h/8 卡 ~217K tok/s。⚠️ **数据天花板**:数据 ×3.5 仅 val ↓0.06(~5%) 且末段走平 ⇒ TinyStories 在 dim768 近饱和,v6 该换轴(更大模型/更广语料) |
|
||||||
|
| [v6-fineweb-edu-dim768](06-v6-fineweb-edu-dim768.md) | **FineWeb-edu** 真实网页 (2.255B 语料) | ~2.29B | ~1.02 | 768 / 18 / 24·32 / 2048 (**同 v4/v5**) | 127.43M | 204.63M | **3.0652** ⚠️*(FineWeb val,与上不可比)* | **第一版脱离 TinyStories**,唯一变量=数据来源 + 8 卡 DDP bf16;~1.9h/8 卡 ~218K tok/s。**val 是另一分布**(真实网页熵高,~3.0 是预期非回退),判据=采样质量+transfer。FineWeb val 末步仍单调降=未饱和;**transfer**: v6→TinyStories val **2.75**(v5 native 1.11),纯通用数据对窄分布有代价。采样: v6 写真实说明文 vs v5 一律掉进小故事 |
|
||||||
|
|
||||||
## 下一档(提案)
|
## 下一档(提案)
|
||||||
|
|
||||||
- **v6**(待派发):v5 给出**数据天花板**结论(同 arch 数据 ×3.5 仅 val ↓5% 且末段走平,TinyStories 在
|
- **v7**(待派发):v6 兑现了 v5「换轴广化语料」的判断——纯 FineWeb-edu 带来**语言种类的质变**(小故事→真实
|
||||||
dim768 已近饱和)——v6 该**换轴**,见 `05-v5-*.md` 末尾 "v6 提案"。两条候选:**A 更大模型(dim1024+,
|
说明文),且 FineWeb val 才训 1.02 epoch、到末步**仍单调降**=新语料下远未饱和。v7 杠杆按收益排序:
|
||||||
容量上限尚未触顶;dim 越大 KI-4 占比越摊薄)** vs **B 更广语料(FineWeb-edu 等 + 可能换 tokenizer KI-4,
|
**1. 更多/更好 FineWeb-edu(首选,最便宜最确定:同 arch 多喂 2–3 epoch / 加分片,val 几乎必继续降)**;
|
||||||
抬高语料信息上限)**。判断 **B 解锁空间更大**(v5 的瓶颈是语料而非容量,只放大模型很快又撞 TinyStories 信息上限);
|
**2. 数据混合(TinyStories+FineWeb,治 v6 暴露的 transfer 退化 1.11→2.75,为「连贯+广度」服务)**;
|
||||||
理想 A+B 同时。**KI-3(激活重计算)仅在 v6 走 A(dim1024+)时才需要**,与放大模型路线绑定。
|
**3. 更大模型(dim1024+,要先做 KI-3 激活重计算,代价最高,留到数据轴榨干后)**。判断 **先走 1**——
|
||||||
|
v6 曲线明确说「这本语料还没喂够」,动模型尺寸前先吃满数据轴性价比最高。详见 `06-v6-*.md` 末尾 "v7 提案"。
|
||||||
</content>
|
</content>
|
||||||
|
|||||||
Reference in New Issue
Block a user