AWS SageMaker部署TensorFlow模型遇ModuleNotFoundError问题求助
解决AWS SageMaker部署TensorFlow模型的两类问题
一、inference.py未出现在SageMaker实例中
使用sagemaker.tensorflow.TensorFlowModel部署时,必须保证自定义推理脚本被正确关联到部署流程,具体操作如下:
- 检查部署代码参数:初始化
TensorFlowModel时,需通过source_dir指定包含inference.py的本地目录,同时用entry_point明确脚本文件名。示例代码:from sagemaker.tensorflow import TensorFlowModel model = TensorFlowModel( model_data="s3://your-bucket/model-path/model.tar.gz", role="your-sagemaker-role-arn", source_dir="./local-inference-script-folder", # 指向本地存储inference.py的目录 entry_point="inference.py" ) - 处理GitHub来源的脚本:若
inference.py在GitHub checkpoint中,需先将脚本下载到本地source_dir目录,再执行部署——SageMaker不会自动拉取GitHub上的脚本文件。 - 验证S3模型包结构:如果是手动打包模型,确保
inference.py被包含在model.tar.gz压缩包内,解压后可直接看到该文件。
二、ModuleNotFoundError: No module named 'tensorflow'
该错误源于推理环境未安装TensorFlow或版本不匹配,可通过以下方式解决:
- 用
requirements.txt声明依赖:在source_dir目录下创建requirements.txt,添加与训练时一致的TensorFlow版本:
部署时SageMaker会自动安装文件内的依赖包。tensorflow==2.15.0 # 替换为你训练模型使用的具体版本 - 指定匹配的TensorFlow镜像:初始化
TensorFlowModel时,通过framework_version参数指定训练所用的TensorFlow版本,SageMaker会调用内置对应版本的预构建镜像:model = TensorFlowModel( model_data="s3://your-bucket/model-path/model.tar.gz", role="your-sagemaker-role-arn", source_dir="./local-inference-script-folder", entry_point="inference.py", framework_version="2.15.0" # 与训练版本保持一致 ) - 调试环境依赖:若以上方法无效,可在
inference.py开头添加调试代码,查看当前环境已安装包:
部署后查看CloudWatch日志,确认TensorFlow是否已安装,再针对性调整配置。import subprocess print(subprocess.check_output(["pip", "list"]).decode())
验证流程
- 本地打包测试:将
inference.py、requirements.txt(若有)和SavedModel文件打包为model.tar.gz,解压后确认文件结构正确。 - 上传至S3:将打包后的文件上传到指定的S3桶路径。
- 重新部署:使用正确参数初始化
TensorFlowModel并启动部署,查看日志确认脚本存在且依赖安装成功。
内容的提问来源于stack exchange,提问作者Sulove Dahal
相关产品推荐
相关产品推荐

