管理模型生命周期

Databricks提供MLflow模型注冊表的托管版本,以幫助您管理MLflow模型的整個生命周期。Model Registry提供:

  • 按時間順序的模型沿襲(MLflow實驗和運行在給定時間生成模型)。

  • 服務於無服務器實時推理經典MLflow模型服務

  • 模型版本。

  • 階段轉換(例如,從階段到生產或存檔)。

  • 人則因此,您可以根據注冊表事件自動觸發操作。

  • 模型事件的電子郵件通知。

您還可以創建和查看模型描述並留下注釋。

本文介紹了如何將模型注冊表作為機器學習工作流程的一部分使用,並包含了模型注冊表UI和模型注冊表API的說明。

有關Model Registry概念的概述,請參見MLflow指南

創建或注冊一個模型

使用UI創建或注冊一個模型

在model Registry中注冊模型有兩種方法。您可以注冊一個已經記錄到MLflow的現有模型,或者您可以創建並注冊一個新的空模型,然後將以前記錄的模型分配給它。

從筆記本中注冊一個已存在的日誌模型

  1. 在工作區中,標識包含您想要注冊的模型的MLflow運行。

    1. 單擊實驗圖標實驗的圖標在筆記本工具欄中。

      筆記本電腦工具欄
    2. 在實驗運行側欄中,單擊外部鏈接圖標放在跑步日期旁邊。顯示MLflow Run頁麵。此頁麵顯示了運行的詳細信息,包括參數、指標、標記和工件列表。

  2. 在Artifacts部分中,單擊名為xxx-model

    注冊模式
  3. 單擊注冊模式按鈕在最右邊。

  4. 在對話框中,單擊模型裝箱並做以下任何一件事:

    • 選擇創造新模式從下拉菜單。的模型名稱字段出現。例如,輸入一個模型名稱scikit-learn-power-forecasting

    • 從下拉菜單中選擇一個現有的模型。

    創建新模式
  5. 點擊注冊

    • 如果你選擇了創造新模式,這將注冊一個名為scikit-learn-power-forecasting,將模型複製到由MLflow model Registry管理的安全位置,並創建模型的新版本。

    • 如果您選擇了一個現有的模型,這將注冊所選模型的一個新版本。

    過了一會兒,注冊模式按鈕更改為指向新注冊模型版本的鏈接。

    選擇新創建的模型
  6. 單擊鏈接在model Registry UI中打開新的模型版本。您還可以通過單擊在model Registry中找到模型模型圖標模型在側邊欄。

創建一個新的注冊模型,並將一個日誌模型分配給它

您可以使用注冊模型頁麵上的Create Model按鈕來創建一個新的空模型,然後將一個已記錄的模型分配給它。遵循以下步驟:

  1. 在注冊型號頁麵,單擊創建模型.為模型輸入一個名稱並單擊創建

  2. 執行步驟1到步驟3從筆記本中注冊一個已存在的日誌模型

  3. 在Register Model對話框中,選擇您在步驟1中創建的模型的名稱並單擊注冊.這將用您創建的名稱注冊一個模型,將模型複製到由MLflow model Registry管理的安全位置,並創建一個模型版本:版本1

    過了一會兒,MLflow Run UI將注冊模型按鈕替換為指向新注冊模型版本的鏈接。您現在可以從模型的“注冊模型”對話框中的下拉列表實驗運行頁麵。您還可以通過在API命令中指定模型的名稱來注冊模型的新版本創建ModelVersion

使用API注冊一個模型

在model Registry中注冊模型有三種編程方法。所有方法都將模型複製到由MLflow模型注冊中心管理的安全位置。

  • 要記錄模型並在MLflow實驗期間將其注冊為指定的名稱,請使用mlflow。< model-flavor > .log_model(…)方法。如果帶有該名稱的注冊模型不存在,則該方法注冊一個新模型,創建版本1,並返回一個ModelVersionMLflow對象。如果名稱為該名稱的注冊模型已經存在,則該方法創建一個新的模型版本並返回版本對象。

    mlflowstart_runrun_name= <運行-的名字>作為運行...mlflow.<模型-味道>。log_model<模型-味道> = <模型>artifact_path“< model-path >”registered_model_name“<模型名稱>”
  • 在您所有的實驗運行完成之後,要用指定的名稱注冊一個模型,並且您已經決定了哪個模型最適合添加到注冊表中,請使用mlflow.register_model ()方法。方法的運行IDmlruns: URI論點。如果帶有該名稱的注冊模型不存在,則該方法注冊一個新模型,創建版本1,並返回一個ModelVersionMLflow對象。如果名稱為該名稱的注冊模型已經存在,則該方法創建一個新的模型版本並返回版本對象。

    結果mlflowregister_model”:< model-path >”“<模型名稱>”
  • 要創建具有指定名稱的新注冊模型,請使用MLflow Client APIcreate_registered_model ()方法。如果模型名存在,此方法拋出MLflowException

    客戶端MlflowClient()結果客戶端create_registered_model“<模型名稱>”

