高级/兼容程序化示例。此页代码片段仅作机制说明;HostEnv 或 workspace 不提供隔离。新项目先按 Quickstart 使用 Session 与明确资源配置。
MlflowTraceProcessor 实现了 TraceProcessor 抽象基类,可将 QitOS 运行数据流式传输到 MLflow 追踪服务器。挂载后,它会在运行过程中自动记录每个 span 的指标,并在 trace 结束时写入最终汇总。
安装
mlflow SDK 作为可选依赖安装。若未安装,导入 MlflowTraceProcessor 会抛出 ImportError。
快速上手
示意片段(非独立程序;完整执行文件见本页链接)。MlflowTraceProcessor 会使用传入的参数调用 mlflow.set_experiment() 和 mlflow.start_run()。当 trace 结束时(正常结束或出错),它会写入汇总并默认调用 mlflow.end_run()。
构造参数
记录的指标
逐 span 指标
处理器拦截 span 结束事件,在运行过程中增量记录指标。
工具名称和动作名称以 MLflow 标签而非指标的形式记录,因为它们是字符串值。
最终汇总
当 trace 结束时,处理器将聚合指标写入 MLflow 运行:使用本地追踪服务器
先在本地启动 MLflow 追踪服务器,然后将处理器指向该服务器:tracking_uri,MLflow 默认使用本地 mlruns 目录。
与其他处理器组合
add_trace_processor 会将处理器追加到全局列表,因此可以将 MlflowTraceProcessor 与其他 TraceProcessor 组合使用,包括 WandbTraceProcessor:
示意片段(非独立程序;完整执行文件见本页链接)。
set_trace_processors:
示意片段(非独立程序;完整执行文件见本页链接)。
生命周期控制
auto_end_run
默认auto_end_run=True,处理器会在 on_trace_end 触发时自动调用 mlflow.end_run()。如果需要在 QitOS trace 结束后继续向同一 MLflow 运行写入自定义指标,可设置 auto_end_run=False:
示意片段(非独立程序;完整执行文件见本页链接)。
shutdown()
调用shutdown() 可提前关闭 MLflow 运行(例如在 SIGTERM 信号处理或 notebook 清理步骤中):
示意片段(非独立程序;完整执行文件见本页链接)。
auto_end_run 为 True,它会调用 mlflow.end_run()。该方法可安全地多次调用。
force_flush()
调用force_flush() 可确保所有缓冲指标已写入 MLflow 追踪服务器:
示意片段(非独立程序;完整执行文件见本页链接)。
