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

AWS SageMaker: Create an endpoint using a trained model hosted in S3

我关注了这个tutorial,主要针对jupyter notebook,针对外部处理做了一些微调。我创建了一个项目,可以在本地准备我的数据集,将其上传到 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) 中的模型加载估算器?或者,无论如何,创建一个端点而不再次训练它?

所以,翻到运行很多页后,才发现一个线索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')

请不要忘记在使用后禁用您的端点。这真的很重要!端点按“运行ning”收费,不仅按使用

收费

希望也能帮到你!

  1. 使用以下代码部署模型

    model = sagemaker.Model(role=role,
                            model_data=### s3 location of tar.gz file,
                            image_uri=### the inference image uri,
                            sagemaker_session=sagemaker_session,
                            name=## model name)
    
    model_predictor = model.deploy(initial_instance_count=1,
                                   instance_type=instance_type)
    
  2. 初始化预测器

    model_predictor = sagemaker.Predictor(endpoint_name= model.endpoint_name)
    
  3. 最终预测使用

    model_predictor.predict(##your payload)