背景
SagemakerのNotebookから学習を行い、そのままEndpointを作って使うことはあると思います。
使い終わったEndpointは削除すると思いますが、もう一度Endpointを作りたいと思った時に学習からやり直すのはつらいです。
そこで、 もう一度Endpointを作成する方法を模索しました。
前提
この記事ではpytorchを使って試しています。他のフレームワークは試していません。
既に一度Endpointの作成までは行っていることを前提としています。
実行は全てSageMakerのNotebookで行います。
Endpointを作る方法
1. Endpoint configurationからEndpointを作成
下のコードを実行することでEndpointが作成されます。
%%time
import time
#任意の名前
endpoint_name = 'test-endpoint'
#ここに学習から実行した時のEndpoint configurationのNameを指定します。
endpoint_config_name = 'sagemaker-pytorch-2019-08-06-12-14-22-209'
print(endpoint_name)
create_endpoint_response = sm.create_endpoint(
EndpointName=endpoint_name,
EndpointConfigName=endpoint_config_name)
print(create_endpoint_response['EndpointArn'])
resp = sm.describe_endpoint(EndpointName=endpoint_name)
status = resp['EndpointStatus']
print("Status: " + status)
while status=='Creating':
time.sleep(60)
resp = sm.describe_endpoint(EndpointName=endpoint_name)
status = resp['EndpointStatus']
print("Status: " + status)
print("Arn: " + resp['EndpointArn'])
print("Status: " + status)
2. 作成したEndpointをNotebookから実行できるように
作成したEndpointをNotebookから実行できるようにします。
from sagemaker.predictor import RealTimePredictor, npy_serializer, numpy_deserializer
predictor = RealTimePredictor(endpoint_name,
serializer=npy_serializer,
deserializer=numpy_deserializer,
content_type='application/x-npy',
accept='application/x-npy'
)
作成したpredictorは、学習から行う時と同じように推論に使うことができます。
y = predictor.predict(data)