已下载Dev环境ML模型,如何部署至Prod环境Databricks MLflow?
将本地下载的ML模型部署到Prod环境Databricks的MLflow中
首先,你提供的Dev环境模型下载代码,已添加中文注释如下:
import os import mlflow from mlflow.store.artifact.models_artifact_repo import ModelsArtifactRepository # 设置MLflow跟踪URI为Dev环境的Databricks mlflow.set_tracking_uri("databricks") # 目标模型名称 model_name = "testingModel" # 模型所处阶段(此处为未标记阶段) model_stage = "None" # 创建本地存储目录,目录已存在则跳过创建 os.makedirs("model2", exist_ok=True) # 从Dev的MLflow模型仓库下载全部模型文件到本地model2目录 local_path = ModelsArtifactRepository(f'models:/{model_name}/{model_stage}').download_artifacts("", dst_path='model2') print(f"{model_stage} 阶段的模型 {model_name} 已下载至本地路径:{local_path}")
以下是将下载后的模型部署到Prod环境MLflow的具体步骤:
1. 配置Prod环境的MLflow连接
在本地终端或Prod环境的Databricks Notebook中,先配置Prod环境的MLflow跟踪连接:
import mlflow # 若在本地执行,需先通过`databricks configure`完成Prod环境的CLI认证 # 方式1:使用Databricks CLI配置的prod别名 mlflow.set_tracking_uri("databricks://prod") # 方式2:直接填写Prod工作区的URL # mlflow.set_tracking_uri("https://<prod-workspace-url>/")
2. 导入模型到Prod的MLflow并注册
有两种常用方式,根据你的场景选择:
方式一:从本地直接导入注册
如果模型还在本地,可直接将其上传到Prod的MLflow实验并注册:
# 指定Prod环境的目标MLflow实验路径(可根据实际调整) mlflow.set_experiment("/Shared/Production_Models") # 启动MLflow运行并导入模型 with mlflow.start_run(): # 注意:需根据原模型的框架选择对应的log_model方法(如sklearn/pyfunc/xgboost等) # 示例:若为Scikit-learn模型 mlflow.sklearn.log_model(local_path, "model") # 获取当前运行的模型 artifact URI model_uri = mlflow.get_artifact_uri("model") # 将模型注册到Prod的模型仓库(自定义注册后的模型名称) registered_model = mlflow.register_model(model_uri, "prod_testingModel")
方式二:从Prod DBFS导入注册
如果你已经手动将模型文件上传到Prod的DBFS路径(如dbfs:/prod_models/testingModel/),可直接从DBFS路径注册:
# 定义Prod DBFS中的模型根路径 dbfs_model_path = "dbfs:/prod_models/testingModel" # 将DBFS中的模型注册到Prod的MLflow模型仓库 registered_model = mlflow.register_model(f"file:{dbfs_model_path}", "prod_testingModel")
3. 部署为在线服务(可选)
若需将注册后的模型部署为可调用的在线服务,可使用Databricks Model Serving:
from databricks.sdk import WorkspaceClient import databricks.sdk.service.catalog as c # 初始化Prod工作区客户端 w = WorkspaceClient() # 创建模型服务端点 w.serving_endpoints.create( name="testing-model-prod-endpoint", config=c.ServingEndpointConfig( served_models=[ c.ServedModelInput( model_name="prod_testingModel", model_version=registered_model.version, workload_size="Small", # 可根据业务需求调整实例规格 scale_to_zero_enabled=True # 空闲时自动缩容到0,节省资源 ) ] ) )
内容的提问来源于stack exchange,提问作者Madushan
相关产品推荐
相关产品推荐

