跨Databricks工作区复制模型版本:Registry URI配置与查询
解决Databricks跨工作区复制模型版本的Registry URI设置问题
一、Unity Catalog模式下的Registry URI格式
- 当模型存储在Unity Catalog(UC)中时,Registry URI不需要使用工作区URL,而是固定值:
databricks-uc - 这是MLflow针对Databricks UC模型注册表的专用标识,所有关联UC的工作区都使用此URI
二、如何确认Registry URI
- 在Databricks Notebook中执行以下代码,可直接获取当前环境的Registry URI:
如果当前配置为使用UC,返回结果就是import mlflow print(mlflow.get_registry_uri())databricks-uc - 也可以通过MLflow模型注册表页面验证:打开UC下的模型页面,确认模型路径为
models:/<catalog>/<schema>/<model>格式,即可确认使用UC注册表
三、copy-model-version命令的正确用法示例
需要分别配置源和目标工作区的认证信息(通过环境变量),再执行命令:
# 设置源工作区认证 export DATABRICKS_HOST=<源工作区URL> export DATABRICKS_TOKEN=<源工作区Token> # 设置目标工作区认证 export DATABRICKS_HOST=<目标工作区URL> export DATABRICKS_TOKEN=<目标工作区Token> # 执行复制命令 copy-model-version \ --src-model-version "models:/<catalog>/<schema>/<model>/<version>" \ --dst-model "models:/<catalog>/<schema>/<model>" \ --src-registry-uri databricks-uc \ --dst-registry-uri databricks-uc
四、403错误的排查要点
- 权限验证:确保使用的Databricks Token在源工作区有
SELECT模型版本、READUC对象的权限;在目标工作区有CREATE模型、WRITEUC对象的权限 - Token有效性:检查Token是否过期、未被撤销,且关联的用户/服务主体在两个工作区都有访问权限
- UC启用状态:确认两个工作区都已启用Unity Catalog,且待复制的模型确实存储在UC中(而非工作区本地注册表)
内容的提问来源于stack exchange,提问作者camazg
相关产品推荐
相关产品推荐

