- 概要
- スタートアップガイド
- ユーザガイド
-
リファレンス
-
ABEJA Platform CLI
- CONFIG COMMAND
- DATALAKE COMMAND
- DATASET COMMAND
- TRAINING COMMAND
-
MODEL COMMAND
- check-endpoint-image
- check-endpoint-json
- create-deployment
- create-endpoint
- create-model
- create-service
- create-trigger
- create-version
- delete-deployment
- delete-endpoint
- delete-model
- delete-service
- delete-version
- describe-deployments
- describe-endpoints
- describe-models
- describe-service-logs
- describe-services
- describe-versions
- download-versions
- run-local
- run-local-server
- start-service
- stop-service
- submit-run
- update-endpoint
- startapp command
-
ABEJA Platform CLI
- FAQ
- Appendix
CLI で Web API の切替
はじめに
このドキュメントでは、ABEJA Platformを利用して、画像識別を行うサンプルモデル(keras)をWebAPIとして起動し既存のエンドポイントをシームレスに更新する方法を説明します。
更新対象のエンドポイントとして、スタートガイド「CLI で Web API を作成」で作成したエンドポイントを使用します。
画像認識を行うサンプルモデル(keras)のダウンロード
こちらよりスタートガイド向けのモデルをダウンロードし、以下のコマンドでファイルを解凍してください。
今後、コマンドの実行は解凍されたディレクトリの下で行っていきます。
このモデルは Keras の ResNet50 の画像分類モデルを使用した例になります。以下の通り、 ResNet50を使用して、画像を識別可能な実装となっています。
$ tar -zxvf default.tar.gz
$ cd default
$ ls -l
total 388192
-rw-r--r--@ 1 abeja staff 97 9 8 10:57 README.txt
-rw-r--r--@ 1 abeja staff 218 8 31 13:31 exec.py
-rw-r--r--@ 1 abeja staff 1566 8 29 20:30 imagenet_utils.py
-rw-r--r--@ 1 abeja staff 916 8 31 13:31 main.py
-rw-r--r--@ 1 abeja staff 12369 8 30 04:23 resnet50.py
-rw-r--r--@ 1 abeja staff 102853048 8 29 20:26 resnet50_weights_tf_dim_ordering_tf_kernels.h5
-rw-r--r--@ 1 abeja staff 94653016 8 30 04:08 resnet50_weights_tf_dim_ordering_tf_kernels_notop.h5
-rw-r--r--@ 1 abeja staff 1208476 9 19 13:38 sample.jpg
ABEJA Platform上で実行可能なPythonのバージョンは、 3.5 以上になります。
モデルバージョンの作成
create-version
コマンドでモデルバージョンを作成します。
--model_id
にはモデルの作成で作成したモデルの識別子を指定します。
$ abeja model create-version --model_id {MODEL_ID} --version 0.0.2 \
--image abeja-inc/all-cpu:18.10 --handler main:handler
{
"version": "0.0.2",
"version_id": "ver-2222222222222222"
}
サービスの作成
画像識別を行うサンプルモデルをサービスとして起動します。
--deployment_id
には、デプロイメントの作成で作成したデプロイメントの識別子を指定します。
--version_id
には、直前に作成したモデルバージョンの識別子を指定します。
$ abeja model create-service --deployment_id {DEPLOYMENT_ID} --version_id {VERSION_ID}
{
"created_at": "2018-05-02T07:28:56.826724Z",
"deployment_id": "1111111111111",
"instance_number": 1,
"instance_type": "cpu-0.25",
"metrics_url": "https://p.datadoghq.com/sb/c61020b12-f5c8335865e20280252bf6b035a1fc96",
"model_version": "0.0.2",
"model_version_id": "ver-2222222222222222",
"modified_at": "2018-05-02T07:28:58.679953Z",
"service_id": "ser-2222222222222222",
"status": "IN_PROGRESS",
"user_env_vars": {}
}
作成されたサービスの動作を確認
「CLI で WebAPI を作成」で行ったサービスの起動状態の確認と同様に確認作業を行った後、作成されたサービスの動作を確認します。
簡易チェックツールを利用する場合
画像を入力として扱う WebAPIの動作チェックを行う場合、 check-endpoint-image
コマンドを使用します。
--deployment_id
には、デプロイメントの作成で作成したデプロイメントの識別子を指定し、--service_id
には、直前で作成したサービスの識別子を指定します。
$ abeja model check-endpoint-image --deployment_id {DEPLOYMENT_ID} --service_id {SERVICE_ID} \
--type jpeg --image_path sample.jpg
[
{
"id": "n04356056",
"label": "sunglasses",
"probability": 0.5109500885009766
},
{
"id": "n03617480",
"label": "kimono",
"probability": 0.06765035539865494
},
{
"id": "n04350905",
"label": "suit",
"probability": 0.06371305137872696
},
{
"id": "n03630383",
"label": "lab_coat",
"probability": 0.048062920570373535
},
{
"id": "n03594734",
"label": "jean",
"probability": 0.03560170158743858
}
]
デプロイされた WebAPI がまだ利用可能ではない場合、レスポンスは HTTP エラー(503) となります。
curlを利用する場合
curl で動作を確認する場合、以下のリクエストを行います。
$ curl --user user-{ABEJA-PLATFORM-USER}:{PERSONAL-ACCESS-TOKEN} \
-H 'Content-Type: image/jpeg' \
-XPOST --data-binary @sample.jpg \
https://{ORGANIZATION_NAME}.api.abeja.io/deployments/{DEPLOYMENT_ID}/services/{SERVICE_ID}
エンドポイントを更新する
作成したエンドポイントを更新し、簡単な計算を行うWebAPIから画像識別を行うWebAPIへ切り替えます。
$ abeja model update-endpoint --deployment_id {DEPLOYMENT_ID} --endpoint_id {ENDPOINT_ID} \
--service_id {SERVICE_ID}
{
"message": "pnt-1111111111111111 updated"
}
更新されたエンドポイントの動作を確認
リクエストの実行を通して、同一のエンドポイントが簡単な計算処理を行うWebAPIから画像判別を行うWebAPIへと切り替わっていることを確認します。
簡易チェックツールを利用する場合
check-endpoint-image
コマンドを使用し、エイリアス default
で作成したエンドポイントの動作を確認します。
サービスの動作確認時と異なり、--service_id
の指定は必要ありません。
$ abeja model check-endpoint-image --deployment_id {DEPLOYMENT_ID} \
--type jpeg --image_path sample.jpg
[
{
"id": "n04356056",
"label": "sunglasses",
"probability": 0.5109500885009766
},
{
"id": "n03617480",
"label": "kimono",
"probability": 0.06765035539865494
},
{
"id": "n04350905",
"label": "suit",
"probability": 0.06371305137872696
},
{
"id": "n03630383",
"label": "lab_coat",
"probability": 0.048062920570373535
},
{
"id": "n03594734",
"label": "jean",
"probability": 0.03560170158743858
}
]
curlを利用する場合
curl で動作を確認する場合、以下のリクエストを行いエイリアス default
で作成したエンドポイントの動作を確認します。
$ curl --user user-{ABEJA-PLATFORM-USER}:{PERSONAL-ACCESS-TOKEN} \
-H 'Content-Type: image/jpeg' \
-XPOST --data-binary @sample.jpg \
https://{ORGANIZATION_NAME}.api.abeja.io/deployments/{DEPLOYMENT_ID}