生命周期管理模型統一目錄

預覽

這個特性是在公共預覽

本文描述了如何使用模型統一目錄作為機器學習的一部分工作流管理毫升的完整生命周期模型。磚MLflow模型注冊的提供托管版本統一目錄。模型統一目錄擴展統一目錄毫升模型的好處,包括集中式訪問控製、審計、血統和模型發現工作區。模型統一目錄兼容開源MLflow Python客戶機。

統一目錄中的關鍵特性的模型包括:

  • 命名空間和治理模式,所以你可以在環境、組織和管理模型的項目,或團隊水平(“格蘭特數據科學家隻讀訪問生產模型”)。

  • 時間模型譜係(MLflow實驗和運行產生模型在給定的時間)。

  • 模型服務

  • 模型版本。

  • 通過別名模型部署。例如,標誌著“冠軍”在你的版本的模型刺激目錄。

本文包含的指令模型統一目錄UI和API。

模型注冊中心概念的概述,請參閱MLflow指南

請注意

本文文檔模型統一目錄,磚建議的管理和部署模型。經典空間模型的文檔注冊表,請參閱管理模型生命周期使用的工作區模型注冊表。從工作空間模型為指導如何升級注冊表統一目錄,看看遷移工作流和模型來統一目錄

需求

  1. 統一目錄必須啟用您的工作區中。看到開始使用統一目錄創建一個目錄Metastore統一,使它在一個工作區,並創建一個目錄。如果沒有啟用統一目錄,您仍然可以使用經典工作空間模型注冊

  2. 工作區必須連接到一個統一的目錄metastore支持繼承的特權。這適用於所有metastores之後創建8月25日,2022年。如果運行在一個老metastore,按照文檔升級。

  3. 你必須能夠訪問運行命令集群提供統一的目錄

  4. 創建新的注冊模型,你需要CREATE_MODEL特權模式,除了使用模式使用目錄模式和包含它的目錄上的特權。CREATE_MODEL是一個新的模式特權,您可以使用數據瀏覽器UI或格蘭特嗎SQL格蘭特命令,如下所示。

    格蘭特CREATE_MODEL模式<模式- - - - - -的名字><主要>

統一目錄升級培訓工作負載

本節包括指導統一目錄升級現有培訓工作負載。

安裝MLflow Python客戶機

支持模型統一目錄包含在磚運行時13.2毫升以上。您還可以使用模型統一目錄上麵的磚運行時11.3 LTS和通過安裝最新版本的MLflow Python客戶機在你的筆記本上,使用下麵的代碼。

%皮普安裝- - -升級“mlflow-skinny(磚)”dbutils圖書館restartPython()

統一目錄中的配置MLflow客戶機訪問模型

默認情況下,MLflow Python客戶機在磚工作區中創建模型模型注冊表。升級到模型目錄,統一配置MLflow客戶:

進口mlflowmlflowset_registry_uri(“databricks-uc”)

培訓和注冊Catalog-compatible統一模型

權限要求:創建一個新的注冊模式,你需要CREATE_MODEL使用模式封閉的模式上的特權使用目錄附上目錄權限。創建新的模型版本在注冊模式下,你必須注冊的所有者模型和使用模式使用目錄包含模型的模式和目錄上的特權。

毫升模型在加州大學必須有一個版本模型的簽名。如果你不是已經在你的日誌MLflow模型與簽名模型訓練工作負載,您可以:

  • 使用磚autologging自動日誌,許多流行的ML框架模型與簽名。看到支持框架MLflow文檔

  • 與MLflow 2.5.0以上,你可以指定一個輸入的例子mlflow。<味道> .log_model電話,自動推斷模型的簽名。有關更多信息,請參考MLflow文檔

然後,通過模型的三級名字MLflow api,在表單中<目錄>。<模式>。<模型>。下麵的例子中創建和訪問模型ml_team模式下的刺激目錄。

注冊一個模型來統一使用autologging目錄

