開始
用戶指南
管理指南
參考指南
資源
2022年11月11日更新
給我們反饋
一個MLflow模型是包裝機器學習模型的標準格式,可以在各種下遊工具中使用——例如,Apache Spark上的批處理推理或通過REST API的實時服務。該格式定義了一種約定,允許您以不同的格式保存模型口味(python-function、pytorch、sklearn等等),它們可以通過不同的模型來理解服務和推理平台Beplay体育安卓版本.
在Databricks Runtime 8.4 ML及以上版本中,當您記錄一個模型時,MLflow會自動記錄日誌conda.yaml而且讓文件。您可以使用這些文件來重新創建模型開發環境,並使用conda或皮普.
conda.yaml
讓
conda
皮普
重要的
蟒蛇公司更新了他們的服務條款觀看anaconda.org頻道。根據新的服務條款,如果您依賴Anaconda的包裝和分銷,您可能需要一個商業許可證。看到蟒蛇商業版常見問題解答更多信息。你使用任何蟒蛇頻道都要遵守他們的服務條款。
MLflow模型以前記錄過v1.18(Databricks Runtime 8.3 ML或更早版本)默認使用conda進行日誌記錄違約通道(https://repo.anaconda.com/pkgs/)作為依賴性。由於此許可證變更,Databricks已停止使用違約通道用於使用MLflow v1.18及以上版本記錄的模型。默認的記錄通道是現在conda-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下载地址如果您通過使用Databricks使用Anaconda.com回購是Anaconda的條款允許的,您不需要采取任何行動。
如果您想要更改模型環境中使用的通道,您可以使用新的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())
為了準確地加載模型,您應該確保模型依賴項與正確的版本加載到筆記本環境中。在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 = " conda "在mlflow.pyfunc.spark_udf調用。這恢複了PySpark UDF上下文中的模型依賴關係,並且不影響外部環境。
pyfunc
mlflow.pyfunc.get_model_dependencies
%皮普安裝<文件路徑>
env_manager = " conda "
mlflow.pyfunc.spark_udf
您還可以在Databricks Runtime 10.5或以下版本中通過手動安裝使用此功能MLflow版本1.25.0或以上:
%皮普安裝“mlflow > = 1.25.0”
當您在Databricks筆記本中記錄模型時,Databricks會自動生成您可以複製並用於加載和運行模型的代碼片段。查看這些代碼片段:
導航到生成模型的運行的Runs屏幕。(見查看筆記本實驗參閱如何顯示“運行”界麵。)
滾動到工件部分。
單擊已登錄模型的名稱。右邊會打開一個麵板,顯示代碼,您可以用來加載已記錄的模型,並在Spark或pandas DataFrames上進行預測。
有關日誌模型的示例,請參見中的示例跟蹤機器學習訓練運行實例.有關加載日誌模型進行推斷的示例,請參見下麵的示例。
中注冊模型MLflow模型注冊表,一個集中的模型存儲,它提供一個UI和一組api來管理MLflow模型的整個生命周期。有關Model Registry的一般信息,請參見MLflow模型注冊表在Databricks.有關如何使用模型注冊表管理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模型:/<的名字>/<版本|階段>
你可以用無服務器實時推理或基於數據庫的經典MLflow模型托管模型注冊表中的機器學習模型作為REST端點。這些端點根據模型版本及其階段的可用性自動更新。
還可以使用將模型部署到第三方服務框架mlflow。< deploy-type > .deploy ().參見以下示例。
mlflow。< deploy-type > .deploy ()