您還可以向Databricks Terraform提供商而且databricks_mlflow_model

控製對模型的訪問

要了解如何控製對在Model Registry中注冊的模型的訪問,請參見模型權限

轉換模式階段

一個模型版本有以下一個階段:沒有一個暫存生產,或存檔.的暫存階段用於模型測試和驗證,而生產Stage用於已經完成測試或評審過程並已部署到應用程序進行實時評分的模型版本。假設歸檔模型版本是不活動的,這時您可以考慮刪除它.模型的不同版本可能處於不同的階段。

有適當的使用者許可可以在不同階段之間轉換模型版本。如果您有權限將模型版本轉換到特定的階段,您可以直接進行轉換。如果您沒有權限,您可以請求一個階段轉換,而具有轉換模型版本權限的用戶可以批準、拒絕或取消請求

使用UI轉換模型階段

按照這些說明轉換模型的階段。

  1. 要顯示可用模型階段和可用選項的列表,在模型版本頁麵中,單擊旁邊的下拉列表階段:並請求或選擇過渡到另一個階段。

    舞台轉換選項
  2. 輸入一個可選的注釋並單擊好吧

將模型版本轉移到生產階段

在測試和驗證之後,您可以轉換或請求轉換到生產階段。

模型注冊中心允許在每個階段注冊模型的多個版本。如果您希望在生產中隻有一個版本,您可以通過檢查將當前在生產中模型的所有版本轉換為存檔將現有的生產模型版本轉換為存檔版本

批準、拒絕或取消一個模型版本階段轉換請求

沒有階段轉換權限的用戶可以請求階段轉換。請求出現在掛起的請求模型版本頁中的節:

向生產過渡

要批準、拒絕或取消階段轉換請求,請單擊批準拒絕,或取消鏈接。

轉換請求的創建者也可以取消請求。

查看模型版本活動

要查看請求的、批準的、掛起的以及應用到模型版本的所有轉換,請轉到Activities部分。此活動記錄提供了用於審核或檢查的模型生命周期的沿襲。

使用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文件夾中帶有模型名稱的文件夾。你可以根據需要編輯筆記本。

  1. 單擊批推理選項卡。

  2. 模型版本下拉菜單,選擇要使用的模型版本。下拉列表中的前兩項是模型的當前Production和Staging版本(如果它們存在的話)。當您選擇其中一個選項時,筆記本將自動使用運行時的生產或登台版本。您不需要在繼續開發模型時更新筆記本。

  3. 單擊瀏覽旁邊的按鈕。輸入表.的選擇輸入數據對話框出現了。如有必要,您可以在計算下拉。

    請注意

    對於支持Unity Catalog的工作空間,選擇輸入數據對話框允許你從三個級別中選擇,< catalog_name >, < database_name >。< table_name >

  4. 選擇包含模型輸入數據的表,然後單擊選擇.生成的筆記本自動導入此數據並將其發送到模型。如果數據在輸入到模型之前需要任何轉換,那麼您可以編輯生成的筆記本。

  5. 預測被保存在目錄中的一個文件夾中dbfs: / FileStore / batch-inference.默認情況下,預測將保存在與模型同名的文件夾中。每次運行生成的筆記本時,都會將一個新文件寫入此目錄,並將時間戳附加到名稱後麵。您還可以選擇不包含時間戳,並在後續運行筆記本時覆蓋該文件;生成的筆記本中提供了說明。

    的文件夾中輸入新的文件夾名稱,可以更改保存預測的文件夾輸出表位置字段或通過單擊文件夾圖標來瀏覽目錄並選擇不同的文件夾。

    為了將預測保存到Unity Catalog中的某個位置,你必須編輯筆記本。關於演示如何訓練一個使用Unity Catalog中的數據的機器學習模型並將結果寫回Unity Catalog的筆記本示例,請參見使用Unity Catalog數據進行Python ML模型訓練

使用Delta Live表配置流推理