sklearn進口數據集sklearn.ensemble進口RandomForestClassifier#訓練sklearn虹膜數據集模型X,y=數據集load_iris(return_X_y=真正的,as_frame=真正的)clf=RandomForestClassifier(max_depth=7)clf適合(X,y)#注意UC模型名稱遵循這種模式# < catalog_name >, < schema_name >。< model_name >,對應#目錄、模式和模型名稱注冊#在統一目錄下創建的版本#將創建注冊模型如果它不存在autolog_run=mlflowlast_active_run()model_uri=”:/{}/模式”格式(autolog_run信息run_id)mlflowregister_model(model_uri,“prod.ml_team.iris_model”)

注冊一個模型統一目錄自動推斷簽名

支持自動推斷簽名有MLflow 2.5.0及以上版本,和支持數據磚運行時11.3 LTS毫升以上。使用自動推斷簽名,使用以下代碼來安裝最新MLflow Python客戶機在你的筆記本:

%皮普安裝- - -升級“mlflow-skinny(磚)”dbutils圖書館restartPython()

下麵的代碼顯示了一個示例的一個自動推斷簽名。

sklearn進口數據集sklearn.ensemble進口RandomForestClassifiermlflowstart_run():#訓練sklearn虹膜數據集模型X,y=數據集load_iris(return_X_y=真正的,as_frame=真正的)clf=RandomForestClassifier(max_depth=7)clf適合(X,y)#把第一行的訓練數據集作為模型輸入的例子。input_example=Xiloc[[0]]#日誌模型並注冊它在加州大學一個新版本。mlflowsklearnlog_model(sk_model=clf,artifact_path=“模型”,#自動推斷從輸入簽名及其預測輸出示例。input_example=input_example,registered_model_name=“prod.ml_team.iris_model”,)

在UI視圖模型

權限要求:查看注冊模型及其模型版本在UI中,你所需要的執行特權注冊模式,加上使用模式使用目錄包含模型的模式和目錄上的特權

你可以查看和管理注冊模型和模型版本統一目錄使用數據瀏覽

訪問控製模型

注冊信息訪問控製模型統一目錄,看看統一目錄權限和可獲得的對象。最佳的最佳實踐在組織模型目錄和模式,明白了組織你的數據

管理模型的發布與別名

別名允許您指定一個可變的模型,命名為參考模型在一個注冊到一個特定的版本。

您可以使用別名來指定哪個模型版本部署工作流模型中在給定的環境中訓練。例如,您可以指定當前“冠軍”的模式版本,應該成為大多數生產流量使用別名。然後您可以編寫別名的推理目標的工作負載,比如使用“冠軍”版本進行預測。下麵的流程演示了這種方法。

馬克模型部署使用別名

權限要求:注冊的所有者模型,加上使用模式使用目錄包含模型的模式和目錄上的特權。

上麵的模型訓練示例生成一個新的模型版本和登記注冊的模式下刺激目錄。在這個例子中,使用刺激目錄並不意味著服務生產流量模型版本。模型版本的封閉目錄、模式和注冊模型反映其環境(刺激)和相關治理規則(例如,權限可以設置,因此隻有管理員可以刪除的刺激目錄),但不是它的部署狀態。

別名允許您更新部署狀態模型的版本。模型版本已通過測試和驗證後,您可以更新“冠軍”別名指向新訓練模型版本,顯示下遊推理工作負載,他們應該使用這個模型版本生產流量進行預測。例如:

mlflow進口MlflowClient客戶端=MlflowClient()客戶端set_registered_model_alias(“prod.ml_team.iris_model”,“冠軍”,1)

負荷模型推理

消費模式版本的別名推理工作負載

權限要求:執行注冊模式,加上使用模式使用目錄包含模型的模式和目錄上的特權。

您可以編寫批推理工作負載,別名引用模型版本。例如,下麵的代碼片段加載並應用“冠軍”模型版本批量推理。如果“冠軍”版本更新引用一種新的模式,批處理推理工作負載自動選擇下一個執行。這允許您從批解耦模型部署推理工作負載。

