Lambda中运行Sagemaker SDK遇INFO日志报错,求解决方案
首先明确:你看到的sagemaker.config INFO日志是正常提示,SDK只是找不到默认配置文件,不会影响功能,可忽略或通过调整日志级别隐藏。
从端点日志来看,推理流程(input_fn→predict_fn→output_fn)已完整执行,且返回了HTTP 200状态码,说明SageMaker端点本身工作正常。问题出在Lambda侧的predict调用环节,以下是排查及解决步骤:
调整Lambda超时时间
端点的后端响应时间为3557ms(约3.5秒),若Lambda的超时设置小于该值,会被强制中断执行。建议将Lambda函数的超时时间调整至至少5秒以上(比如10秒),确保能等待端点返回结果。验证输入数据与序列化器匹配
确保decode变量的格式符合端点inference.py中input_fn的预期格式。如果端点期望JSON输入,需显式指定序列化器,避免数据格式不匹配导致中断:from sagemaker.pytorch.model import PyTorchPredictor from sagemaker.serializers import JSONSerializer from sagemaker.deserializers import JSONDeserializer predictor = PyTorchPredictor( endpoint_name=ENDPOINT_NAME, serializer=JSONSerializer(), deserializer=JSONDeserializer() ) result = predictor.predict(decode)捕获异常并打印详细错误栈
当前日志仅显示INFO级信息,无法定位具体错误。在代码中添加异常捕获,获取详细报错信息:try: result = predictor.predict(decode) print(f"Inference result: {result}") except Exception as e: print(f"Prediction error: {str(e)}") import traceback traceback.print_exc()通过错误栈可以明确是序列化错误、权限问题还是其他异常导致的中断。
检查Lambda IAM权限
确认Lambda执行角色已配置sagemaker:InvokeEndpoint权限,权限不足会导致调用静默中断,需在IAM角色的权限策略中添加该权限。确认SDK版本兼容性
虽然安装了适配Python 3.11的库,但需验证SageMaker SDK版本与端点使用的PyTorch版本是否兼容。例如端点使用PyTorch 2.x时,建议SDK版本≥2.100.0,避免版本不兼容引发的隐性错误。检查输入数据大小
若decode数据过大(超过Lambda内存限制或SageMaker端点默认6MB的Payload限制),会导致调用中断。可尝试压缩数据,或调整端点的Payload限制参数。
内容的提问来源于stack exchange,提问作者Karam Razooq

