You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

能否不使用with mlflow.start_run()块实现MLFlow全Notebook跟踪?

无需with块实现Notebook全流程MLflow跟踪的方法

当然可以不用with块实现整个Notebook的MLflow跟踪,具体操作如下:

  • 启动全局跟踪Run:在Notebook最开头直接执行mlflow.start_run(),无需包裹代码块。这会启动一个顶级Run,后续所有MLflow日志操作(参数、指标、文件等)都会自动关联到这个Run,覆盖整个Notebook的执行过程。
    示例代码:

    import mlflow
    
    # 可指定Run名称,方便后续在MLflow UI中识别
    mlflow.start_run(run_name="full_notebook_data_cleaning_track")
    
  • 记录数据清洗参数:在数据清洗的各个步骤里,直接用mlflow.log_param()或mlflow.log_params()记录参数即可,不用嵌套在with块中。
    示例代码:

    # 记录单个清洗参数
    mlflow.log_param("missing_value_process", "drop")
    # 批量记录多个清洗参数
    cleaning_config = {
        "scaler_type": "StandardScaler",
        "train_test_split_ratio": 0.8,
        "categorical_encode_method": "one-hot"
    }
    mlflow.log_params(cleaning_config)
    
  • 显式结束Run:在Notebook最后执行mlflow.end_run(),确保Run被正确关闭。虽然Notebook正常结束时MLflow会自动终止Run,但显式调用能避免因意外中断导致的Run状态异常。
    示例代码:

    mlflow.end_run()
    

额外注意事项

  • 如果中途需要切换新的Run,必须先调用mlflow.end_run()关闭当前Run,否则新启动的Run会默认成为当前Run的嵌套子Run。若不想嵌套,也可在启动新Run时指定nested=False,但更推荐先关闭旧Run再启动新的,避免跟踪逻辑混乱。
  • 若不小心多次调用mlflow.start_run()且未关闭,MLflow会自动将后续操作关联到最近启动的Run上,需注意保持Run的生命周期清晰。

内容的提问来源于stack exchange,提问作者Connor

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.06.30 02:04:56