日誌模型依賴

在本文中,您將了解如何日誌模型構件的模型及其依賴項,因此他們可以在您的環境中服務等生產任務模型。

日誌Python包依賴關係模型

MLflow原生支持一些Python毫升庫,MLflow可以可靠的日誌為模型,使用這些庫的依賴關係。看到內置模型口味

例如,MLflow支持scikit-learnmlflow。sklearn模塊,和命令mlflow.sklearn.log_model日誌sklearn版本。這同樣適用於autologging與ML庫。看到MLflow github庫額外的例子。

為毫升庫,可以安裝皮普安裝PACKAGE_NAME = =版本口味,但沒有內置MLflow模型,你可以登錄這些包使用mlflow.pyfunc.log_model方法。確保日誌的庫版本的需求,例如,f”nltk = = {nltk.__version__}”而不是僅僅nltk

mlflow.pyfunc.log_model支持日誌記錄:

  • 公共和自定義庫打包為雞蛋或車輪。

  • 公共包PyPI上和私下自己包PyPI服務器托管。

mlflow.pyfunc.log_model自動,MLflow試圖推斷出的依賴關係。MLflow推斷使用的依賴關係mlflow.models.infer_pip_requirements,並記錄他們文件作為模型工件。

在舊版本,MLflow有時沒有自動識別所有Python需求,特別是圖書館不是一個內置模型的味道。在這些情況下,您可以指定額外的依賴關係extra_pip_requirements參數log_model命令。

重要的

你也可以覆蓋整個的需求conda_envpip_requirements參數,但是這樣做通常是沮喪,因為這將覆蓋的依賴性MLflow自動回升。看到一個如何使用的例子“pip_requirements”參數覆蓋需求

自定義模型日誌

場景更多自定義模型記錄是必要的,您可以:

  • 寫一個自定義Python模型。這樣做允許您子類mlflow.pyfunc.PythonModel自定義初始化和預測。這種方法適用於定製Python-only模型。

  • 寫一個定製的味道。在這個場景中,您可以自定義日誌記錄超過通用pyfunc味道,但這樣做需要更多的工作來實現。

自定義Python代碼

你可能已經安裝了Python代碼依賴項不能使用%皮普安裝命令,如一個或多個. py文件。

日誌記錄模式時,您可以告訴MLflow模型可以找到這些依賴項通過使用在指定的路徑code_path參數mlflow.pyfunc.log_model。通過使用MLflow存儲任何文件或目錄code_path作為構件的模型代碼目錄中。當加載模型,MLflow添加這些文件或目錄到Python路徑。這條路線也適用於自定義Python輪子,可以包括在模型中使用code_path,就像. py文件。

mlflowpyfunclog_model(artifact_path=artifact_path,code_path=(文件名py),data_path=data_path,conda_env=conda_env,)

日誌非python包依賴關係模型

MLflow並不會自動撿起非python依賴,比如Java包,R包,和本地包(比如Linux包)。這些包,你需要記錄額外的數據。

  • 依賴項列表:磚推薦日誌工件與模型指定這些非python依賴性。這可能是一個簡單的. txt. json文件。mlflow.pyfunc.log_model允許您指定使用這些額外的工件工件論點。

  • 自定義包:自定義Python一樣依賴以上,您需要確保部署環境中可用的包。等包在中央位置Maven中央或你自己的庫,確保可以在得分位置或服務時間。為私人包不托管在別處,你可以登錄包以及模型的構件。

部署模型的依賴性

當從MLflow跟蹤服務器部署模型或模型注冊表,您需要確保安裝部署環境有正確的依賴關係。最簡單的路徑可能取決於您的部署模式:批量/流或在線服務,和類型的依賴關係。

所有部署模式,磚推薦推理運行在相同的運行時版本中使用培訓,自磚運行時的各種庫中,您創建了您的模型已經安裝。MLflow磚自動保存的運行時版本MLmodel元數據文件中databricks_runtime領域,如databricks_runtime:10.2.x-cpu-ml-scala2.12

在線服務:磚模式

磚了模型服務,你MLflow機器學習模型是公開為可伸縮的REST API端點。

Python的依賴關係文件,磚和MLflow處理一切公共PyPI依賴性。類似地,如果您指定. py文件或車輪模型通過使用登錄時code_path為您自動參數,MLflow加載這些依賴項。

對於這些模型服務場景,見以下:

Python的依賴關係文件,磚和MLflow處理一切公共PyPI依賴性。類似地,如果您指定. py文件或車輪模型通過使用登錄時code_path為您自動參數,MLflow加載這些依賴項。

在線服務:第三方係統或碼頭工人的容器中

如果你的場景需要提供第三方服務的解決方案或自己的Docker-based解決方案,您可以導出您的模型作為一個碼頭工人容器。

磚推薦以下第三方Python自動處理依賴關係的服務。然而,對於非python依賴性,包括容器需要修改。

批處理和流媒體工作

批處理和流媒體評分應該運行磚的工作。通常一個筆記本工作就足夠了,最簡單的方法代碼是使用做準備磚模型注冊生成一個得分的筆記本。

下麵描述了過程和步驟,以確保安裝的依賴關係和相應的應用:

  1. 開始你的得分相同的集群磚在使用運行時版本的培訓。讀了databricks_runtime場的MLmodel元數據文件,並開始一個集群運行時版本。

    • 這可以手動完成集群中配置或自動定製邏輯。自動化的運行時版本格式,你讀到的元數據文件喬布斯API集群API

  2. 接下來,安裝任何非python依賴性。確保你非python依賴訪問您的部署環境,您可以:

    • 手動安裝的非python依賴性模型磚集群作為集群配置的一部分之前運行推理。

    • 或者,您可以編寫自定義邏輯在你進球的工作部署自動化的安裝到您的集群的依賴關係。假設你救了你非python依賴關係描述的構件日誌非python包依賴關係模型,這種自動化可以安裝庫使用庫API。或者,您可以編寫特定代碼來生成一個集群級初始化腳本安裝的依賴關係。

  3. 你得分的工作安裝Python工作中執行環境的依賴性。在磚,模型注冊表允許您生成一個筆記本的推理這是否適合你。

    • 當你使用磚模型注冊生成一個得分的筆記本,筆記本包含Python代碼安裝在模型的依賴性文件。你筆記本的工作批處理或流得分,這段代碼初始化你的筆記本環境,這樣模型依賴安裝和準備您的模型。

  4. MLflow處理任何自定義Python代碼中code_path參數log_model。這段代碼添加到Python路徑模型的預測()方法被調用。你也可以這樣做:手動

    請注意

    如果你指定. py文件或車輪模型登錄時使用code_path為您自動參數,MLflow加載這些依賴項。