如何修复 MLflow 中未显示的工件 UI
How to fixe Artifacts not showing in MLflow UI
我使用了 MLflow 并使用下面的函数(来自 pydataberlin)记录了参数。
def train(alpha=0.5, l1_ratio=0.5):
# train a model with given parameters
warnings.filterwarnings("ignore")
np.random.seed(40)
# Read the wine-quality csv file (make sure you're running this from the root of MLflow!)
data_path = "data/wine-quality.csv"
train_x, train_y, test_x, test_y = load_data(data_path)
# Useful for multiple runs (only doing one run in this sample notebook)
with mlflow.start_run():
# Execute ElasticNet
lr = ElasticNet(alpha=alpha, l1_ratio=l1_ratio, random_state=42)
lr.fit(train_x, train_y)
# Evaluate Metrics
predicted_qualities = lr.predict(test_x)
(rmse, mae, r2) = eval_metrics(test_y, predicted_qualities)
# Print out metrics
print("Elasticnet model (alpha=%f, l1_ratio=%f):" % (alpha, l1_ratio))
print(" RMSE: %s" % rmse)
print(" MAE: %s" % mae)
print(" R2: %s" % r2)
# Log parameter, metrics, and model to MLflow
mlflow.log_param(key="alpha", value=alpha)
mlflow.log_param(key="l1_ratio", value=l1_ratio)
mlflow.log_metric(key="rmse", value=rmse)
mlflow.log_metrics({"mae": mae, "r2": r2})
mlflow.log_artifact(data_path)
print("Save to: {}".format(mlflow.get_artifact_uri()))
mlflow.sklearn.log_model(lr, "model")
一旦我 运行 trin() 及其参数,在 UI 中我看不到工件,但我可以看到模型及其参数和指标。
在工件选项卡中写着No Artifacts Recorded Use the log artifact APIs to store file outputs from MLflow runs.
但是在模型文件夹中的查找器中,所有工件都与模型 Pickle 一起存在。
帮助
这段代码不是运行本地的吗?也许您要移动 ml运行s 文件夹?我建议检查 meta.yaml 文件中存在的工件 URI。如果那里的路径不正确,可能会出现这样的问题。
有类似的问题。在我的例子中,我通过 运行 mlflow ui
在你的实验的 mlruns
目录中解决了它。
查看 Github here
上的完整讨论
希望对您有所帮助!
我遇到了同样的问题(mlflow.pytorch
)。对我来说,它是通过替换 log_model()
和 log_atrifacts()
.
来修复的
所以记录工件的是:
mlflow.log_metric("metric name", [metric value])
mlflow.pytorch.log_model(model, "model")
mlflow.log_artifacts(output_dir)
此外,对于终端中的ui
,cd到mlruns
所在的目录。例如,如果 mlruns
的位置是 ...\your-project\mlruns
:
cd ...\your-project
进入安装mlflow
的环境
...\your-project> conda activate [myenv]
然后,运行 mlflow ui
(myenv) ...\your-project> mlflow ui
我使用了 MLflow 并使用下面的函数(来自 pydataberlin)记录了参数。
def train(alpha=0.5, l1_ratio=0.5):
# train a model with given parameters
warnings.filterwarnings("ignore")
np.random.seed(40)
# Read the wine-quality csv file (make sure you're running this from the root of MLflow!)
data_path = "data/wine-quality.csv"
train_x, train_y, test_x, test_y = load_data(data_path)
# Useful for multiple runs (only doing one run in this sample notebook)
with mlflow.start_run():
# Execute ElasticNet
lr = ElasticNet(alpha=alpha, l1_ratio=l1_ratio, random_state=42)
lr.fit(train_x, train_y)
# Evaluate Metrics
predicted_qualities = lr.predict(test_x)
(rmse, mae, r2) = eval_metrics(test_y, predicted_qualities)
# Print out metrics
print("Elasticnet model (alpha=%f, l1_ratio=%f):" % (alpha, l1_ratio))
print(" RMSE: %s" % rmse)
print(" MAE: %s" % mae)
print(" R2: %s" % r2)
# Log parameter, metrics, and model to MLflow
mlflow.log_param(key="alpha", value=alpha)
mlflow.log_param(key="l1_ratio", value=l1_ratio)
mlflow.log_metric(key="rmse", value=rmse)
mlflow.log_metrics({"mae": mae, "r2": r2})
mlflow.log_artifact(data_path)
print("Save to: {}".format(mlflow.get_artifact_uri()))
mlflow.sklearn.log_model(lr, "model")
一旦我 运行 trin() 及其参数,在 UI 中我看不到工件,但我可以看到模型及其参数和指标。
在工件选项卡中写着No Artifacts Recorded Use the log artifact APIs to store file outputs from MLflow runs.
但是在模型文件夹中的查找器中,所有工件都与模型 Pickle 一起存在。
帮助
这段代码不是运行本地的吗?也许您要移动 ml运行s 文件夹?我建议检查 meta.yaml 文件中存在的工件 URI。如果那里的路径不正确,可能会出现这样的问题。
有类似的问题。在我的例子中,我通过 运行 mlflow ui
在你的实验的 mlruns
目录中解决了它。
查看 Github here
上的完整讨论希望对您有所帮助!
我遇到了同样的问题(mlflow.pytorch
)。对我来说,它是通过替换 log_model()
和 log_atrifacts()
.
所以记录工件的是:
mlflow.log_metric("metric name", [metric value])
mlflow.pytorch.log_model(model, "model")
mlflow.log_artifacts(output_dir)
此外,对于终端中的ui
,cd到mlruns
所在的目录。例如,如果 mlruns
的位置是 ...\your-project\mlruns
:
cd ...\your-project
进入安装mlflow
的环境
...\your-project> conda activate [myenv]
然后,运行 mlflow ui
(myenv) ...\your-project> mlflow ui