共用方式為


使用工作區模型登錄管理模型生命週期 (舊版)

重要

本文件涵蓋工作區模型登錄。 如果您的工作區已啟用 Unity Catalog,請勿使用此頁面上的程式。 相反地,請參閱 Unity 中的 模型。

如需如何將工作區模型登錄升級至 Unity Catalog的指引,請參閱 將工作流程和模型移轉至 Unity Catalog

如果您的工作區 預設 catalog 位於 Unity Catalog 中(而非 hive_metastore),而且您使用 Databricks Runtime 13.3 LTS 或更新版本執行叢集,系統會自動在工作區預設 catalog中建立和載入模型,而不需要設定。 若要在這種情況下使用工作區模型登錄,您必須透過在工作負載開始時執行 import mlflow; mlflow.set_registry_uri("databricks") 來明確將其設為目標。 在 2024 年 1 月之前的 Unity where 中,預設 catalog 都設定 catalog 為少數工作區 Catalog,而工作區模型登錄在 2024 年 1 月之前使用,則會豁免此行為,並預設繼續使用工作區模型登錄。

本文說明如何使用工作區模型登錄作為機器學習工作流程的一部分,來管理 ML 模型的完整生命週期。 工作區模型登錄是 Databricks 提供的、MLflow 模型登錄的託管版本。

工作區模型登錄提供:

  • 按時間順序的模型譜系 (MLflow 實驗和執行在指定時間產生了模型)。
  • 模型服務
  • 模型版本設定。
  • 階段轉換 (例如,從預備至生產或封存)。
  • Webhook,用於根據登錄事件自動觸發動作。
  • 模型事件的電子郵件通知。

您也可以建立和檢視模型描述,並留下註解。

本文包含工作區模型登錄 UI 和工作區模型登錄 API 的指示。

如需工作區模型登錄概念的概觀,請參閱 Gen AI 代理程式和 ML 模型生命週期的 MLflow

建立或註冊模型

您可以使用 UI 建立或註冊模型,或使用 API 註冊模型

使用 UI 建立或註冊模型

有兩種方法在工作區模型登錄中註冊模型。 您可以註冊已登入 MLflow 的現有模型,也可以建立並註冊一個新的空模型,然後向其指派先前記錄的模型。

從筆記本註冊現有的記錄模型

  1. 在工作區中,識別包含要註冊的模型的 MLflow 執行。

    1. 在筆記本右側的側邊欄中,按一下 [實驗] 圖示 [實驗] 圖示

      筆記本工具列

    2. 在 [實驗執行] 側邊欄中,按一下執行日期旁邊的 外部連結 圖示。 [MLflow 執行] 頁面隨即顯示。 此頁面會顯示執行的詳細數據,包括 parameters、計量、標記和成品 list。

  2. 在 [成品] 區段中,按一下名為 xxx-model 的目錄。

    登錄模型

  3. 按一下最右邊的 [註冊模型] 按鈕。

  4. 在對話方塊中,按一下 [模型] 方塊,然後執行下列其中一個動作:

    • Select 從下拉功能表建立新的模型。 [模型名稱] 欄位隨即出現。 輸入模型名稱,例如 scikit-learn-power-forecasting
    • 在下拉功能表 Select 中選擇一個現有的模型。

    建立新的模型

  5. 按下 [註冊]

    • 如果已選取 [建立新模型],這會註冊名為 scikit-learn-power-forecasting 的模型,將此模型複製到工作區模型登錄管理的安全位置,並建立此模型的新版本。
    • 如果已選取現有的模型,這會註冊所選模型的新版本。

    一會兒之後,[註冊模型] 按鈕會變更為新註冊的模型版本的連結。

    Select 新建立的模型

  6. 按一下連結,以在工作區模型登錄 UI 中開啟新的模型版本。 您也可以透過按一下側邊欄中的 [模型] 圖示 [模型],在工作區模型登錄中尋找模型。

