第4回 Java WebアプリでTensorFlow(検討編) (2/3)

技術特集

1_tensorflow_keras1_tit

tit_tensorflow_keras

2) TensorFlow Servingを使おう!

TensorFlowを使っている場合は、選択肢4を実現するプロダクトとしてTensorFlow Servingというものが利用できます。
TensorFlow Servingは、TensorFlowの学習済みモデルを配置するとそれを動かすサーバとして動作してくれる製品です。ちょうどWebアプリにおけるTomcatのようなものといえばイメージしやすいかもしれません。

以下はTensorFlow Servingを用いてWebアプリから学習済みモデルを利用する場合の概念図です。

uchideki_4_architecture

まずPython環境で学習を行い、それをTensorFlowのSavedModelという形式で書き出します。
そしてSavedModelを書き出したディレクトリを読み込むように指定してTensorFlow Servingのサーバを起動します。
SavedModelに変更があれば自動的に追従するので、先に起動しておいてあとは起動しっぱなしでも最新の学習済みモデルが動作します。
アプリケーションからTensorFlow Servingの呼び出しにはgRPCを用います。gRPCはその名の通りGoogleが開発したRPCの仕組みで、PythonやJavaをはじめ9つの言語に対応しています。

このように、ディープラーニングを組む部分、学習済みモデルを動かす部分、そしてそれを呼び出す部分をきれいに分離することができ、言語環境の違いやサービスのライフサイクルの違いを吸収することができます。