在 Unity Catalog 中管理模型生命週期
重要
- 本文記載 Unity Catalog中的模型,Databricks 建議用來控管和部署模型。 如果您的工作區未針對 Unity Catalog啟用,則此頁面上的功能無法使用。 相反地,請參閱使用工作區模型登錄管理模型生命週期 (舊版)。 如需如何將工作區模型登錄升級至 Unity Catalog的指引,請參閱 將工作流程和模型移轉至 Unity Catalog。
- Unity Catalog 中的模型無法在 Azure Government 區域中使用。
本文說明如何在 Unity Catalog 中使用模型作為機器學習工作流程的一部分,以管理 ML 模型的完整生命週期。 Databricks 在 Unity Catalog中提供託管的 MLflow 模型登錄版本。 Unity 中的模型 Catalog 將 Unity Catalog 的優點延伸到 ML 模型,包括跨工作區的集中式訪問控制、稽核、譜系和模型探索。 Unity Catalog 中的模型與開放原始碼 MLflow Python 用戶端相容。
如需了解模型註冊的概念,請參閱 MLflow 的生成 AI 代理和 ML 模型生命週期。
需求
您的工作區中必須啟用 Unity Catalog。 請參閱 Get 開始使用 Unity Catalog 來創建 Unity Catalog Metastore,並在工作區中啟用,然後建立 catalog。 如果未開啟 Unity Catalog,請使用 工作區模型登錄。
您必須使用可以存取 Unity Catalog的計算資源。 針對 ML 工作負載,這意味著計算的存取模式必須是單一使用者。 如需詳細資訊,請參閱存取模型。
若要建立新的已註冊模型,您需要下列權限:
-
USE SCHEMA
和USE CATALOG
對 schema 及其封入的 catalog的許可權。 -
CREATE_MODEL
在 schema上的許可權。 若要 grant 此許可權,請使用 Catalog Explorer UI 或下列 SQL GRANT 命令:
GRANT CREATE_MODEL ON SCHEMA <schema-name> TO <principal>
-
注意
您的工作區必須附加至支援許可權繼承的 Unity Catalog 中繼存放區。 這適用於 2022 年 8 月 25 日之後建立的所有 metastores。 如果在較舊的中繼存放區上執行,請遵循文件以進行升級。
安裝及設定 Unity Catalog 的 MLflow 用戶端
本節包含安裝和設定 Unity CatalogMLflow 用戶端的指示。
安裝 MLflow Python 用戶端
Unity Catalog 中的模型支援包含在 Databricks Runtime 13.2 ML 和更新版本中(中國 Azure Databricks Runtime 15.0 ML 和更新版本)。
您也可以在 Unity Catalog 中使用模型,方法是在筆記本中安裝最新版本的 MLflow Python 用戶端,這適用於 Databricks Runtime 11.3 LTS 及以上版本,並使用以下程式碼。
%pip install --upgrade "mlflow-skinny[databricks]"
dbutils.library.restartPython()
設定 MLflow 用戶端以存取 Unity Catalog 中的模型
如果您的工作區 預設 catalog 位於 Unity Catalog 中(而非 hive_metastore
),而且您執行的是使用 Databricks Runtime 13.3 LTS 或更新版本叢集(Azure 中國地區中的 Databricks Runtime 15.0 或更新版本),則模型會自動在預設 catalog中建立並載入。 您無需執行此步驟。
對於其他工作區,MLflow Python 用戶端會在 Databricks 工作區模型登錄中建立模型。 若要升級至 Unity Catalog中的模型,請使用筆記本中的下列程式代碼來設定 MLflow 用戶端:
import mlflow
mlflow.set_registry_uri("databricks-uc")
對於少數工作區,where 預設 catalog 在 2024 年 1 月之前設定為 Unity catalog 中的 Catalog,而工作區模型登錄是在 2024 年 1 月之前使用,您必須使用上述命令手動 set 預設 catalog 至 Unity Catalog。
訓練和註冊 Unity Catalog相容模型
需要 許可權:若要建立一個新的已註冊模型,您需要對封閉的 CREATE_MODEL
擁有 USE SCHEMA
和 schema 許可權,並對封閉的 USE CATALOG
擁有 catalog 許可權。 若要在已註冊的模型下建立新的模型版本,您必須是已註冊模型的擁有者,且在包含模型的 USE SCHEMA
和 USE CATALOG
上擁有 schema 和 catalog 許可權。
UC 中的 ML 模型版本必須具有模型簽章。 如果您尚未在模型訓練工作負載中使用簽章記錄 MLflow 模型,則可:
- 使用 Databricks 自動記錄,該功能會自動記錄具有許多熱門 ML 架構簽章的模型。 請參閱 MLflow 文件中支援的架構。
- 透過 MLflow 2.5.0 和更新版本,您可在
mlflow.<flavor>.log_model
呼叫中指定輸入範例,並自動推斷模型簽章。 請參閱 MLflow 文件以取得更多資訊。
然後,將模型的三層名稱傳遞至 MLflow API,格式為 <catalog>.<schema>.<model>
。
本節中的範例會在 ml_team
schema下的 prod
catalog 中建立和存取模型。
本節中的模型定型範例會建立新的模型版本,並在 prod
catalog中註冊。 使用 prod
catalog 不一定表示模型版本在生產環境中處理流量。 模型版本的封入 catalog、schema和已註冊的模型會反映其環境(prod
)和相關聯的治理規則(例如,許可權可以 set,讓只有系統管理員可以從 prod
catalog中刪除),但無法將其部署狀態刪除。 若要管理部署狀態,請使用模型別名。
使用自動登錄來向 Unity Catalog 註冊模型
若要註冊模型,請使用 MLflow 用戶端 API register_model()
方法。 請參閱 mlflow.register_model。
from sklearn import datasets
from sklearn.ensemble import RandomForestClassifier
# Train a sklearn model on the iris dataset
X, y = datasets.load_iris(return_X_y=True, as_frame=True)
clf = RandomForestClassifier(max_depth=7)
clf.fit(X, y)
# Note that the UC model name follows the pattern
# <catalog_name>.<schema_name>.<model_name>, corresponding to
# the catalog, schema, and registered model name
# in Unity Catalog under which to create the version
# The registered model will be created if it doesn't already exist
autolog_run = mlflow.last_active_run()
model_uri = "runs:/{}/model".format(autolog_run.info.run_id)
mlflow.register_model(model_uri, "prod.ml_team.iris_model")
使用 API 註冊模型
mlflow.register_model(
"runs:/<run_uuid>/model", "prod.ml_team.iris_model"
)
使用自動推斷的簽章向 Unity Catalog 註冊模型
MLflow 2.5.0 版和更新版本提供對自動推斷簽章的支援,且在 Databricks Runtime 11.3 LTS ML 和更新版本中也提供支援。 若要使用自動推斷的簽章,請使用下列程式碼,在筆記本中安裝最新的 MLflow Python 用戶端:
%pip install --upgrade "mlflow-skinny[databricks]"
dbutils.library.restartPython()
下列程式碼顯示自動推斷簽章的範例。
from sklearn import datasets
from sklearn.ensemble import RandomForestClassifier
with mlflow.start_run():
# Train a sklearn model on the iris dataset
X, y = datasets.load_iris(return_X_y=True, as_frame=True)
clf = RandomForestClassifier(max_depth=7)
clf.fit(X, y)
# Take the first row of the training dataset as the model input example.
input_example = X.iloc[[0]]
# Log the model and register it as a new version in UC.
mlflow.sklearn.log_model(
sk_model=clf,
artifact_path="model",
# The signature is automatically inferred from the input example and its predicted output.
input_example=input_example,
registered_model_name="prod.ml_team.iris_model",
)
使用 UI 註冊模型
執行下列步驟:
從實驗執行頁面,在 UI 右上角按下註冊模型。
在對話框中,selectUnity Catalog,並從下拉式清單 selectlist 目的地模型。
按下 [註冊]。
註冊模型可能需要一些時間。 若要監視進度,請定期導航至 Unity Catalog 和 refresh 的目的地模型。
使用別名來部署模型
模型別名可讓您將可變動的具名參考指派給已註冊模型的特定版本。 您可使用別名來指出模型版本的部署狀態。 例如,您可將「Champion」別名配置給目前處於生產環境的模型版本,並在使用生產模型的工作負載中將此別名設為目標。 然後,您可以將生產模型 update,方法是將「冠軍」別名重新指派給不同的模型版本。
在模型上刪除 Set 和別名
需要的許可權:已註冊模型的擁有者,以及在包含模型的 USE SCHEMA
和 USE CATALOG
上擁有 schema 和 catalog 許可權。
您可以在 Unity set 中,使用 remove來設定模型的 Catalog、Catalog和 別名。 您可在模型詳細資料頁面中跨已註冊模型管理別名,並在模型版本詳細資料頁面中設定特定模型版本的別名。
若要使用 MLflow 用戶端 API set、update和刪除別名,請參閱下列範例:
from mlflow import MlflowClient
client = MlflowClient()
# create "Champion" alias for version 1 of model "prod.ml_team.iris_model"
client.set_registered_model_alias("prod.ml_team.iris_model", "Champion", 1)
# reassign the "Champion" alias to version 2
client.set_registered_model_alias("prod.ml_team.iris_model", "Champion", 2)
# get a model version by alias
client.get_model_version_by_alias("prod.ml_team.iris_model", "Champion")
# delete the alias
client.delete_registered_model_alias("prod.ml_team.iris_model", "Champion")
如需別名用戶端 API 的詳細資料,請參閱 MLflow API 文件。
依推斷工作負載的別名來載入模型版本
需要許可權:已註冊模型需要 EXECUTE
許可權,以及在包含模型的 USE SCHEMA
和 USE CATALOG
上需要 schema 和 catalog 許可權。
批次推斷工作負載可依別名參考模型版本。 下列片段會載入並套用「Champion」模型版本以進行批次推斷。 如果「Champion」版本更新為參考新的模型版本,批次推斷工作負載就會在下一次執行時自動挑選。 這可讓您將模型部署與批次推斷工作負載進行分離。
import mlflow.pyfunc
model_version_uri = "models:/prod.ml_team.iris_model@Champion"
champion_version = mlflow.pyfunc.load_model(model_version_uri)
champion_version.predict(test_x)
模型服務端點也可依別名參考模型版本。 您可以使用 get,將部署工作流程設計為透過別名 update 模型版本,以及設置模型服務端點 以提供該版本。 例如:
import mlflow
import requests
client = mlflow.tracking.MlflowClient()
champion_version = client.get_model_version_by_alias("prod.ml_team.iris_model", "Champion")
# Invoke the model serving REST API to update endpoint to serve the current "Champion" version
model_name = champion_version.name
model_version = champion_version.version
requests.request(...)
依推斷工作負載的版本號碼來載入模型版本
您也可依版本號碼載入模型版本:
import mlflow.pyfunc
# Load version 1 of the model "prod.ml_team.iris_model"
model_version_uri = "models:/prod.ml_team.iris_model/1"
first_version = mlflow.pyfunc.load_model(model_version_uri)
first_version.predict(test_x)
跨工作區共用模型
與相同區域中的使用者共用模型
只要您擁有適當的許可權,就可以從連結至包含模型的中繼存放區的任何工作區存取 Unity Catalog 中的模型。 例如,您可以從開發工作區中的 prod
catalog 存取模型,以利比較新開發的模型與生產基準。
若要與其他使用者共同協作您建立的已註冊模型(共享寫入權限),您必須將模型的擁有權 grant 給包含您與想要共同協作之使用者的群組。 共同作業者也必須在包含模型的 USE CATALOG
和 USE SCHEMA
上擁有 catalog 和 schema 許可權。 如需詳細資訊,請參閱 Unity Catalog 許可權和可保護物件。
與其他區域或帳戶中的使用者共用模型
若要與其他區域或帳戶中的使用者共用模型,請使用 Databricks-to-Databricks 共用流程。 請參閱
在 Unity Catalog 中追蹤模型的數據歷程
注意
MLflow 2.11.0 和更新版本提供 table 至 Unity Catalog 模型譜系的支援。
當您在 Unity table中訓練 Catalog 模型時,您可以追蹤模型的來源,回溯至其訓練和評估過程中所用的上游數據集。 為此,請使用 mlflow.log_input。 這會使用產生模型的 MLflow 執行來儲存輸入 table 資訊。 資料譜系也會針對使用功能存放區 API 記錄的模型自動擷取。 請參閱特徵控管和譜系。
當您將模型註冊至 Unity
下列程式碼為範例。
import mlflow
import pandas as pd
import pyspark.pandas as ps
from sklearn.datasets import load_iris
from sklearn.ensemble import RandomForestRegressor
# Write a table to Unity Catalog
iris = load_iris()
iris_df = pd.DataFrame(iris.data, columns=iris.feature_names)
iris_df.rename(
columns = {
'sepal length (cm)':'sepal_length',
'sepal width (cm)':'sepal_width',
'petal length (cm)':'petal_length',
'petal width (cm)':'petal_width'},
inplace = True
)
iris_df['species'] = iris.target
ps.from_pandas(iris_df).to_table("prod.ml_team.iris", mode="overwrite")
# Load a Unity Catalog table, train a model, and log the input table
dataset = mlflow.data.load_delta(table_name="prod.ml_team.iris", version="0")
pd_df = dataset.df.toPandas()
X = pd_df.drop("species", axis=1)
y = pd_df["species"]
with mlflow.start_run():
clf = RandomForestRegressor(n_estimators=100)
clf.fit(X, y)
mlflow.log_input(dataset, "training")
# Take the first row of the training dataset as the model input example.
input_example = X.iloc[[0]]
# Log the model and register it as a new version in UC.
mlflow.sklearn.log_model(
sk_model=clf,
artifact_path="model",
# The signature is automatically inferred from the input example and its predicted output.
input_example=input_example,
registered_model_name="prod.ml_team.iris_classifier",
)
控制對模型的存取
在 Unity Catalog中,已註冊的模型是 FUNCTION
類別可保護物件的子類型。 若要 grant Unity Catalog中註冊的模型存取權,請使用 GRANT ON FUNCTION
。 如需詳細資訊,請參閱 Unity Catalog 權限與可保護的物件。 如需跨 catalogs 和架構整理模型的最佳作法,請參閱 整理您的數據。
您可使用授與 REST API 以程式設計方式設定模型權限。 當您設定模型許可權時,setsecurable_type
至 "FUNCTION"
在 REST API 要求中。 例如,使用 PATCH /api/2.1/unity-catalog/permissions/function/{full_name}
到 update 的已註冊模型許可權。
在 UI 中檢視模型
需要 許可權:要在 UI 中檢視已註冊模型及其版本,您需要擁有該註冊模型的 EXECUTE
許可權,還需在包含該模型的 USE SCHEMA
和 USE CATALOG
上擁有 schema 和 catalog 許可權。
您可以使用 Catalog,在 Unity 中檢視和管理已註冊的模型和模型版本。
重新命名模型
需要
若要重新命名已註冊的模型,請使用 MLflow 用戶端 API rename_registered_model()
方法:
client=MlflowClient()
client.rename_registered_model("<full-model-name>", "<new-model-name>")
複製模型版本
您可以在 Unity Catalog中,將模型版本從一個模型複製到另一個模型。
使用 UI 複製模型版本
執行下列步驟:
從模型版本頁面,按下 UI 右上角的 [複製此版本]。
從下拉式清單中選擇 Select 目的地模型 list,然後按下 [複製]。
複製模型可能需要一些時間。 若要監視進度,請定期導航至 Unity Catalog 和 refresh 的目的地模型。
使用 API 複製模型版本
若要複製模型版本,請使用 MLflow 的 copy_model_version() Python API:
client = MlflowClient()
client.copy_model_version(
"models:/<source-model-name>/<source-model-version>",
"<destination-model-name>",
)
刪除模型或模型版本
需要的許可權:已註冊模型的擁有者,以及在包含模型的 USE SCHEMA
和 USE CATALOG
上擁有 schema 和 catalog 許可權。
您可以使用 Catalog Explorer UI 或 API,在已註冊的模型中刪除已註冊的模型或模型版本。
警告
您無法復原這個動作。 當您刪除模型時,Unity Catalog 所儲存的所有模型成品,以及與已註冊模型相關聯的所有元數據都會遭到刪除。
使用 UI 刪除模型版本或模型
若要刪除 Unity Catalog中的模型或模型版本,請遵循下列步驟。
在模型頁面或模型版本頁面,按下右上角的 kebab 功能表 。
在模型頁面上:
從模型版本頁面:
Select 移除。
確認對話方塊隨即出現。 按一下 [刪除] 以確認。
使用 API 刪除模型版本或模型
若要刪除模型版本,請使用 MLflow 用戶端 API delete_model_version()
方法:
# Delete versions 1,2, and 3 of the model
client = MlflowClient()
versions=[1, 2, 3]
for version in versions:
client.delete_model_version(name="<model-name>", version=version)
若要刪除模型,請使用 MLflow 用戶端 API delete_registered_model()
方法:
client = MlflowClient()
client.delete_registered_model(name="<model-name>")
在模型上使用標籤
標籤是與已註冊的模型和模型版本相關聯的索引鍵/值組,可讓您依據函式或狀態進行標記和分類。 例如,您可將索引鍵 "task"
和值 "question-answering"
的標籤 (在 UI 中顯示為 task:question-answering
) 套用至用於問題解答工作的已註冊模型。 在模型版本層級,您可使用標記 validation_status:pending
進行預先部署驗證的版本,以及使用 清除以進行部署 validation_status:approved
的版本。
需要的許可權:已註冊模型的擁有者或對其擁有 APPLY_TAG
許可權,此外還需對包含模型的 USE SCHEMA
和 USE CATALOG
擁有 schema 和 catalog 許可權。
如需如何使用 UI 來 update 和刪除標籤,請參閱 使用 Catalog Explorer 新增和 set 標籤。
若要使用 MLflow 用戶端 API 來 set 和刪除標籤,請參閱下列範例:
from mlflow import MlflowClient
client = MlflowClient()
# Set registered model tag
client.set_registered_model_tag("prod.ml_team.iris_model", "task", "classification")
# Delete registered model tag
client.delete_registered_model_tag("prod.ml_team.iris_model", "task")
# Set model version tag
client.set_model_version_tag("prod.ml_team.iris_model", "1", "validation_status", "approved")
# Delete model version tag
client.delete_model_version_tag("prod.ml_team.iris_model", "1", "validation_status")
已註冊的模型和模型版本標籤均須符合整個平台的條件約束。
如需標記用戶端 API 的詳細資料,請參閱 MLflow API 文件。
將描述 (註解) 新增至模型或模型版本
需要的許可權:已註冊模型的擁有者,以及在包含模型的 USE SCHEMA
和 USE CATALOG
上擁有 schema 和 catalog 許可權。
您可以在 Unity Catalog中包含任何模型或模型版本的文字描述。 例如,您可能想要提供問題的概觀,或有關所使用方法和演算法的資訊。
針對模型,您也可選擇使用 AI 產生的註解。 請參閱 將 AI 產生的批註新增至 Unity Catalog 物件。
使用 UI 新增模型描述
若要新增模型的描述,您可使用 AI 產生的註解,也可輸入自己的註解。 您可視需要編輯 AI 產生的註解。
- 若要新增自動產生的批注,請按兩下 [AI generate] 按鈕。
- 若要新增您自己的註解,請按下 [新增]。 在對話方塊中輸入您的註解,然後按下 [儲存]。
使用 UI 新增模型版本描述
若要將描述新增至 Unity Catalog中的模型版本,請遵循下列步驟:
在模型版本頁面上,按下 [描述] 底下的鉛筆圖示。
在對話方塊中輸入您的註解,然後按下 [儲存]。
使用 API 新增模型和模型版本描述
若要 update 已註冊的模型描述,請使用 MLflow 用戶端 API update_registered_model()
方法:
client = MlflowClient()
client.update_registered_model(
name="<model-name>",
description="<description>"
)
若要 update 模型版本描述,請使用 MLflow 用戶端 API update_model_version()
方法:
client = MlflowClient()
client.update_model_version(
name="<model-name>",
version=<model-version>,
description="<description>"
)
List 和搜尋模型
若要在 Unity get中 list 已註冊模型的 Catalog,請使用 MLflow 的 search_registered_models() Python API:
client=MlflowClient()
client.search_registered_models()
若要搜尋特定模型名稱和 get 該模型版本的相關信息,請使用 search_model_versions()
:
from pprint import pprint
client=MlflowClient()
[pprint(mv) for mv in client.search_model_versions("name='<model-name>'")]
注意
Unity Catalog中模型不支援所有的搜尋 API 欄位和運算元。 如需詳細資訊,請參閱限制。
下載模型檔案 (進階使用案例)
在大部分情況下,若要載入模型,您應該使用 mlflow.pyfunc.load_model
或 mlflow.<flavor>.load_model
之類的 MLflow API (例如,HuggingFace 模型的 mlflow.transformers.load_model
)。
在某些情況下,您可能需要下載模型檔案,以偵錯模型行為或模型載入問題。 您可使用 mlflow.artifacts.download_artifacts
下載模型檔案,如下所示:
import mlflow
mlflow.set_registry_uri("databricks-uc")
model_uri = f"models:/{model_name}/{version}" # reference model by version or alias
destination_path = "/local_disk0/model"
mlflow.artifacts.download_artifacts(artifact_uri=model_uri, dst_path=destination_path)
跨環境升階模型
Databricks 建議您將 ML 管線部署為程式碼。 這不需要跨環境升階模型,因為所有生產模型都可透過生產環境中的自動化訓練工作流程來產生。
不過,在某些情況下,重新訓練整個環境模型可能太過昂貴。 相反地,您可以在 Unity Catalog 中跨已註冊的模型複製模型版本,以便在不同環境中推廣它們。
您需要下列權限,才能執行下列範例程式碼:
-
USE CATALOG
在staging
和prod
catalogs上。 -
USE SCHEMA
和staging.ml_team
結構描述上的prod.ml_team
。 -
EXECUTE
上的staging.ml_team.fraud_detection
。
此外,您必須是已註冊模型 prod.ml_team.fraud_detection
的擁有者。
下列程式碼片段使用可在 MLflow 2.8.0 版和更新版本中取得的 copy_model_version
MLflow 用戶端 API。
import mlflow
mlflow.set_registry_uri("databricks-uc")
client = mlflow.tracking.MlflowClient()
src_model_name = "staging.ml_team.fraud_detection"
src_model_version = "1"
src_model_uri = f"models:/{src_model_name}/{src_model_version}"
dst_model_name = "prod.ml_team.fraud_detection"
copied_model_version = client.copy_model_version(src_model_uri, dst_model_name)
模型版本進入生產環境之後,您可執行任何必要的部署前驗證。 然後,您可使用別名來標示要部署的模型版本。
client = mlflow.tracking.MlflowClient()
client.set_registered_model_alias(name="prod.ml_team.fraud_detection", alias="Champion", version=copied_model_version.version)
在上述範例中,只有可從 staging.ml_team.fraud_detection
註冊模型讀取並寫入 prod.ml_team.fraud_detection
註冊模型的使用者,才能將預備模型升階至生產環境。 相同的使用者也可使用別名來管理生產環境中部署的模型版本。 您無需設定任何其他規則或原則來管理模型升階和部署。
您可自訂此流程,以跨符合您設定的多個環境升階模型版本,例如 dev
、qa
和 prod
。 存取控制會依每個環境中設定的方式執行。
範例筆記本
此範例筆記本說明如何使用 Unity 中的模型 Catalog API 來管理 Unity Catalog中的模型,包括註冊模型和模型版本、新增描述、載入和部署模型、使用模型別名,以及刪除模型和模型版本。
Unity Catalog 範例筆記本中的模型
將工作流程和模型遷移至 Unity Catalog
Databricks 建議在 Unity Catalog 中使用模型,以改善治理、輕鬆地跨工作區和環境共用,以及更有彈性的 MLOps 工作流程。 table 會比較工作區模型登錄和 Unity Catalog的功能。
功能 | 工作區模型登錄 (舊版) | Unity Catalog 中的模型(建議) |
---|---|---|
依具名別名來參考模型版本 | 模型登錄階段:將模型版本移至四個固定階段的一個,以依該階段進行參考。 無法重新命名或新增階段。 | 模型登錄別名:為每個已註冊的模型建立最多 10 個自訂和可重新指派的具名參考。 |
建立模型的存取控制環境 | 模型登錄階段:在一個已註冊的模型中使用階段來表示其模型版本的環境,僅對四個固定階段 (Staging 和 Production ) 中的兩個進行存取控制。 |
已註冊的模型:在 MLOps 工作流程中為每個環境建立已註冊的模型,並利用 Unity Catalog 的三層命名空間和許可權來表示治理。 |
跨環境升階模型 (部署模型) | 使用 transition_model_version_stage() MLflow 用戶端 API 將模型版本移至不同的階段,可能會中斷參考上一個階段的工作流程。 |
使用 copy_model_version() MLflow 用戶端 API,將模型版本從一個已註冊的模型複製到另一個模型。 |
跨工作區存取和共用模型 | 手動在工作區之間匯出和匯入模型,或使用個人存取令牌和工作區秘密範圍將 connections 設定為遠端模型註冊表。 | 對相同帳戶中跨工作區的模型進行現成可用的存取。 不需要組態。 |
設定權限 | Set 工作區層級的權限。 | Set 帳戶層級的許可權,可在各工作區中應用一致的治理。 |
存取 Databricks Markplace 中的模型 | 無法使用。 | 將模型從 Databricks 市集載入 Unity Catalog 中繼存放區,並跨工作區存取它們。 |
下列連結的文章說明如何將工作流程(模型定型和批次推斷作業)和模型從工作區模型登錄移轉至 Unity Catalog。
限制
- Unity Catalog中的模型不支持階段。 Databricks 建議在 Unity Catalog 中使用三層命名空間來表示模型位於的環境,並使用別名來升級模型以進行部署。 如需詳細資訊,請參閱跨環境升階模型。
- Unity Catalog中的模型不支援 Webhook。 請參閱升級指南中的建議替代方案。
- Unity Catalog中的模型不支援某些搜尋 API 欄位和運算元。 藉由使用支援的篩選條件和掃描結果來呼叫搜尋 API,可減輕此問題。 下列是一些範例:
-
order_by
或 search_registered_models 用戶端 API 中不支援 參數。 -
tags.mykey = 'myvalue'
或search_model_versions
不支援基於標記篩選條件 (search_registered_models
)。 -
LIKE
或ILIKE
不支援完全相等以外的運算子 (例如!=
、search_model_versions
、search_registered_models
)。 - 不支援依名稱搜尋已註冊的模型 (例如
MlflowClient().search_registered_models(filter_string="name='main.default.mymodel'")
。 要依名稱擷取特定的已註冊模型,請使用 get_registered_model。
-
- Unity Catalog不支援已註冊模型和模型版本的電子郵件通知和批注討論線程。
- Unity Catalog中的模型不支持活動記錄。 若要追蹤 Unity Catalog中模型的活動,請使用 稽核記錄。
-
search_registered_models
可能會針對透過 Delta Sharing 共用的模型來傳回過時的結果。 若要確保獲得最新的結果,請使用 Databricks CLI 或 SDK,在 list中對模型進行 schema 。