當您按照這些步驟創建流推理筆記本時,該筆記本將保存在您的用戶文件夾中DLT-Inference文件夾中帶有模型名稱的文件夾。你可以根據需要編輯筆記本。

  1. 單擊流媒體(Delta Live表)選項卡。

  2. 模型版本下拉菜單,選擇要使用的模型版本。下拉列表中的前兩項是模型的當前Production和Staging版本(如果它們存在的話)。當您選擇其中一個選項時,筆記本將自動使用運行時的生產或登台版本。您不需要在繼續開發模型時更新筆記本。

  3. 單擊瀏覽旁邊的按鈕。輸入表.的選擇輸入數據對話框出現了。如有必要,您可以在計算下拉。

    請注意

    對於支持Unity Catalog的工作空間,選擇輸入數據對話框允許你從三個級別中選擇,< catalog_name >, < database_name >。< table_name >

  4. 選擇包含模型輸入數據的表,然後單擊選擇.生成的筆記本創建使用輸入表作為源的數據轉換,並集成MLflowPySpark推理UDF進行模型預測。如果數據在應用模型之前或之後需要任何額外的轉換,您可以編輯生成的筆記本。

  5. 提供輸出的Delta Live表名。筆記本創建一個具有給定名稱的活動表,並使用它存儲模型預測。您可以根據需要修改生成的筆記本以自定義目標數據集——例如:定義一個流直播表作為輸出,添加模式信息或數據質量約束。

  6. 你可以選擇創建一個新的Delta Live Tables管道與這個筆記本或添加它添加到現有的管道中作為附加的筆記本庫。

配置實時推理

  1. 在配置模型推斷對話框中,單擊實時選項卡。

  2. 如果該模型未啟用服務,則單擊支持服務.的服務選項卡注冊模型頁麵出現,狀態顯示為Pending。幾分鍾後,狀態變為“準備就緒”。

    如果服務已啟用,請單擊查看現有實時推理來顯示服務選項卡

提供反饋

這個功能正在預覽中,我們希望得到您的反饋。單擊,提供反饋提供反饋在配置模型推理對話框中。

比較模型版本

您可以在模型注冊表中比較模型版本。

  1. 注冊模型頁麵,通過單擊模型版本左側的複選框,選擇兩個或多個模型版本。

  2. 點擊比較

  3. 的比較< N >出現版本屏幕,顯示一個比較所選模型版本的參數、模式和度量的表。在屏幕底部,您可以選擇繪圖的類型(散點、等高線或平行坐標)和要繪製的參數或指標。

控件通知首選項

您可以配置Model Registry,以通過電子郵件通知您所指定的已注冊模型和模型版本上的活動。

在已注冊的模型頁麵上通知我菜單顯示三個選項:

郵件通知菜單
  • 所有新活動:發送關於此模型的所有模型版本上的所有活動的電子郵件通知。如果您創建了注冊模型,則此設置為默認設置。

  • 我所遵循的版本的活動:隻發送關於您所關注的模型版本的電子郵件通知。通過這個選擇,您將收到您所遵循的所有模型版本的通知;您不能關閉特定模型版本的通知。

  • 沉默的通知:不發送關於此注冊型號上的活動的電子郵件通知。

以下事件觸發電子郵件通知:

  • 創建一個新的模型版本

  • 請求舞台轉換

  • 階段過渡

  • 新評論

當您執行以下任何操作時,您將自動訂閱模型通知:

  • 對模型版本進行評論

  • 過渡模型版本的階段

  • 為模型的階段提出一個轉換請求

控件上的Follow Status字段,以確定是否遵循模型版本型號版本頁,或在表的型號版本上注冊模型頁麵

關閉所有郵件通知

你可以在“用戶設置”菜單的“模型注冊表設置”選項卡中關閉郵件通知:

  1. 點擊用戶設置圖標設置在Databricks工作區的左下角。

  2. 點擊用戶設置

  3. 電子郵件首選項選項卡。

  4. 關掉Model Registry電子郵件通知

中,管理員可以關閉整個組織的電子郵件通知管理控製台

發送郵件的最大數量

模型注冊表限製每天每個活動發送給每個用戶的電子郵件數量。例如,如果您在一天內收到20封關於為已注冊模型創建的新模型版本的電子郵件,model Registry將發送一封電子郵件,指出已達到每日限製,並且直到第二天才會發送關於該事件的附加電子郵件。

要增加允許的電子郵件數量的限製,請與您的Databricks代表聯係。

人則

預覽

此功能已在公共預覽

webhook使您能夠監聽Model Registry事件,因此您的集成可以自動觸發操作。你可以使用webhook來自動化和集成你的機器學習管道與現有的CI/CD工具和工作流。例如,當創建一個新的模型版本時,您可以觸發CI構建,或者在每次請求模型轉換到生產時通過Slack通知您的團隊成員。

