AWS SageMaker:使用S3中托管的经过训练的模型创建终端节点

时间:2020-06-27 18:42:34

标签: python deep-learning amazon-sagemaker semantic-segmentation

我遵循了这个tutorial,主要用于jupyter笔记本,并对外部处理进行了一些最小的修改。我创建了一个项目,可以在本地准备我的数据集,将其上传到S3,进行训练,最后将模型预测变量部署到同一存储桶中。完美!

因此,经过训练并将其保存在S3存储桶中:

 ss_model.fit(inputs=data_channels, logs=True)

在作为端点部署时失败。因此,我发现了以多种方式托管端点的技巧,但不是从已经保存在S3中的模型中获得的。因为要进行托管,您可能需要获取估算器,正常情况下,估算器类似于:

 self.estimator = sagemaker.estimator.Estimator(self.training_image,
                                                role,
                                                train_instance_count=1,
                                                train_instance_type='ml.p3.2xlarge',
                                                train_volume_size=50,
                                                train_max_run=360000,
                                                output_path=output,
                                                base_job_name='ss-training',
                                                sagemaker_session=sess)

我的问题是:有没有办法从保存在S3(.tar)中的模型中加载估算器?还是要创建一个端点而无需再次训练?

1 个答案:

答案 0 :(得分:3)

因此,在运行许多页面之后,刚刚发现了一条线索here。最后,我发现了如何加载模型并创建端点:

def create_endpoint(self):
    sess = sagemaker.Session()
    training_image = get_image_uri(sess.boto_region_name, 'semantic-segmentation', repo_version="latest")        
    role = "YOUR_ROLE_ARN_WITH_SAGEMAKER_EXECUTION"
    model = "s3://BUCKET/PREFIX/.../output/model.tar.gz"

    sm_model = sagemaker.Model(model_data=model, image=training_image, role=role, sagemaker_session=sess)
    sm_model.deploy(initial_instance_count=1, instance_type='ml.p3.2xlarge')

请使用后不要忘记禁用端点。这真的很重要!端点通过“运行”收费,而不仅仅是使用

我希望它也可以帮助您!