← 返回书架人工智能 · 交互式 Wiki
模型工程/自然语言小模型项目资料与边界
训练目标与优化进阶实测报告学习主线 4 / 6 · 实战延伸

实战二 / 同一份数据、模型与 checkpoint

自然语言小项目:从中文段落到可加载的权重

把数据划分、tokenizer、监督位置、训练、评估、生成和恢复连成一个真实执行过的项目。使用本站现有中文工程段落,所有成本与失败都按本轮小模型的范围解释。

01 / DATA BEFORE TOKENIZER

先分文档,再学习 tokenizer

固定 38 个本站页面作为自然语言来源:24 个训练文档、6 个验证文档、8 个独立测试文档。提取正文段落,移除公式子树和构建占位符、合并空白,保留 20–800 个 Unicode 字符的段落;原始 HTML、段落文本和 SHA-256 全部保存。这些是本站工程说明,不是 TinyStories 语料或通用中文语料。

所有规范化段落做全局精确重复检查,跨划分文档 ID 与精确段落哈希不重合。本次没有检出需要删除的精确重复段落;语义近重复与共同术语仍可能存在。因此这是同一窄领域内的文档留出评估,不支持通用中文能力的结论。

Byte-BPE 只在训练段落统计相邻对,执行 128 次合并;加上 256 个 UTF-8 字节与 PAD/BOS/EOS,共 387 个 token。所有划分的段落均通过编码—解码往返核验。它是可运行的字节 BPE,不包含 GPT-2 的正则预切分或下载的 tokenizer。

02 / FOLLOW ONE LABEL

跟着一个目标 token 走完整条链

01

文档内形成窗口

每篇文档独立编码,段落用换行分隔,文档首尾加入 BOS/EOS;窗口最大 96 token,绝不跨文档拼接。

02

只移位一次

输入窗口的下一个 token 是当前 logits 的 label。相邻窗口的目标位置不重复,右侧 padding 的 label 为 −100。

03

固定预算更新

两层、width 96、4 heads 的 Pre-LN decoder;298,176 参数,输入和输出权重不绑定。AdamW、LR 0.002、batch 8、dropout 0、裁剪阈值 1。

04

保留全部结果

seed 11/29/47 各 800 次更新,最终权重直接报告。曲线只读训练/验证;测试在固定预算完成后评估,不据其继续调参。

这是所有有效位置参与监督的因果语言建模。助手回复专用 mask、对话模板与指令微调是后续独立任务,不能从本轮自然语言 next-token 学习直接推出。

03 / COMPARE A SIMPLE BASELINE

比随机初始化更好,还需要和谁比较?

只看词频的 unigram,和只看前一个 token 的 bigram,都可以在相同预测单位上建立简单参考。它们只统计训练标签;各自在固定的三个平滑参数中用验证 CE 选一个,再读完整测试集。Transformer 沿用上一轮三个 seed 的保存结果,不重新选择权重。

所有方法使用同一份 387-token 词表、相同的 shifted labels、文档边界和有效标签分母。更低的 CE 支持这个任务上的预测改善;中文流畅性、事实正确性与指令遵循仍需独立评价。没有把不同 tokenizer 下的每 token 损失直接比较。

04 / OPEN THE AVERAGE

整体损失更低,是哪些文档在改善?

从三个 seed 的同一份第 800 步权重重新计算每个有效标签的 NLL 与预测,按完整文档汇总,再与已冻结的 bigram 基线逐文档配对。这里不继续训练,不根据新的切片选择 seed 或 checkpoint。

Lmicro=∑jNjLj∑jNj,Lmacro=1D∑j=1DLjL_{\mathrm{micro}}=\frac{\sum_j N_j L_j}{\sum_j N_j},\qquad L_{\mathrm{macro}}=\frac{1}{D}\sum_{j=1}^{D}L_j
Nⱼ 是第 j 篇文档的有效标签数,Lⱼ 是该文档 CE,D 是文档数。微平均让每个标签等权,宏平均让每篇文档等权;都沿用相同 tokenizer。

长文档对微平均的权重更高,不自动表示统计错误。应先明确要估计一次 token 预测,还是一篇文档的平均表现,再比较同口径的结果。逐文档差值、真实来源和三 seed 均保留;文档之间仍共享领域和术语,重采样区间不能证明面向任意中文文本的泛化。

05 / LOSS AND ACTUAL TEXT

损失下降之后,实际输出怎样?

三条提示在训练前固定,所有 seed 保留。生成采用无词表屏蔽的 greedy、最多 48 个新 token;PAD/BOS、无效 UTF-8 的替换字符与没有生成 EOS 的情况均显式报告。长于 96 的上下文按窗口截取并重新使用局部位置,不宣称长上下文能力。

06 / RESUME AND DELIVER

同一 checkpoint 能恢复,也能单独推理

保存初始、中途和最终权重,以及 AdamW 状态、采样器置换与游标、torch RNG、配置和 tokenizer。seed 11 从第 400 次更新的 checkpoint 在新 Python 进程中继续到 416,参数、优化器、样本序列、RNG 和逐步 loss 全部逐值一致。本轮没有异步数据 worker 或随机 dropout,恢复证据只覆盖明确执行的条件。

# 在仓库根目录运行;也可把路径换成下载包解压后的对应位置
.venv-framework/bin/python scripts/text-inference.py \
  --checkpoint artifacts/practice-20261028T152417Z/practice/text/seed-11-final.pt \
  --tokenizer artifacts/practice-20261028T152417Z/practice/text/tokenizer.json \
  --prompt '模型训练'

加载先按包内 SHA256SUMS 核对权重与 tokenizer 文件身份,再检查词表大小;推理保持相同配置和 48-token greedy 策略。训练用的 tokenizer.json、windows.json、逐步轨迹和三 seed 权重均在完整来源中。

适用范围与一手资料

本站 38 篇中文文档、按文档固定拆分的 byte BPE 与约 30 万参数 CPU decoder。Tokenizer 只拟合训练文档;固定权重的逐位置 NLL、逐文档误差、宏微平均和整文档重采样与原始生成分别报告。文档近重复与语义独立性未证明,区间以一个保存模型为条件;不代表通用中文能力或指令模型。

公式与机制的原始依据 · 7 项
知识目录
搜索知识库