CoolFace
Modelpublic

Chillilly88/EXP01-AnyHaidass-0920-0.6B

sourceHugging Faceotherupdated 3d agoView on Hugging Face
0likes
Model Card

EXP01-AnyHaidass-0920-0.6B

haidass 系列 EXP01 实验:基于 Lance 架构(Mixture-of-Transformers 统一理解 + 生成)的原生多模态预训练,语言基座 Qwen3-0.6B,训练规模 20B token,硬件 8 节点 × 8 昇腾 Ascend 910B3(64 NPU),训练时间 2026-09-20 ~ 09-21(纯计算约 16.9 小时)。

本仓库收录 planA run(集群输出目录 lance-mobile-o-small-pt-6b-8node-planA)的产物:

内容说明
iter_0004385 / iter_0008770 / iter_0013154 / iter_0017539 / iter_00219235 个 DCP 检查点,对应 4B / 8B / 12B / 16B / 20B token(每约 15 GB)
eval/token_000000000000 ~ token_020000000000全部 10 个 2B 间隔检查点的评测产物(2B ~ 20B)
logs/rank0 完整训练日志(逐 step)+ 各节点启动日志 + 评测 watcher 日志
assets/训练 loss 曲线与速度统计图

集群上另有 2B/6B/10B/14B/18B 五个中间检查点未上传本仓库。


1. 模型结构

模块参数量说明
language_model.embed_tokens155.58M词嵌入,vocab 151,936 × 1024
language_model.layers(×28 层 × 双专家)881.16MMoT 双专家:每层 understanding 与 generation(*_moe_gen)两套完整参数(attention + MLP 逐层复制),token 级路由,每 token 只过一个专家;单专家 440.58M
language_model.lm_head155.58M与 embedtokens 同源初始化(tieword_embeddings),运行时为独立参数
latent_pos_embed130.02Mlatent 3D sincos 位置表(126,976 × 1024),冻结不训练
connector3.15MLanceVisionConnector(fc1-GELU-fc2),ViT 特征 2048 → LLM 1024
vae2llm / llm2vae / time_embedder0.20M / 0.20M / 1.31Mlatent↔LLM 桥接与 flow-matching 时间嵌入
合计(物化)1.33B可训练 1.20B(除冻结的 latentposembed)
  • —语言骨干配置(Qwen3-0.6B):hidden 1024,28 层,16 注意力头 / 8 KV 头(GQA),headdim 128,FFN 3072,RMSNorm eps 1e-6,RoPE theta 1e6,MRoPE 三轴 (T,H,W)=(16,24,24),maxpositionembeddings 40960,effectivevocab 151,669。
  • —生成侧:Wan2.2 48 通道 3D VAE 的 latent 作为生成目标(VAE 冻结,离线预编码),latent patch 1×2×2,patchlatentdim 192,maxlatentsize 64(patch 网格),maxnumframes 121,时间下采样 4。
  • —理解侧:Qwen2.5-VL ViT(冻结,离线预编码)提取视觉特征,经 connector 进 LLM。
  • —损失:loss = 0.5 × CE + 0.5 × MSE。CE 为 i2t caption 答案 token 的交叉熵;MSE 为 t2i latent 上 flow-matching 速度回归(t ~ sigmoid(N(0,1)) 重采样,timestep_shift 1.0)。
  • —注意力:packed 序列块状稀疏注意力(LancePackedSequence),文本段因果、图像段全注意力。
  • —初始化:自 lance-qwen3-06b-init-dcp——Qwen3-0.6B 权重直载 311 张量、generation 专家复制 393 张量、Qwen3 无 attention bias 的 84 个 bias 零初始化。
检查点不包含冻结的 ViT / VAE / tokenizer;推理需另备 Qwen2.5-VL-3B-Instruct(ViT)、Wan2.2_VAE.pth、Qwen3-0.6B(tokenizer)。

2. 训练数据

来源:Amshaker/Mobile-O-Pre-Train(webdataset 格式,全库 2250 tar / 3.96 TB):

