管理模型生命周期
本文描述如何使用MLflow Model Registry作為機器學習工作流的一部分來管理ML模型的完整生命周期。Databricks提供了MLflow模型注冊表的托管版本。模型注冊表提供:
時序模型沿襲(MLflow實驗和運行在給定時間產生模型)。
模型服務於無服務器實時推理.
模型版本。
階段轉換(例如,從登台到生產或存檔)。
人則因此,您可以根據注冊表事件自動觸發操作。
模型事件的電子郵件通知。
您還可以創建和查看模型描述並留下評論。
本文包括模型注冊中心UI和模型注冊中心API的說明。
有關模型注冊中心概念的概述,請參見MLflow指南.
創建或注冊一個模型
您可以使用UI創建或注冊模型使用API注冊一個模型.
使用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(…)
方法。如果具有該名稱的已注冊模型不存在,該方法將注冊一個新模型,創建Version 1,並返回一個ModelVersion
MLflow對象。如果已經存在該名稱的注冊模型,該方法將創建一個新的模型版本並返回版本對象。與mlflow.start_run(run_name= <運行-的名字>)作為運行:...mlflow.<模型-味道>.log_model(<模型-味道> = <模型>,artifact_path=“< model-path >”,registered_model_name=“<模型名稱>”)
在所有實驗運行完成並決定最適合添加到注冊中心的模型後,要使用指定的名稱注冊模型,請使用
mlflow.register_model ()
方法。方法的運行IDmlruns: URI
論點。如果具有該名稱的已注冊模型不存在,該方法將注冊一個新模型,創建Version 1,並返回一個ModelVersion
MLflow對象。如果已經存在該名稱的注冊模型,該方法將創建一個新的模型版本並返回版本對象。結果=mlflow.register_model(”:< model-path >”,“<模型名稱>”)
要創建具有指定名稱的新注冊模型,請使用MLflow客戶端API
create_registered_model ()
方法。如果模型名稱存在,此方法將拋出MLflowException
.客戶端=MlflowClient()結果=客戶端.create_registered_model(“<模型名稱>”)
控製對模型的訪問
要了解如何控製對模型注冊表中注冊的模型的訪問,請參見模型權限.
轉換模型階段
模型版本有以下階段之一:沒有一個,暫存,生產,或存檔.的暫存階段用於模型測試和驗證,而生產Stage用於已經完成測試或審查流程並已部署到應用程序進行實時評分的模型版本。假定存檔模型版本是不活動的,此時您可以考慮刪除它.模型的不同版本可能處於不同的階段。
適當的用戶許可可以在階段之間轉換模型版本。如果您擁有將模型版本轉換到特定階段的權限,則可以直接進行轉換。如果您沒有權限,您可以請求階段轉換,而具有轉換模型版本權限的用戶可以批準、拒絕或取消請求.
您可以使用UI或轉換模型階段使用API.
使用UI轉換模型階段
遵循以下說明來轉換模型的階段。
要顯示可用模型階段和可用選項的列表,在模型版本頁麵中,單擊旁邊的下拉列表階段:並請求或選擇過渡到另一個階段。
輸入可選的注釋並單擊好吧.
將模型版本轉換到生產階段
在測試和驗證之後,您可以轉換或請求轉換到生產階段。
Model Registry在每個階段中允許注冊模型的多個版本。如果您希望在生產中隻有一個版本,您可以通過檢查將當前在生產中的模型的所有版本轉換為存檔將現有的生產模型版本轉換為存檔版本.
使用API轉換模型階段
使用適當的用戶權限可以將模型版本轉換到新階段。
要將模型版本階段更新到新階段,請使用MLflow客戶端APItransition_model_version_stage ()
方法:
客戶端=MlflowClient()客戶端.transition_model_version_stage(的名字=“<模型名稱>”,版本= <模型-版本>,階段=“< >階段”,描述=“<描述>”)
的公認值> <階段
是:“暫存”|“暫存”
,“存檔”|“歸檔”
,“生產”|“生產”
,“沒有”|“沒有”
.
使用模型進行推理
預覽
此功能已在公共預覽.
在model Registry中注冊模型後,您可以自動生成一個筆記本,以使用該模型進行批處理或流推斷。或者,您可以創建一個端點來使用該模型進行實時服務無服務器實時推理.
的右上角注冊模型頁麵或者是模型版本頁麵,點擊.Configure model inference對話框將出現,它允許您配置批量、流或實時推斷。
重要的
Anaconda公司更新了他們的服務條款用於anaconda.org頻道。根據新的服務條款,如果您依賴Anaconda的包裝和分銷,您可能需要商業許可證。看到水蟒商業版常見問題解答獲取更多信息。您使用任何水蟒頻道是受他們的服務條款。
MLflow模型之前記錄過v1.18(Databricks Runtime 8.3 ML或更早版本)默認使用conda進行日誌記錄違約
通道(https://repo.anaconda.com/pkgs/)作為依賴項。由於此許可證變更,Databricks已停止使用違約
通道,用於使用MLflow v1.18及以上版本記錄的模型。缺省記錄的通道為nowconda-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下载地址如果Anaconda的條款允許您通過使用Databricks使用Anaconda.com回購,則不需要采取任何行動。
如果您想要更改模型環境中使用的通道,您可以使用一個新的模型注冊表重新注冊模型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 >
.選擇包含模型輸入數據的表,然後單擊選擇.生成的筆記本會自動導入這些數據並將其發送給模型。如果數據在輸入到模型之前需要任何轉換,您可以編輯生成的notebook。
預測被保存在目錄中的一個文件夾中
dbfs: / FileStore / batch-inference
.默認情況下,預測將保存在與模型同名的文件夾中。生成的notebook的每次運行都將一個新文件寫入該目錄,並將時間戳附加到名稱後。您還可以選擇不包含時間戳,並使用後續運行的筆記本覆蓋該文件;生成的筆記本中提供了說明。的文件夾中輸入新的文件夾名稱,可以更改保存預測的文件夾輸出表位置字段或單擊文件夾圖標瀏覽目錄並選擇不同的文件夾。
要將預測保存到Unity Catalog中的某個位置,您必須編輯筆記本。有關演示如何訓練使用Unity Catalog中的數據並將結果寫回Unity Catalog的機器學習模型的示例筆記本,請參見使用Unity Catalog數據進行Python ML模型訓練.
使用Delta Live表配置流推斷
命令下的用戶文件夾中保存一個流推理筆記本DLT-Inference
文件夾中包含模型名稱的文件夾。你可以根據需要編輯筆記本。
單擊流媒體(Delta Live Tables)選項卡。
從模型版本下拉菜單,選擇要使用的模型版本。下拉菜單中的前兩項是模型的當前Production和Staging版本(如果存在的話)。當選擇其中一個選項時,筆記本在運行時自動使用“生產”或“登台”版本。當您繼續開發模型時,您不需要更新筆記本。
單擊瀏覽旁邊的按鈕輸入表.的選擇輸入數據對話框出現了。中更改集群計算下拉。
請注意
對於支持Unity Catalog的工作空間,使用選擇輸入數據對話框允許你從三個關卡中進行選擇,
< catalog_name >, < database_name >。< table_name >
.選擇包含模型輸入數據的表,然後單擊選擇.生成的notebook將創建一個數據轉換,該轉換使用輸入表作為源並集成MLflowPySpark推斷UDF進行模型預測。如果數據需要在應用模型之前或之後進行任何額外的轉換,您可以編輯生成的筆記本。
提供輸出Delta Live表名稱。筆記本使用給定的名稱創建一個活動表,並使用它存儲模型預測。您可以根據需要修改生成的記事本以自定義目標數據集—例如:定義一個流直播表作為輸出,添加模式信息或數據質量約束。
配置實時推斷
無服務器實時推理將MLflow機器學習模型公開為可伸縮的REST API端點。若要為模型服務創建無服務器端點,請參見創建和管理無服務器實時推斷端點.
比較模型版本
您可以在模型注冊表中比較模型版本。
在注冊模型頁麵,在模型版本左側的複選框中選擇兩個或兩個以上的模型版本。
點擊比較.
的比較
< N >
將出現版本屏幕,顯示一個比較所選模型版本的參數、模式和度量的表。在屏幕底部,您可以選擇繪圖類型(散點、等高線或平行坐標)以及要繪製的參數或度量。
控製通知首選項
您可以配置Model Registry,以通過電子郵件通知您所指定的已注冊模型和模型版本上的活動。
在已注冊的模型頁麵上,通知我菜單顯示三個選項:
所有新活動:發送關於此模型的所有模型版本上的所有活動的電子郵件通知。如果您創建了注冊模型,則此設置為默認設置。
我所遵循的版本的活動:隻發送有關您所關注的型號的電子郵件通知。有了這個選擇,你會收到所有模型版本的通知,你遵循;您無法關閉特定型號版本的通知。
沉默的通知:不發送關於此已注冊型號上的活動的電子郵件通知。
以下事件觸發電子郵件通知:
創建一個新的模型版本
請求階段轉換
階段過渡
新評論
當您執行以下任何操作時,您將自動訂閱模型通知:
評論那個模型版本
過渡一個模型版本的階段
為模型的階段提出轉換請求
控件上的Follow Status字段,以查看是否遵循模型版本模型版本頁麵,或在表的模型版本上注冊模型頁麵.
關閉所有郵件通知
您可以在“用戶設置”菜單的“模型注冊表設置”選項卡中關閉電子郵件通知:
點擊設置在Databricks工作區的左下角。
點擊用戶設置.
去電子郵件首選項選項卡。
關掉注冊處電子郵件通知模型.
中,管理員可以關閉整個組織的電子郵件通知管理控製台.
人則
預覽
此功能已在公共預覽.
人則允許您監聽Model Registry事件,以便您的集成可以自動觸發操作。您可以使用webhooks自動化並將您的機器學習管道與現有的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或Archived階段時,才可以重命名它。
搜索模型
所有已注冊的模型都存在MLflow模型注冊表中。您可以使用UI或API搜索模型。
請注意
當您搜索一個模型時,隻搜索您至少擁有的模型“可讀”權限返回。
使用UI搜索模型
單擊,顯示所有已注冊的型號模型在側欄中。
要搜索特定的模型,請在搜索框中輸入文本。您可以輸入模型的名稱或名稱的任何部分:
你也可以在標簽上搜索。按如下格式輸入標簽:標簽。<關鍵> = <值>
.要搜索多個標記,請使用和
操作符。
方法可以在模型名稱和標記上進行搜索MLflow搜索語法.例如:
使用API搜索模型
您可以使用MLflow Client API方法在Model Registry中搜索已注冊的模型search_registered_models ()
如果你有設置標簽在您的模型上,您還可以通過這些標記進行搜索search_registered_models ()
.
打印(f“查找具有特定標記值的已注冊模型”)為米在客戶端.search_registered_models(f“tags. <鍵值> = ' <標簽值>“”):pprint(dict(米),縮進=4)
您還可以使用MLflow客戶端API搜索特定的模型名稱並列出其版本詳細信息search_model_versions ()
方法:
從pprint進口pprint客戶端=MlflowClient()[pprint(mv)為mv在客戶端.search_model_versions(“name = <模型名稱>”)]
這個輸出:
{'creation_timestamp': 1582671933246,“current_stage”:“生產”,“包含100棵決策樹的隨機森林模型”“受過scikit-learn訓練”,“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}
刪除模型或模型版本
您可以使用UI或API刪除模型。
使用UI刪除模型版本或模型
警告
您無法撤消此操作。您可以將模型版本轉換到存檔階段,而不是從注冊表中刪除它。當您刪除一個模型時,由model Registry存儲的所有模型工件以及與已注冊模型關聯的所有元數據都將被刪除。
請注意
您隻能在None或Archived階段刪除模型和模型版本。如果已注冊的模型在Staging或Production階段有版本,在刪除模型之前,您必須將它們轉換到None或Archived階段。
刪除模型版本。
點擊模型在側欄中。
單擊模型名稱。
單擊模型版本。
點擊在屏幕的右上角,選擇刪除從下拉菜單中。
刪除一個模型:
點擊模型在側欄中。
單擊模型名稱。
點擊在屏幕的右上角,選擇刪除從下拉菜單中。
使用API刪除模型版本或模型
警告
您無法撤消此操作。您可以將模型版本轉換到存檔階段,而不是從注冊表中刪除它。當您刪除一個模型時,由model Registry存儲的所有模型工件以及與已注冊模型關聯的所有元數據都將被刪除。
請注意
您隻能在None或Archived階段刪除模型和模型版本。如果已注冊的模型在Staging或Production階段有版本,在刪除模型之前,您必須將它們轉換到None或Archived階段。
在工作空間之間複製MLflow對象
要從Databricks工作區導入或導出MLflow對象,可以使用社區驅動的開源項目MLflow進出口在工作空間之間遷移MLflow實驗、模型和運行。
使用這些工具,你可以:
在同一台或另一台跟蹤服務器上與其他數據科學家共享和協作。例如,您可以將另一個用戶的實驗複製到您的工作區中。
將模型從一個工作區複製到另一個工作區,例如從開發工作區複製到生產工作區。
從本地跟蹤服務器複製MLflow實驗並運行到Databricks工作區。
將關鍵任務實驗和模型備份到另一個Databricks工作空間。
例子
這個例子說明了如何使用模型注冊表來構建一個機器學習應用程序:MLflow模型注冊表示例.