MLflow记录的RMSE未显示在Azure ML Metrics Tab?如何解决?
解决Azure ML Metrics Tab不显示RMSE指标的问题
1. 确认代码执行到指标记录步骤
先查看训练任务的日志输出,确认是否打印了RMSE: XXX。如果没看到该输出,说明前面的代码出现异常,导致未执行到mlflow.log_metric步骤:
- 常见问题:数据集加载失败、数据处理时列名不存在、LightGBM训练报错等,根据日志中的错误信息修复代码即可。
2. 显式关联MLflow与Azure ML Run
Azure ML提交任务时会自动创建Run,但需要确保MLflow日志能正确关联到该Run。修改train.py,在mlflow.autolog()前添加以下代码,并将后续代码缩进至with代码块内:
from azureml.core.run import Run # 获取当前Azure ML Run上下文 run = Run.get_context() # 配置MLflow跟踪地址和实验,确保日志同步到Azure ML mlflow.set_tracking_uri(run.experiment.workspace.get_mlflow_tracking_uri()) mlflow.set_experiment(run.experiment.name) # 显式启动MLflow Run,关联到Azure ML Run ID with mlflow.start_run(run_id=run.id): # 原有的mlflow.autolog()调用 mlflow.autolog() # 以下是原有的数据处理、模型训练、指标记录代码 data.drop(['postal_code','Column1','province','region','lattitude','longitude'], axis=1, inplace=True) one_hot_state_of_the_building=pd.get_dummies(data.state_of_the_building) one_hot_city = pd.get_dummies(data.city_name, prefix='city') # ... 其余代码保持不变 mlflow.log_metric("RMSE", mse**0.5)
3. 调整MLflow Autolog参数避免冲突
mlflow.autolog()默认会自动记录大量指标和模型,可能与手动记录的指标产生冲突。可以修改autolog参数,允许手动补充指标:
mlflow.autolog(log_models=False, exclusive=False, disable=False)
log_models=False:避免自动记录模型(若不需要自动记录模型可启用)exclusive=False:允许手动记录的指标被添加到日志中,不会被自动记录覆盖
4. 确认环境包含必要依赖
你使用的AzureML-sklearn-1.0-ubuntu20.04-py38-cpu环境默认包含MLflow,但如果版本不兼容可能导致日志同步失败。可创建自定义环境确保依赖完整:
from azureml.core.environment import Environment from azureml.core.conda_dependencies import CondaDependencies env = Environment(name="custom-lightgbm-env") conda_dep = CondaDependencies() conda_dep.add_pip_package("mlflow") conda_dep.add_pip_package("azureml-mlflow") conda_dep.add_pip_package("lightgbm") conda_dep.add_pip_package("pandas") conda_dep.add_pip_package("scikit-learn") env.python.conda_dependencies = conda_dep
之后在ScriptRunConfig中替换为这个自定义环境即可。
5. 检查指标名称合法性
确保指标名称RMSE无特殊字符(空格、斜杠等),当前名称符合Azure ML Metrics Tab的命名规则,此步骤可快速排除名称问题。
内容的提问来源于stack exchange,提问作者Luis Valencia
相关产品推荐
相关产品推荐