建立新註冊的模型,並向其指派已記錄的模型

您可以使用已註冊模型頁面上的 [建立模型] 按鈕來建立新的空白模型,然後向其指派已記錄的模型。 執行下列步驟:

  1. 在 [已註冊的模型] 頁面上,按一下 [建立模型]。 輸入模型的名稱,然後按一下 [建立]

  2. 遵循從筆記本註冊現有的已記錄模型中的步驟 1 至 3。

  3. 在 [註冊模型] 對話框中, 您在步驟 1 中建立的模型名稱,然後按兩下 [註冊]。 這會使用您建立的名稱註冊一個模型,將此模型複製到工作區模型登錄管理的安全位置,並建立模型版本:Version 1

    一會兒之後,MLflow 執行 UI 會將 [註冊模型] 按鈕取代為新註冊的模型版本的連結。 您現在可以在 [select 執行] 頁面的 [註冊模型] 對話框中,從 [模型] 下拉式 list 模型。 您也可以在 API 命令中指定其名稱 (例如 Create ModelVersion),來註冊模型的新版本。

使用 API 註冊模型

有三種程式設計方式在工作區模型登錄中註冊模型。 所有方法都會將模型複製到工作區模型登錄管理的安全位置。

  • 若要記錄模型,並在 MLflow 實驗期間以指定的名稱註冊模型,請使用 mlflow.<model-flavor>.log_model(...) 方法。 如果具有該名稱的已註冊模型不存在,則此方法會註冊新的模型、建立第 1 版,並傳回 ModelVersion MLflow 物件。 如果具有該名稱的已註冊模型已存在,則此方法會建立新的模型版本,並傳回版本物件。

    with mlflow.start_run(run_name=<run-name>) as run:
      ...
      mlflow.<model-flavor>.log_model(<model-flavor>=<model>,
        artifact_path="<model-path>",
        registered_model_name="<model-name>"
      )
    
  • 若要在所有實驗執行完成後使用指定的名稱註冊模型,並且已決定最適合新增至登錄的模型,請使用 mlflow.register_model() 方法。 對於此方法,您需要 mlruns:URI 引數的執行識別碼。 如果具有該名稱的已註冊模型不存在,則此方法會註冊新的模型、建立第 1 版,並傳回 ModelVersion MLflow 物件。 如果具有該名稱的已註冊模型已存在,則此方法會建立新的模型版本,並傳回版本物件。

    result=mlflow.register_model("runs:<model-path>", "<model-name>")
    
  • 若要建立具有指定名稱的新註冊的模型,請使用 MLflow 用戶端 API create_registered_model() 方法。 如果模型名稱存在,此方法會擲回 MLflowException

    client = MlflowClient()
    result = client.create_registered_model("<model-name>")
    

您也可以向 Databricks Terraform 提供者databricks_mlflow_model 註冊模型。

配額限制

從 2024 年 5 月開始,對於所有 Databricks 工作區,工作區模型登錄都會對每個工作區的已註冊模型和模型版本總數施加配額限制。 請參閱資源限制。 如果您超過登錄配額,Databricks 建議您刪除不再需要的已註冊模型和模型版本。 Databricks 也建議您調整模型註冊和保留策略,以維持在 limit之下。 如果您需要提高工作區限制,請連絡您的 Databricks 帳戶團隊。

下列筆記本說明如何清查和刪除模型登錄實體。

清查工作區模型登錄實體筆記本

Get 筆記本

在 UI 中檢視模型

已註冊的模型頁面

在側邊欄中按一下 [模型] 圖示 [模型] 時,將顯示已註冊的模型頁面。 此頁面會顯示登錄中的所有模型。

您可以透過此頁面建立新的模型

此外,從此頁面,工作區管理員可以 set 工作區模型登錄中所有模型的許可權

已註冊的模型

已註冊的模型頁面

