部署预训练PyTorchModel后调用Sagemaker端点触发500服务器错误
PyTorch模型部署Sagemaker端点报错解决
错误原因
报错[Errno 21] Is a directory: '/opt/ml/model'的核心问题是:你的代码尝试将/opt/ml/model目录当作文件读取,或者上传的model.tar.gz解压结构不符合Sagemaker的要求。
Sagemaker部署PyTorch模型时,会自动把model.tar.gz解压到/opt/ml/model目录下。如果解压后该目录下还有嵌套子文件夹,而你的inference.py直接以/opt/ml/model作为模型文件路径,就会触发这个目录读取错误。
修复方案
调整model.tar.gz的压缩结构
确保压缩包解压后,模型文件(如.pt、.pth)直接位于根层级,而非子文件夹内。正确的压缩结构示例:model.tar.gz ├── model.pth └── config.json(如果有依赖配置文件)避免这种错误结构:
model.tar.gz ├── model_folder │ └── model.pth修正inference.py中的模型加载路径
如果模型确实需要放在子目录中,要在inference.py里明确指定子路径,比如:import torch model = torch.load('/opt/ml/model/model_folder/model.pth')不要直接使用
/opt/ml/model作为模型文件路径。理清source_dir的文件路径
你代码中指定的source_dir='model/code'会将该目录下的文件复制到容器的/opt/ml/code目录,注意不要混淆/opt/ml/model(模型文件目录)和/opt/ml/code(代码目录)的路径,避免在inference.py中写错路径。
内容的提问来源于stack exchange,提问作者Meghana S
相关产品推荐
相关产品推荐

