開始
加載和管理數據
處理數據
政府
參考和資源
2023年2月24日更新
給我們反饋
請注意
托管MLflow與穀歌Cloud上的Databricks集成需要Databricks運行時機器學習9.1 LTS或以上。
一個MLflow模型是一種包裝機器學習模型的標準格式,可以在各種下遊工具中使用——例如,Apache Spark上的批處理推理或通過REST API進行實時服務。格式定義了一種約定,允許您以不同的格式保存模型口味(python-function, pytorch, sklearn,等等),可以被不同的模型理解服務和推理平台Beplay体育安卓版本.
使用Databricks Runtime 8.4 ML及以上版本,當您記錄一個模型時,MLflow會自動記錄讓而且conda.yaml文件。您可以使用這些文件重新創建模型開發環境並使用virtualenv(推薦)或conda.
讓
conda.yaml
virtualenv
conda
重要的
Anaconda公司更新了他們的服務條款用於anaconda.org頻道。根據新的服務條款,如果您依賴Anaconda的包裝和分銷,您可能需要商業許可證。看到水蟒商業版常見問題解答獲取更多信息。您使用任何水蟒頻道是受他們的服務條款。
MLflow模型之前記錄過v1.18(Databricks Runtime 8.3 ML或更早版本)默認使用conda進行日誌記錄違約通道(https://repo.anaconda.com/pkgs/)作為依賴項。由於此許可證變更,Databricks已停止使用違約通道,用於使用MLflow v1.18及以上版本記錄的模型。缺省記錄的通道為nowconda-forge,其中指向社區管理https://conda-forge.org/.
違約
conda-forge
如果您在MLflow v1.18之前記錄模型,並且不排除違約通道從conda環境中獲取模型時,該模型可能依賴於違約你可能不想要的通道。要手動確認模型是否具有此依賴項,您可以進行檢查通道的價值conda.yaml與日誌模型一起打包的文件。例如,一個模型的conda.yaml與一個違約通道依賴關係可能是這樣的:
通道
渠道:-違約依賴關係:-python = 3.8.8-皮普-皮普:-mlflow-scikit-learn = = 0.23.2-cloudpickle = = 1.6.0的名字:mlflow-env
因為Databricks不能確定在您與Anaconda的關係下,是否允許您使用Anaconda存儲庫與模型進行交互,因此Databricks不會強迫其客戶進行任何更改。beplay体育app下载地址如果Anaconda的條款允許您通過使用Databricks使用Anaconda.com回購,則不需要采取任何行動。
如果您想要更改模型環境中使用的通道,您可以使用一個新的模型注冊表重新注冊模型conda.yaml.方法中指定通道來實現此功能conda_env參數的log_model ().
conda_env
log_model ()
有關的更多信息log_model ()API,請參閱MLflow文檔以了解您正在使用的模型風格,例如,Log_model用於scikit-learn.
欲知更多有關conda.yaml文件,請參閱MLflow文檔.
將模型記錄到MLflow跟蹤服務器,使用mlflow。<模型類型> .log_model(模型,…).
mlflow。<模型類型> .log_model(模型,…)
要加載先前記錄的模型以進行推斷或進一步開發,請使用mlflow。<模型類型> .load_model (modelpath),在那裏modelpath是下列之一:
mlflow。<模型類型> .load_model (modelpath)
modelpath
運行相對路徑(例如運行:/ {run_id} / {model-path})
運行:/ {run_id} / {model-path}
DBFS路徑
一個注冊模式路徑(例如模型:/ {model_name} / {model_stage}).
模型:/ {model_name} / {model_stage}
有關加載MLflow模型的選項的完整列表,請參見在MLflow文檔中引用工件.
對於Python MLflow模型,另一個選項是使用mlflow.pyfunc.load_model ()將模型作為通用Python函數加載。您可以使用下麵的代碼片段加載模型並對數據點進行評分。
mlflow.pyfunc.load_model ()
模型=mlflow.pyfunc.load_model(model_path)模型.預測(model_input)
作為另一種選擇,您可以將模型導出為Apache Spark UDF,用於在Spark集群上進行評分,可以作為批處理作業,也可以作為實時作業火花流的工作。
#將輸入數據表加載為Spark DataFrameinput_data=火花.表格(input_table_name)model_udf=mlflow.pyfunc.spark_udf(model_path)df=input_data.withColumn(“預測”,model_udf())
為了準確地加載模型,您應該確保將模型依賴項以正確的版本加載到notebook環境中。在Databricks Runtime 10.5 ML及以上版本中,如果在當前環境和模型依賴項之間檢測到不匹配,MLflow會警告您。
Databricks Runtime 11.0 ML及以上版本中包含了簡化恢複模型依賴關係的附加功能。在Databricks運行時11.0 ML及以上,用於pyfunc口味模型,你可以叫mlflow.pyfunc.get_model_dependencies檢索和下載模型依賴項。此函數返回依賴項文件的路徑,然後使用該路徑進行安裝%皮普安裝<文件路徑>.當您將模型作為PySpark UDF加載時,指定env_manager = " virtualenv "在mlflow.pyfunc.spark_udf調用。這將恢複PySpark UDF上下文中的模型依賴關係,並且不會影響外部環境。
pyfunc
mlflow.pyfunc.get_model_dependencies
%皮普安裝<文件路徑>
env_manager = " virtualenv "
mlflow.pyfunc.spark_udf
您也可以通過手動安裝在Databricks Runtime 10.5或以下版本中使用此功能MLflow 1.25.0或以上版本:
%皮普安裝“mlflow > = 1.25.0”
有關如何記錄模型依賴關係(Python和非Python)和工件的其他信息,請參見日誌模型依賴關係.
了解如何為模型服務記錄模型依賴關係和自定義工件:
使用依賴項部署模型
_
當您在Databricks筆記本中記錄模型時,Databricks會自動生成代碼片段,您可以複製這些代碼片段並使用它們來加載和運行模型。查看這些代碼片段:
導航到生成模型的運行的Runs屏幕。(見查看筆記本實驗查看如何顯示“運行”界麵。)
滾動到工件部分。
單擊記錄模型的名稱。右邊會打開一個麵板,顯示可以用來加載日誌模型並在Spark或pandas DataFrames上進行預測的代碼。
有關日誌記錄模型的示例,請參見中的示例跟蹤機器學習訓練運行實例.有關加載日誌模型進行推斷的示例,請參閱下麵的示例。
中注冊模型MLflow模型注冊表,一個集中的模型存儲,它提供了一個UI和一組api來管理MLflow模型的完整生命周期。有關模型注冊中心的一般信息,請參見MLflow模型注冊表上的數據.有關如何使用模型注冊表管理Databricks中的模型的說明,請參見管理模型生命周期.
要使用API注冊模型,請使用mlflow.register_model(“運行:/ {run_id} / {model-path}”,“{registered-model-name}”).
mlflow.register_model(“運行:/ {run_id} / {model-path}”,“{registered-model-name}”)
要在本地保存模型,請使用mlflow。<模型類型> .save_model(模型,modelpath).modelpath一定是DBFS路徑。例如,如果使用DBFS位置dbfs: / my_project_models為了存儲您的項目工作,您必須使用模型路徑/ dbfs my_project_models:
mlflow。<模型類型> .save_model(模型,modelpath)
dbfs: / my_project_models
/ dbfs my_project_models
modelpath=“- / dbfs / my_project_models /模型% f-% f"%(α,l1_ratio)mlflow.sklearn.save_model(lr,modelpath)
對於MLlib模型,使用毫升管道.
您可以下載帶有各種api的已注冊模型的日誌模型構件(例如模型文件、圖表和度量)。
Python API例子:
從mlflow.store.artifact.models_artifact_repo進口ModelsArtifactRepositorymodel_uri=MlflowClient.get_model_version_download_uri(model_name,model_version)ModelsArtifactRepository(model_uri).download_artifacts(artifact_path="")
Java API例子:
MlflowClientmlflowClient=新MlflowClient();//獲取已注冊模型版本的模型URI。字符串modelURI=mlflowClient.getModelVersionDownloadUri(modelName,modelVersion);//或直接下載模型工件。文件modelFile=mlflowClient.downloadModelVersion(modelName,modelVersion);
CLI命令例子:
mlflow工件下載--工件-uri模型:/<的名字>/<版本|階段>
你可以使用無服務器實時推理將模型注冊表中的機器學習模型作為REST端點托管。這些端點根據模型版本及其階段的可用性自動更新。
您還可以使用將模型部署到第三方服務框架MLflow的內置部署工具.