若要顯示模型的已註冊模型頁面,請按一下已註冊模型頁面中的模型名稱。 已註冊的模型頁面會顯示所選模型的相關信息,以及具有每個模型版本相關信息的 table。 透過此頁面,您還可以:

已註冊的模型

模型版本頁面

若要檢視模型版本頁面,請執行下列其中一項操作:

  • 在已註冊的模型頁面上,點擊 [最新版本]column 中的某個版本名稱。
  • 在已註冊的模型頁面中,點擊 [版本]column 中的版本名稱。

此頁面會顯示有關已註冊模型特定版本的資訊,還會提供來源執行 (用於建立此模型而執行的筆記本版本) 的連結。 透過此頁面,您還可以:

模型版本

控制對模型的存取

您必須至少具有 CAN MANAGE 權限,才能設定模型的權限。 如需有關模型權限等級的資訊,請參閱 MLflow 模型 ACL。 模型版本從父模型繼承權限。 您無法更改模型版本的 set 許可權。

  1. 在側邊欄中,按一下 [模型] 圖示 [模型]

  2. Select 模型名稱。

  3. 按一下 [權限]。 [權限設定] 對話方塊隨即開啟

    [模型權限] 按鈕

  4. 在對話框中,selectSelect 使用者、群組或服務主體... 下拉式清單,並 select 使用者、群組或服務主體。

    變更 MLflow 模型權限

  5. Select 從許可權下拉式清單中選擇一個許可權。

  6. 按一下 [新增],然後按一下 [儲存]

