收敛攻坚(81/400 失败点根因与实测,见 docs/failed81_cno_seed_popzer_dpsilg_2026_08_18.md): - runner: 新增 seed_step_stab 策略链——同物理族(同 Teff/logg/logHe)CNO 邻居种子 + DPSILG=3.0 λ 算子欠松弛 + POPZER=1E-10 微布居置零(联动 POPZR2/RADZER 同值 + NITZER=1),针对 20kK He 富大气 He I/II 电离前沿布居极限环 - runner: 三级链内延拓回退(主链与 nl_direct 全败后自动触发): · 固定 ladder 步进——plan_ladder_steps 按归一化间隔选轴,Δlogg≤0.25/ΔTeff≤2.5kK,≤4 步 · 自适应 Teff 延拓——步长 1250K 起、成功 ×1.5 恢复、失败二分至 25K 折叠墙,≤48 步 · C/N 丰度轴延拓——高温域(Teff>30kK)专用,严格同族种子沿 C(优先)/N 轴 0.2 dex 起步 延拓阶段 NITER 下限提至 300(慢收敛 waypoint 迭代饥饿误判修复) - runner: 稳定化多档回退(DPSILG/POPZER 三档互补,联合回收 41/65); 域门控 Teff≤30kK——高温高金属域实测旋钮致散(17 拍爆至 4e16),域外跳过 - 梯级种子持久化: 收敛中间模型登记 ladder_seeds 随上报落 server seeds 表 (任务失败也上传,合成名 _ladder 与真实网格点零冲突),簇内相邻失败点自动复用 调度与执行: - scheduler: 策略解析新增 seed_step_stab 臂——find_exact_family_seed_from_db 严格 同物理族判定(不做 global 退化,防 ladder 中间种子 ΔTeff≤5000K 误命中), 排除本点历史已用种子实现重试轮换;链在 stab 耗尽时轮换未试过同族邻居重派 - executor: seed_step_stab 补种子下载(漏列曾致 78 任务假失败,seed_nc 无 fort.8 崩溃); Teff>30kK 域外自动降级普通种子链 收敛判据: - conv_check: 热启动豁免——首拍 max_relc<1(种子已近解)时首末比 1e3 判据数学上 不可达,豁免后交五重物理硬门槛裁决(修复 nl_ladder 0.038→6e-4 物理全过被误杀); 冷启动仍受判据门控 workflow 生命周期: - workflows/tasks: 完成 flip 增加「未消费回退链」阻塞子句——failed 点策略链未耗尽 或链尾 seed_step_stab 尚有未试过同族种子时不得置 completed(修复最后活跃点 cold 失败上报抢先 flip、still_running 守卫拦截后续策略永不派发);按 failed_stage 归因 (synspec 失败行只看 synspec 链,防 stale 审计副本永久卡死)+ json_valid 脏行防护 统计与前端: - 统计新增权威口径 tlusty_converged(不按策略拆)与 seed_step_stab_converged 分项, 前端详情页色带/概览卡消费权威总数并新增稳定化青色段(修复 stab 收敛点漏计, 生产 9137/9216 差额);M14 迁移回填历史 completed 点的 tlusty_status 文档: - 新增 failed81 POPZER/DPSILG 制胜配方根因分析、Windows 节点经跳板 RDP 运维手册; failed400 增补 ladder 生产化实现与第二轮 121 残点实测矩阵
4.4 KiB
4.4 KiB
DCTS 故障排查与 FAQ (Troubleshooting & FAQs)
汇集 DCTS 计算过程中的常见故障、物理发散问题排查方法及节点恢复指南。
1. 物理计算发散排查 (TLUSTY Divergence)
现象 1:nl 阶段出现 DIVD ... BIG 或 NITER 达到上限发散
- 原因:初猜大气与当前网格点的真实 NLTE 大气物理状态相差过大,线性化半径无法收敛。
- 排查步骤:
- 查看归档的
conv.json(节点端在DCTS_RESULT_DIR/<model_name>/conv.json,服务端在DCTS_SEEDS_DIR/<model_name>/conv.json):cat data/seeds/<model_name>/conv.json - 失败任务的各阶段输入/日志/收敛诊断(
<name>.<label>.5/.6/.err/.nst/.7、_chmax*.9)经白名单归档到节点result_dir,供排错;沙盒task_*在结算后清理。 - 解决方案:确保服务端
DCTS_SEEDS_DIR(默认data/seeds)下存有相近T_{\text{eff}}/\log g的已收敛.7种子。若tlusty_strategies含seed_step,调度器会在失败回退时自动注入近邻种子重试(Seed-Stepping 种子步进)。
- 查看归档的
现象 2:lte 阶段报错或瞬间终止
- 原因:输入的物理参数超出了灰色大气基本假设或基础原子数据(原子能级/光致电离截面)损坏缺失。
- 排查步骤:
- 验证
data/目录中的ATO/ISO数据文件是否齐全。 - 检查
gen_input5生成的参数中TEFF是否小于 10000K 或大于 120000K。
- 验证
2. 节点与网络故障 (Node & Network Issues)
现象 1:Worker 节点提示 Unauthorized: Invalid or missing authentication token
- 原因:该节点的专属 node token 已失效或被重发覆盖(节点鉴权不依赖任何环境变量,而是使用审批时下发的专属 token)。
- 解决办法:删除节点本地
runtime/.node_token文件并重启节点进程,使其重新免凭据提交注册申请,等待管理员在 Dashboard 审批授权后获取新 token。
现象 2:任务长时间处于 Running 状态没有进展
- 原因:Worker 节点在计算中途遭遇断电、内存溢出(OOM)或僵死进程卡死。
- 自动恢复:Master 服务端后台线程会在超过
DCTS_STALE_SEC(默认 21600 秒 / 6 小时,约为单任务超时的 3 倍缓冲)后自动将claimed态任务重置为pending放回队列。 - 手动恢复:若需立即重置挂起任务,最稳妥的方式是重启
server(启动恢复逻辑会处理卡死态)。若必须直接操作队列库,注意队列表的正确列名与状态:-- task_queue 表的状态列是 status,领用列是 claimed_by_node_id(非 assigned_node); -- 领用中的任务是 status='claimed'(非 'running')。 UPDATE task_queue SET status='pending', claimed_by_node_id=NULL WHERE status='claimed';
现象 3:网络抖动或后端滚动重配下提示 向服务端上报任务 ... 结果失败
- 原因:在较长时效(如1-2小时)的运算完结回传一瞬间,Server 恰遇热更重启或遭遇防火墙短暂会话剔除。
- 容灾机制:Worker 内置了超强的 8 轮指数级自适应退避长跳上报防护(跨度可自 1s 到 60s 顺次延迟,支撑 2 分钟以上的长时断裂耐受窗口);上报失败时产物仍会尽力归档到本地
DCTS_RESULT_DIR/<model_name>/(白名单保留科学产物),沙盒随后清理。若真正超出了总重试界限,可从result_dir/<model_name>/直接调出最终收敛物(.7/.spec等)手工补录。
现象 4:Windows 节点重启后掉线(Docker Desktop 未自启)
- 原因:Docker Desktop 是 GUI 程序,必须有所属用户的交互桌面会话才能启动引擎;重启后无人登录桌面时,即使配了 AutoStart 引擎也不会起来(节点小宝网络链路本身 Auto 自启,不受影响)。
- 解决办法:经跳板 SSH 隧道转发 RDP 登录对应账户桌面,Docker 引擎随登录自启、
dcts-node容器靠 restart 策略自动恢复。完整拓扑、凭据、隧道命令与诊断速查见 remote_desktop_via_jump.md。
3. 日志与现场诊断
日志控制通过 RUST_LOG 环境变量配置:
# 查看服务端调试级别日志
RUST_LOG=info,server=debug ./target/release/server
# 查看节点端详细网络与子进程调用日志
RUST_LOG=info,node=debug,common=trace ./target/release/node