先日の関西のイベントでLTしてきました。
Custom Vision APIで学習させたモデルがExportできるようになってるのですが、タイプでDockerFileが選べるので試してみたというネタです。
スライドにもありますが、Exportで得られたZipを解凍するとこんな感じになります。
TensorFlowなモデルを使って予測するpredict.pyと、HTTPで画像やURLを受け取ってPredictするWebサーバーな部分(本体)のapp.pyがキモかな。WebサーバーとしてのフレームワークはFlaskを使用してるようです。
基本的にこのままdocker buildすれば /imageなりで画像ファイルや画像のURLを渡せば予測結果をJSONで返してくれます。
あとはDockerエコシステムに乗せてお好きなように。このままだと予測結果やアップロードされた画像など残らないので、おまけネタとしてnginxのmirror使ってリクエスト複製して良しなに保存するなり再度学習用データにするなりしましょう、という話でした。
※どうでもいいけど数日たったらAzure Container InstancesのDockerコンテナーから応答がなくなるんだけど何が悪いのか。。。ぱっとみよくあるアタック受けてそうではあるが。
まぁわざわざExportしなくてもマネージドで使えるんですが、レイテンシ気にしたりオフラインで処理したりとかを考えるとモデルのExportは選択肢の一つとしてありがたいので今後に期待しましょう。(他のAPIとかObject Detectionも待ってる)