日誌模型依賴
在本文中,您將了解如何日誌模型構件的模型及其依賴項,因此他們可以在您的環境中服務等生產任務模型。
日誌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_env
和pip_requirements
參數,但是這樣做通常是沮喪,因為這將覆蓋的依賴性MLflow自動回升。看到一個如何使用的例子“pip_requirements”參數覆蓋需求。
自定義模型日誌
場景更多自定義模型記錄是必要的,您可以:
寫一個自定義Python模型。這樣做允許您子類
mlflow.pyfunc.PythonModel
自定義初始化和預測。這種方法適用於定製Python-only模型。一個簡單的例子,請參閱添加N模型示例。
對於一個更複雜的示例,請參見自定義XGBoost模型示例。
寫一個定製的味道。在這個場景中,您可以自定義日誌記錄超過通用
pyfunc
味道,但這樣做需要更多的工作來實現。
自定義Python代碼
你可能已經安裝了Python代碼依賴項不能使用%皮普安裝
命令,如一個或多個. py
文件。
日誌記錄模式時,您可以告訴MLflow模型可以找到這些依賴項通過使用在指定的路徑code_path
參數mlflow.pyfunc.log_model。通過使用MLflow存儲任何文件或目錄code_path
作為構件的模型代碼目錄中。當加載模型,MLflow添加這些文件或目錄到Python路徑。這條路線也適用於自定義Python輪子,可以包括在模型中使用code_path
,就像. py
文件。
mlflow。pyfunc。log_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依賴性,包括容器需要修改。
MLflow Docker-based的碼頭工人集成服務解決方案:MLflow模型build-docker
MLflow SageMaker集成:mlflow。sagemaker API
批處理和流媒體工作
批處理和流媒體評分應該運行磚的工作。通常一個筆記本工作就足夠了,最簡單的方法代碼是使用做準備磚模型注冊生成一個得分的筆記本。
下麵描述了過程和步驟,以確保安裝的依賴關係和相應的應用:
開始你的得分相同的集群磚在使用運行時版本的培訓。讀了
databricks_runtime
場的MLmodel
元數據文件,並開始一個集群運行時版本。接下來,安裝任何非python依賴性。確保你非python依賴訪問您的部署環境,您可以:
手動安裝的非python依賴性模型磚集群作為集群配置的一部分之前運行推理。
或者,您可以編寫自定義邏輯在你進球的工作部署自動化的安裝到您的集群的依賴關係。假設你救了你非python依賴關係描述的構件日誌非python包依賴關係模型,這種自動化可以安裝庫使用庫API。或者,您可以編寫特定代碼來生成一個集群級初始化腳本安裝的依賴關係。
你得分的工作安裝Python工作中執行環境的依賴性。在磚,模型注冊表允許您生成一個筆記本的推理這是否適合你。
當你使用磚模型注冊生成一個得分的筆記本,筆記本包含Python代碼安裝在模型的依賴性
讓
文件。你筆記本的工作批處理或流得分,這段代碼初始化你的筆記本環境,這樣模型依賴安裝和準備您的模型。
MLflow處理任何自定義Python代碼中
code_path
參數log_model
。這段代碼添加到Python路徑模型的預測()
方法被調用。你也可以這樣做:手動調用mlflow.pyfunc.spark_udf與
virtualenv env_manager = [' ' / ' conda ']
論點。提取的要求使用mlflow.pyfunc.get_model_dependencies和安裝使用% pip安裝。
請注意
如果你指定
. py
文件或車輪模型登錄時使用code_path
為您自動參數,MLflow加載這些依賴項。