diff --git a/docs/evolution.md b/docs/evolution.md index ed5cb83..f418fdb 100644 --- a/docs/evolution.md +++ b/docs/evolution.md @@ -26,7 +26,7 @@ --- -## 二、Scaling runs(v0–v6)—— 主要动「模型架构」与「数据集」 +## 二、Scaling runs(v0–v7)—— 主要动「模型架构」与「数据集」 架构始终是 **Qwen3-style**(RoPE + RMSNorm + QK-norm + SwiGLU,gpt2 50257 词表),只放大 dim/层;其余维度逐版变化如下: @@ -39,8 +39,9 @@ | 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%) | | 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 末步仍单调降=未饱和 | +| v7 | dim768/18L(同 v4/v5/v6) | **同 v6 的 FineWeb-edu 子集**(非新数据)· 3.28B · **1.45ep** | bf16 | 8 GPU · 218K | val **3.01**(与 v6 可比):⚠️**同子集多 epoch 近天花板**——唯一变量=epoch(1.02→1.45),多喂 ~1B token val 仅 ↓0.05 且 ~step44000 后走平、采样无质变。与 v5 的 TinyStories 数据量饱和同类(重复老数据边际薄);真·更多数据要**新 shards** | -> 实训 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 留出集,分布不同、与 v0–v5 不可比;v6 与 v7 同一 FineWeb 留出集、彼此可比)。 --- @@ -49,9 +50,10 @@ - **算法**:手写 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)。 - **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,**至饱和**)→ **v6 毕业到 FineWeb-edu 真实网页**(2.255B 语料,1.02ep)。tokenizer 全程 gpt2 BPE(复用 xserv-tokenizer;v6 刻意不换 tokenizer 以隔离「数据来源」变量,KI-4 留后续版本)。 +- **数据集**:TinyStories 3MB 切片 → 全量 TinyStories(epoch 0.01→5.33,**至饱和**)→ **v6 毕业到 FineWeb-edu 真实网页**(2.255B 语料,1.02ep)→ **v7 同子集多 epoch(1.45ep,近顶)**。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,量化「纯通用数据对窄分布的代价」)。 + - ⚠️ **同子集多 epoch 也有天花板(v6→v7)**:v6 的 FineWeb val 才训 1.02ep、末步仍单调降,曾被读作「还没喂够」;v7 把**同一 2.255B 子集**喂到 1.45ep(多 ~1B token),FineWeb val 仅 ↓0.05(3.07→3.01)且 ~step44000 后走平、采样无质变 ⇒ **该子集在 dim768 已近天花板**。这与 v5 的 TinyStories 数据量饱和是**同一类现象**:**「重复喂老数据」边际都薄,无论是 v5 的同语料多 epoch 还是 v7 的同子集多 epoch**。真正抬天花板的是 v6「换更广的新语料」那一步——**杠杆在「更多样的新 token」,不在「同数据多读几遍」**。后续要继续降 val,必须补**新 FineWeb shards**(更多样、不重复),不是同子集加 epoch。 + - ⚠️ **val 可比性**:v0–v5 的 val 是同一 TinyStories 1M 留出集(彼此可比);**v6 起换 FineWeb-edu 留出集,分布不同、val 不能和 v0–v5(~1.1)比大小**——真实网页熵高,~3.0 是预期而非回退;**v6 与 v7 同一 FineWeb 留出集、彼此可比**(3.07→3.01)。v6 的判据还有采样质量 + **transfer eval**(v6→TinyStories val 2.75 vs v5 native 1.11,量化「纯通用数据对窄分布的代价」)。 ## 四、perf 杠杆台账(详见 [known-issues.md](known-issues.md)) diff --git a/docs/runs/07-v7-fineweb-edu-dim768.md b/docs/runs/07-v7-fineweb-edu-dim768.md new file mode 100644 index 0000000..a886df5 --- /dev/null +++ b/docs/runs/07-v7-fineweb-edu-dim768.md @@ -0,0 +1,155 @@ +# Scaling Run v7: 同子集多 epoch — 同 v6 FineWeb-edu 2.255B 子集 × 1.45 epoch + dim768/18L(同 v4/v5/v6) + 8 卡 DDP bf16 — Design Document + +## Goal + +v6 给了一条很有诱惑力的曲线:**纯 FineWeb-edu 才训 1.02 epoch,FineWeb val 到末步仍单调下降(无走平)**—— +看上去「这本语料还没喂够」。v6 末尾把 v7 的首选杠杆定为「**同 arch 多喂 FineWeb-edu**」(更多 epoch), +因为这是当时**最便宜、最确定**的下一步(不动模型尺寸、不补新数据)。 + +v7 就是去**兑现并检验**这条判断:**架构、语料子集完全冻结,唯一变量 = epoch 数**(1.02 → 1.45), +看 FineWeb val 还能不能接着降。 + +1. **架构完全冻结 = v4/v5/v6**(dim 768 / 24 heads × 32 head_dim / 18 layers / SwiGLU ffn 2048, + core 127.43M,总 204.63M)。**一个权重维度都不改**,导出的 config.json **与 v6 字节级一致**。 +2. **数据子集完全冻结 = v6**:**同一个 2.255B-token FineWeb-edu 子集**(`sample/10BT` 的 3 个 parquet 分片)。 + v7 **不补任何新分片**——这正是本版的核心设定:测「**重复喂同一子集的边际收益**」,而非「更多样的数据」。 +3. **只把 steps 从 35000 拉到 50000**(global 256 × seq 256 不变)→ 训练消费 token 从 ~2.29B 涨到 ~3.28B, + epoch 占比从 1.02 涨到 **1.45**。其余超参(lr schedule / clip / bf16 / 8 卡)一字不变。 + +> ### ⚠️ 方法论说明(同 v6) +> +> v7 的 val(FineWeb-edu 3.0149)与 v6(3.0652)**同一把尺子、同一个 1M 留出集,可以直接比**; +> 但二者都**不能**和 v0–v5 的 TinyStories val(~1.1)比大小——真实网页文本熵高,~3.0 是预期值不是回退。 + +## 数据(v7 与 v6 的唯一差别 = epoch 数) + +| 项 | v6 | v7 | +|----|----|----| +| 来源 | FineWeb-edu `sample/10BT`(真实教育类网页)| **同(一字不差的同一子集,非新数据)** | +| 语料规模 | 2,254,904,418 tokens(3 parquet 分片)| **2,254,904,418 tokens(同子集)** | +| **训练消费 token** | ~2.29B(35000 步)| **~3.28B**(50000 步 × global 256 × seq 256)| +| **epoch 占比** | ~1.02 | **~1.45** | +| tokenizer | gpt2 BPE(vocab 50257)| 同 | +| 缓存 | `data/fineweb-edu.txt.u16.bin`(4.51GB u16)| **同一缓存** | +| held-out val | FineWeb-edu 末尾 1M token | **同(与 v6 可比)** | + +**缓存-only 加载**(v7 的一个工程注脚):为腾磁盘,冗余的 `fineweb-edu.txt`(10.45GB)在 v6 后已删,只留 +4.51GB 的 `.u16.bin` 缓存。v7 训练前先验证了 `Corpus::load_cached` 在**缓存命中时提前返回、不读 .txt**—— +实测 2.255B token 仅凭缓存加载 OK,**零改码**。(若缓存缺失才需用 `scripts/fineweb_to_txt.py` + parquet 重建。) + +## 架构 + +v7 = **与 v4/v5/v6 字节级同构的** tiny Qwen3(RoPE + RMSNorm + per-head QK-norm + SwiGLU + 独立 lm_head,MHA)。 +**一个维度都不改**,让「epoch 数」成为唯一被测变量。core 127,432,704 / 总 204,627,456,导出 **201 tensors**, +config.json 与 v6 一字不差。 + +## 训练器:8 卡 DDP bf16(同 v5/v6) + +复用 v5/v6 的训练栈,无改动:fp32 master + AdamW/clip/DDP 全 fp32,linears 走 `cublasGemmEx`(16BF/fp32 accum)、 +激活存 bf16;norm/softmax/rope/CE 仍 fp32。8 卡 thread-per-GPU,all-reduce 均值后各 rank 本地 GpuAdamW step, +跨 rank 参数 bit-identical。全程稳态 **~218,000 tok/s**、wall-clock **~4.2h** 训完 3.28B 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–v6)| +| warmup | ~1750 步(steps/20 取整不变量级)| lr 峰值 6e-4,cosine 衰减到末步 6e-5 | +| grad clip | global-norm 1.0 | 平稳 gnorm ~0.26 | +| steps | **50000**(v6 是 35000)| ~4.2h @ 8 卡 | +| global batch | **256**(per-rank 32 × world 8)| bf16 甜点区(同 v5/v6)| +| seq_len | **256** | 同 v2–v6 | +| tokens/step | 256×256 = 65536 | 总训练 token ≈ **3.28B**(~1.45 epoch)| +| world size | **8**(RTX 5090,sm_120)| | +| 精度 | **bf16 混合精度**(fp32 master)| T12/KI-2;导出 xserv 同样 BF16 | + +## 结果 + +- **train loss**:start **11.0274** → end **3.0517**(全程平滑下降) +- **best val loss 3.0149**(step 48999),**final val loss 3.0159**(step 49999,FineWeb-edu held-out 1M) +- FineWeb val 曲线(抽样): + +| step | 499 | 999 | 3999 | 7999 | 11999 | 15999 | 19999 | 25999 | 31999 | 37999 | 43999 | **48999** | 49999 | +|------|-----|-----|------|------|-------|-------|-------|-------|-------|-------|-------|-------|-------| +| val | 5.9047 | 4.9563 | 3.7424 | 3.4982 | 3.3766 | 3.3078 | 3.2494 | 3.1802 | 3.1232 | 3.0741 | 3.0315 | **3.0149** | 3.0159 | + +### ⚠️ 核心发现:同一 FineWeb 子集多 epoch → 边际递减,dim768 近天花板 + +| | v6 | v7 | +|---|---|---| +| epoch | 1.02 | **1.45** | +| 训练 token | 2.29B | 3.28B | +| best val(FineWeb,可比)| 3.0652 | **3.0149** | +| Δval | — | **仅 ↓0.05** | + +把 epoch 从 1.02 拉到 1.45(多喂 ~1B token),FineWeb val **只降了 ~0.05**(3.0652 → 3.0149), +而且曲线 **~step 44000 后基本走平**(3.0315 → 3.0149 → 末步反弹到 3.0159)。 + +**结论:同一个 2.255B FineWeb-edu 子集,多喂 epoch 在 dim768 上已近天花板。** v6 末尾「val 还在单调降 = +还没喂够」的乐观读法,被 v7 校正了:那段单调下降主要是 v6 **才训 1 个 epoch、尚在首轮学习**;一旦进入第 +1.x 个 epoch(开始重复见同样的 token),增益迅速摊薄。**真正的「更多数据」必须是新的 FineWeb shards +(更多样、不重复的 token),而不是把同一子集再读一遍。** + +> 这与 v5 在 TinyStories 上的饱和信号是**同一类现象的两条轴**: +> - **v5(同子集 ×3.5 数据)**:TinyStories 5.33 epoch vs v4 1.54 epoch,val 仅 ↓5% 且走平 = **数据量轴饱和**。 +> - **v7(同子集 ×1.4 epoch)**:FineWeb 1.45 epoch vs v6 1.02 epoch,val 仅 ↓0.05 且走平 = **同子集 epoch 轴饱和**。 +> - **v6(换语料)** 才是真正抬高天花板的轴:换成更广更真的 FineWeb-edu,带来**语言种类的质变**(小故事 → 真实说明文)。 +> +> 一句话:**「重复喂老数据」(v5/v7)边际都薄;「喂更广的新数据」(v6)才是杠杆。** + +## 采样对比 —— v6 vs v7(同 arch、同 xserv、同贪心、同 prompt) + +唯一差别是 v7 多训了 ~0.43 epoch。喂同样的通用/说明文提示词: + +| prompt | **v6(1.02ep)** | **v7(1.45ep)** | +|--------|------------------|------------------| +| `The history of` | the United States is a fascinating one… shaped by the experiences of its people… | the city of New York is a story of many different people. The first inhabitants… were the Native Americans… the Dutch… | +| `In science,` | the term science is used to refer to the study of the physical world… biology, chemistry, physics, and engineering. | the term "science" is used to describe the study of the natural world… biology, chemistry, physics, and mathematics… | +| `The most important` | thing is to have a good understanding of the different types of data… make decisions about your business. | thing to remember is that you can't just buy a new car and expect to pay for it… understand the basics of insurance… | +| `Water is` | a natural resource that is used to produce energy… a renewable resource that can be used to generate electricity. | a natural substance that is found in the earth's crust… a very important element in the Earth's ecosystem… | + +**采样质量与 v6 同档**——都写连贯的真实说明文英文(历史/科学学科/资源/金融),与 v5 一律掉进小故事形成鲜明 +对比。v7 措辞略有变化(greedy 路径随权重微移而漂移),但**没有可感知的质的提升**——这正是 val 仅 ↓0.05 在 +采样上的体现。小模型的重复倾向与轻微史实/事实瑕疵(v7 "Water…made up of carbon")两版都有。**val 的边际 +小提升,没有兑换成采样上的明显增益**,进一步印证「同子集多 epoch 近顶」。 + +## xserv 验证 + +导出 HF Qwen3 safetensors(命名映射 + 2D 权重转置 [in,out]→[out,in] + BF16,见 T9 `docs/08`,**201 tensors**, +config.json 与 v4/v5/v6 一字不差)存入 registry,用 `xserv-cli` 加载并贪心生成: + +``` +$ xserv-cli ~/projects/tiny-models/v7-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 city of New York is a story of many different people. The first inhabitants of the + city were the Native Americans. The first Europeans arrived in the 16th century… the Dutch. +xserv> In science, the term "science" is used to describe the study of the natural world. It is a broad term + that encompasses a wide range of disciplines, including biology, chemistry, physics, and mathematics. +xserv> Water is a natural substance that is found in the earth's crust… a very important element in the Earth's + ecosystem. +``` + +**token-match**:v7 **训练即 bf16**(fp32 master),权重本就在 bf16 数值域里收敛,导出 BF16 给 xserv 后两侧 +数值路径一致——同 v4/v5/v6 的闭环。xserv 加载 qwen3 layers=18 hidden=768 201 tensors、KV-cache、贪心生成, +闭环成立。 + +## 相比 v6 与 v8 提案 + +v7 把 v6「先吃满数据轴」这条提案落了地,并得出一个**校正性的结论**:**同一 2.255B FineWeb 子集多喂 epoch, +在 dim768 上边际很薄(1.02→1.45ep 仅 val ↓0.05、采样无质变、曲线走平)= 近天花板**。所以「更多数据」这条 +最便宜的杠杆,**前提是数据要真的更多(新 shards),不是同一子集重复**。v8 的杠杆按收益重排: + +1. **新 FineWeb shards(真·更多数据,首选)**:再下载 `sample/10BT` 之外的分片(或 100BT 子集),提供**更多样、 + 不重复**的 token——这才是 v6 单调下降曲线真正承诺的收益。⚠️ 磁盘紧(dash5 ~18G 余),需把 parquet/中间 .txt + 溢出到 `/dashscope-tmp/wjh`、用完即删。 +2. **更大模型(dim1024+,容量轴)**:v7 证明 127M-core 在「同子集」上吃不动更多,但**没说**它在「更多样数据」上 + 也到顶——要判断是否 capacity-limited,需配新数据一起测。dim1024+ 激活显存上升,需先做 **KI-3 激活重计算**。 +3. **数据混合(TinyStories + FineWeb)**:治 v6 暴露的 transfer 退化(1.11→2.75),为「连贯 + 广度」服务,不是 + 为「更低通用 val」服务,优先级看目标。 + +**我的判断:v8 应走 1(新 FineWeb shards)**——v7 已经证明「重复老数据」这条路到头了,下一步必须给模型**没见过 +的 token**。这也顺带能回答 2:在新数据上若 val 仍快速降,则容量未到顶(再上 dim1024);若也很快走平,才是真 +capacity-limited。 diff --git a/docs/runs/README.md b/docs/runs/README.md index 637f624..1973bd9 100644 --- a/docs/runs/README.md +++ b/docs/runs/README.md @@ -16,7 +16,9 @@ val loss 一栏给的是各版**各自训练 run 报告的 best val**(held-out 重评 v1=2.6756→v2=2.0418(低 0.634,apples-to-apples);下表 best-val 同向。 **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→v7 同样揭示 +「重复老数据」边际薄**:同一 2.255B FineWeb 子集多喂 epoch(1.02→1.45),FineWeb val 仅 ↓0.05 且走平 ⇒ 该子集 +在 dim768 也近顶(详见 [07-v7](07-v7-fineweb-edu-dim768.md))。两条都说明:真·增益要**新数据**(v6 换更广语料才抬了天花板),不是同子集多读几遍。 ⚠️ **v6 起换了保留集(语料)**:v0–v5 的 val 都是 **TinyStories** 1M 留出集(彼此可比);v6 换成纯 **FineWeb-edu**(真实网页文本),它的 val(3.07)是**另一把尺子上的另一个分布**,**不能**和 v0–v5 的 @@ -32,13 +34,15 @@ val loss 一栏给的是各版**各自训练 run 报告的 best val**(held-out | [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 该换轴(更大模型/更广语料) | | [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 一律掉进小故事 | +| [v7-fineweb-edu-dim768](07-v7-fineweb-edu-dim768.md) | **同 v6 的 2.255B FineWeb-edu 子集**(非新数据) | ~3.28B | ~1.45 | 768 / 18 / 24·32 / 2048 (**同 v4/v5/v6**) | 127.43M | 204.63M | **3.0149** *(FineWeb val,与 v6 可比)* | **唯一变量=epoch 数**(1.02→1.45) + 8 卡 DDP bf16;~4.2h/8 卡 ~218K tok/s。⚠️**核心发现:同子集多 epoch 近天花板**——多喂 ~1B token,val 仅 ↓0.05(3.07→3.01)且 ~step44000 后走平、采样无质变。真"更多数据"要**新 FineWeb shards**(更多样 token),非重复同一子集。与 v5 的 TinyStories 数据量饱和同类(重复老数据边际薄),v6 换语料才是抬天花板的轴 | ## 下一档(提案) -- **v7**(待派发):v6 兑现了 v5「换轴广化语料」的判断——纯 FineWeb-edu 带来**语言种类的质变**(小故事→真实 - 说明文),且 FineWeb val 才训 1.02 epoch、到末步**仍单调降**=新语料下远未饱和。v7 杠杆按收益排序: - **1. 更多/更好 FineWeb-edu(首选,最便宜最确定:同 arch 多喂 2–3 epoch / 加分片,val 几乎必继续降)**; - **2. 数据混合(TinyStories+FineWeb,治 v6 暴露的 transfer 退化 1.11→2.75,为「连贯+广度」服务)**; - **3. 更大模型(dim1024+,要先做 KI-3 激活重计算,代价最高,留到数据轴榨干后)**。判断 **先走 1**—— - v6 曲线明确说「这本语料还没喂够」,动模型尺寸前先吃满数据轴性价比最高。详见 `06-v6-*.md` 末尾 "v7 提案"。 +- **v8**(待定方向):v7 校正了 v6「这本语料还没喂够」的乐观读法——把 FineWeb-edu **同一 2.255B 子集** epoch + 从 1.02 拉到 1.45,FineWeb val 仅 ↓0.05(3.07→3.01)且走平、采样无质变 = **同子集多 epoch 在 dim768 已近顶** + (与 v5 的 TinyStories 数据量饱和是同一类现象:重复老数据边际都薄)。所以「更多数据」这条杠杆的前提是**真·更多**: + **1. 新 FineWeb shards(首选,真·更多/不重复 token:再下 sample/10BT 之外分片或 100BT 子集,磁盘紧需 /dashscope-tmp 暂存)**; + **2. 更大模型(dim1024+,容量轴;要先做 KI-3 激活重计算,且需配新数据一起测是否 capacity-limited)**; + **3. 数据混合(TinyStories+FineWeb,治 v6 transfer 退化 1.11→2.75,为「连贯+广度」服务)**。判断 **先走 1**—— + v7 已证「重复老数据」到头,下一步必须给模型没见过的 token。详见 `07-v7-*.md` 末尾 "v8 提案"。