D101: 增加铸渊偏差纠正记录(误判代码模型已完成)
This commit is contained in:
parent
aef8d2f184
commit
e2ecd632ab
@ -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数据下结论
|
||||
Loading…
x
Reference in New Issue
Block a user