概要
ABEJA Platformにモデルをデプロイをしてエンドポイントを利用できるようにします。
デプロイについて
ABEJA Platformでは、Platform上でモデルを作成することも可能ですし、外部で作成したモデルを利用してサービス提供をするエンドポイントを用意することも可能です。
今回は、以前、紹介したローカル学習 (train-local) で作成したモデルを参考に、デプロイする手順をご紹介します。
デプロイ前の準備
デプロイ前に作成したモデルをABEJA Platformで管理するために、「モデル」作成を行います。
ローカル学習 (train-local) で作成したモデルでは、ローカルにモデルファイル[model.h5]があるため、以下のコマンドを入力し、zipに圧縮します。 ※ モデルファイルがある階層でコマンド実施してください。
$ zip -r main.zip ./*
すると、model.h5(モデルファイル)
やpredict.py
などのファイルを圧縮し、main.zip(圧縮ファイル)
が生成されますので、こちらをダウンロードしておきます。
Platform上でモデルの作成
- ABEJA Platform管理画面にログイン
- ログイン後、左メニュー一覧より**「モデル」**を選択します。
![1.png](https://qiita-user-contents.imgix.net/https%3A%2F%2Fqiita-image-store.s3.ap-northeast-1.amazonaws.com%2F0%2F14014%2F68231172-6e44-c57e-f2f8-7e834e331038.png?ixlib=rb-4.0.0&auto=format&gif-q=60&q=75&s=965a964bb8802bb699e85e9990b0b3d6)
- 今回は、まずモデル作成をするため、 **「モデル作成」**を選択
- モデル作成に必要な情報を入力します。
-
名前
:モデル名 -
詳細
:モデルの詳細・説明など -
バージョン
:バージョン管理を行うため、バージョン情報 -
作業後にデプロイ
:モデル作成時にデプロイも一緒に実施する場合はチェック -
デプロイ名
:デプロイを一緒にする場合、デプロイ名を指定 -
アップロード
:ローカルで作成した学習モデルなどを利用する際、アップロードを選択 -
ランタイム
:実行する際のフレームワークなどを選択 (all-cpuやall-gpuが一般的)- 詳細はこちらの「イメージ」を参考ください
-
モデルハンドラー
:モデルを呼び出すためのハンドラ。サンプルではpredict.py
のhandler
を呼び出し。
-
![2.png](https://qiita-user-contents.imgix.net/https%3A%2F%2Fqiita-image-store.s3.ap-northeast-1.amazonaws.com%2F0%2F14014%2Fa2a9fe6f-a160-5075-bf76-1455e0f50ff9.png?ixlib=rb-4.0.0&auto=format&gif-q=60&q=75&s=0b6c8feb45b0c29e5d32d3003340df7f)
- ソースコードのアップロード
- ソースコードの箇所をクリックし、[main.zip]をアップロード
![3.png](https://qiita-user-contents.imgix.net/https%3A%2F%2Fqiita-image-store.s3.ap-northeast-1.amazonaws.com%2F0%2F14014%2F14c8e843-0b0d-5d4e-80ef-a3519e04fc27.png?ixlib=rb-4.0.0&auto=format&gif-q=60&q=75&s=4810bc75b678fa2370fa004dc617355a)
- **「モデル作成」**を選択
- ソースコードのアップロードが開始され、モデルが作成されます。
![4.png](https://qiita-user-contents.imgix.net/https%3A%2F%2Fqiita-image-store.s3.ap-northeast-1.amazonaws.com%2F0%2F14014%2F21c98c5a-5efb-0b81-e52f-8af748535b0e.png?ixlib=rb-4.0.0&auto=format&gif-q=60&q=75&s=5a6976fc38dd77ba26cc35ed738c14de)
- ABEJA Platform上作成されたモデルはバージョン管理され、ソースコードも管理されます。 (外部で作成したモデルでも、バージョン管理/ソースコード管理ができるのいいですね)
![5.png](https://qiita-user-contents.imgix.net/https%3A%2F%2Fqiita-image-store.s3.ap-northeast-1.amazonaws.com%2F0%2F14014%2F792a27a0-0f37-48ff-11d9-f592e0a2e9b9.png?ixlib=rb-4.0.0&auto=format&gif-q=60&q=75&s=b72dfa019be28e21f223cb3f0aec26c4)
![6.png](https://qiita-user-contents.imgix.net/https%3A%2F%2Fqiita-image-store.s3.ap-northeast-1.amazonaws.com%2F0%2F14014%2F2d99393b-4b81-f7b7-a1e6-18179814948d.png?ixlib=rb-4.0.0&auto=format&gif-q=60&q=75&s=49b35b5063c93cefa9bc0d60456c53b6)
Platform上でのデプロイ
- モデル作成時に「作業後にデプロイ」を選択していた場合、すでにデプロイは完了しています。
- 別途、「デプロイメント」画面より**「デプロイメント作成」**を実施することで作成は可能です。
- デプロイが完了したら、指定したデプロイ名の項目を開き、**「HTTPサービス」**を作成します。
![7.png](https://qiita-user-contents.imgix.net/https%3A%2F%2Fqiita-image-store.s3.ap-northeast-1.amazonaws.com%2F0%2F14014%2Fae66bc84-740a-ec84-5197-694df34c91f1.png?ixlib=rb-4.0.0&auto=format&gif-q=60&q=75&s=dcdd9a33310888109b70a39f42989f78)
- HTTPサービスは提供するサービスインフラ(スペックなど)を選択します。
-
バージョン
:モデルのバージョン -
インスタンスタイプ
:サービス提供するスペックcpu-0.25, cpu-1, cpu-2, cpu-4
から選択 -
インスタンス数
:1〜32まで選択可能。提供サービスのリクエスト数などに応じて選択 -
環境変数
:提供時に環境変数を利用する場合は、入力可能
-
![8.png](https://qiita-user-contents.imgix.net/https%3A%2F%2Fqiita-image-store.s3.ap-northeast-1.amazonaws.com%2F0%2F14014%2F32a7a919-6d2c-dd11-d7a8-c042682a4e56.png?ixlib=rb-4.0.0&auto=format&gif-q=60&q=75&s=545a20c4e782cef4a999e4b7a184b44c)
- **「HTTPサービス作成」**を選択すると「HTTPサービス」が作成されます。
![9.png](https://qiita-user-contents.imgix.net/https%3A%2F%2Fqiita-image-store.s3.ap-northeast-1.amazonaws.com%2F0%2F14014%2F3ac69a38-8eac-7ca1-3849-f1288841628a.png?ixlib=rb-4.0.0&auto=format&gif-q=60&q=75&s=58d91762d460355fbfbaaadfb5a0fbcc)
- 作成時はステータスが**「処理中」ですが、「使用可能」**になれば利用可能となります。
![12.png](https://qiita-user-contents.imgix.net/https%3A%2F%2Fqiita-image-store.s3.ap-northeast-1.amazonaws.com%2F0%2F14014%2F4ea26f15-9dc9-8aa0-7cca-1f5a48442a41.png?ixlib=rb-4.0.0&auto=format&gif-q=60&q=75&s=4c5d51a13c9540c137c73242d711d81d)
- 「デプロイメント詳細」画面の **「エンドポイント」**がHTTPサービスのサービスエンドポイントとなります。作成したモデルでのサービス提供を実施する場合は、こちらのエンドポイントをご利用ください。
![13.png](https://qiita-user-contents.imgix.net/https%3A%2F%2Fqiita-image-store.s3.ap-northeast-1.amazonaws.com%2F0%2F14014%2Fcd30361c-0169-3ba5-2123-8c4524d564f4.png?ixlib=rb-4.0.0&auto=format&gif-q=60&q=75&s=69f3df34369522c62610c58831c48c99)
HTTPサービスの内容
-
HTTPサービスには「ログ」や「メトリクス(負荷状況などのモニタ)」、簡易的な「確認」を実施できます。
![15.png](https://qiita-user-contents.imgix.net/https%3A%2F%2Fqiita-image-store.s3.ap-northeast-1.amazonaws.com%2F0%2F14014%2F62befdd8-651c-082c-f1ba-9dedd05dbd4b.png?ixlib=rb-4.0.0&auto=format&gif-q=60&q=75&s=a2fc662e40896ed6b1158195f3836121)
最後に
今回のサンプルでは、犬(dog) or 猫(cat)というシンプルな画像分類でのモデルを利用して、HTTPサービスを作成するところまでを紹介しました。ABEJA Platform上で作成したモデルだけでなく、ローカル環境や外部で作成したモデルをABEJA Platformでバージョン管理、サービス提供をまるっと任せれるのは、便利ですね。
次回はもう少し、いろいろなモデルをユースケースを踏まえご紹介できればと思います。また、ABEJA Platformでは、トライアルも提供しています!気になられた方は、是非、お気軽にお問い合わせください。
ABEJA Platformは、ユーザとコミュニティを形成しながら、速いスピードで開発を進めていきます。
以下、フォーラムもありますので、是非、ご活用ください!