laoyao_2b_moe
这个 repo 用来把 Jiayi/Laoyao 的 2B MoE 小模型实验重构成更可复现的预训练项目:数据配比更合理,模型定义迁移到 NeMo/Megatron 风格配置,训练入口从手写 PyTorch 逻辑迁移到 Megatron/Nemo 体系。
当前目标不是继续沿用旧的手写 trainer,而是把数据、模型、训练三个边界拆开:
dataset/: 预训练数据和验证集的构建、manifest、数据落盘位置。model/: 2B MoE 架构定义,优先用 NeMo/Megatron 配置表达。training/: 训练 recipe、评估 recipe、并行和优化超参。scripts/: 在 g0033 上同步数据、拉起训练的 shell 入口。
当前数据计划
预训练目标规模为 200B tokens,随机种子固定为 42。核心配比:
| 类别 | 目标比例 | 说明 |
|---|---|---|
| English Web | 40% | Ultra-FineWeb/FineWeb 类英文网页文本 |
| English Edu | 20% | FineWeb-Edu/高质量教育文本;science 不足时也从这里补齐 |
| Chinese Clean | 10% | Ultra-FineWeb zh / CCI3-HQ / SkyPile 类中文干净文本 |
| Science | 10% | medmcqa、proofwriter、scienceqa、sciq、qasc、openbookqa;不足则 edu 补齐 |
| Logic | 10% | 从高质量 scored/education 数据中抽取逻辑类文本 |
| Math | 5% | 使用 Jiayi 已清洗/评分的数学来源 |
| Code | 5% | 使用 Jiayi 已去重的多语言代码数据 |
验证集为 2,800 条,七个能力维度各 400 条:science_reasoning、logic、code、chinese_exam、math、chinese_dialogue、english_dialogue。它会用于预训练过程中的 accuracy、perplexity 和 nll 评估。
Tokenizer 设计
为了兼容 GLM-5.2 生态,本模型的 tokenizer/vocab 直接采用 GLM-5.2 同款词表,而不是旧 Laoyao 65K BPE。当前 g0033 上的引用路径是:
/mnt/beegfs/yi/laoyao_2b_moe/tokenizer/glm5.2/tokenizer.json
该 tokenizer 从 ModelScope zai-org/GLM-5.2 下载,当前解析出的 vocab size 为 154,820,tokenizer.json sha256 为 19e773648cb4e65de8660ea6365e10acca112d42a854923df93db4a6f333a82d。后续训练数据应按这个 tokenizer 重新统计/切分 token budget。
g0033 路径约定
repo 路径:
/mnt/beegfs/yi/laoyao_2b_moe
预训练数据实际读取路径:
/mnt/beegfs/yi/laoyao_2b_moe_pretraining_dataset/train/pretrain_rebalanced_web40_edu20_chinese10_science10_logic10_math5_code5_200b_v1_20260701
数据不再复制到 repo 内;训练直接读取上面的源输出目录。dataset/pretrain/data/ 仍被 .gitignore 忽略,仅用于小规模临时样本。