注釋模型或模型版本

您可以通過注釋提供關於模型或模型版本的信息。例如,您可能希望包含問題的概述或使用的方法和算法的信息。

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

Databricks UI提供了幾種方法來注釋模型和模型版本。您可以使用描述或注釋添加文本信息,還可以添加可搜索的鍵-值標記.描述和標簽可用於模型和模型版本;注釋隻適用於模型版本。

  • 描述旨在提供關於模型的信息。

  • 注釋提供了一種維護關於模型版本上的活動的持續討論的方法。

  • 標記允許您自定義模型元數據,以便更容易地找到特定的模型。

為模型或模型版本添加或更新描述

  1. 注冊模式模型版本頁麵,點擊編輯旁邊描述.出現一個編輯窗口。

  2. 在編輯窗口中輸入或編輯描述。

  3. 點擊保存以保存更改或取消關上窗戶。

    如果您輸入了模型版本的說明,則該說明將出現在描述的表中的列注冊模型頁麵.該列最多顯示32個字符或一行文本,以較短者為準。

為模型版本添加注釋

  1. 向下滾動模型版本分頁並單擊旁邊的向下箭頭活動

  2. 在編輯窗口中輸入您的評論並單擊添加評論

為模型或模型版本添加標記

  1. 注冊模式模型版本頁麵,點擊標簽圖標如果它還沒有打開。這時會出現標簽表。

    標簽表
  2. 按一下的名字而且價值字段並為您的標記鍵入鍵和值。

  3. 點擊添加

    添加標簽

編輯或刪除模型或模型版本的標記

控件中的圖標可編輯或刪除現有標記行動列。

標簽的行為

使用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():pprintdictrm),縮進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()pprintmvmv客戶端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_modelsf“tags. <鍵值> = ' <標簽值>“”):pprintdict),縮進4

刪除一個模型或模型版本

您可以使用UI或API刪除模型。

使用UI刪除模型版本或模型

警告

您無法撤消此操作。您可以將一個模型版本轉移到存檔階段,而不是從注冊表中刪除它。當您刪除一個模型時,存儲在model Registry中的所有模型構件以及與已注冊模型相關的所有元數據都將被刪除。

請注意

您隻能在None或存檔階段中刪除模型和模型版本。如果一個注冊的模型在Staging或Production階段有版本,那麼在刪除模型之前,您必須將它們轉換到None或存檔階段。

刪除一個型號版本。

  1. 點擊模型圖標模型在側邊欄。

  2. 單擊模型名稱。

  3. 點擊模型版本。

  4. 點擊刪除型號版本在屏幕右上角,並選擇刪除從下拉菜單。

刪除一個模型。

  1. 點擊模型圖標模型在側邊欄。

  2. 單擊模型名稱。

  3. 點擊刪除模型在屏幕右上角,並選擇刪除從下拉菜單。

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

警告

您無法撤消此操作。您可以將一個模型版本轉移到存檔階段,而不是從注冊表中刪除它。當您刪除一個模型時,存儲在model Registry中的所有模型構件以及與已注冊模型相關的所有元數據都將被刪除。

請注意

您隻能在None或存檔階段中刪除模型和模型版本。如果一個注冊的模型在Staging或Production階段有版本,那麼在刪除模型之前,您必須將它們轉換到None或存檔階段。

刪除模型版本

要刪除模型版本,請使用MLflow客戶端APIdelete_model_version ()方法:

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

刪除模型

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

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

跨工作區共享模型

Databricks支持跨多個工作空間共享模型。例如,您可以在您自己的工作空間中開發並記錄一個模型,然後在一個集中的模型注冊中心中注冊它。當多個團隊共享對模型的訪問時,這很有用。您可以創建多個工作區,並跨這些環境使用和管理模型。

在工作空間之間複製MLflow對象

要從Databricks工作區導入或導出MLflow對象,可以使用社區驅動的開放源碼項目MLflow進出口在工作空間之間遷移MLflow實驗、模型和運行。

有了這些工具,你可以:

  • 與同一或另一個跟蹤服務器上的其他數據科學家共享和協作。例如,您可以將另一個用戶的實驗克隆到您的工作區中。

  • 將模型從一個工作空間複製到另一個工作空間,例如從開發工作空間複製到生產工作空間。

  • 從本地跟蹤服務器複製MLflow實驗並運行到Databricks工作區。

  • 備份任務關鍵實驗和模型到另一個Databricks工作空間。

例子

這個例子說明了如何使用Model Registry來構建一個機器學習應用程序:MLflow模型注冊表示例