我正在尝试使用MLFlow将工件记录到Azure Blob存储中。尽管记录到dbfs的工作正常,但是当我尝试将其记录到Azure Blob存储时,我只看到一个具有相应runid的文件夹,但其中没有任何内容。
这就是我要做的事情
从Azure Databricks创建一个实验,为其命名并指定工件位置为wasbs://mlartifacts@myazurestorageaccount.blob.core.windows.net/。
在spark集群中的environemtn Variables部分中,传递AZURE_STORAGE_ACCESS_KEY =“ ValueoftheKey”
with mlflow.start_run():
lr = ElasticNet(alpha=alpha, l1_ratio=l1_ratio, random_state=42)
lr.fit(train_x, train_y)
predicted_qualities = lr.predict(test_x)
(rmse, mae, r2) = eval_metrics(test_y, predicted_qualities)
print("Elasticnet model (alpha=%f, l1_ratio=%f):" % (alpha, l1_ratio))
print(" RMSE: %s" % rmse)
print(" MAE: %s" % mae)
print(" R2: %s" % r2)
mlflow.log_param("alpha", alpha)
mlflow.log_param("l1_ratio", l1_ratio)
mlflow.log_metric("rmse", rmse)
mlflow.log_metric("r2", r2)
mlflow.log_metric("mae", mae)
mlflow.sklearn.log_model(lr, "model")
当然,在使用它之前,我将实验设置为将工件存储定义为蔚蓝色斑点存储的实验
experiment_name = "/Users/user@domain.com/mltestazureblob"
mlflow.set_experiment(experiment_name)
我可以从Databricks的MLFlow UI中获取指标和参数,但是由于我的工件位置是Azure Blob存储,因此我希望模型,.pkl和conda.yaml文件位于Azure Blob存储的容器中,但是当我检查它时,我只看到一个与实验的运行ID对应的文件夹,但里面没有任何内容。
我不知道我在想什么。如果有人需要其他详细信息,我将很乐意提供。
注意,当我使用默认位置(即dbfs)时,一切正常。
答案 0 :(得分:0)
显然,问题出在Azure存储资源管理器。它不显示文件夹的内容(如pkl,conda.yaml和模型文件)。但是,当我从Azure门户使用Storage Explorer(预览版)时,我能够查看其内容(但是看起来也不是很稳定)。
我将为Azure存储资源管理器团队提出一个错误,供他们查看。我使用的是Azure存储资源管理器的1.10.1版本。