生命周期管理模型統一目錄
預覽
這個特性是在公共預覽。
本文描述了如何使用模型統一目錄作為機器學習的一部分工作流管理毫升的完整生命周期模型。磚MLflow模型注冊的提供托管版本統一目錄。模型統一目錄擴展統一目錄毫升模型的好處,包括集中式訪問控製、審計、血統和模型發現工作區。模型統一目錄兼容開源MLflow Python客戶機。
統一目錄中的關鍵特性的模型包括:
命名空間和治理模式,所以你可以在環境、組織和管理模型的項目,或團隊水平(“格蘭特數據科學家隻讀訪問生產模型”)。
時間模型譜係(MLflow實驗和運行產生模型在給定的時間)。
模型服務。
模型版本。
通過別名模型部署。例如,標誌著“冠軍”在你的版本的模型
刺激
目錄。
本文包含的指令模型統一目錄UI和API。
模型注冊中心概念的概述,請參閱MLflow指南。
請注意
本文文檔模型統一目錄,磚建議的管理和部署模型。經典空間模型的文檔注冊表,請參閱管理模型生命周期使用的工作區模型注冊表。從工作空間模型為指導如何升級注冊表統一目錄,看看遷移工作流和模型來統一目錄。
需求
統一目錄必須啟用您的工作區中。看到開始使用統一目錄創建一個目錄Metastore統一,使它在一個工作區,並創建一個目錄。如果沒有啟用統一目錄,您仍然可以使用經典工作空間模型注冊
工作區必須連接到一個統一的目錄metastore支持繼承的特權。這適用於所有metastores之後創建8月25日,2022年。如果運行在一個老metastore,按照文檔升級。
你必須能夠訪問運行命令集群提供統一的目錄。
創建新的注冊模型,你需要
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客戶:
進口mlflowmlflow。set_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=mlflow。last_active_run()model_uri=”:/{}/模式”。格式(autolog_run。信息。run_id)mlflow。register_model(model_uri,“prod.ml_team.iris_model”)
注冊一個模型統一目錄自動推斷簽名
支持自動推斷簽名有MLflow 2.5.0及以上版本,和支持數據磚運行時11.3 LTS毫升以上。使用自動推斷簽名,使用以下代碼來安裝最新MLflow Python客戶機在你的筆記本:
%皮普安裝- - -升級“mlflow-skinny(磚)”dbutils。圖書館。restartPython()
下麵的代碼顯示了一個示例的一個自動推斷簽名。
從sklearn進口數據集從sklearn.ensemble進口RandomForestClassifier與mlflow。start_run():#訓練sklearn虹膜數據集模型X,y=數據集。load_iris(return_X_y=真正的,as_frame=真正的)clf=RandomForestClassifier(max_depth=7)clf。適合(X,y)#把第一行的訓練數據集作為模型輸入的例子。input_example=X。iloc[[0]]#日誌模型並注冊它在加州大學一個新版本。mlflow。sklearn。log_model(sk_model=clf,artifact_path=“模型”,#自動推斷從輸入簽名及其預測輸出示例。input_example=input_example,registered_model_name=“prod.ml_team.iris_model”,)
訪問控製模型
注冊信息訪問控製模型統一目錄,看看統一目錄權限和可獲得的對象。最佳的最佳實踐在組織模型目錄和模式,明白了組織你的數據。
管理模型的發布與別名
別名允許您指定一個可變的模型,命名為參考模型在一個注冊到一個特定的版本。
您可以使用別名來指定哪個模型版本部署工作流模型中在給定的環境中訓練。例如,您可以指定當前“冠軍”的模式版本,應該成為大多數生產流量使用別名。然後您可以編寫別名的推理目標的工作負載,比如使用“冠軍”版本進行預測。下麵的流程演示了這種方法。
馬克模型部署使用別名
權限要求:注冊的所有者模型,加上使用模式
和使用目錄
包含模型的模式和目錄上的特權。
上麵的模型訓練示例生成一個新的模型版本和登記注冊的模式下刺激
目錄。在這個例子中,使用刺激
目錄並不意味著服務生產流量模型版本。模型版本的封閉目錄、模式和注冊模型反映其環境(刺激
)和相關治理規則(例如,權限可以設置,因此隻有管理員可以刪除的刺激
目錄),但不是它的部署狀態。
別名允許您更新部署狀態模型的版本。模型版本已通過測試和驗證後,您可以更新“冠軍”別名指向新訓練模型版本,顯示下遊推理工作負載,他們應該使用這個模型版本生產流量進行預測。例如:
從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=mlflow。pyfunc。load_model(model_version_uri)champion_version。預測(test_x)
查看完整的客戶機api使用別名MLflow文檔,包括api刪除別名。
注釋版本的模型或模型
權限要求:注冊的所有者模型,加上使用模式
和使用目錄
包含模型的模式和目錄上的特權。
您可以提供信息模型或模型版本注釋。例如,您可能想要包括的概述問題或信息所使用的方法和算法。
重命名一個模型(API)
權限要求:注冊的所有者模型,CREATE_MODEL
特權模式包含注冊模型,和使用模式
和使用目錄
包含模型的模式和目錄上的特權。
重命名一個注冊模型,使用MLflow客戶機APIrename_registered_model ()
方法:
客戶端=MlflowClient()客戶端。rename_registered_model(“<模型名稱>”,“< new-model-name >”)
刪除一個模型或者模型版本
權限要求:注冊的所有者模型,加上使用模式
和使用目錄
包含模型的模式和目錄上的特權。
您可以刪除注冊模型或模型版本注冊模型中使用數據瀏覽界麵或API。
列表和搜索模型
你可以注冊模型與MLflow統一目錄的列表search_registered_models ()Python API:
客戶端=MlflowClient()客戶端。search_registered_models()
你也可以搜索一個特定的模型使用名稱和版本上市細節search_model_versions ()
方法:
從pprint進口pprint客戶端=MlflowClient()(pprint(mv)為mv在客戶端。search_model_versions(“name = <模型名稱>”)]