在全登錄層級具有 CAN MANAGE 許可權的工作區管理員和使用者,可以在 [模型] 頁面上點擊 [set,然後在工作區內管理所有模型的許可權層級。

轉換模型階段

模型版本具有下列其中一個階段:[無]、[預備]、[生產] 或 [已封存]。 例如,[預備] 階段適用於模型測試和驗證,而 [生產] 階段適用於已完成測試或檢閱程序,以及已部署至應用程式來取得即時評分的模型版本。 [已封存] 模型版本視為非使用中狀態,此時您可以考慮將其刪除。 不同版本的模型可以處於不同的階段。

具有適當權限的使用者可以在階段之間轉換模型版本。 如果您有權將模型版本轉換為特定階段,可以直接進行轉換。 如果您沒有權限,可以要求階段轉換,且有權轉換模型版本的使用者可以核准、拒絕或取消要求

您可以使用 UI 或使用 API 轉換模型階段。

使用 UI 轉換模型階段

請遵循下列指示來轉換模型的階段。

  1. 若要顯示可用模型階段的 list 和您的可用選項,請在模型版本頁面中,點擊 [階段] 旁的下拉式清單:,然後要求或 select 轉換至另一個階段。

    階段轉換選項

  2. 輸入選用註解,然後按一下 [確定]

將模型版本轉換至 [生產] 階段

在測試和驗證之後,您可以轉換或要求轉換至 [生產] 階段。

工作區模型登錄允許每個階段中存在已註冊模型的多個版本。 如果想要在 [生產] 中只有一個版本,您可以透過檢查 [將現有的生產模型版本轉換至 [已封存]],將目前處於 [生產] 中的所有模型版本轉換為 [已封存]。

核准、拒絕或取消模型版本階段轉換要求

沒有階段轉換權限的使用者可以要求階段轉換。 要求會出現在模型版本頁面的 [擱置中要求] 區段中:

轉換至生產

若要核准、拒絕或取消階段轉換要求,請按一下 [核准]、[拒絕] 或 [取消] 連結。

轉換要求的建立者也可以取消要求。

檢視模型版本活動

若要檢視已要求、已核准、擱置中及套用至模型版本的所有轉換,請移至 [活動] 區段。 此活動記錄會提供模型生命週期的譜系,可供稽核或檢查。

使用 API 轉換模型階段

具有適當權限的使用者可以將模型版本轉換至新階段。

若要將模型版本階段 update 到新的階段,請使用 MLflow 用戶端 API transition_model_version_stage() 方法:

  client = MlflowClient()
  client.transition_model_version_stage(
    name="<model-name>",
    version=<model-version>,
    stage="<stage>",
    description="<description>"
  )

values 接受的 <stage> 為:"Staging"|"staging""Archived"|"archived""Production"|"production""None"|"none"

使用模型進行推斷

重要

這項功能處於公開預覽狀態

在工作區模型登錄中註冊模型之後,您可以自動 generate 筆記本來使用模型進行批次或串流推斷。 或者,您可以建立端點,以使用此模型透過模型服務進行即時服務。

已註冊的模型頁面模型版本頁面的右上角,按一下 使用模型按鈕。 [設定模型推斷] 對話方塊隨即出現,可讓您設定批次、串流或即時推斷。

重要

Anaconda Inc. 已更新其 anaconda.org 頻道的服務條款。 根據新服務條款,如果你依賴 Anaconda 的套件和散發,你可能需要商業授權。 如需詳細資訊,請參閱 Anaconda 商業版本常見問題集。 你使用任何 Anaconda 通道都會受到其服務條款的規範。

在 v1.18 之前記錄的 MLflow 模型(Databricks 執行階段 8.3 ML 或更早版本)預設會以 conda defaults 頻道(https://repo.anaconda.com/pkgs/)記錄為相依性。 由於此授權變更,針對使用 MLflow v1.18 與更高本記錄的模型 Databricks 已停止使用 defaults 頻道。 預設記錄頻道現為 conda-forge,指向社群管理的 https://conda-forge.org/

如果你在 MLflow v1.18 之前記錄模型,但未從模型的 conda 環境排除 defaults 頻道,則該模型可能在 defaults 頻道具有你或未預期的相依性。 如果要手動確認模型是否具有此相依性,你可以針對以記錄模型封裝的 channel 檔案檢查其 conda.yaml 值。 例如,具有 conda.yaml 頻道相依性的 defaults 模型可能如下所示:

channels:
- defaults
dependencies:
- python=3.8.8
- pip
- pip:
    - mlflow
    - scikit-learn==0.23.2
    - cloudpickle==1.6.0
      name: mlflow-env

由於 Databricks 無法判斷你與 Anaconda 的關係是否允許使用 Anaconda 存放庫來與模型互動,因此 Databricks 不會強制客戶進行任何變更。 如果 Anaconda 條款允許透過使用 Databricks 來使用 Anaconda.com 存放庫,您就不需要採取任何動作。

如果想要變更模型環境中使用的通道,您可以使用新的 conda.yaml 將模型重新註冊至工作區模型登錄。 可以透過在 conda_envlog_model() 參數中指定通道來執行此動作。

如需 log_model() API 的詳細資訊,請參閱你正在使用模型類別的 MLflow 文件,例如 scikit-learn 的 log_model

如需有關 conda.yaml 檔案的詳細資訊,請參閱 MLflow 文件

設定模型推斷對話方塊

設定批次推斷

當您遵循下列步驟來建立批次推斷筆記本時,筆記本會儲存在具有模型名稱的資料夾中 Batch-Inference 資料夾下的使用者資料夾中。 您可以視需要編輯筆記本。

  1. 按一下 [批次推斷] 索引標籤。

  2. 模型版本 下拉式清單中,select 要使用的模型版本。 下拉式清單中的前兩個項目是模型的目前 [生產] 和 [預備] 版本 (如果有的話)。 當您 select 其中一個選項時,筆記本會在執行當下自動使用正式或預覽版本。 您在繼續開發模型時不需要執行update於筆記本。

  3. 單擊 瀏覽 按鈕,位於 輸入 table旁邊。 Select 輸入數據 對話框隨即出現。 如有必要,您可以在 [計算] 下拉式清單中變更叢集。

    注意

    針對已啟用 Unity Catalog 的工作區,[Select 輸入資料] 對話框可讓您從三個層級進行 select,<catalog-name>.<database-name>.<table-name>

  4. Select 包含模型輸入數據的 table,然後按一下 [Select]。 產生的筆記本會自動匯入此資料,並將其傳送至模型。 如果資料在輸入至模型之前需要進行任何轉換,您可以編輯產生的筆記本。

  5. 預測會儲存在目錄 dbfs:/FileStore/batch-inference 中的資料夾中。 根據預設,預測會儲存在名稱與模型相同的資料夾中。 每次執行產生的筆記本時,會將新檔案寫入此目錄,並將時間戳記追加至該名稱。 您也可以選擇不包含時間戳記,並使用筆記本的後續執行覆寫檔案;產生的筆記本中提供了指示。

    您可以將新的資料夾名稱輸入至 table 位置] 字段,或按下資料夾圖示來瀏覽目錄並 不同的資料夾,以變更預測儲存 select 資料夾。

    若要將預測儲存至 Unity Catalog中的位置,您必須編輯筆記本。 如需示範如何定型使用 Unity Catalog 資料的機器學習模型,並將結果寫回 Unity Catalog的範例筆記本,請參閱 機器學習教學課程

使用 Delta Live Tables 設定串流推斷

當您遵循下列步驟來建立串流推斷筆記本時,筆記本會儲存在具有模型名稱的資料夾中 DLT-Inference 資料夾下的使用者資料夾中。 您可以視需要編輯筆記本。

  1. 按一下[串流 (Delta Live Tables)][]標籤。

  2. 模型版本 下拉式清單中,select 要使用的模型版本。 下拉式清單中的前兩個項目是模型的目前 [生產] 和 [預備] 版本 (如果有的話)。 當您 select 其中一個選項時,筆記本會在執行當下自動使用正式或預覽版本。 您在繼續開發模型時不需要執行update於筆記本。

  3. 單擊 瀏覽 按鈕,位於 輸入 table旁邊。 Select 輸入數據 對話框隨即出現。 如有必要,您可以在 [計算] 下拉式清單中變更叢集。

    注意

    針對已啟用 Unity Catalog 的工作區,[Select 輸入資料] 對話框可讓您從三個層級進行 select,<catalog-name>.<database-name>.<table-name>

  4. Select 包含模型輸入數據的 table,然後按一下 [Select]。 產生的筆記本會建立一個數據轉換,這個轉換使用輸入 table 作為來源,並整合 MLflow PySpark 推斷 UDF 來執行模型預測。 如果在套用模型之前或之後資料需要進行任何其他轉換,您可以編輯產生的筆記本。

  5. 提供輸出 Delta Live Table 名稱。 筆記本會建立具有指定名稱的即時資料對象 table,並用它來儲存模型預測。 您可以依據需求修改生成的筆記本以自定義目標資料集,例如:將串流直播 table 定義為輸出、添加 schema 資訊或資料品質限制。

  6. 然後,您可以使用此筆記本建立新的 Delta Live Tables 數據流,或將它作為附加的筆記本函式庫新增至現有的數據流。

設定即時推斷

模型服務可將 MLflow 機器學習模型公開為可調整的 REST API 端點。 若要建立模型服務端點,請參閱建立自訂模型服務端點

提供意見反應

這項功能處於預覽狀態,我們很想 get 您的意見反應。 若要提供意見反應,請按一下 [設定模型推斷] 對話方塊中的 Provide Feedback

比較模型版本

您可以在工作區模型登錄中比較模型版本。

  1. 在 [註冊的模型] 頁面上,勾選位於模型版本左側的複選框,select 可以選擇兩個或更多的模型版本。
  2. 按一下 [比較]
  3. [比較 <N> 版本] 畫面隨即出現,其中顯示 table,可比較所選模型版本的 parameters、schema和計量。 在畫面底部,您可以 select 繪圖類型(散佈圖、輪廓或平行座標),以及要繪製的 parameters 或計量。

控制通知喜好設定

您可以設定工作區模型登錄,就已註冊的模型和您指定的模型版本上的活動透過電子郵件通知您。

在已註冊的模型頁面上,[通知我] 功能表會顯示三個選項:

電子郵件通知功能表

  • 所有新活動:就此模型的所有模型版本上的活動傳送電子郵件通知。 如果您已建立已註冊的模型,則此設定為預設值。
  • 我關注的版本上的活動:僅就您關注的模型版本傳送電子郵件通知。 使用此選項,您將就您關注的所有模型版本接收通知;您無法針對特定模型版本關閉通知。
  • 將通知靜音:不就此註冊的模型上的活動傳送電子郵件通知。

下列事件會觸發電子郵件通知:

  • 建立新的模型版本
  • 要求階段轉換
  • 階段轉換
  • 新註解

當您執行下列任何動作時,系統會自動為您訂閱模型通知:

  • 對該模型版本加上註解
  • 轉換模型版本的階段
  • 發出模型階段轉換要求

若要檢查您是否在追蹤模型版本,可在 模型版本頁面上查看 [追蹤狀態] 欄位,或在 註冊模型頁面中查看模型版本的 table,

關閉所有電子郵件通知

您可以在 [使用者設定] 功能表的 [工作區模型登錄設定] 索引標籤中關閉電子郵件通知:

  1. 在 Azure Databricks 工作區右上角點擊你的使用者名稱,然後從下拉功能表中選擇 select[設定]
  2. 在 [設定] 提要字段中,select[通知]
  3. 關閉 [模型登錄電子郵件通知]

帳戶管理員可以在系統管理員設定頁面中關閉整個組織的電子郵件通知。

傳送的電子郵件數目上限

工作區模型登錄限制了每天就每個活動傳送給每位使用者的電子郵件數目。 例如,如果您在一天內收到針對已註冊模型建立之新模型版本的相關 20 封電子郵件,工作區模型登錄會傳送電子郵件,指出已達到每日 limit,而且不會傳送有關該事件的其他電子郵件,直到第二天為止。

若要增加允許的電子郵件數目 limit,請連絡您的 Azure Databricks 帳戶小組。

Webhooks

重要

這項功能處於公開預覽狀態

Webhooks 可讓您接聽工作區模型登錄事件,讓您的整合可以自動觸發動作。 您可以使用 Webhook 自動執行機器學習管線,並將其與現有 CI/CD 工具和工作流程整合。 例如,您可以在建立新的模型版本時觸發 CI 組建,或每次要求模型轉換至生產時,透過 Slack 通知您的團隊成員。

標註模型或模型版本

您可以透過標註模型或模型版本來提供相關資訊。 例如,您可能想要包含問題的概觀,或有關所使用方法和演算法的資訊。

使用 UI 標註模型或模型版本

Azure Databricks UI 提供了數種方式來標註模型和模型版本。 您可以使用描述或註解來新增文字資訊,也可以新增可搜尋的索引鍵/值標籤。 描述和標籤適用於模型和模型版本;註解僅適用於模型版本。

  • 描述的目的是提供有關模型的資訊。
  • 註解提供一種方式就某模型版本上的活動進行持續討論。
  • 標籤可讓您自訂模型中繼資料,讓您更輕鬆地尋找特定模型。

新增或 update 模型或模型版本的描述

  1. 已註冊的模型模型版本頁面中,按一下 [描述] 旁邊的 [編輯]。 出現編輯 window。

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

  3. 點擊 [儲存] 儲存變更,或 [取消] 以關閉 window。

    如果您輸入了模型版本的描述,則此描述會出現在 描述column 中,位於 table 的 註冊模型頁面上。 column 最多顯示 32 個字元或一行文字,以較短者為準。

為模型版本新增註解

  1. 向下捲動模型版本頁面,然後按一下 [活動] 旁邊的向下箭頭。
  2. 在編輯 window 中輸入您的批注,然後按下 [新增批注]

為模型或模型版本新增標籤

  1. 已註冊的模型模型版本頁面中,按一下 標記圖示 (如果尚未開啟)。 標籤 table 出現。

    標籤 table

  2. 按一下 [名稱] 和 [值] 欄位,然後輸入標籤的索引鍵和值。

  3. 按一下新增

    新增標籤

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

若要編輯或刪除現有的標籤,請使用 Actionscolumn中的圖示。

標籤動作

使用 API 標註模型版本

若要 update 模型版本描述,請使用 MLflow 用戶端 API update_model_version() 方法:

client = MlflowClient()
client.update_model_version(
  name="<model-name>",
  version=<model-version>,
  description="<description>"
)

若要 set 或 update 已註冊模型或模型版本的標籤,請使用 MLflow 用戶端 API set_registered_model_tag()) 或 set_model_version_tag() 方法:

