0. はじめに
この記事では、AITRIOS Console Developer Editionに接続されているデバイスからの推論結果をIBM Cloud VPC内VSIに転送する具体的な手順や方法を共有します。
AITRIOSの公式Documentに、http転送の方法に関するガイドがありますが、これをIBM CloudのVSI向けに噛み砕いたガイドとなります。
1. 前提
当記事の前提として、IBM CloudのVPCやVSIでのサーバーの構築を経験したことがある方向けとなっていますので、VPCやVSIの作り方や設定の詳細については別の記事を参考にしてください。また、AITRIOS Console Developer Editionにアクセスできる権限が必要です。
2. IBM Cloud VPC / VSI構成について
VPC / VSIを作成する上での注意点としては、AITRIOSデバイスからhttp接続でデータがPUTされてきますので、外部からのアクセスを受けられるフローティングIPが必要です。また、セキュリティー設定として、httpサーバーで送受信するためのポートを決めて開けておく必要があります。(今回の例では、8080を使っています。)
必要に応じて、sshのポートや証明書などの設定もしておくようにします。
3. AITRIOSデバイスの設定
AITROSデバイス側の設定は、デバイスの推論を制御するコマンドパラメーターファイルを編集して、転送方法にhttpを指定し、保存したいディレクトリーを指定することで、転送が可能になります。
デバイスのCommand Parameterファイル管理については、公式のガイドなどをご参照ください。
{
"commands": [
{
"command_name": "StartUploadInferenceData",
"parameters": {
"Mode": 2,
"UploadMethod": "HTTPStorage",
"StorageName": "http://162.111.111.111:8080",
"StorageSubDirectoryPath": "/image/a53",
"FileFormat": "JPG",
"UploadMethodIR": "HTTPStorage",
"StorageNameIR": "http://162.111.111.111:8080",
"StorageSubDirectoryPathIR": "/meta/a53",
"CropHOffset": 0,
"CropVOffset": 0,
"CropHSize": 4056,
"CropVSize": 3040,
"NumberOfImages": 0,
"UploadInterval": 60,
"NumberOfInferencesPerMessage": 1,
"PPLParameter": {
"header": {
"id": "00",
"version": "01.01.00"
},
"dnn_output_detections": 100,
"max_detections": 20,
"threshold": 0.3,
"input_width": 320,
"input_height": 320
}
}
}
]
}
具体的には、
- UploadMethodとUploadMethodIRにHTTPStorageを記載
- StorageNameとStorageNameIRには、httpサーバーのフローティングIPと使用するポートを記載
- StorageSubDirectoryPathとStorageSubDirectoryPathIRには、サーバーのホームからの相対パスで、データの保存先を指定。イメージと推論結果のメタは別々に指定するか同じにするかは、後段のアプリケーションの作り方によって決めてください。
- FileFormatは、JPGかBMPのいずれかを指定
IR付きとなしの項目がありますが、IR付きは、Inference Resultの略で、推論結果の意味で、なしの方はイメージの設定となります。
4. データ受け取り側の設定
今回、IBM CloudのVPC上にVSIをDebianで構築し、そこでhttpサーバーを起動し、AITRIOSデバイスから送られてくるImageとMetaデータを同じVSI内に保管していくコードを作成しました。githubにコードを公開してありますので、cloneしてご利用いただけます。
4.1 インストール
git clone git@github.com:TechMind428/aitrios_receiver.git
cd aitrios_receiver
python3 -m venv venv
. venv/bin/activate
pip3 install -r requirements.txt
4.2 起動
Cloneしたaitrios_receiverのディレクトリー直下にあるstartup.shを起動させることで、httpサーバーを含め一連の仕組みが起動します。
./startup.sh
AITRIOSデバイスのコマンドパラメーター設定が正しくセットされ、推論が開始されると順次送られてきたデータがVSIの指定されたディレクトリーに蓄積されていきます。
このプログラムには、蓄積されたデータを消す機能はついていませんので、適時削除しないとパフォーマンスやリソースにインパクトを与えますので、後段のプログラムや、cronなどを使い古いデータを定期的に削除して、ヘルシーにお使いください。