Azure Databricks分类模型服务端点加载失败:缺失pandas模块求助
解决Azure Databricks模型服务端点加载时的Pandas模块缺失问题
问题场景
在Azure Databricks Premium环境(西欧区域,Personal Compute集群策略,Runtime 12.2 LTS ML)中,注册分类模型(包括官方AutoML示例)后,通过GUI创建服务端点时,日志报错:
An error occurred while loading the model. No module named 'pandas.core.indexes.numeric'
训练集群本地Pandas版本为1.4.2,但多款模型均出现该问题,且创建端点时无法直接配置依赖包。
解决方案与调试建议
1. 注册模型时显式固定Pandas版本
训练模型时,在导出/注册模型的步骤中,明确指定与训练环境一致的Pandas版本,避免端点环境自动拉取不兼容的版本:
- 若使用MLflow注册模型,在
log_model方法中添加pip_requirements参数:import mlflow.sklearn mlflow.sklearn.log_model( model=your_model, artifact_path="model", pip_requirements=["pandas==1.4.2", "scikit-learn==1.1.3"] # 补充其他必要依赖 ) - 若为AutoML生成的模型,可在训练完成后,找到模型的
requirements.txt文件,手动添加pandas==1.4.2,再重新注册模型版本。
2. 同步训练与服务环境的依赖
从训练集群导出完整依赖列表,确保服务端点环境与训练环境完全一致:
- 在训练集群的Notebook中执行命令导出依赖:
pip freeze > requirements.txt - 注册模型时,将该
requirements.txt文件作为模型的依赖文件上传,或通过MLflow的conda_env参数指定环境配置。
3. 创建自定义服务环境
若默认服务环境的Pandas版本存在兼容性问题,可创建自定义环境来匹配训练环境:
- 进入Databricks控制台的模型服务 -> 环境页面,点击创建环境
- 选择基础镜像为
databricks/mlflow-serving:12.2-LTS(与训练Runtime版本匹配) - 在初始化命令中添加:
pip install pandas==1.4.2 - 保存自定义环境后,部署模型端点时选择该环境。
4. 调试端点环境的依赖版本
创建一个测试模型,用于打印端点环境的Pandas版本,确认版本差异:
import pandas as pd from sklearn.base import BaseEstimator, ClassifierMixin class TestModel(BaseEstimator, ClassifierMixin): def fit(self, X, y=None): return self def predict(self, X): return [0]*len(X) def load_context(self, context): print(f"Endpoint Pandas version: {pd.__version__}") # 注册测试模型 import mlflow mlflow.sklearn.log_model(TestModel(), "test-model", pip_requirements=["pandas==1.4.2"])
部署该模型端点后,查看日志中的版本信息,确认是否与训练环境一致,以此定位问题根源。
内容的提问来源于stack exchange,提问作者MattC
相关产品推荐
相关产品推荐

