MLFlow模型未记录到Azure Blob存储

时间:2019-10-23 09:12:45

标签: databricks azure-databricks mlflow

我正在尝试使用MLFlow将工件记录到Azure Blob存储中。尽管记录到dbfs的工作正常,但是当我尝试将其记录到Azure Blob存储时,我只看到一个具有相应runid的文件夹,但其中没有任何内容。

这就是我要做的事情

  1. 从Azure Databricks创建一个实验,为其命名并指定工件位置为wasbs://mlartifacts@myazurestorageaccount.blob.core.windows.net/。

  2. 在spark集群中的environemtn Variables部分中,传递AZURE_STORAGE_ACCESS_KEY =“ ValueoftheKey”

  3. 在笔记本中,使用mlflow记录指标,参数,最后使用如下代码段记录模型

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)时,一切正常。

1 个答案:

答案 0 :(得分:0)

显然,问题出在Azure存储资源管理器。它不显示文件夹的内容(如pkl,conda.yaml和模型文件)。但是,当我从Azure门户使用Storage Explorer(预览版)时,我能够查看其内容(但是看起来也不是很稳定)。

我将为Azure存储资源管理器团队提出一个错误,供他们查看。我使用的是Azure存储资源管理器的1.10.1版本。