client = MlflowClient()
client.set_registered_model_tag()(
  name="<model-name>",
  key="<key-value>",
  tag="<tag-value>"
)
client = MlflowClient()
client.set_model_version_tag()(
  name="<model-name>",
  version=<model-version>,
  key="<key-value>",
  tag="<tag-value>"
)

重新命名模型 (僅限 API)

若要重新命名已註冊的模型,請使用 MLflow 用戶端 API rename_registered_model() 方法:

client=MlflowClient()
client.rename_registered_model("<model-name>", "<new-model-name>")

注意

僅當已註冊模型沒有任何版本或所有版本都處於 [無] 或 [已封存] 階段時,才能重新命名此模型。

搜尋模型

您可以使用 UI 或 API 在工作區模型登錄中搜尋模型。

注意

當您搜尋模型時,只會傳回您至少具有 CAN READ 權限的模型。

使用 UI 搜尋模型

若要顯示已註冊的模型,請在側邊欄中按一下 [模型] 圖示 [模型]

若要搜尋特定模型,請在搜尋方塊中輸入文字。 您可以輸入模型的名稱或名稱的任何部分:

已註冊的模型搜尋

您也可以搜尋標籤。 以下列格式輸入標籤:tags.<key>=<value>。 若要搜尋多個標籤,請使用 AND 運算子。

