You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

本地训练模型部署至SageMaker遇tar.gz解压错误,求排查思路

排查方向及解决办法
  • 压缩路径结构错误
    SageMaker的模型容器要求解压后模型文件直接在根目录,不能嵌套子文件夹。比如你本地模型在./my_model/titanic.joblib,如果打包时把my_model整个文件夹加进去,解压后模型会在my_model/子目录里,容器找不到。
    解决:打包时切换到模型所在的目录,只打包模型文件本身。示例代码:

    import tarfile
    import os
    
    # 切换到模型文件所在目录
    os.chdir("/path/to/model/folder")
    # 只打包模型文件,确保解压后在根目录
    with tarfile.open("model.tar.gz", "w:gz") as tar:
        tar.add("titanic.joblib")
    
  • 压缩参数不正确
    可能你用tarfile时没指定gz压缩模式,导致生成的是未压缩的tar包,只是后缀名写成了tar.gz。比如用了tarfile.open("model.tar.gz", "w")而不是w:gz,这样的文件SageMaker识别不了。
    解决:确认压缩模式是w:gz,代码参考上面的示例。本地可以用tar -tzf model.tar.gz命令验证,能看到文件列表说明是正确的gz压缩包。

  • S3上传时文件损坏
    如果你用文本模式上传二进制的tar.gz文件,会导致文件损坏。比如用Python的open("model.tar.gz", "r")读取上传,应该用二进制模式rb。
    解决:用boto3上传时指定正确的模式,示例:

    import boto3
    s3 = boto3.client("s3")
    with open("model.tar.gz", "rb") as f:
        s3.upload_fileobj(f, "your-bucket", "models/TitanicPredictor/model.tar.gz")
    

    也可以直接用AWS CLI上传,避免模式问题:aws s3 cp model.tar.gz s3://your-bucket/models/TitanicPredictor/

  • 容器对模型结构的额外要求
    如果你用的是SageMaker的内置算法容器(比如scikit-learn),除了模型文件,可能还需要自定义的inference.py和requirements.txt(如果有额外依赖),这些文件也要放在压缩包的根目录。如果缺少这些,即使解压成功,后续也会报错,但你当前的报错是解压失败,优先排查前面的点。


内容的提问来源于stack exchange,提问作者Jonathan Cauchi

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.06.23 02:40:07