Amazon SageMaker训练任务未生成推理Tar文件,如何创建?
生成模型推理用Tar文件的方法
方法一:本地通过AWS CLI打包
- 下载S3中的模型工件到本地目录:
aws s3 sync s3://你的存储桶名称/模型工件路径/ ./本地模型目录/ - 进入本地目录,打包所有文件为tar.gz:
cd 本地模型目录 && tar -czf inference-model.tar.gz ./* - 若需将Tar文件放回S3,执行:
aws s3 cp inference-model.tar.gz s3://你的存储桶名称/目标路径/
方法二:云端EC2实例打包(适合大模型,避免本地下载)
- 启动与S3同区域的EC2实例,确保存储容量足够容纳模型文件
- 安装AWS CLI(以Ubuntu为例):
sudo apt update && sudo apt install aws-cli -y - 同步S3模型文件到EC2本地:
aws s3 sync s3://你的存储桶名称/模型工件路径/ ./ec2模型目录/ - 打包文件:
cd ec2模型目录 && tar -czf inference-model.tar.gz ./* - 上传Tar文件回S3后,可终止EC2实例节省成本:
aws s3 cp inference-model.tar.gz s3://你的存储桶名称/目标路径/
方法三:修改训练脚本自动生成Tar文件
在训练代码末尾添加打包逻辑,训练完成后自动生成并上传Tar文件(以Python为例):
import tarfile import os import boto3 def pack_model_to_tar(model_dir, tar_output_path): with tarfile.open(tar_output_path, "w:gz") as tar: for root, _, files in os.walk(model_dir): for file in files: full_path = os.path.join(root, file) # 保持文件相对结构,避免打包时带绝对路径 tar.add(full_path, arcname=os.path.relpath(full_path, model_dir)) # 训练完成后执行以下代码 model_artifact_dir = "/训练任务输出的模型工件目录" tar_file_path = "/生成的Tar文件路径/inference-model.tar.gz" # 生成Tar包 pack_model_to_tar(model_artifact_dir, tar_file_path) # 上传到S3 s3_client = boto3.client("s3") s3_client.upload_file(tar_file_path, "你的存储桶名称", "目标路径/inference-model.tar.gz")
注意事项
- 打包时确保包含所有推理必需文件:safe tensors、模型配置文件(如
config.json)、分词器文件(如tokenizer.json)等,避免遗漏影响推理 - 若使用IAM权限,确保执行操作的账号拥有S3的读写权限以及EC2的相关权限(若用方法二)
内容的提问来源于stack exchange,提问作者kramer
相关产品推荐
相关产品推荐