標籤型搜尋

您可以使用 MLflow 搜尋語法來同時搜尋模型名稱和標籤。 例如:

名稱和標籤型搜尋

使用 API 搜尋模型

您可以使用 MLflow 用戶端 API 方法 search_registered_models() 在工作區模型登錄中搜尋已註冊的模型

如果您的模型上有 set 標籤,您也可以使用 search_registered_models()搜尋這些標籤。

print(f"Find registered models with a specific tag value")
for m in client.search_registered_models(f"tags.`<key-value>`='<tag-value>'"):
  pprint(dict(m), indent=4)

您也可以使用 MLflow 用戶端 API list 方法來搜尋特定模型名稱和 search_model_versions() 其版本詳細資料:

from pprint import pprint

client=MlflowClient()
[pprint(mv) for mv in client.search_model_versions("name='<model-name>'")]

其會輸出:

{   'creation_timestamp': 1582671933246,
    'current_stage': 'Production',
    'description': 'A random forest model containing 100 decision trees '
                   'trained in scikit-learn',
    'last_updated_timestamp': 1582671960712,
    'name': 'sk-learn-random-forest-reg-model',
    'run_id': 'ae2cc01346de45f79a44a320aab1797b',
    'source': './mlruns/0/ae2cc01346de45f79a44a320aab1797b/artifacts/sklearn-model',
    'status': 'READY',
    'status_message': None,
    'user_id': None,
    'version': 1 }