進口mlflow.pyfuncmodel_version_uri=“模型:/ prod.ml_team.iris_model@Champion”champion_version=mlflowpyfuncload_model(model_version_uri)champion_version預測(test_x)

查看完整的客戶機api使用別名MLflow文檔,包括api刪除別名

消費模式版本的版本號推理工作負載

你也可以加載模型版本的版本號:

進口mlflow.pyfunc#負荷模型的版本1“prod.ml_team.iris_model”model_version_uri=“模型:/ prod.ml_team.iris_model / 1”first_version=mlflowpyfuncload_model(model_version_uri)first_version預測(test_x)

在工作區共享模型

隻要你有適當的權限,您可以訪問模型統一從任何工作區目錄。例如,您可以訪問的模型刺激dev工作區目錄,方便生產基線比較新近發展起來的模型。

合作與其他用戶(分享寫權限)注冊模型創建,您必須授予所有權模型的一組包含你自己和你想合作的用戶。合作者也必須有使用目錄使用模式包含模型的目錄和模式上的特權。看到統一目錄權限和可獲得的對象獲取詳細信息。

注釋版本的模型或模型

權限要求:注冊的所有者模型,加上使用模式使用目錄包含模型的模式和目錄上的特權。

您可以提供信息模型或模型版本注釋。例如,您可能想要包括的概述問題或信息所使用的方法和算法。

注釋一個模型或模型版本使用UI

看到如何添加減記的評論數據對象

注釋使用API模型或者模型版本

更新注冊模型描述,使用MLflow客戶機APIupdate_registered_model ()方法:

客戶端=MlflowClient()客戶端update_registered_model(的名字=“<模型名稱>”,描述=“<描述>”)

更新版本描述模型,使用MLflow客戶機APIupdate_model_version ()方法:

客戶端=MlflowClient()客戶端update_model_version(的名字=“<模型名稱>”,版本= <模型- - - - - -版本>,描述=“<描述>”)

重命名一個模型(API)

權限要求:注冊的所有者模型,CREATE_MODEL特權模式包含注冊模型,和使用模式使用目錄包含模型的模式和目錄上的特權。

重命名一個注冊模型,使用MLflow客戶機APIrename_registered_model ()方法:

客戶端=MlflowClient()客戶端rename_registered_model(“<模型名稱>”,“< new-model-name >”)

刪除一個模型或者模型版本

權限要求:注冊的所有者模型,加上使用模式使用目錄包含模型的模式和目錄上的特權。

您可以刪除注冊模型或模型版本注冊模型中使用數據瀏覽界麵或API。

刪除一個模型或模型版本使用API

警告

你不能取消這個行動。當你刪除一個模型中,所有模型構件由統一存儲目錄和刪除所有與注冊相關的元數據模型。

刪除一個模型版本

刪除一個模型版本,使用MLflow客戶機APIdelete_model_version ()方法:

#刪除版本1、2和3的模型客戶端=MlflowClient()版本=(1,2,3]版本版本:客戶端delete_model_version(的名字=“<模型名稱>”,版本=版本)

刪除一個模型

刪除一個模型,使用MLflow客戶機APIdelete_registered_model ()方法:

客戶端=MlflowClient()客戶端delete_registered_model(的名字=“<模型名稱>”)

列表和搜索模型

你可以注冊模型與MLflow統一目錄的列表search_registered_models ()Python API:

客戶端=MlflowClient()客戶端search_registered_models()

你也可以搜索一個特定的模型使用名稱和版本上市細節search_model_versions ()方法:

pprint進口pprint客戶端=MlflowClient()(pprint(mv)mv客戶端search_model_versions(“name = <模型名稱>”)]

例子

這個例子演示了如何使用模型統一目錄構建機器學習應用程序。

模型統一目錄的例子

遷移工作流和模型來統一目錄

下麵的文章鏈接描述如何遷移工作流和模型(模型訓練和批推理工作)從工作空間模型注冊表統一目錄。磚為改善治理建議使用模型統一目錄,方便分享在工作空間和環境,和更靈活的MLOps工作流。