AzureML加载AutoML模型时报HoltWintersResultsWrapper导入错误
根因说明
该报错与是否启用指数类模型无关,核心是训练与加载环境的依赖版本不匹配:
HoltWintersResultsWrapper是AzureML AutoML运行时的内置适配类,仅存在于和训练任务所用AutoML SDK严格匹配的statsmodels版本中,公开发行的statsmodels 0.13.0及以上版本已经重构移除了这个内部类,盲目把依赖更新到最新反而会触发版本断层。- 即使你在AutoML配置中排除了指数平滑模型,AutoML的时序特征处理、模型包装层依然会导入该模块,因此排除模型类型无法解决问题。
- 通用AzureML策展环境默认拉取最新版依赖,和你训练任务当时锁定的依赖版本不一致,所以切换后依然会报错。
解决步骤
- 提取训练时的精确依赖版本
进入AzureML工作室找到对应AutoML训练Run,在「输出+日志」路径下找到system_logs/conda/env_dependencies.yml,记录文件中azureml-automl-runtime、statsmodels、joblib、pandas的精确版本号,不要使用latest标签。 - 在模型加载环境中安装完全对应版本的依赖,示例命令:
安装完成后不要单独升级上述包,避免再次出现版本错位。pip install statsmodels==0.11.1 azureml-automl-runtime==1.47.0 joblib==1.0.1 - 更简便的方案:直接复用训练Run的原生环境,无需手动核对版本,参考代码如下:
如果需要做在线部署,直接将上述拿到的from azureml.core import Workspace, Run from azureml.core.model import Model import joblib ws = Workspace.from_config() # 将引号内内容替换为你的AutoML训练任务实际Run ID training_run = Run.get(ws, run_id="your_automl_training_run_id") # 直接拉取训练时锁定的环境配置 infer_env = training_run.get_environment() model_obj = Model(ws, "ModelName") model_path = model_obj.download(exist_ok=True) model = joblib.load(model_path)infer_env传入部署配置即可,不需要手动调整环境依赖。 - 避坑提示:不要尝试手动复制旧版statsmodels中的
HoltWintersResultsWrapper类到当前环境补全导入,会触发后续一连串反序列化依赖错误,版本严格对齐是唯一稳定的解决方式。
内容的提问来源于stack exchange,提问作者E.Brum
相关产品推荐
相关产品推荐

