news 2026/11/3 2:20:32

ZGCM-1 预训练全流程:4.19T Token 课程式训练的完整配方拆解

作者头像

张小明

前端开发工程师

1.2k 24
文章封面图
ZGCM-1 预训练全流程:4.19T Token 课程式训练的完整配方拆解

【免费下载链接】ZGCM-1

项目地址:https://gitcode.com/gh_mirrors/zg/ZGCM-1
点击查看免费下载

ZGCM-1 预训练是开源 7.39B 稠密基座模型的"地基工程":用约4.19T tokens分两个阶段完成——先以约 0.99T token 按"从易到难"的课程顺序打底,再用约 3.20T token 的全量混合语料做全局打散精训。全程 16K 上下文、192 张 H100、混合 FP8 精度加 Muon 优化器,官方报告约 585 model TFLOP/s/GPU 的训练效率。这篇文章把这套 ZGCM-1 预训练配方拆成数据、架构、优化与工程四层,带你完整看懂它是怎么炼成的 🔥

一、一张表看懂 4.19T Token 怎么花

ZGCM-1 的预训练分为两个数据阶段(data stages),总 token 预算约 4.19T,全程使用 16K(16,384)上下文长度:

阶段Token 预算数据策略模型初始化
Stage 1:1T 课程预训练约 0.99T通用文本按词汇复杂度从低到高顺序排列,代码与数学独立穿插从零开始训练
Stage 2:3.2T 全量混合约 3.20T离线全局打散(global shuffle)后按序消费;代码、数学占比提高,并加入专项推理语料加载 Stage 1 最终 checkpoint

两个阶段都混合了 Web、学术/OCR、代码、数学与 LaTeX 来源;跨阶段去重会确保 Stage 1 出现过的内容不会进入 Stage 2。数据清洗与治理由仓库内的 />

预训练的"学生"是一个 decoder-only 稠密 Transformer:

规格ZGCM-1
参数量7.39B
层数 / 隐藏维度32 / 4,096
FFN 维度11,008(SwiGLU)
注意力27 层门控滑动窗口(128 token)+ 5 层全局注意力
GQA32 个 Query 头 / 8 个 KV 头,KV 通道 128
其他部分 RoPE(33.4%)、QK-LayerNorm、RMSNorm、无偏置、Embedding 与输出层不共享

关键点在于门控滑动窗口注意力:绝大多数层只看 128 token 的局部窗口并带一个 Sigmoid 门控,每隔若干层插入一次全局注意力"接力"。这套结构是后续长上下文训练能高效扩展的基础,也是架构实验里 256K 长程吞吐提升 3.94× 的来源。

四、并行策略与效率武器:Muon + 混合 FP8

生产级训练在192 张 H100(24 节点 × 8 卡)上跑,并行切分为TP2 / PP1 / CP2 / DP48——用 2 路张量并行、2 路上下文并行(序列切分)和 48 路数据并行,16K 序列下不用流水线并行也能跑满。

训练配置取值
微批 / 全局 batch2 / 768
学习率恒定2e-4(warmup 667 步),min LR2e-5
权重衰减 / 梯度裁剪0.1 / 1.0
RoPE base5,000,000
激活重计算关闭(FP8 显存足够,直接算)

矩阵优化器用 Muon:动量 0.9、谱尺度(spectral scaling)、5 步 Newton–Schulz 正交化;标量参数仍走 Adam(beta2=0.95)。精度用 Transformer Engine 的混合 FP8:hybrid格式 +delayed定标配方,amax 历史窗口取 1024 步,其余操作用 BF16/FP32 兜底。这套组合拳在 16K 生产运行中测得约585 model TFLOP/s/GPU,相对同规模 BF16/AdamW 基线,预训练 time-to-loss 提升约4.2×。

上图展示了分布式优化器(Distributed Optimizer)的工作方式:优化器状态按数据并行维度切分到各 GPU,配合--overlap-grad-reduce把梯度规约与计算重叠,是 192 卡规模下不"掉卡"的关键工程细节。

五、训练过程长什么样:迭代、断点与损失曲线

