S3桶中tar.gz文件无法在SageMaker加载:inference.py缺失报错
问题排查与解决
核心原因:压缩包目录结构不符合SageMaker要求
SageMaker的PyTorchModel要求解压后的inference.py必须在压缩包的根目录,如果你的压缩包是把包含文件的文件夹整体打包,解压后会出现birefnet/inference.py这种层级结构,就会触发找不到文件的错误。
具体解决步骤
1. 修正压缩包打包方式
- 打开终端,切换到所有文件(inference.py、requirements.txt、模型文件等)所在的同级目录
- 执行正确的打包命令,确保所有文件直接放在压缩包根目录:
tar -czvf birefnet.tar.gz inference.py requirements.txt 模型相关文件/
注意:不要把当前文件夹本身打包进去,比如不要执行tar -czvf birefnet.tar.gz ./(这样会把当前目录作为根目录下的子文件夹),要明确指定需要打包的文件/文件夹。
2. 验证压缩包结构
- 本地解压压缩包,确认解压后直接能看到
inference.py,而不是嵌套在某个子文件夹里:
tar -xzvf birefnet.tar.gz ls
执行ls后应该直接显示inference.py、requirements.txt等文件。
3. 重新上传并确认路径
- 将修正后的
birefnet.tar.gz重新上传到S3,确保model_data参数里的S3路径完全正确(桶名、文件路径无拼写错误)。
4. 额外排查点
- 确认SageMaker执行角色(
role)拥有访问该S3桶的权限(比如附加AmazonS3ReadOnlyAccess策略,或者更精细的桶权限)。 - 检查
inference.py的文件名是否大小写正确(Linux环境下区分大小写,确保代码里的entry_point='inference.py'和实际文件名一致)。
内容的提问来源于stack exchange,提问作者dev_seo
相关产品推荐
相关产品推荐

