用途:为 nvalchemi 的动力学模拟与训练工作流添加可观测性,提供进度摘要、实时终端仪表盘、TensorBoard 标量快照与逐系统事件日志。
主要能力:ReportingOrchestrator 是统一注册的 hook,可跨训练、动力学和自定义 hook 工作流使用;RichReporter 提供终端仪表盘(training/dynamics 布局),TensorBoardReporter 输出持久标量摘要,二者作为 sink 由 orchestrator 持有,不直接注册。nvalchemi.dynamics.hooks.LoggingHook 用于动力学事件流,默认计算 energy、fmax、temperature、status、graph index 等,按系统写 CSV/TensorBoard/自定义 writer;by_group=True 时按批次组输出。
使用方式:通过 hooks=[reporting] 或 register_hook(...) 注册 ReportingOrchestrator,工作流引擎在 run() 中自动进入和关闭 hook 上下文,通常无需手动包裹。训练示例中 stages 可用枚举名如 AFTER_OPTIMIZER_STEP,frequency 控制频率;动力学中 stages 用 DynamicsStage.AFTER_STEP。自定义标量通过 custom_scalars 传入回调,返回普通数值或标量张量。分布式场景支持 rank_reduction="mean" 与 rank_zero_only=True。可用 RichReporter.preview(layout=...) 预览仪表盘。
适用场景:长时间训练、CLI 脚手架、微调脚本、DDP 作业与动力学模拟的默认可观测性;需要逐系统可分析行的动力学运行。
限制:不要将动力学 LoggingHook 复用为训练日志器;训练优先用 reporter。分布式下 LoggingHook 不协调文件访问,每个 rank 需唯一 log_path。避免在热路径中执行昂贵标量回调与 .item()。完整细节见 docs/userguide/reporting.md、training.md、dynamics.md、hooks.md。