当前位置: 首页 > 知识库问答 >
问题:

如何使用AWS SageMaker笔记本实例部署预先训练的模型?

国兴贤
2023-03-14

我有一个预先训练好的模型,我正在从S3 Bucket加载到AWS SageMaker笔记本实例中,在提供测试图像用于从S3 Bucket进行预测后,它会根据需要为我提供准确的结果。我想部署它,这样我就可以有一个endpoint,我可以进一步与AWS Lambda函数和AWS API网关集成,这样我就可以使用实时应用程序的模型。知道如何从AWS Sagemaker笔记本实例部署模型并获取其endpoint吗?中的代码。ipynb文件如下所示,以供参考。

import boto3
import pandas as pd
import sagemaker
#from sagemaker import get_execution_role
from skimage.io import imread
from skimage.transform import resize
import numpy as np
from keras.models import load_model
import os
import time
import json
#role = get_execution_role()
role = sagemaker.get_execution_role()

bucketname = 'bucket' # bucket where the model is hosted
filename = 'test_model.h5' # name of the model
s3 = boto3.resource('s3')
image= s3.Bucket(bucketname).download_file(filename, 'test_model_new.h5')
model= 'test_model_new.h5'

model = load_model(model)

bucketname = 'bucket' # name of the bucket where the test image is hosted
filename = 'folder/image.png' # prefix
s3 = boto3.resource('s3')
file= s3.Bucket(bucketname).download_file(filename, 'image.png')
file_name='image.png'

test=np.array([resize(imread(file_name), (137, 310, 3))])

test_predict = model.predict(test)

print ((test_predict > 0.5).astype(np.int))

共有1个答案

南门棋
2023-03-14

这是对我有效的解决方案。只需遵循以下步骤。

1-在SageMaker的jupyter环境中,借助

from keras.models import load_model

model = load_model (<Your Model name goes here>) #In my case it's model.h5

2-现在模型已经加载,将其转换为AWS所需要的原型格式

def convert_h5_to_aws(loaded_model):

from tensorflow.python.saved_model import builder
from tensorflow.python.saved_model.signature_def_utils import predict_signature_def
from tensorflow.python.saved_model import tag_constants

model_version = '1'
export_dir = 'export/Servo/' + model_version
# Build the Protocol Buffer SavedModel at 'export_dir'
builder = builder.SavedModelBuilder(export_dir)
# Create prediction signature to be used by TensorFlow Serving Predict API
signature = predict_signature_def(
    inputs={"inputs": loaded_model.input}, outputs={"score": loaded_model.output})
from keras import backend as K

with K.get_session() as sess:
    # Save the meta graph and variables
    builder.add_meta_graph_and_variables(
        sess=sess, tags=[tag_constants.SERVING], signature_def_map={"serving_default": signature})
    builder.save()
import tarfile
with tarfile.open('model.tar.gz', mode='w:gz') as archive:
    archive.add('export', recursive=True)
import sagemaker

sagemaker_session = sagemaker.Session()
inputs = sagemaker_session.upload_data(path='model.tar.gz', key_prefix='model')
convert_h5_to_aws(model):

3-现在您可以在以下帮助下部署您的模型

!touch train.py
from sagemaker.tensorflow.model import TensorFlowModel
sagemaker_model = TensorFlowModel(model_data = 's3://' + sagemaker_session.default_bucket() + '/model/model.tar.gz',
                                  role = role,
                                  framework_version = '1.15.2',
                                  entry_point = 'train.py')
%%timelog
predictor = sagemaker_model.deploy(initial_instance_count=1,
                                   instance_type='ml.m4.xlarge')

这将生成可以在Amazon SageMaker的推断部分看到的endpoint,在该endpoint的帮助下,您现在可以从jupyter笔记本以及web和移动应用程序进行预测。Liam的Youtube教程和Priya的AWS博客对我帮助很大。

 类似资料:
  • 错误为: 谁能帮帮我吗?

  • 本文向大家介绍Pytorch加载部分预训练模型的参数实例,包括了Pytorch加载部分预训练模型的参数实例的使用技巧和注意事项,需要的朋友参考一下 前言 自从从深度学习框架caffe转到Pytorch之后,感觉Pytorch的优点妙不可言,各种设计简洁,方便研究网络结构修改,容易上手,比TensorFlow的臃肿好多了。对于深度学习的初学者,Pytorch值得推荐。今天主要主要谈谈Pytorch是

  • 我试图避免将现有的模型训练过程迁移到SageMaker,并避免创建一个定制Docker容器来承载我们训练过的模型。 我的希望是将我们现有的、经过培训的模型注入AWS通过sagemaker python sdk提供的预构建scikit学习容器中。我发现的所有示例都需要先培训模型,然后在SageMaker中创建模型/模型配置。然后使用方法进行部署。 是否可以为方法提供经过培训的模型,并将其托管在AWS

  • 我已经在AWS SageMaker上使用内置算法语义分割训练了一个模型。这个名为model.tar.gz的训练模型存储在S3上。所以我想从S3下载这个文件,然后使用它在我的本地电脑上进行推断,而不使用AWS SageMaker。 以下是三个文件: > :包括网络架构、数据输入和训练的参数。请参阅语义分割超参数。 我的代码: 错误:

  • 我希望使用AWS Sagemaker工作流部署一个预训练的模型,用于实时行人和/或车辆检测,我特别想使用Sagemaker Neo编译模型并将其部署在边缘。我想从他们的模型动物园中使用OpenVino的预构建模型之一,但是当我下载模型时,它已经是他们自己的优化器的中间表示(IR)格式。 > 如果没有,是否有任何免费的预训练模型(使用任何流行的框架,如pytorch,tenorflow,ONXX等)

  • 我在amazon sagemaker上使用aws blazingtext算法训练了一个模型,并且我能够使用sagemaker部署一个endpoint。然而,在我的情况下,这是不符合成本效益的,我想在本地运行它。我发现这方面的文档很混乱。 我拥有的是一个经过训练的模型,它被保存为一个“model.tar.gz”文件,我从s3 bucket下载了这个文件。我在网上读到,您可以使用tensorflow和