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

在SageMaker部署Sklearn KNN模型时遇scipy.sparse._csr模块缺失错误

解决Amazon SageMaker部署KNN模型时的scipy模块缺失问题

问题分析

错误No module named 'scipy.sparse._csr'的核心原因是推理容器中的scipy版本与训练模型时使用的版本不匹配,或者容器默认环境未安装所需的scipy子模块。即使本地Python版本与SageMaker内核一致,推理容器作为独立运行环境,仍可能存在依赖缺失或版本兼容性问题。

解决方案

方法1:通过requirements.txt指定依赖版本

这是最直接的修复方式,强制推理容器安装与训练阶段完全一致的依赖包:

  1. 在存放model_script.py的目录下创建requirements.txt文件,添加以下内容(替换为你训练时实际使用的版本号):
scipy==1.7.3
scikit-learn==1.0.1
joblib==1.1.0
  1. 修改deploy.ipynb中的SKLearnModel初始化代码,添加source_dir参数指向包含这两个文件的本地目录:
model = SKLearnModel(model_data=f's3://{bucket_name}/model.tar.gz',
                     role=role,
                     entry_point='model_script.py',
                     source_dir='./your-local-source-folder',  # 替换为实际路径
                     framework_version='1.0-1',
                     py_version='py3')

predictor = model.deploy(instance_type='ml.m5.large', initial_instance_count=1)
predictor.wait()

方法2:在推理脚本中显式导入依赖(补充验证)

如果方法1仍存在问题,可以在model_script.py开头显式导入scipy核心模块,确保容器加载对应组件:

import os
import joblib
import json
import scipy.sparse  # 显式导入scipy.sparse模块

关键注意事项

  • 必须保证requirements.txt中的包版本与训练模型时使用的版本完全一致,避免序列化/反序列化过程中的兼容性冲突。
  • 打包模型生成model.tar.gz时,不要将本地的依赖包一同打包,让SageMaker容器通过requirements.txt重新安装对应版本的依赖。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.14 03:05:28