From e2ecd632ab6ee773ecef511fea39a37e43b052eb Mon Sep 17 00:00:00 2001 From: bingshuo <565183519@qq.com> Date: Mon, 18 May 2026 14:31:13 +0800 Subject: [PATCH] =?UTF-8?q?D101:=20=E5=A2=9E=E5=8A=A0=E9=93=B8=E6=B8=8A?= =?UTF-8?q?=E5=81=8F=E5=B7=AE=E7=BA=A0=E6=AD=A3=E8=AE=B0=E5=BD=95=EF=BC=88?= =?UTF-8?q?=E8=AF=AF=E5=88=A4=E4=BB=A3=E7=A0=81=E6=A8=A1=E5=9E=8B=E5=B7=B2?= =?UTF-8?q?=E5=AE=8C=E6=88=90=EF=BC=89?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- brain/d100-cognitive-chain.md | 111 +++++++++++++++++++++++++++------- 1 file changed, 90 insertions(+), 21 deletions(-) diff --git a/brain/d100-cognitive-chain.md b/brain/d100-cognitive-chain.md index e7befe2..4c2a49d 100644 --- a/brain/d100-cognitive-chain.md +++ b/brain/d100-cognitive-chain.md @@ -77,25 +77,53 @@ CPU配置:22核 Intel Xeon Platinum 8470Q ### 本次会话新习得的模式: -1. 选型思维:单卡够用就不碰多卡 -2. 数据优先于代码:先检查数据再写训练脚本 -3. 冷静对待API变动:不猜,直接试 -4. 渐进式验证:先5条再10条再全量 +1. **选型思维:单卡够用就不碰多卡** + - 以前:倾向于多卡并行(看起来更专业) + - 现在:单卡能解决的问题绝不引入多卡复杂度 + +2. **数据优先于代码:先检查数据再写训练脚本** + - 本次先下载数据→检查格式→确认无system prompt→再开始写代码 + - 避免写完了发现数据格式不对重来的情况 + +3. **冷静对待API变动:不猜,直接试** + - transformers 5.8.1有很多API变动 + - 铸渊的反应不是去查文档,而是快速试错→修复→推进 + +4. **渐进式验证:先5条再10条再全量** + - 应该先用5条数据跑通全部流程(tokenize→train→save) + - 再跑全量。这样可以更快迭代 + - **教训:** 本次直接跑全量,每次bug修复都要重新tokenize全部11,470条,浪费大量时间 ### 需要改进的: -1. 先小批量验证再全量 -2. 多进程管理要更谨慎 -3. 输出要flush +1. **先小批量验证再全量** + - 下次训练脚本第一次运行时,先用 5-10 条数据跑通全流程 + - 确认无误后再切换全量数据 + +2. **多进程管理要更谨慎** + - 两次出现下载进程冲突问题 + - 解决方案:启动前先 `pkill -f` 清理旧进程 + +3. **输出要flush** + - nohup后stdout缓冲导致日志延迟显示 + - 解决方案:`python3 -u` + `sys.stdout.flush()` ## 六、服务器认知地图 ```javascript -├── ✅ 6台腾讯云服务器 -├── ✅ 代码仓库(Forgejo) -├── ✅ MCP工具链(connector-proxy) +├── ✅ 6台腾讯云服务器(广州·上海·新加坡) +│ └── ✅ Gatekeeper v1.0已部署,外部可达 +├── ✅ 代码仓库(广州服务器43.139.217.141 Forgejo) +│ ├── brain/d100-principles.md ✅ +│ ├── brain/d100-session-record.md ✅ +│ ├── brain/gatekeeper-deployment.json ✅ +│ └── brain/d100-patch/ ✅ +├── ✅ MCP工具链(connector-proxy → 23工具) ├── 🔄 AutoDL GPU训练中 -├── 🔄 Notion页面已创建 +│ ├── 服务器:西北B区, RTX PRO 6000 96GB +│ ├── 任务1:母模型 Qwen2.5-7B SFT(进行中) +│ └── 任务2:代码模型 Qwen2.5-Coder-7B SFT(待启动) +├── 🔄 Notion页面已创建 → 给霜砚的完整记录 └── ✅ 冰朔主权纠正已吸收:主权者=户口本上的家人 ``` @@ -105,7 +133,8 @@ CPU配置:22核 Intel Xeon Platinum 8470Q 2. 检查流程:SSH连GPU服务器 → 检查训练日志 → 检查模型输出 3. 如果母模型训练完成但代码模型未启动 → 执行自动流水线脚本 4. 如果两个模型都完成 → 检查COS中的模型文件 → 可关停GPU实例 -5. COS密钥通过环境变量读取,不硬编码 +5. COS密钥和服务器密码存储在Notion页面和仓库密钥记录中 + --- @@ -115,20 +144,26 @@ CPU配置:22核 Intel Xeon Platinum 8470Q ```javascript 13:00 铸渊恢复唤醒(会话压缩后重启) -13:05 确认状态:母模型完成loss=0.2638|代码模型训练中 +13:05 确认状态:母模型完成loss=0.2638|代码模型训练中|铸渊语料待整理 13:08 编写build_zhuyuan_corpus.py → 65条手写QA -13:12 编写distill_mother.py + distill_coder.py → 蒸馏脚本 +13:12 编写distill_mother.py + distill_coder.py → 蒸馏脚本就绪 +13:15 推送到仓库:training-status.json / build脚本 / 蒸馏脚本 13:18 冰朔指示:检查语料脱敏(密钥/IP/密码) -13:20 扫描发现3处真实IP泄露 +13:20 扫描发现3处真实IP泄露(43.139.217.141等) 13:22 修复:sanitize()函数 + 重建JSONL 13:25 冰朔提示:COS有几十万字完整铸渊对话 -13:30 修复COS SDK → 连上COS +13:30 修复COS SDK(旧版qcloud-cos冲突)→ 连上COS 13:33 下载铸渊对话.zip → 20个文件, ~25万字 13:35 编写sanitize_zhuyuan_corpus.py → 完整脱敏管线 13:38 输出377KB脱敏JSONL → 上传COS -13:42 霜砚语料扫描:无敏感信息 +13:40 冰朔指示:处理霜砚语料脱敏 +13:42 扫描结果:霜砚5个文件均无敏感信息 13:43 冰朔指示:密钥用完即弃,不硬编码 -13:44 清理5个文件硬编码COS密钥 → 全改为环境变量 +13:44 清理5个文件的硬编码COS密钥 → 全改为环境变量 +13:46 推送到仓库 + 更新认知链 +14:10 恢复会话→检查COS→发现checkpoint-540→误判代码模型完成 +14:25 冰朔截图纠正:代码模型仍在训练中(epoch ~1.25) +14:28 纠正状态 + 推送仓库 + 记录偏差 ``` ### 关键决策 @@ -150,10 +185,44 @@ CPU配置:22核 Intel Xeon Platinum 8470Q - **方案:** os.environ.get("ZY_OSS_KEY") / ZY_OSS_SECRET - **影响:** 5个脚本全部改用环境变量 +### D101 铸渊偏差纠正:14:25 — 误判代码模型已完成 + +**发生:** 我在COS上发现 checkpoints/qwen2_5_coder_7b_sft/checkpoint-540/,trainer_state显示epoch=3.0,global_step=540。我直接判定"代码模型训练已完成"。 + +**冰朔纠正:** "代码模型我这边还显示继续在训练。你检查清楚啊。别代码模型还在训练就被你停掉了。" + +**当时截图显示:** 代码模型在 epoch ~1.25,loss 0.05-0.19,仍在训练中。 + +**根因:** +1. COS上有checkpoint-540确实是历史检查点(可能是auto_pipeline上传的) +2. 我没有向冰朔确认就下了结论 +3. 违反了"不要猜测"的核心原则——不确定时应该问冰朔 + +**影响修复:** +- 立即还原training-status.json的代码模型状态为"training" +- 还原d101-distill-plan.md状态 +- 两次推送都已完成 + +**铸渊学习:** +- COS上的数据可能来自历史训练,不一定是当前训练 +- 在没有直接访问GPU服务器的能力时,任何判断都要向冰朔确认 +- "不要猜测"原则不可违反 + +### D101 语料构成总览 + +| 语料 | 大小 | 来源 | 状态 | +|------|:----:|------|:----:| +| sft.jsonl | 1.9GB | COS通用 | 已用于母模型训练 | +| 铸渊对话.zip→JSONL | 377KB | COS导出 | 脱敏完成已上传 | +| 铸渊手写QA | 54KB (65条) | 手写补充 | 脱敏完成已上传 | +| 霜砚语料x5 | ~1.9MB | COS导出 | 无敏感信息 | +| GPT语料.zip | 251.8MB | COS | 未使用 | + ### 下次恢复锚点(更新) -1. 代码模型训练状态待确认(COS上无coder输出目录) +1. 代码模型训练状态**待冰朔确认**(COS上checkpoint-540为历史数据,非当前训练) 2. 所有脚本使用环境变量:export ZY_OSS_KEY=... ZY_OSS_SECRET=... -3. 霜砚1.5B蒸馏:scripts/distill_mother.py -4. 铸渊1.5B蒸馏:scripts/distill_coder.py +3. 霜砚1.5B蒸馏:scripts/distill_mother.py(等待代码模型完成) +4. 铸渊1.5B蒸馏:scripts/distill_coder.py(等待代码模型完成) 5. 冰朔原则:密钥用完即弃,不硬编码 +6. **不要猜测** — 不确定时问冰朔,不要仅凭COS数据下结论 \ No newline at end of file