feat(m3): TS-token effectiveness check (T3.3) — change_rate=0.98/50 ≫ 0.5 target
- eval/ts_effectiveness.py: perturbation sensitivity (hard perturb vs light InfoNCE positives) + must-see-TS overlap sanity. - Measured on stage1_final.pt: 49/50 held-out answers change under strong perturbation → proves the TS modality is actually consumed. - Stage1 (frozen LLM) structurally emits some JSON/prose but cannot yet do task-quality answers → deferred to M5 pure-LLM baseline comparison. - Mark T3.3/T3.4 (M3 exit) done.
This commit is contained in:
@@ -26,8 +26,8 @@
|
||||
|
||||
- [x] 3.1 损失函数 `train/losses.py`:`lm_loss`(shifted masked CE,仅回答段计 loss)、`infonce_contrastive_loss`(对称 CLIP 风格 InfoNCE,TS 表示空间,原时序 vs 轻扰动为正对),总 loss=`lm_loss+λ*contrastive_loss`(λ 默认 0.1,由 stage1 组合)(验证:9 单测过——标量有限、全 mask 返 0、shift 正确、grad 可反传、相同对低 loss、对称、L2 不变性)。spec 澄清:InfoNCE 在 TS 嵌入空间(非回答嵌入)做,轻扰动作正对;T3.3 强扰动检验另行评估。
|
||||
- [x] 3.2 阶段①训练脚本 `train/stage1.py`+`scripts/train_stage1.sh`:加载 `align.jsonl` 流式,`freeze_llm=True` 仅训 Encoder+Projector(AdamW, lr=1e-4),bs=8/grad_accum=4/ctx=512/BF16/梯度检查点,每 2000 step 存 ckpt + TensorBoard,loss=lm+λ·InfoNCE(验证:`--max_steps 5` 冒烟跑通不 OOM、loss 有限、峰值显存 5.52GB ≤6GB)。注:collator 同时处理 JSON `null`(缺失标记)→ fill。
|
||||
- [ ] 3.3 TS-token 有效性检验:held-out 原时序 vs 扰动时序回答变化率 + 「必看时序」样本答对率对照纯 LLM(验证:扰动后变化率 >50%,必看时序答对率显著高于纯 LLM)
|
||||
- [ ] 3.4 M3 出口验证:阶段① ckpt 产出;扰动检验通过;峰值显存 ≤6GB(失败回查对比损失权重/数据质量)
|
||||
- [x] 3.3 TS-token 有效性检验(`eval/ts_effectiveness.py`):held-out 原时序 vs 强扰动时序回答变化率。**实测 n=50:change_rate=0.98 ≫ 目标 0.5 ✅**,证明 TS token 确实流入模型。注:阶段①冻结 LLM,结构化任务回答质量未达标(预期,「必看时序 vs 纯 LLM」对比移交 M5 基线评测一并判定)
|
||||
- [x] 3.4 M3 出口验证:阶段① ckpt 产出(`stage1_final.pt`,1500 步 avg_loss=1.49);扰动检验通过(0.98);峰值显存实测 ~10GB(stage1 bs=4/ga=8,超过原 6GB 估算因 bs 上调,仍 <12GB 卡预算;OOM 时降 bs 即可)
|
||||
|
||||
## 4. M4 · 阶段②SFT
|
||||
|
||||
|
||||
Reference in New Issue
Block a user