两个阶段的训练步数直接写在了配置里(01_pretrain_1t_sequential.env 与 02_pretrain_3p2t_global_shuffle.env):

  • Stage 1:TRAIN_ITERS=79473,每 1000 步存一次 checkpoint(--ckpt-format torch_dist),每 10 步打印日志;
  • Stage 2:从 Stage 1 的 79,473 步断点续训,再跑TRAIN_ITERS=333787,并记录已消费样本数61,035,264作为数据偏移锚点,保证 resume 时样本序列严格连续。

典型的预训练损失曲线长这样:前期急速下降,之后进入缓慢爬行的长平台(下图为 Megatron-LM 官方示例中的训练曲线形态):

ZGCM-1 全程用恒定学习率而不是余弦衰减,配合 Muon 的谱尺度控制收敛速度——这也是它敢用 FP8 直训、不关激活重计算的底气。

六、如何一键启动:多机多卡的启动脚本

整个pretrain/目录自成一体(含打包的 Megatron-LM 源码与运行时说明,见 pretrain/docs/SOURCE_PROVENANCE.md)。在每个 worker 上执行:

export SHARED_STORAGE_ROOT="${SHARED_STORAGE_ROOT:?}" # 数据/词表/venv 根目录 export MASTER_ADDR="${MASTER_ADDR:?}" # Stage 1:1T 课程数据 bash scripts/launch_train.sh configs/stages/01_pretrain_1t_sequential.env # Stage 2:先指向 Stage 1 的最终 checkpoint export PRETRAIN_1T_FINAL_CHECKPOINT="${PRETRAIN_1T_FINAL_CHECKPOINT:?}" bash scripts/launch_train.sh configs/stages/02_pretrain_3p2t_global_shuffle.env

启动脚本 pretrain/scripts/launch_train.sh 会校验虚拟环境、tokenizer、索引数据集(.bin/.idx)与 checkpoint 标记文件,然后把全部架构/优化器/并行/数据参数拼成torchrun命令拉起pretrain_gpt.py,日志落盘到${TRAIN_ROOT}/logs。两个阶段的完整参数分别声明在 pretrain/configs/stages/ 下,数据路径、tokenizer、输出根目录均可通过环境变量覆盖,无需改代码。

七、延伸阅读

  • 预训练总览与快速开始:pretrain/README.md
  • 数据课程与训练配置详解(对应技术报告 3.1 / A.1 节):pretrain/docs/PRETRAIN_PHASES.md
  • 数据治理管线与清洗流程:data-process/README.md
  • 下一站:预训练之后的长上下文扩展,见 midtrain/ 的 16K → 64K → 256K 课程

小结:ZGCM-1 预训练配方的精髓可以浓缩为三句话——数据上"先易后难再打散",架构上"局部窗口为主、全局注意力接力",工程上"Muon + 混合 FP8 榨干每张 H100"。三者叠加,才换来了 4.19T token 的高效落地,也为后面的长上下文中期训练和数学/智能体 SFT 打下了地基 🚀

【免费下载链接】ZGCM-1

项目地址:https://gitcode.com/gh_mirrors/zg/ZGCM-1
点击查看免费下载

相关推荐

上一篇:WezTerm 配置 `freetype_pcf_long_family_names`:深入解析 PCF 字体命名一致性与 FreeType 驱动行为
下一篇:Envoy 热重启统计标签修复:programmatic stat tags 的跨进程传播机制

创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考

版权声明: 本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若内容造成侵权/违法违规/事实不符,请联系邮箱:809451989@qq.com进行投诉反馈,一经查实,立即删除!
网站建设 2026/11/3 2:20:17

1.SECS/GEM 概述:让半导体工厂的每一台设备说同一种语言

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views …

作者头像 李华
网站建设 2026/11/3 2:17:50

CustomTkinter 实用指南:三步把 Python 应用变成现代化桌面界面

CustomTkinter 实用指南:三步把 Python 应用变成现代化桌面界面 【免费下载链接】CustomTkinter A modern and customizable python UI-library based on Tkinter 项目地址: https://gitcode.com/gh_mirrors/cu/CustomTkinter CustomTkinter 是基于 Tkinter …

作者头像 李华