Amazon SageMaker训练模型无法识别,推理任务启动失败求助
问题分析与解决
核心问题
- 模型路径错误:你指定的
model_s3_path指向的是训练任务的代码包sourcedir.tar.gz,而非训练完成后生成的模型文件。训练任务的S3目录中,source文件夹存放上传的训练代码,output文件夹才包含训练好的model.tar.gz。 - 模型未在SageMaker中注册:创建
Model对象后未执行创建/部署操作,导致SageMaker系统中不存在该模型实例,model.name对应的模型无法被识别。
修正后的代码
import sagemaker from sagemaker.model import Model # 设置会话参数 sagemaker_session = sagemaker.Session() role = sagemaker.get_execution_role() # 修正模型路径:指向训练任务output目录下的model.tar.gz model_s3_path = 's3://sagemaker-us-west-1-6584743930/pytorch-training-2024-05-16-15-18-34-042/output/model.tar.gz' input_s3_path = 's3://some-bucket/inference/beauty_annotations_simple_transformer.csv' output_s3_path = 's3://some-bucket/inference/output/' # 定义实例类型 instance_type = 'ml.m5.large' # 创建Model对象 model = Model( model_data=model_s3_path, role=role, framework_version='2.0', entry_point='inference.py', source_dir='./source_dir' ) # 直接通过Model创建Transformer(自动完成模型注册) transformer = model.transformer( instance_count=1, instance_type=instance_type, output_path=output_s3_path, assemble_with='Line', accept='application/jsonlines', ) # 启动批量转换任务 transformer.transform( data=input_s3_path, content_type='text/csv', split_type='Line', ) # 等待任务完成 transformer.wait()
额外说明
- 确认
model.tar.gz存在于指定的S3路径中,训练任务完成后会自动将模型打包上传至该位置。 - 使用
model.transformer()方法可跳过手动注册模型的步骤,该方法会自动处理模型在SageMaker系统中的注册逻辑。
内容的提问来源于stack exchange,提问作者Cyrus Mohammadian
相关产品推荐
相关产品推荐

