问题描述
不幸的是,我们不得不重新部署Databricks工作区,在该工作区中,我们将MlFlow功能与实验和模型注册一起使用。
但是,如果您使用DBC导出保存了音色的用户文件夹并将其导入到新的工作空间中,则实验不会迁移,只会丢失。
因此,最简单的解决方案不起作用。我接下来尝试的是在新工作区中创建一个新实验。将所有实验数据从旧工作区的dbfs复制(使用dbfs cp -r dbfs:/ databricks / mlflow源,然后再次相同,将其上传到新工作区)到新的。然后只需将数据的位置引用到实验中即可,如下图所示:
这也行不通,尽管该路径已存在,但看不到任何运行。
下一个想法是,注册模型是最重要的模型,因此至少应该存在并可以访问那些模型。为此,我在这里使用了文档: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')
但是那也没有解决。如果您进入模型注册表,则会收到如下消息:。
我真的检查了,在给定的路径(源)上,数据确实已上传并且还存在模型。
您有什么新想法可以在Databricks中迁移这些模型吗?
解决方法
没有将实验从一个工作区迁移到另一个工作区的正式方法。但是,利用MLflow API,有一个“非官方”工具可以迁移实验减去与运行相关的笔记本修订本。
请参阅:https://github.com/amesar/mlflow-tools/blob/master/mlflow_tools/export_import/README.md和https://github.com/amesar/mlflow-tools/blob/master/mlflow_tools/export_import/README.md#databricks-limitations