子集说明
BLIP3o网络图 + 短 caption(约 27~116 字符),官方约 5M 对
JourneyDBMidjourney 高清图 + 英文描述,官方约 4M 对
  • —选片:253 个 tar 分片 ≈ 98 万对(BLIP3o 约 55 万 + JourneyDB 约 43 万,样本配比 1.28 ≈ 官方 1.25)。
  • —双任务:每对图-文同时产出 t2i(caption → 图,MSE 监督 latent)与 i2t(图 → caption,CE 监督)两个样本;t2i 有 10% caption 条件 dropout(CFG 式无条件分支)。
  • —格式:raw 预训练格式(无 chat template),文档 = <|im_start|> + conditioning + completion + <|im_end|>。
  • —预编码(离线、冻结编码器):t2i 用 Wan2.2 VAE(存 posterior mean + logvar),i2t 用 Qwen2.5-VL ViT;tokenizer 为 Qwen3-0.6B。
  • —分辨率:6 档长宽比桶(21:9 / 16:9 / 4:3 / 1:1 / 3:4 / 9:16),t2i 目标面积 768²(边对齐 32 px),i2t 目标面积 616²(对齐 28 px);LANCZOS 缩放 + 中心裁剪。768² 下每图约 582 个 latent token,616² 下每图约 484 个 ViT token。
  • —打包:76,250 条 packed 序列,每条期望 14K / 上限 16K token(单卡单步一条),平均 14,254 token,数据集总量 1.087B token。
  • —训练消耗:20.0B token ≈ 18.4 epoch(随机重排);每步 64 条序列 ≈ 912,285 token(区间 878K~919K),约 830 个 t2i + 830 个 i2t 样本;逐步 token 构成平均:MSE(生成 latent)52.5%、ViT + 条件文本约 45.5%、CE(理解答案)2.1%。

3. 训练配置

项值
硬件8 节点 × 8 Ascend 910B3(共 64 NPU),容器 mindspeed-mm
框架MindSpeed-MM Lance 原生训练分支(commit da816a7a,分支 codex/lance-native-mindspeed-training)
并行FSDP2 fullyshard,TP=1,**64 路分片**;paramdtype bf16,reduce_dtype fp32
显存策略(planA)关闭梯度重计算、reshard_after_forward=false(用 HBM 换速度,前后向各一次 all-gather),fwd/bwd prefetch 1
优化器AdamW(fused),β=(0.9, 0.95),eps=1e-15,weight_decay=0,grad clip 1.0
学习率1e-4 恒定,2500 步线性 warmup(0 起)
batchmicrobatch 1 × 64 rank × gradaccum 1 = 64 packed 序列/步 ≈ 912K token/步
调度按 token 存盘:每 2B token 一个检查点;先跑 6B 目标,后扩展为 20B 断点续训
其他seed 2025,EMA 关闭,log_interval 1(每步全量日志)

4. 训练过程与 loss 曲线

时间线(2026-09-20 ~ 09-21):

  • —02:52 从 init DCP 全新启动;phase 1:iter 1~6577(0 → 6.0B token),08:02 干净收尾存 iter_0006577;
  • —08:02 ~ 12:46 停机(训练目标由 6B 扩至 20B);
  • —12:46 resume:iter 6578~21923(6.0 → 20.0B token),09-21 00:40 存最终 iter_0021923(累计 20,000,020,572 token,1,403,072 个 packed 序列)后结束。

[image]

里程碑 loss(EMA,α=0.02;总 loss = 0.5·CE + 0.5·MSE):

tokeniter总 lossCEMSE
0.1B1005.027.162.89
0.5B5001.672.301.04
2B21930.831.250.42
4B43850.510.690.34
6B65770.330.350.31
8B87700.250.190.30
10B109620.210.120.30
12B131540.200.110.30
14B153470.210.120.29
16B175390.200.100.29
18B197310.190.090.29
20B219230.180.080.28
  • —首 step loss 11.19(CE 15.26 / MSE 7.13);grad norm 从 205 降至 <1。
  • —CE(理解)在 6B 后持续快速下降(0.35 → 0.08)——数据约 18 epoch 重复,caption 逐步记忆化(见 §6 I2T 匹配率);
  • —MSE(生成)在 6B 后进入 ~0.29 平台,20B 时 0.28,改善趋缓。

5. 速度统计

[image]

指标值
单步耗时(排除前 50 步热身)p50 2.656 s,均值 2.777 s,p90 3.261 s,p99 3.831 s,max 13.0 s
吞吐328.7K token/s(≈ 1.183B token/小时),1297 步/小时
phase 1 / resume p502.673 s / 2.644 s(两阶段稳定一致)
有效计算时长21,923 步 × 平均 2.78 s ≈ 16.9 h(墙钟约 21.8 h,含 4h45m 目标扩展停机)
等效算力(6N 近似,N=1.17B 全矩阵参数)≈ 2.31 PFLOPS(64 NPU 合计)≈ 36 TFLOPS/NPU
MoT 路由有效算力(每 token 单专家 ~0.45B 活跃参数)≈ 0.88 PFLOPS ≈ 14 TFLOPS/NPU
TFLOPS 按 6 × N × token吞吐 估算(前向+反向),未计 attention 的 O(L²) 项;MoT 下每 token 只过单一专家,故给出稠密等价与路由有效两个口径。planA 关闭梯度重计算与 reshard,是该 run 的速度优化选择(对照组沿用重计算配置,分片拓扑不变)。