{   'creation_timestamp': 1582671960628,
    'current_stage': 'None',
    'description': None,
    'last_updated_timestamp': 1582671960628,
    'name': 'sk-learn-random-forest-reg-model',
    'run_id': 'd994f18d09c64c148e62a785052e6723',
    'source': './mlruns/0/d994f18d09c64c148e62a785052e6723/artifacts/sklearn-model',
    'status': 'READY',
    'status_message': None,
    'user_id': None,
    'version': 2 }

刪除模型或模型版本

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

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

警告

您無法復原這個動作。 您可以將模型版本轉換為 [已封存] 階段,而不是從登錄將其刪除。 當您刪除模型時,工作區模型登錄所儲存的所有模型成品和與已註冊模型關聯的所有中繼資料都會刪除。

注意

您只能在 [無] 或 [已封存] 階段中刪除模型和模型版本。 如果某個已註冊的模型具有處於 [預備] 或 [生產] 階段的版本,您必須將這些版本轉換為 [無] 或 [已封存] 階段,然後才能刪除此模型。

若要刪除模型版本,請執行以下操作:

  1. 在側邊欄中,按一下 [模型] 圖示 [模型]
  2. 按一下模型名稱。
  3. 按一下模型版本。
  4. 點擊螢幕右上角的kebab功能表 Kebab選單,然後從下拉功能表 select[刪除]。

