はじめに
本稿では、SageMakerで作成し、ローカルに保存したモデル(model.tar.gz)をもう一度デプロイする方法を説明します。
※今回私がデプロイするのは、犬の顔検出モデルです。
前提
- 既にSageMakerで作成したモデルをローカルに保存している。
実践
モデルのアップロード
- まず、S3でバケットを作成します。
バケット作成を選択。

- 任意のバケット名を付けて、作成を選択。
※今回はテストのため、アクセス許可の設定などは行いませんが、実際に利用する際は、適切な設定を行ってください。

- 作成したバケットを開いて、アップロードを選択。
私は、バケット内にmodelというフォルダを作成し、その中にアップロードします。

- ローカルに保存しているモデルを選択し、アップロードを選択。

これで、モデルのアップロードは終了です。
モデルのデプロイ
- Sagemaker のノートブックインスタンスから、Create notebook instance を選択。

- ノートブックインスタンスに任意の名前を付けます。

- 下にスクロールし、IAM ロールの一番上のタブを選択し、新しいロールの作成を選択。

- 特定の S3 バケットにチェックを入れ、先ほど作成した S3 バケットノ名前を入力し、ロールの作成を選択。

- 下にスクロールして、ノートブックインスタンスの作成を選択。

- ステータスがInServiceになったら、Open Jupyterを選択。

- Jupyter が開いたら、New から conda_mxnet_p36 を選択。

- Notebook を選択したら、Untitled を選択。

- 任意の名前を Notebook に付け、Rename を選択。

-
次のコードを実行して、モデルをデプロイしましょう。
このコードの実行完了には5分ほど時間がかかりました。 -
model_data : 先ほどモデルを保存したパス
-
image : 推論時に利用する Docker イメージ名
Docker イメージ名は**こちら**から参照してください。
# S3にアップロードしたモデルをデプロイ
import sagemaker
from sagemaker import get_execution_role
from sagemaker.model import Model
import boto3
import json
role = get_execution_role()
model = Model(model_data='s3://dog-face/model/model.tar.gz',
image='501404015308.dkr.ecr.ap-northeast-1.amazonaws.com/object-detection:latest',
role=role)
model_detection = model.deploy(initial_instance_count=1, instance_type='ml.m4.xlarge')
実行結果
-
- の後に ! がついたら、モデルのデプロイ完了です。
----------------------------------------------------------------------------------------------------------------!
おわりに
今回は、SageMakerの組み込みアルゴリズムで作成したモデルを、再デプロイする方法について説明しました。
モデルをローカルに保存してから、再デプロイするという方の参考になればと思います。