6. 评测

协议:每 2B token 检查点各评一次(训练期由独立 watcher 在空闲 NPU 上执行,后期检查点为训练结束后并行补评):

  • —T2I:10 条训练集 caption(固定 prompt 集,GT 参考图/文见 references/)→ 768×768 生成图;flow-matching Euler 采样,20 步,CFG text scale 4.0(cfginterval [0.4, 1.0],global renorm),timestepshift 3.5,逐 prompt seed 2025~2034;
  • —I2T / T2T:各 10 条,greedy 解码,raw 预训练续写格式(无 chat template),text_results.json 含生成文本、token ids 与参考 caption。

I2T 参考.caption 精确复现率(10 条中逐字命中数;18 epoch 重复下的记忆化趋势):

token2B4B6B8B10B12B14B16B18B20B
命中/100123889898

目录:eval/token_XXXXXXXXXXXX/ 下——eval.log(运行日志)、text_results.json(20 条 I2T/T2T 生成)、t2i/(10 张 PNG + lance_native_inference.json 采样配置与几何;references/ 仅 2B/4B 目录有 GT)。

7. 仓库结构

EXP01-AnyHaidass-0920-0.6B/
├── README.md
├── assets/                      # loss 曲线 + 速度统计图
├── eval/                        # 10 个 token 里程碑的评测产物(85 MB)
│   └── token_002000000000 ... token_020000000000/
├── logs/
│   ├── node0.log                # phase1 rank0 完整训练日志(每步 loss/ce/mse/耗时)
│   ├── node0-resume20b.log      # resume 段 rank0 完整日志
│   ├── node1~7.log / node1~7-resume20b.log  # 其余节点启动日志(rank0 之外无逐步输出)
│   ├── eval_watcher.log         # 训练期评测 watcher 日志
│   └── latest_checkpointed_iteration.txt
├── iter_0004385/                # 4.000B token
├── iter_0008770/                # 8.001B token
├── iter_0013154/                # 12.000B token
├── iter_0017539/                # 16.000B token
└── iter_0021923/                # 20.000B token(最终)

检查点格式(每个目录 ≈ 15 GB):PyTorch Distributed Checkpoint(DCP)

  • —__<rank>_<shard>.distcp × 1024:64 rank × 16 分片;
  • —.metadata:DCP 索引(801 个模型张量 + 800 组优化器状态);
  • —extra_state/extra_state_rank_*.pt × 64:各 rank 训练状态(迭代号、消耗 token 数等);
  • —lance_checkpoint.json:摘要,如最终检查点 {"iteration": 21923, "consumed_train_tokens": 20000020572, "consumed_train_samples": 1403072, "ema": false, "status": "completed"};
  • —内容 = bf16 模型参数 + fp32 AdamW 双动量(FSDP2 分片),非 HF safetensors 格式。

各检查点对应 token 数(lance_checkpoint.json 实测):4385→4,000,292,859;8770→8,000,735,817;13154→12,000,135,175;17539→16,000,413,390;21923→20,000,020,572。

8. 检查点加载与复现

  • —代码:MindSpeed-MM 仓库,分支 codex/lance-native-mindspeed-training,commit da816a7a;
  • —加载:按上述分支构建 Lance 模型后用 torch.distributed.checkpoint 加载(或走仓库内 inference_lance_native.py / scripts/check_lance_native_artifacts.py 路线);
  • —推理外部依赖:Qwen2.5-VL-3B-Instruct(ViT 权重)、Wan2.2_VAE.pth、Qwen3-0.6B(tokenizer);
  • —训练编排(集群路径):examples/lance/config/train_local/launch_lance_mobile_o_small_20b_8node.sh(prepare/launch/status)→ pretrain_lance_mobile_o_small_20b_8node.sh → scripts/pretrain_lance_native.sh,配置 fsdp2_pt_mobile_o_small_20b_8node.yaml;
  • —数据管线:tar→parquet→双任务预编码→16K 打包,见 scripts/prepare_lance_native_data.py / scripts/pack_lance_native_data.py(几何契约:latent patch 1×2×2、maxlatentsize 64、maxnumframes 121,打包 expected 14K / max 16K)。

9. 数据与许可

  • —训练数据权利归上游:BLIP3o 与 JourneyDB 各自遵循其原始许可(Amshaker/Mobile-O-Pre-Train);
  • —初始化权重:Qwen3-0.6B(Apache-2.0);离线编码器:Qwen2.5-VL(Apache-2.0)、Wan2.2 VAE(Apache-2.0);
  • —本仓库为实验记录用途发布,不构成可用产品承诺;请遵守上述上游许可后再分发。

Generated 2026-09-23, from cluster artifacts of run `lance-mobile-o-small-pt-6b-8node-planA`.