若要刪除模型,請執行以下操作:

  1. 在側邊欄中,按一下 [模型] 圖示 [模型]
  2. 按一下模型名稱。
  3. 點擊螢幕右上角的kebab功能表 Kebab選單,然後從下拉功能表 select[刪除]。

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

警告

您無法復原這個動作。 您可以將模型版本轉換為 [已封存] 階段,而不是從登錄將其刪除。 當您刪除模型時,工作區模型登錄所儲存的所有模型成品和與已註冊模型關聯的所有中繼資料都會刪除。

注意

您只能在 [無] 或 [已封存] 階段中刪除模型和模型版本。 如果某個已註冊的模型具有處於 [預備] 或 [生產] 階段的版本,您必須將這些版本轉換為 [無] 或 [已封存] 階段,然後才能刪除此模型。

刪除模型版本

若要刪除模型版本,請使用 MLflow 用戶端 API delete_model_version() 方法:

# Delete versions 1,2, and 3 of the model
client = MlflowClient()
versions=[1, 2, 3]
for version in versions:
  client.delete_model_version(name="<model-name>", version=version)

刪除模型

若要刪除模型,請使用 MLflow 用戶端 API delete_registered_model() 方法:

client = MlflowClient()
client.delete_registered_model(name="<model-name>")

跨工作區共用模型

Databricks 建議在 Unity 中使用 模型,在工作區之間共用模型。 Unity Catalog 提供現成的支援以進行跨工作區模型存取、治理和稽核記錄。

但是,如果使用工作區模型登錄,您也可以使用某些設定跨多個工作區共用模型。 例如,您可以在自己的工作區中開發和記錄一個模型,然後使用遠端工作區模型登錄從另一個工作區存取此模型。 當多個團隊共用模型的存取權時,這很有用。 您可以建立多個工作區,並在這些環境中使用和管理模型。

在工作區之間複製 MLflow 物件

若要透過 Azure Databricks 工作區匯入或匯出 MLflow 物件,您可以使用社群導向的開放原始碼專案 MLflow Export-Import 在工作區之間移轉 MLflow 實驗、模型和執行。

使用這些工具,您可以:

  • 與相同或另一個追蹤伺服器中的其他資料科學家共用和共同作業。 例如,您可以將實驗從另一個使用者複製到您的工作區。
  • 將模型從一個工作區複製到另一個工作區,例如從開發複製到生產工作區。
  • 將 MLflow 實驗和執行從本機追蹤伺服器複製到 Databricks 工作區。
  • 將任務關鍵性實驗和模型備份至另一個 Databricks 工作區。

範例

此範例說明如何使用工作區模型登錄來組建機器學習應用程式。

工作區模型登錄範例