能否将本地/外部训练的预训练模型上传至Databricks并部署服务
Databricks外部预训练模型上传与服务部署说明
首先给出明确结论:Databricks完全支持其他环境训练完成的预训练模型上传,以及基于平台的模型服务发布,不存在限制该类操作场景的情况。不管是本地机器、其他云平台、自建集群上用主流机器学习/深度学习框架训练得到的模型,都可以迁移到Databricks完成托管、推理、服务部署全流程。
本地预训练模型上传及部署的具体实现步骤
- 前期模型准备
先将本地训练好的模型按所用框架的标准格式导出:比如Scikit-learn/XGBoost模型导出为.pkl/.joblib格式、PyTorch模型导出为.pt/.pth格式、TensorFlow模型导出为SavedModel目录结构、HuggingFace模型导出对应权重和配置文件目录。建议把推理依赖的自定义预处理、后处理代码和模型文件放在同一目录下,避免后续部署出现依赖缺失问题。 - 模型文件上传到平台存储
根据模型大小选择对应上传方式:- 单文件/总大小2GB以内的小模型:可以直接通过Databricks工作区UI,进入DBFS(Databricks文件系统)或工作区目标目录后点击上传按钮选择本地文件;也可以安装
databricks-cli工具后用命令行上传,参考命令:databricks fs cp /本地模型存储路径 dbfs:/平台目标存储路径 --recursive - 总大小超过2GB的大模型:建议先将模型上传到Databricks工作区对接的云对象存储(S3、ADLS Gen2、GCS等),再通过挂载路径或直接授权读取的方式在平台内访问模型文件,避免大文件直传出现中断、校验失败问题。
- 单文件/总大小2GB以内的小模型:可以直接通过Databricks工作区UI,进入DBFS(Databricks文件系统)或工作区目标目录后点击上传按钮选择本地文件;也可以安装
- 模型注册至MLflow模型注册表
Databricks的模型全生命周期管理基于内置的MLflow实现,文件上传完成后,在平台Notebook中编写脚本加载模型,调用对应框架的MLflow接口将模型记录并注册到模型注册表即可,以Scikit-learn模型为例参考代码:
如果是PyTorch、TensorFlow、Transformers等其他框架的模型,只需要把上述代码中的import mlflow.sklearn import joblib # 读取已上传到DBFS的预训练模型 loaded_model = joblib.load("dbfs:/your/model/path/model.joblib") # 注册模型 with mlflow.start_run(): mlflow.sklearn.log_model( sk_model=loaded_model, artifact_path="pretrained_sklearn_model", registered_model_name="custom-uploaded-model" )mlflow.sklearn替换为对应框架的MLflow模块即可,整体逻辑完全一致。 - 发布模型服务
模型注册完成后,在MLflow模型注册表中选中对应模型的版本,进入Serving页面,选择匹配的计算资源规格(大模型建议选GPU节点),即可一键创建在线推理服务端点,生成的REST接口和平台原生训练的模型调用方式完全一致,也支持配置批量推理任务。
注意:如果上传的是自定义结构的非标准框架模型,需要自己实现MLflow的PythonModel接口重写
predict推理逻辑,即可正常完成注册和部署。
内容的提问来源于stack exchange,提问作者Sara
相关产品推荐
相关产品推荐

