在本文中,您會瞭解如何在記錄您的模型時包含來自自定義庫或私人鏡像伺服器的庫,以便於搭配 馬賽克 AI 模型服務 模型部署使用它們。 您應該在已準備好部署定型 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 連結庫。 您可以在 extra_pip_requirements中使用 conda_env 或 參數。
重要
如果使用 DBFS,請務必在記錄 /時,在路徑前面dbfs包含正斜線 extra_pip_requirements。 在使用 Azure Databricks 上的檔案中深入瞭解 DBFS 路徑。
from mlflow.utils.environment import _mlflow_conda_env
mlflow.pyfunc.log_model(
name="model",
python_model=MyModel(),
extra_pip_requirements=["/volumes/path/to/dependency"],
)
如果您的自訂程式庫儲存在磁碟區或 DBFS 以外的位置,您可以使用參數指定 code_paths 其位置,並傳 "code/<wheel-file-name>.whl" 入 extra_pip_requirements 參數。
mlflow.pyfunc.log_model(
name="model",
python_model=MyModel(),
code_paths=["/path/to/dependency.whl"], # This will be logged as `code/dependency.whl`
extra_pip_requirements=["code/dependency.whl"],
)
步驟 3:使用 Python 轉輪檔案更新 MLflow 模型
MLflow 提供 add_libraries_to_model() 公用程式,以將其所有相依性預先封裝為 Python 轉盤檔案來記錄您的模型。 除了指定為您模型相依性的其他所有程式庫之外,這也會包含您的自定義程式庫。 這可確保模型所使用的函式庫正是可從訓練環境存取的函式庫。
在下列範例中,model_uri 使用語法 models:/<uc-model>/<model-version>引用 Unity Catalog 模型註冊表。 若要使用舊版的工作區模型登錄,請參考 models:/<model-name>/<model-version>。
當您使用模型登錄 URI 時,此公用程式會在您現有的已註冊模型中產生新版本。
import mlflow.models.utils
mlflow.models.utils.add_libraries_to_model(<model-uri>)
步驟 4:為您的模型提供服務
當模型登錄中提供包含套件的新模型版本時,您可以將此模型版本新增至具有 模型服務的端點。