SageMaker自定义推理容器部署报No module named 'model_handler'错误
报错根因与修复方案
ModuleNotFoundError: No module named 'model_handler' 核心是Python模块搜索路径缺失、handler入口配置错误、类定义逻辑错误三类问题,按以下步骤逐一修复即可:
1. 修正入口文件配置
在入口文件中新增Python搜索路径添加逻辑,同时补全handler服务的入口类指向,修改后代码如下:
import sys import os # 将当前文件所在目录加入Python模块搜索路径 sys.path.append(os.path.dirname(os.path.abspath(__file__))) from sagemaker_inference import model_server # 格式要求:文件路径:入口类名,使用绝对路径可避免路径匹配异常 HANDLER_SERVICE = "/home/model-server/model_handler.py:ModelHandler" model_server.start_model_server(handler_service=HANDLER_SERVICE)
2. 修正model_handler.py类继承逻辑
原代码中super调用传入了不存在的类名HandlerService,需修正为实际定义的类名ModelHandler:
from sagemaker_inference.default_handler_service import DefaultHandlerService from sagemaker_inference.transformer import Transformer from CustomHandler import CustomHandler class ModelHandler(DefaultHandlerService): def __init__(self): transformer = Transformer(default_inference_handler=CustomHandler()) super(ModelHandler, self).__init__(transformer=transformer)
3. 修复CustomHandler.py潜在报错
原代码存在未定义变量all_item1、all_item2、process_item1、process_item2,需补充对应变量初始化、自定义处理函数的实现;同时建议补充非application/json格式请求的异常处理逻辑,避免后续部署触发新报错。
4. 确认Dockerfile配置正确
构建镜像时需确保所有业务代码文件被复制到对应路径,且工作目录配置正确,Dockerfile参考配置片段如下:
# 复制所有代码文件到model server工作目录 COPY serve.py /home/model-server/ COPY model_handler.py /home/model-server/ COPY CustomHandler.py /home/model-server/ # 设置工作目录 WORKDIR /home/model-server # 赋予入口文件执行权限 RUN chmod +x /home/model-server/serve.py
内容的提问来源于stack exchange,提问作者Daniel Wyatt
相关产品推荐
相关产品推荐

