管理模型生命周期
Databricks提供MLflow模型注冊表的托管版本,以幫助您管理MLflow模型的整個生命周期。Model Registry提供:
按時間順序的模型沿襲(MLflow實驗和運行在給定時間生成模型)。
服務於無服務器實時推理或經典MLflow模型服務.
模型版本。
階段轉換(例如,從階段到生產或存檔)。
人則因此,您可以根據注冊表事件自動觸發操作。
模型事件的電子郵件通知。
您還可以創建和查看模型描述並留下注釋。
本文介紹了如何將模型注冊表作為機器學習工作流程的一部分使用,並包含了模型注冊表UI和模型注冊表API的說明。
有關Model Registry概念的概述,請參見MLflow指南.
在本節中:
創建或注冊一個模型
在本節中:
使用UI創建或注冊一個模型
在model Registry中注冊模型有兩種方法。您可以注冊一個已經記錄到MLflow的現有模型,或者您可以創建並注冊一個新的空模型,然後將以前記錄的模型分配給它。
從筆記本中注冊一個已存在的日誌模型
在工作區中,標識包含您想要注冊的模型的MLflow運行。
單擊實驗圖標在筆記本工具欄中。
在實驗運行側欄中,單擊圖標放在跑步日期旁邊。顯示MLflow Run頁麵。此頁麵顯示了運行的詳細信息,包括參數、指標、標記和工件列表。
在Artifacts部分中,單擊名為xxx-model.
單擊注冊模式按鈕在最右邊。
在對話框中,單擊模型裝箱並做以下任何一件事:
選擇創造新模式從下拉菜單。的模型名稱字段出現。例如,輸入一個模型名稱
scikit-learn-power-forecasting
.從下拉菜單中選擇一個現有的模型。
點擊注冊.
如果你選擇了創造新模式,這將注冊一個名為
scikit-learn-power-forecasting
,將模型複製到由MLflow model Registry管理的安全位置,並創建模型的新版本。如果您選擇了一個現有的模型,這將注冊所選模型的一個新版本。
過了一會兒,注冊模式按鈕更改為指向新注冊模型版本的鏈接。
單擊鏈接在model Registry UI中打開新的模型版本。您還可以通過單擊在model Registry中找到模型模型在側邊欄。
創建一個新的注冊模型,並將一個日誌模型分配給它
您可以使用注冊模型頁麵上的Create Model按鈕來創建一個新的空模型,然後將一個已記錄的模型分配給它。遵循以下步驟:
在注冊型號頁麵,單擊創建模型.為模型輸入一個名稱並單擊創建.
執行步驟1到步驟3從筆記本中注冊一個已存在的日誌模型.
在Register Model對話框中,選擇您在步驟1中創建的模型的名稱並單擊注冊.這將用您創建的名稱注冊一個模型,將模型複製到由MLflow model Registry管理的安全位置,並創建一個模型版本:
版本1
.過了一會兒,MLflow Run UI將注冊模型按鈕替換為指向新注冊模型版本的鏈接。您現在可以從模型的“注冊模型”對話框中的下拉列表實驗運行頁麵。您還可以通過在API命令中指定模型的名稱來注冊模型的新版本創建ModelVersion.
使用API注冊一個模型
在model Registry中注冊模型有三種編程方法。所有方法都將模型複製到由MLflow模型注冊中心管理的安全位置。
要記錄模型並在MLflow實驗期間將其注冊為指定的名稱,請使用
mlflow。< model-flavor > .log_model(…)
方法。如果帶有該名稱的注冊模型不存在,則該方法注冊一個新模型,創建版本1,並返回一個ModelVersion
MLflow對象。如果名稱為該名稱的注冊模型已經存在,則該方法創建一個新的模型版本並返回版本對象。與mlflow.start_run(run_name= <運行-的名字>)作為運行:...mlflow.<模型-味道>。log_model(<模型-味道> = <模型>,artifact_path=“< model-path >”,registered_model_name=“<模型名稱>”)
在您所有的實驗運行完成之後,要用指定的名稱注冊一個模型,並且您已經決定了哪個模型最適合添加到注冊表中,請使用
mlflow.register_model ()
方法。方法的運行IDmlruns: URI
論點。如果帶有該名稱的注冊模型不存在,則該方法注冊一個新模型,創建版本1,並返回一個ModelVersion
MLflow對象。如果名稱為該名稱的注冊模型已經存在,則該方法創建一個新的模型版本並返回版本對象。結果=mlflow.register_model(”:< model-path >”,“<模型名稱>”)
要創建具有指定名稱的新注冊模型,請使用MLflow Client API
create_registered_model ()
方法。如果模型名存在,此方法拋出MLflowException
.客戶端=MlflowClient()結果=客戶端.create_registered_model(“<模型名稱>”)
轉換模式階段
一個模型版本有以下一個階段:沒有一個,暫存,生產,或存檔.的暫存階段用於模型測試和驗證,而生產Stage用於已經完成測試或評審過程並已部署到應用程序進行實時評分的模型版本。假設歸檔模型版本是不活動的,這時您可以考慮刪除它.模型的不同版本可能處於不同的階段。
有適當的使用者許可可以在不同階段之間轉換模型版本。如果您有權限將模型版本轉換到特定的階段,您可以直接進行轉換。如果您沒有權限,您可以請求一個階段轉換,而具有轉換模型版本權限的用戶可以批準、拒絕或取消請求.
在本節中:
使用UI轉換模型階段
按照這些說明轉換模型的階段。
要顯示可用模型階段和可用選項的列表,在模型版本頁麵中,單擊旁邊的下拉列表階段:並請求或選擇過渡到另一個階段。
輸入一個可選的注釋並單擊好吧.
將模型版本轉移到生產階段
在測試和驗證之後,您可以轉換或請求轉換到生產階段。
模型注冊中心允許在每個階段注冊模型的多個版本。如果您希望在生產中隻有一個版本,您可以通過檢查將當前在生產中模型的所有版本轉換為存檔將現有的生產模型版本轉換為存檔版本.
使用API轉換模型階段
適當的使用者權限可以將一個模型版本過渡到一個新的階段。
要將一個模型版本階段更新到一個新階段,請使用MLflow Client APItransition_model_version_stage ()
方法:
客戶端=MlflowClient()客戶端.transition_model_version_stage(的名字=“<模型名稱>”,版本= <模型-版本>,階段=“< >階段”,描述=“<描述>”)
接受的價值觀> <階段
是:“暫存”|“暫存”
,“存檔”|“歸檔”
,“生產”|“生產”
,“沒有”|“沒有”
.
使用模型進行推斷
預覽
此功能已在公共預覽.
在model Registry中注冊一個模型之後,您可以自動生成一個筆記本來使用模型進行批處理或流推斷。或者,您可以創建一個端點來使用模型進行實時服務無服務器實時推理或基於數據庫的經典MLflow模型.
在右上角的注冊模型頁麵或者是型號版本頁,點擊.出現配置模型推理對話框,允許您配置批處理、流或實時推理。
重要的
蟒蛇公司更新了他們的服務條款觀看anaconda.org頻道。根據新的服務條款,如果您依賴Anaconda的包裝和分銷,您可能需要一個商業許可證。看到蟒蛇商業版常見問題解答更多信息。你使用任何蟒蛇頻道都要遵守他們的服務條款。
MLflow模型以前記錄過v1.18(Databricks Runtime 8.3 ML或更早版本)默認使用conda進行日誌記錄違約
通道(https://repo.anaconda.com/pkgs/)作為依賴性。由於此許可證變更,Databricks已停止使用違約
通道用於使用MLflow v1.18及以上版本記錄的模型。默認的記錄通道是現在conda-forge
,這就指向了社區管理https://conda-forge.org/.
如果您記錄了MLflow v1.18之前的模型,而不排除違約
的conda環境中的通道,該模型可能依賴於違約
你可能沒有想過的通道。要手動確認模型是否具有此依賴關係,您可以進行檢查通道
的價值conda.yaml
與日誌模型打包的文件。例如,一個模特的conda.yaml
與一個違約
通道依賴可能看起來像這樣:
渠道:-違約依賴關係:-python = 3.8.8-皮普-皮普:-mlflow-scikit-learn = = 0.23.2-cloudpickle = = 1.6.0的名字:mlflow-env
因為Databricks不能確定在您與Anaconda的關係下是否允許您使用Anaconda存儲庫與您的模型交互,因此Databricks並沒有強迫其客戶進行任何更改。beplay体育app下载地址如果您通過使用Databricks使用Anaconda.com回購是Anaconda的條款允許的,您不需要采取任何行動。
如果您想要更改模型環境中使用的通道,您可以使用新的conda.yaml
.控件中的通道可以實現這一點conda_env
參數的log_model ()
.
有關的更多信息log_model ()
API,請參閱MLflow文檔,了解您正在使用的模型風格,例如,Log_model用於scikit-learn.
如欲了解更多有關conda.yaml
文件,請參閱MLflow文檔.
配置批處理推理
當您按照這些步驟創建批處理推斷筆記本時,該筆記本將保存在您的用戶文件夾中Batch-Inference
文件夾中帶有模型名稱的文件夾。你可以根據需要編輯筆記本。
單擊批推理選項卡。
從模型版本下拉菜單,選擇要使用的模型版本。下拉列表中的前兩項是模型的當前Production和Staging版本(如果它們存在的話)。當您選擇其中一個選項時,筆記本將自動使用運行時的生產或登台版本。您不需要在繼續開發模型時更新筆記本。
單擊瀏覽旁邊的按鈕。輸入表.的選擇輸入數據對話框出現了。如有必要,您可以在計算下拉。
請注意
對於支持Unity Catalog的工作空間,選擇輸入數據對話框允許你從三個級別中選擇,
< catalog_name >, < database_name >。< table_name >
.選擇包含模型輸入數據的表,然後單擊選擇.生成的筆記本自動導入此數據並將其發送到模型。如果數據在輸入到模型之前需要任何轉換,那麼您可以編輯生成的筆記本。
預測被保存在目錄中的一個文件夾中
dbfs: / FileStore / batch-inference
.默認情況下,預測將保存在與模型同名的文件夾中。每次運行生成的筆記本時,都會將一個新文件寫入此目錄,並將時間戳附加到名稱後麵。您還可以選擇不包含時間戳,並在後續運行筆記本時覆蓋該文件;生成的筆記本中提供了說明。的文件夾中輸入新的文件夾名稱,可以更改保存預測的文件夾輸出表位置字段或通過單擊文件夾圖標來瀏覽目錄並選擇不同的文件夾。
為了將預測保存到Unity Catalog中的某個位置,你必須編輯筆記本。關於演示如何訓練一個使用Unity Catalog中的數據的機器學習模型並將結果寫回Unity Catalog的筆記本示例,請參見使用Unity Catalog數據進行Python ML模型訓練.
使用Delta Live表配置流推理
當您按照這些步驟創建流推理筆記本時,該筆記本將保存在您的用戶文件夾中DLT-Inference
文件夾中帶有模型名稱的文件夾。你可以根據需要編輯筆記本。
單擊流媒體(Delta Live表)選項卡。
從模型版本下拉菜單,選擇要使用的模型版本。下拉列表中的前兩項是模型的當前Production和Staging版本(如果它們存在的話)。當您選擇其中一個選項時,筆記本將自動使用運行時的生產或登台版本。您不需要在繼續開發模型時更新筆記本。
單擊瀏覽旁邊的按鈕。輸入表.的選擇輸入數據對話框出現了。如有必要,您可以在計算下拉。
請注意
對於支持Unity Catalog的工作空間,選擇輸入數據對話框允許你從三個級別中選擇,
< catalog_name >, < database_name >。< table_name >
.選擇包含模型輸入數據的表,然後單擊選擇.生成的筆記本創建使用輸入表作為源的數據轉換,並集成MLflowPySpark推理UDF進行模型預測。如果數據在應用模型之前或之後需要任何額外的轉換,您可以編輯生成的筆記本。
提供輸出的Delta Live表名。筆記本創建一個具有給定名稱的活動表,並使用它存儲模型預測。您可以根據需要修改生成的筆記本以自定義目標數據集——例如:定義一個流直播表作為輸出,添加模式信息或數據質量約束。
比較模型版本
您可以在模型注冊表中比較模型版本。
在注冊模型頁麵,通過單擊模型版本左側的複選框,選擇兩個或多個模型版本。
點擊比較.
的比較
< N >
出現版本屏幕,顯示一個比較所選模型版本的參數、模式和度量的表。在屏幕底部,您可以選擇繪圖的類型(散點、等高線或平行坐標)和要繪製的參數或指標。
控件通知首選項
您可以配置Model Registry,以通過電子郵件通知您所指定的已注冊模型和模型版本上的活動。
在已注冊的模型頁麵上通知我菜單顯示三個選項:
所有新活動:發送關於此模型的所有模型版本上的所有活動的電子郵件通知。如果您創建了注冊模型,則此設置為默認設置。
我所遵循的版本的活動:隻發送關於您所關注的模型版本的電子郵件通知。通過這個選擇,您將收到您所遵循的所有模型版本的通知;您不能關閉特定模型版本的通知。
沉默的通知:不發送關於此注冊型號上的活動的電子郵件通知。
以下事件觸發電子郵件通知:
創建一個新的模型版本
請求舞台轉換
階段過渡
新評論
當您執行以下任何操作時,您將自動訂閱模型通知:
對模型版本進行評論
過渡模型版本的階段
為模型的階段提出一個轉換請求
控件上的Follow Status字段,以確定是否遵循模型版本型號版本頁,或在表的型號版本上注冊模型頁麵.
關閉所有郵件通知
你可以在“用戶設置”菜單的“模型注冊表設置”選項卡中關閉郵件通知:
點擊設置在Databricks工作區的左下角。
點擊用戶設置.
去電子郵件首選項選項卡。
關掉Model Registry電子郵件通知.
中,管理員可以關閉整個組織的電子郵件通知管理控製台.
人則
預覽
此功能已在公共預覽.
webhook使您能夠監聽Model Registry事件,因此您的集成可以自動觸發操作。你可以使用webhook來自動化和集成你的機器學習管道與現有的CI/CD工具和工作流。例如,當創建一個新的模型版本時,您可以觸發CI構建,或者在每次請求模型轉換到生產時通過Slack通知您的團隊成員。
注釋模型或模型版本
您可以通過注釋提供關於模型或模型版本的信息。例如,您可能希望包含問題的概述或使用的方法和算法的信息。
使用UI注釋模型或模型版本
Databricks UI提供了幾種方法來注釋模型和模型版本。您可以使用描述或注釋添加文本信息,還可以添加可搜索的鍵-值標記.描述和標簽可用於模型和模型版本;注釋隻適用於模型版本。
描述旨在提供關於模型的信息。
注釋提供了一種維護關於模型版本上的活動的持續討論的方法。
標記允許您自定義模型元數據,以便更容易地找到特定的模型。
為模型版本添加注釋
向下滾動模型版本分頁並單擊旁邊的向下箭頭活動.
在編輯窗口中輸入您的評論並單擊添加評論.
使用API注釋模型版本
要更新模型版本描述,請使用MLflow客戶端APIupdate_model_version ()
方法:
客戶端=MlflowClient()客戶端.update_model_version(的名字=“<模型名稱>”,版本= <模型-版本>,描述=“<描述>”)
要為注冊的模型或模型版本設置或更新標記,請使用MLflow客戶端API“set_registered_model_tag()”)或“set_model_version_tag()”方法:
客戶端=MlflowClient()客戶端.set_registered_model_tag()(的名字=“<模型名稱>”,關鍵=“<鍵值>”,標簽=“<標簽值>”)
客戶端=MlflowClient()客戶端.set_model_version_tag()(的名字=“<模型名稱>”,版本= <模型-版本>,關鍵=“<鍵值>”,標簽=“<標簽值>”)
重命名模型(僅限API)
要重命名注冊的模型,請使用MLflow客戶端APIrename_registered_model ()
方法:
客戶端=MlflowClient()客戶端.rename_registered_model(“<模型名稱>”,“< new-model-name >”)
請注意
隻有當一個注冊模型沒有版本,或者所有版本都處於None或存檔階段時,您才可以重命名它。
搜索模型
所有注冊的模型都存在MLflow模型注冊表中。您可以使用UI或API搜索模型。
請注意
當您搜索一個模型時,隻搜索您至少擁有的模型“可讀”權限返回。
使用UI搜索模型
單擊,顯示所有已注冊的型號模型在側邊欄。
要搜索特定的模型,請在搜索框中輸入文本。您可以輸入模型的名稱或名稱的任何部分:
你也可以在標簽上搜索。按以下格式輸入標簽:標簽。<關鍵> = <值>
.要搜索多個標記,請使用和
操作符。
方法可以搜索模型名和標記MLflow搜索語法.例如:
使用API搜索模型
要檢索所有注冊模型的列表,請使用MLflow Client APIlist_registered_models ()
方法:
從pprint進口pprint客戶端=MlflowClient()為rm在客戶端.list_registered_models():pprint(dict(rm),縮進=4)
這個輸出:
{'creation_timestamp': 1582671933216,“描述”:沒有,“last_updated_timestamp”:1582671960712,'latest_versions': [, ], “名稱”:“sk-learn-random-forest-reg-model”}
您還可以使用MLflow Client API搜索特定的模型名稱並列出其版本詳細信息search_model_versions ()
方法:
從pprint進口pprint客戶端=MlflowClient()[pprint(mv)為mv在客戶端.search_model_versions(“name = <模型名稱>”)]
這個輸出:
{'creation_timestamp': 1582671933246,“current_stage”:“生產”,'description': '包含100棵決策樹的隨機森林模型'“接受科學訓練”,“last_updated_timestamp”:1582671960712,“名稱”:“sk-learn-random-forest-reg-model”,“run_id”:“ae2cc01346de45f79a44a320aab1797b”,“源”:“。/ mlruns / 0 / ae2cc01346de45f79a44a320aab1797b /工件/ sklearn-model ',“狀態”:“準備好了”,“status_message”:沒有,“user_id”:沒有,'version': 1}{'creation_timestamp': 1582671960628,“current_stage”:“沒有”,“描述”:沒有,“last_updated_timestamp”:1582671960628,“名稱”:“sk-learn-random-forest-reg-model”,“run_id”:“d994f18d09c64c148e62a785052e6723”,“源”:“。/ mlruns / 0 / d994f18d09c64c148e62a785052e6723 /工件/ sklearn-model ',“狀態”:“準備好了”,“status_message”:沒有,“user_id”:沒有,'version': 2}
如果你有設置標簽在您的模型上,您還可以使用MLflow Client API方法通過這些標記進行搜索“search_registered_models()”.
打印(f“查找具有特定標記值的注冊模型”)為米在客戶端.search_registered_models(f“tags. <鍵值> = ' <標簽值>“”):pprint(dict(米),縮進=4)
刪除一個模型或模型版本
您可以使用UI或API刪除模型。
使用UI刪除模型版本或模型
警告
您無法撤消此操作。您可以將一個模型版本轉移到存檔階段,而不是從注冊表中刪除它。當您刪除一個模型時,存儲在model Registry中的所有模型構件以及與已注冊模型相關的所有元數據都將被刪除。
請注意
您隻能在None或存檔階段中刪除模型和模型版本。如果一個注冊的模型在Staging或Production階段有版本,那麼在刪除模型之前,您必須將它們轉換到None或存檔階段。
刪除一個型號版本。
點擊模型在側邊欄。
單擊模型名稱。
點擊模型版本。
點擊在屏幕右上角,並選擇刪除從下拉菜單。
刪除一個模型。
點擊模型在側邊欄。
單擊模型名稱。
點擊在屏幕右上角,並選擇刪除從下拉菜單。
使用API刪除一個模型版本或模型
警告
您無法撤消此操作。您可以將一個模型版本轉移到存檔階段,而不是從注冊表中刪除它。當您刪除一個模型時,存儲在model Registry中的所有模型構件以及與已注冊模型相關的所有元數據都將被刪除。
請注意
您隻能在None或存檔階段中刪除模型和模型版本。如果一個注冊的模型在Staging或Production階段有版本,那麼在刪除模型之前,您必須將它們轉換到None或存檔階段。
在工作空間之間複製MLflow對象
要從Databricks工作區導入或導出MLflow對象,可以使用社區驅動的開放源碼項目MLflow進出口在工作空間之間遷移MLflow實驗、模型和運行。
有了這些工具,你可以:
與同一或另一個跟蹤服務器上的其他數據科學家共享和協作。例如,您可以將另一個用戶的實驗克隆到您的工作區中。
將模型從一個工作空間複製到另一個工作空間,例如從開發工作空間複製到生產工作空間。
從本地跟蹤服務器複製MLflow實驗並運行到Databricks工作區。
備份任務關鍵實驗和模型到另一個Databricks工作空間。
例子
這個例子說明了如何使用Model Registry來構建一個機器學習應用程序:MLflow模型注冊表示例.