如何将MlFlow实验从一个Databricks工作区迁移到已注册模型的另一工作区?

问题描述

不幸的是,我们不得不重新部署Databricks工作区,在该工作区中,我们将MlFlow功能与实验和模型注册一起使用。

但是,如果您使用DBC导出保存了音色的用户文件夹并将其导入到新的工作空间中,则实验不会迁移,只会丢失。

因此,最简单的解决方案不起作用。我接下来尝试的是在新工作区中创建一个新实验。将所有实验数据从旧工作区的dbfs复制(使用dbfs cp -r dbfs:/ databricks / mlflow源,然后再次相同,将其上传到新工作区)到新的。然后只需将数据的位置引用到实验中即可,如下图所示:

Create Experiment with existing path

这也行不通,尽管该路径已存在,但看不到任何运行。

一个想法是,注册模型是最重要的模型,因此至少应该存在并可以访问那些模型。为此,我在这里使用了文档:https://www.mlflow.org/docs/latest/model-registry.html

使用以下代码,您可以在旧工作空间上获得已注册模型的列表,并在run_id和位置上进行引用。

from mlflow.tracking import MlflowClient

client = MlflowClient()
for rm in client.list_registered_models():
    pprint(dict(rm),indent=4)

使用此代码,您可以将模型添加到模型注册表中,并引用工件数据的位置(在新工作空间中):

# first the general model must be defined
client.create_registered_model(name='MyModel')

# and then the run of the model you want to registre will be added to the model as version one
client.create_model_version( name='MyModel',run_id='9fde022012046af935fe52435840cf1',source='dbfs:/databricks/mlflow/experiment_id/run_id/artifacts/model')

但是那也没有解决。如果您进入模型注册表,则会收到如下消息:

error message of the registred model

我真的检查了,在给定的路径(源)上,数据确实已上传并且还存在模型。

您有什么新想法可以在Databricks中迁移这些模型吗?

解决方法

没有将实验从一个工作区迁移到另一个工作区的正式方法。但是,利用MLflow API,有一个“非官方”工具可以迁移实验减去与运行相关的笔记本修订本。

请参阅:https://github.com/amesar/mlflow-tools/blob/master/mlflow_tools/export_import/README.mdhttps://github.com/amesar/mlflow-tools/blob/master/mlflow_tools/export_import/README.md#databricks-limitations