共用方式為


搭配模型服務使用自定義 Python 連結庫

在本文中,您會瞭解如何在記錄模型時包含來自私人鏡像伺服器的自定義連結庫或連結庫,以便搭配模型服務模型部署使用。 您應該在已準備好部署定型 ML 模型之後,但在建立 Azure Databricks 模型服務端點之前,完成本指南中詳述的步驟。

模型開發通常需要使用自定義 Python 連結庫,其中包含前置處理或後置處理、自定義模型定義和其他共用公用程式的功能。 此外,許多企業安全性小組鼓勵使用私人 PyPi 鏡像,例如 Nexus 或 Artifactory,以減少供應鏈攻擊的風險。 Azure Databricks 提供 原生支援 ,從 Azure Databricks 工作區中的私人鏡像安裝自定義連結庫和連結庫。

需求

  • MLflow 1.29 或更高版本

步驟 1:上傳相依性檔案

Databricks 建議您將相依性檔案上傳至 Unity 目錄 磁碟區。 或者,您可以使用 Azure Databricks UI 將它上傳至 Databricks 文件系統 (DBFS )。

若要確保您的連結庫可供您的筆記本使用,您必須使用 %pip%加以安裝。 使用 %pip 會在目前的筆記本中安裝連結庫,並將相依性下載至叢集。

步驟 2:使用自訂連結庫記錄模型

重要

如果您指向自定義 PyPi 鏡像來安裝私人連結庫,則不需要本節中的指引。

安裝連結庫並將 Python 轉輪檔案上傳至 Unity 目錄磁碟區或 DBFS 之後,請在腳本中包含下列程式代碼。 在 中 extra_pip_requirements 指定相依性檔案的路徑。

mlflow.sklearn.log_model(model, "sklearn-model", extra_pip_requirements=["/volume/path/to/dependency.whl"])

針對 DBFS,請使用下列專案:

mlflow.sklearn.log_model(model, "sklearn-model", extra_pip_requirements=["/dbfs/path/to/dependency.whl"])

如果您有自定義連結庫,您必須在設定記錄時指定與模型相關聯的所有自定義 Python 連結庫。 您可以使用 log_model() 中的 conda_env 參數來執行此extra_pip_requirements動作。

重要

如果使用 DBFS,請務必在記錄 extra_pip_requirements時,在路徑前面dbfs包含正斜線 /。 在使用 Azure Databricks 上的檔案中深入瞭解 DBFS 路徑。

from mlflow.utils.environment import _mlflow_conda_env
conda_env =  _mlflow_conda_env(
            additional_conda_deps= None,
            additional_pip_deps= ["/volumes/path/to/dependency"],
            additional_conda_channels=None,
)
mlflow.pyfunc.log_model(..., conda_env = conda_env)

步驟 3:使用 Python 轉輪檔案更新 MLflow 模型

MLflow 提供 add_libraries_to_model() 公用程式,以將其所有相依性預先封裝為 Python 轉盤檔案來記錄您的模型。 除了指定為模型相依性的其他所有連結庫之外,此連結庫也會封裝您的自定義連結庫。 這可確保模型所使用的連結庫完全是可從定型環境存取的連結庫。

在下列範例中, model_uri 使用語法 models:/<model-name>/<model-version>參考模型登錄。

當您使用模型登錄 URI 時,此公用程式會在您現有的已註冊模型中產生新版本。

import mlflow.models.utils
mlflow.models.utils.add_libraries_to_model(<model-uri>)

步驟 4:為您的模型提供服務

當模型登錄中提供包含套件的新模型版本時,您可以將此模型版本新增至具有 模型服務的端點。