Azure Databricks跨工作区复制ML模型:MLflow配置错误排查
MLflow导出Azure Databricks模型错误及依赖问题解决
一、解决"MLflow host or token is not configured correctly"错误
核心修正步骤:
- 调整跟踪URI配置:在Databricks Runtime内部运行时,无需手动指定完整HTTPS URL,直接使用
mlflow.set_tracking_uri("databricks")即可,MLflow会自动读取工作区的内置配置。只有外部环境连接Databricks时才需要用https://<workspace-url>/格式,内部运行用内置URI更稳定可靠。 - 提前设置环境变量:必须在导入MLflow模块前设置
DATABRICKS_TOKEN和MLFLOW_TRACKING_TOKEN,否则MLflow初始化阶段无法读取到这些认证变量。 - 验证PAT权限:确认你的个人访问令牌(PAT)包含
models:read权限(导出模型需要读取模型元数据的权限),可在Databricks工作区的用户设置中检查PAT的权限范围。
修正后的代码示例:
import os # 先设置环境变量,再导入MLflow相关模块 os.environ["DATABRICKS_TOKEN"] = "mnop6672ec8e20c7d219eb2A-3" os.environ["MLFLOW_TRACKING_TOKEN"] = "mnop6672ec8e20c7d219eb2A-3" import mlflow from mlflow_export_import.model.export_model import ModelExporter from mlflow.tracking import MlflowClient # Databricks内部运行时使用内置跟踪URI mlflow.set_tracking_uri("databricks") mlflow_client = MlflowClient() exporter = ModelExporter(mlflow_client) exporter.export_model( model_name="Signature_Test", output_dir="/tmp/mlflow_export/model", stages=None, export_metadata_tags=True )
二、解决mlflow-skinny与完整mlflow的依赖冲突
- 安装完整MLflow库:在Databricks notebook中执行
%pip install mlflow,覆盖默认的mlflow-skinny版本,安装完成后需要重启内核才能生效。 - 替代方案:使用Databricks原生工具:如果不想替换mlflow-skinny,可直接使用Databricks REST API或CLI导出模型,无需依赖第三方的mlflow-export-import工具。
额外排查点
- 再次核对工作区URL,确认无拼写错误或多余的斜杠。
- 先用
mlflow_client.list_registered_models()测试连接,验证MLflow客户端是否能正常访问工作区模型,排除工具本身的问题。
内容的提问来源于stack exchange,提问作者Gopinath Rajee
相关产品推荐
相关产品推荐

