You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Amazon SageMaker部署Sklearn模型失败:端点创建异常排查

错误原因分析

1. ModuleNotFoundError: No module named 'scipy.sparse._csr'

  • 核心原因是训练环境与SageMaker部署环境的依赖版本不兼容:你本地用Python 3.9.16训练模型,而SageMaker sklearn 1.2-1官方镜像默认使用Python 3.8,且内置的scipy版本与你本地训练时的版本存在差异。scipy.sparse._csr是scipy内部的底层模块,不同版本的scipy对该模块的结构或命名可能有调整,导致加载模型时找不到对应模块。
  • 另外,模型训练时使用的scikit-learn版本如果与镜像内置的1.2.1版本不一致,也可能引发依赖链的不兼容问题,间接导致该错误。

2. gunicorn套接字连接失败的502错误

这是衍生错误:由于模型加载失败(上述模块缺失问题),导致后端推理服务无法正常启动,gunicorn作为反向代理无法连接到服务进程,因此返回502 Bad Gateway错误。解决模块缺失问题后,该错误会自动消失。

SageMaker依赖安装方法

在SageMaker部署sklearn模型时,推荐通过以下两种规范方式安装自定义依赖:

  • 方式1:使用requirements.txt
    在部署代码包(包含inference.py和模型文件的目录)中添加requirements.txt文件,列出需要安装的依赖及精确版本。SageMaker会在启动端点前自动安装文件中的依赖。
    示例requirements.txt内容:
    scipy==1.10.1  # 替换为你本地训练时的scipy版本
    scikit-learn==1.2.1  # 与镜像内置版本一致,或匹配你训练时的版本
    
  • 方式2:自定义推理脚本中安装(仅应急,不推荐)
    在inference.py的model_fn函数前,添加依赖安装代码,但这种方式会增加启动时间,且不够规范:
    import subprocess
    import sys
    
    def install(package):
        subprocess.check_call([sys.executable, "-m", "pip", "install", package])
    
    install("scipy==1.10.1")
    
具体解决办法
  1. 对齐依赖版本
    • 本地运行pip show scipy和pip show scikit-learn,记录训练时使用的精确版本号。
    • 在部署代码包中添加requirements.txt,写入上述记录的版本号,确保部署环境与训练环境的依赖完全一致。
  2. 匹配Python版本
    • 如果坚持使用Python 3.9,更换SageMaker sklearn镜像为支持Python 3.9的版本,比如sklearn 1.3-1系列镜像(对应Python 3.9),在创建Model或Estimator时指定镜像URI(需根据你的AWS区域调整,例如746614075791.dkr.ecr.us-east-1.amazonaws.com/sagemaker-scikit-learn:1.3-1-cpu-py3)。
  3. 优化大模型加载
    • 由于模型大小达13.5GB,加载时可能占用大量内存,在model_fn中使用joblib.load时添加mmap_mode='r'参数,减少内存占用:
      import joblib
      
      def model_fn(model_dir):
          model = joblib.load(f"{model_dir}/your-model.joblib", mmap_mode='r')
          return model
      
  4. 本地预调试
    • 拉取对应SageMaker镜像到本地Docker环境,模拟部署流程调试:
      docker pull 746614075791.dkr.ecr.us-east-1.amazonaws.com/sagemaker-scikit-learn:1.2-1-cpu-py3
      docker run -it --rm -v /path/to/your/model:/opt/ml/model <镜像ID> /bin/bash
      
      进入容器后,安装依赖并尝试加载模型,快速定位问题。

内容的提问来源于stack exchange,提问作者Sharhad

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.22 22:43:16