はじめに
本稿では、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 イメージ名はこちらから参照してください。
1 2 3 4 5 6 7 8 9 10 11 12 13 14 |
#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') |
実行結果
・- の後に ! がついたら、モデルのデプロイ完了です。
1 |
----------------------------------------------------------------------------------------------------------------! |
おわりに
今回は、SageMakerの組み込みアルゴリズムで作成したモデルを、再デプロイする方法について説明しました。
モデルをローカルに保存してから、再デプロイするという方の参考になればと思います。
SageMakerの導入ならナレコムにおまかせください。
日本のAPNコンサルティングパートナーとしては国内初である、Machine Learning コンピテンシー認定のナレコムが導入から活用方法までサポートします。お気軽にご相談ください。