iomgaa
|
e7cf27cecc
|
docs: roadmap 存档点更新——docs/04 已精读,下一步开写 E1(压缩前存档)
Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
|
2026-07-19 09:48:40 -04:00 |
|
iomgaa
|
142aeb8ab1
|
docs: 层 3 章节文档 docs/04(语义相似度 φ + MC 估计器,式3/4/5)
论文精读(§3.2.1-3.2.2 式3/4/5)+ 参考实现解剖(带行号)+ 保留/替代/删除 + E1-E3
重构任务 + 验证方式。核心:logit-free 支点(比文本非比 logits)、Dirichlet 贝叶斯
π̂ 反塌缩、detach 命门(层 2 §4.1 姊妹篇)。解剖抓出参考实现三处不一致(φ 比文本
vs 比 token id、rouge1 集合 vs 多重集)作重构清理依据。roadmap 存档点/索引同步。
Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
|
2026-07-19 09:40:58 -04:00 |
|
iomgaa
|
fac8e0dcc5
|
docs: 层 2 关账——§6.1 远程实证勘误"预期见毛刺" + roadmap 存档点 + 接口回看
- docs/03 §6.1:两次远程跑(sanity/noclip)均平稳,勘误当初"预期毛刺"的错误
预测;三条实证结论(爆炸真机制但本区间高度阻尼、grad_norm 是裁剪前值、层 5
真正杀手锏是 logit-free)
- roadmap 存档点:层 2 ✅ 关账,判据全过、关键发现、接口回看(全判"深",
三条不返工小注);章节索引 03 标已关账;下一步层 3
Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
|
2026-07-19 09:30:45 -04:00 |
|
iomgaa
|
8b362eae09
|
层2: max_grad_norm 提进 DistillConfig(显式化静默稳定器)+ noclip 对照模式
首冒烟发现:sanity 的 loss 平滑、无预期毛刺,因 HF 默认 max_grad_norm=1.0 把
反向 KL 的梯度爆炸(§4.1,实测 grad_norm 14→2 是裁剪前范数)默默压平了——正是
本项目要堵的"静默行为"。
- configs.py: DistillConfig 加 max_grad_norm=1.0(默认=原 HF 行为),docstring 讲清
它是 §4.1 爆炸的隐形稳定器、日志 grad_norm 是裁剪前值;__post_init__ 校验 >0
- train_whitebox.py: FULL 显式写出、TrainingArguments 传入;build_config 加 noclip
模式(max_grad_norm=1e9≈关裁剪 + lr 5× + 15 步)暴露原始爆炸供教学对照
- .sh: 用法加 noclip 模式说明
Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
|
2026-07-19 08:34:14 -04:00 |
|
iomgaa
|
f1b6d1f668
|
修复: 禁用 HF Xet(hf-mirror 不代理 CAS,teacher 4B 下载 401)
远程冒烟实撞:hf-mirror 供小文件正常,但大权重走 Xet 协议会绕过镜像直连
cas-server.xethub.hf.co 并返 401 Unauthorized。加 HF_HUB_DISABLE_XET=1 退回
经典 HTTP/LFS 下载路径(镜像支持)。两个训练脚本都加,防层 1 换机重下也撞。
Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
|
2026-07-19 05:58:16 -04:00 |
|
iomgaa
|
2f4780b69f
|
docs: roadmap 存档点更新——层 2 代码关账(U1-U5 全绿),列远程冒烟三盯待办
Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
|
2026-07-19 05:24:25 -04:00 |
|
iomgaa
|
b7f24d635e
|
层2/U5: white-box OPD 自包含训练脚本(train_whitebox.py + .sh)
对应 docs/03 §5 U5,对齐层 1 train_sft 骨架,换成层 2 装配:
- 双模型:student Qwen3-0.6B(fp32+bf16混训) + teacher Qwen3-4B(bf16 推理)
- prompt_only collator(无 teacher 缓存,现场 on-policy 生成)
- DistillTrainer 装配:teacher_model/teacher_tokenizer + beta/温度/生成参数
- FULL = §5 默认(beta=1、lr=1e-6、B=4×GA=4×4卡=全局64、max_new_tokens=1024)
- 首 prompt 自检(末尾须为生成引导符);sanity=50步冒烟
- .sh 前置清单强调白盒扛两份全词表 logits、OOM 阶梯、首跑下载 4B teacher
Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
|
2026-07-19 05:23:42 -04:00 |
|
iomgaa
|
404abc22bf
|
重构: load_sft_dataset 改吃散装参数(磨平接口回看记录的毛刺)
深模块修正:本函数只用 5 个字段,却索要整个 SFTConfig——层 1 无痛,但诊断脚本
被迫伪造 output_dir(4 处 /tmp/diag、outputs/_unused),层 2 更因 DistillConfig
无 teacher_completions_path 而无法复用。改收 dataset_path/split/subset_size/seed/
teacher_completions_path 五个散装参数(接口终于比实现轻)。
- data.py: 签名改散装参数;移除 TYPE_CHECKING 的 SFTConfig 依赖
- train_sft / diag_loss_probe / diag_collator: 仍持 SFTConfig(喂 collator),改调用点
- diag_generate / generate_teacher_completions: 只为 load 而造 config,直接丢弃、
去掉伪造 output_dir,改传字面量
- 为 U5 层 2 训练脚本能直接 load_sft_dataset(distill_cfg 的字段) 铺路
Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
|
2026-07-19 05:21:16 -04:00 |
|
iomgaa
|
0ca60ea93f
|
层2/U4: DistillTrainer 编排(on-policy 生成→teacher no_grad 前向→反向KL)
trainer.py(对应 docs/03 §5 U4):
- build_generated_batch: 纯函数,generate 输出重建 ids/attention/labels;
"首个 eos 及之前有效"用 cumsum-self==0 实现,稳健对付 pad==eos / pad!=eos / 无eos
- DistillTrainer.compute_loss 四步:生成(no_grad,unwrap)→重建→双前向→移位+divergence
- 损失几何复用 compute_prompt_length(与 sft_loss 同款);梯度只经 student
- 构造时校验 teacher/student 同 tokenizer(白盒前提,比 DT:2876 更早)
- teacher eval+冻结、设备迁移推迟到 compute_loss;同层1退出梯度累积新式契约
test_distill.py(对应 docs/03 §2.5):
- build_generated_batch 6 例:eos居中屏蔽/无eos全监督/batch混长/pad==eos/立即eos/prompt段-100
Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
|
2026-07-19 05:16:57 -04:00 |
|
iomgaa
|
e5a28e8e77
|
层2/U3: SFTCollator 放开 prompt-only 模式(供 on-policy 生成)
data.py(对应 docs/03 §5 U3):
- 加 prompt_only 开关:True 时输出 prompts/prompt_attention_mask(不产 labels,
由 U4 生成后重建);False 时 SFT 双预算路径逐字不变
- max_length 改可选:prompt-only 无总预算;SFT 模式缺它构造即报错
- 兑现 T3 为 on-policy 生成预留的口子;生成用左 padding(右边界对齐)
test_data.py:
- 新增 prompt_only 模式:返回 prompt 张量/不报错、左 padding、截断、剥末轮 assistant
- 回归守卫:SFT 模式仍拒绝 prompt-only 行("SFT 路径行为不变")
Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
|
2026-07-19 05:02:24 -04:00 |
|
iomgaa
|
de7f36828a
|
层2/U2: 纯逻辑 token_divergence(式(2) 全词表 KL/JSD)+ 梯度爆炸演示单测
trainer.py(对应 docs/03 §5 U2,与 sft_loss 同为纯张量损失函数):
- token_divergence: 全词表精确 KL(β=1 反向=式(2) / β=0 前向 / (0,1) JSD)
- 只吃两组已对齐 logits + labels 掩码,不做移位(复用 T4 几何,留给 U4)
- 删参考实现 top-k/尾桶/nan_to_num(本地全词表恒有限);按 β 分支省一份 probs
- per-token mean 与 sft_loss 同尺度;全掩码/beta 越界显式报错
test_divergence.py(对应 docs/03 §6.1):
- 对拍 PyTorch torch.distributions.kl_divergence(独立 oracle,非同式自证)
- 方向性: 反向罚越界(mode-seeking) / 前向罚漏覆盖(mode-covering)
- §4.1 梯度爆炸: teacher 概率 1e-1→1e-6 时 student 梯度范数单调暴涨(层5对照桩)
Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
|
2026-07-19 04:00:25 -04:00 |
|
iomgaa
|
e42af5256f
|
层2/U1: 新增 DistillConfig(式(2) 白盒蒸馏参数)+ docs/03 表述打磨
configs.py(对应 docs/03 §5 U1):
- DistillConfig 自包含、不继承 SFTConfig;teacher_model 进 config、student 留脚本
- 三处刻意缺席: 无 teacher_completions_path/max_length/top_k(现场生成+全词表)
- 两温度分名: kl_temperature(散度 softmax)vs gen_temperature(on-policy 采样)
- 默认即式(2): beta=1 反向KL、温度1、纯采样 top_p=1;lr=1e-6(论文§5.1蒸馏)
- __post_init__ 8 分支构造即校验(gen_temperature>0 护 on-policy 语义)
docs/03:
- §2.3 β 三副面孔表: 记号统一 π、补 mode-seeking 对称、附全词表/稀疏双镜像说明
- §2.3 三条实现约定(温度/log域/batchmean)由一句话拆成可扫读表格
- §3 偏差清单上方补统领抉择原则
Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
|
2026-07-19 03:37:44 -04:00 |
|
iomgaa
|
db392d9c81
|
存档点:压缩前补记层 2 开写前两件待办(默认参数确认+显存重审、自查题对答案)
Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
|
2026-07-18 10:47:08 -04:00 |
|
iomgaa
|
eb56883267
|
层1 正式关账:判据全过、接口回看完成、疤痕档案与诊断工具箱入存档点
Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
|
2026-07-18 10:44:58 -04:00 |
|
iomgaa
|
872d4bd6a6
|
层1: diag_generate ruff 修复
Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
|
2026-07-18 10:37:28 -04:00 |
|
iomgaa
|
e472a66959
|
层1: checkpoint 生成测试脚本(关账判据 3)
Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
|
2026-07-18 10:37:13 -04:00 |
|
iomgaa
|
4f13365ffa
|
层1: 损失缩放终解——显式退出 HF 新式梯度累积契约(model_accepts_loss_kwargs=False)
第二幕根因:新式契约的 ×world_size 补偿在基类 compute_loss 尾部(v5
trainer.py:2028),整体重写会绕过它 → loss 与梯度 ÷4(sanity 0.244≈0.85/4)。
按 HF 文档建议(trainer.py:1977)退出新式契约回经典行为;docs/02 勘误改为
两幕全记录。
Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
|
2026-07-18 10:25:11 -04:00 |
|
iomgaa
|
ee16e29846
|
层1: 修复 HF 梯度累积契约坑——compute_loss 按新式契约返回 sum/num_items_in_batch
根因(探针定案):预训练模型真实 CE≈0.85,训练日志 7.5≈0.94×8(累积步数)。
Qwen3 forward 接受 loss_kwargs → Trainer 走新式契约不再除以累积步数,我们
返回裸 mean 导致日志与梯度同放大 8 倍。sft_loss 纯函数不动,适配收口在
compute_loss;docs/02 §5 勘误起点预期(~0.85)并记录此坑。
Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
|
2026-07-18 10:18:09 -04:00 |
|
iomgaa
|
1976230250
|
层1: 损失探针脚本——预训练模型走管线逐行算 CE,区分数据问题与训练环节问题
Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
|
2026-07-18 10:14:31 -04:00 |
|
iomgaa
|
ff572bf4b9
|
层1: collator 对齐诊断脚本——排查远程 loss 7.5 与 \50118 解码异常(逐环检验缓存/模板/分词/切片)
Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
|
2026-07-18 10:05:46 -04:00 |
|
iomgaa
|
a0faec0df7
|
层1: 修复远程 sanity OOM——per_device batch 8→2、累积 2→8(全局 64 不变)
根因:150k 大词表下显存大头是 (B,T,V) logits 链(fp32 ~20G@B=8)与逐层激活,
均正比于 B 而与 0.6B 参数量无关。docs/02 §2.6 旧显存估算勘误入档;
train_sft.sh 加 expandable_segments 防碎片。
Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
|
2026-07-18 09:21:38 -04:00 |
|
iomgaa
|
68216ace22
|
docs: 第三章勘误——off-policy 切片是数据轨迹上的 KL 蒸馏而非混 SFT;补 prompt-only 下静默空转的说明
Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
|
2026-07-18 09:02:41 -04:00 |
|
iomgaa
|
1d272b6d6c
|
docs: roadmap 索引同步(第三章已写待读)
Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
|
2026-07-18 08:34:45 -04:00 |
|
iomgaa
|
3c1530a1db
|
docs: 第三章——层 2 white-box OPD(式(2) 精读、standard 路径解剖、U1-U5 重构任务)
Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
|
2026-07-18 08:34:29 -04:00 |
|
iomgaa
|
4621ebae31
|
层1/T2: max_tokens 放大至 16384(防截断,上限不计费);并发提到 16;进度行加速度与预计剩余时间
Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
|
2026-07-18 08:20:57 -04:00 |
|
iomgaa
|
c5a3b7d0bb
|
层1/T5: 自包含训练脚本 train_sft.sh + train_sft.py;层 1 代码收口
- train_sft.py: FSDP 环境变量前置块(import 前,DDP 下无害);fail-fast 加载
顺序(数据→tokenizer→模型);首样本自检打印(真 tokenizer 掩码边界肉眼核对);
remove_unused_columns=False 等非显然约束逐条注释;sanity 模式 = replace 覆盖
- train_sft.sh: 显式 CUDA_VISIBLE_DEVICES 4 卡、PYTHONUNBUFFERED、HF 镜像/缓存
改道 /data,前置检查清单(含 scp 数据命令)
- 本地验证:fail-fast 到 teacher 缓存缺失处显式报错(941/1000,59 条真实命中
反向证明 prompt_key 契约端到端成立)
- roadmap 存档点:层 1 代码完成,进入运行阶段
Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
|
2026-07-18 08:16:24 -04:00 |
|
iomgaa
|
42a4349e69
|
层1/T2: 生成脚本接入本地已有的 DAPO 去重版 parquet(17917 行),补试跑说明
数据管线已用真实数据验证(加载→归一→seed 抽子集,5 条无报错)
Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
|
2026-07-18 08:11:01 -04:00 |
|
iomgaa
|
e72d07aced
|
层1: ars_opd 改为 editable 安装,修复脚本/调试器 import 失败
- pyproject.toml: 最小打包配置(依赖仍统一走 requirements*.txt)
- .vscode/launch.json: 调试当前文件 + teacher 生成两个配置,cwd 锚定仓库根
- setup_remote.sh 与 CLAUDE.md 常用命令同步 pip install -e
Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
|
2026-07-18 08:06:40 -04:00 |
|
iomgaa
|
20e6d97427
|
层1/T2: teacher.py 批量生成 + sha256 JSONL 缓存;teacher 改定 MiniMax-M3
- teacher.py: 通用 OpenAI 兼容客户端(配置驱动 base_url,替代 OpenRouter 专用);
缓存即断点(逐条落盘+flush,重跑自动续传);单条失败先落盘其余、结束汇总显式报错;
M3 思考段 <think>...</think> 入库前剥离(只剥开头一段)
- configs.py: 新增 TeacherGenConfig(采样参数显式化;连接三元组走 .env)
- scripts/generate_teacher_completions.py: 自包含生成脚本(本地跑,与训练侧
同 seed 同子集约束已注明)
- teacher 决策变更同步:.env.example / docs/00 关键设定与存档点 / docs/02
- tests/test_teacher.py: 10 个单测(假客户端注入),含与 attach 的端到端契约闭环
Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
|
2026-07-18 07:52:53 -04:00 |
|
iomgaa
|
f5bb852fde
|
层1/T4: trainer.py 掩码 SFT 损失 + 最小 HF Trainer 子类(docs/02 §2.4)
- sft_loss 纯张量函数:batch-min prompt_length、移位切片、labels 重掩码;
空 batch/无 prompt 行显式报错(参考实现静默归零,差异已标注)
- SFTTrainer 只重写 compute_loss 与 log;不向模型传 labels(防内部损失
绕过重掩码);日志并入每步有效 token 数供 sanity 监控
- tests/test_trainer.py: 7 个单测,含手算对拍、移位对齐、窗口外无关性、
漏切重掩码
Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
|
2026-07-18 05:02:41 -04:00 |
|
iomgaa
|
5ea58ddf59
|
层1/T3: data.py 数据管线——加载、messages 归一、teacher 缓存挂接、双预算 collator(docs/02 §2.2-2.3)
- to_messages 三分支归一,except:pass 改显式报错(差异标注在注释)
- prompt_key: sha256 内容寻址,作为与 teacher.py 的缓存契约单点定义
- attach_teacher_completions: 缺键一次性报全,绝不静默跳过
- SFTCollator: 双预算截断 + 未截断长度定边界(坑二)+ -100 掩码 + 左 padding;
prompt-only 行显式报错(层 2 接 on-policy 再放开)
- tests/test_data.py: 19 个单测,玩具字符级 tokenizer 覆盖超长解答/超长题目/
enable_thinking 双取值/左 padding/缓存契约
Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
|
2026-07-18 04:51:19 -04:00 |
|
iomgaa
|
58d75cc56a
|
层1/T1: SFTConfig dataclass 与构造校验(docs/02 §4)
- ars_opd/configs.py: 冻结 dataclass,机器路径无默认强制显式传入;
双预算/enable_thinking/lr 差异均按 §7 规范标注
- __post_init__ 构造即校验,防"completion 预算为零→loss 恒 0"静默空训练
- tests/test_configs.py: 6 个校验测试
Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
|
2026-07-18 04:40:45 -04:00 |
|
iomgaa
|
240f404416
|
工作模式变更入档:层 1 起 Claude 编写代码、用户精读提问;存档点同步
Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
|
2026-07-18 04:30:55 -04:00 |
|
iomgaa
|
6c128ad6f5
|
docs/02:FSDP 决策定案——DDP 到 1.7B,触发点写死(4B 或 seq>8K),env 坑今日消除(脚本头部前置块)
Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
|
2026-07-18 04:21:30 -04:00 |
|
iomgaa
|
0bcfc6efd4
|
层 0 关账:两端环境验收通过(本地 4 passed + 远程 4 passed),存档点进入层 1
Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
|
2026-07-18 04:05:17 -04:00 |
|
iomgaa
|
12e2a8b0ae
|
docs: 第二章——层1 SFT 基线开工文档(参考实现解剖+保留/替代/删除清单+任务表);CLAUDE.md 映射表补 data.py
Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
|
2026-07-18 03:51:06 -04:00 |
|
iomgaa
|
77f0419bad
|
roadmap:训练数据定为 DAPO-Math-17K(对齐论文§5.1),登记 φ/β 两处论文-代码默认值背离
Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
|
2026-07-18 03:47:30 -04:00 |
|
iomgaa
|
9c0ec15716
|
setup_remote.sh 自清 pip 残留;存档点记录远程根分区结构性问题(/root/zym 507G)
Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
|
2026-07-18 03:39:14 -04:00 |
|
iomgaa
|
991e277316
|
CLAUDE.md:日志不缓存升级为全局硬规则(含 conda run 事故伤疤标注)
Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
|
2026-07-18 03:30:34 -04:00 |
|
iomgaa
|
b679bcb24f
|
修复 setup_remote.sh:弃用 conda run(输出整体缓冲),改为直调环境内 pip/python 实现实时日志
Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
|
2026-07-18 03:28:13 -04:00 |
|
iomgaa
|
f255d5613a
|
docs: roadmap 增加存档点小节(断点恢复用),登记层 0 当前状态
Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
|
2026-07-18 03:20:12 -04:00 |
|
iomgaa
|
270a9ab291
|
层0:统一依赖清单 + 远程一键搭建脚本 + 密钥模板
|
2026-07-18 03:00:35 -04:00 |
|
iomgaa
|
cccccc0ce6
|
docs: 新增研究方向记录(RI-1:OmniOPD × ZO-RGD 零阶黎曼优化的三个结合点)
Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
|
2026-07-18 02:57:01 -04:00 |
|
iomgaa
|
72799a34dc
|
tests: 预置 π̂ detach 命门守护测试(对应 docs/01 §3.4,层 3 接入真实 estimator)
Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
|
2026-07-18 02:32:05 -04:00 |
|
iomgaa
|
c9eddd5be8
|
docs: 修正 π̂ detach 失败机制的方向性错误(压低先验逃逸而非抬高自我强化),补充推导要点
Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
|
2026-07-18 02:23:49 -04:00 |
|
iomgaa
|
d0bedd564c
|
docs: 教学注释规范与接口回看规则入 CLAUDE.md;新增 CLAUDE.md 取舍决策附录
Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
|
2026-07-17 11:59:05 -04:00 |
|
iomgaa
|
8647c5a89d
|
docs: 第一章——论文精读与参考实现全景映射(含实现与论文差异清单)
Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
|
2026-07-17 11:29:20 -04:00 |
|
iomgaa
|
6dc13314d8
|
仓库骨架:README、CLAUDE.md、分层重构路线图(docs/00-roadmap.md)
Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
|
2026-07-17 11:26:11 -04:00 |
|