6

私は訓練されたTensorflowモデルを持っており、REST APIを使用して予測メソッドを提供したいと考えています。私が考えることができるのは、Flaskを使用してJSONを入力として受け取り、Tensorflowでpredictメソッドを呼び出してから、予測結果をクライアント側に返す単純なREST APIを構築することです。Flaskを使用してREST APIを使用してトレーニングされたTensorflowモデルを提供しますか?

私は、特に本番環境でこのようにすることを心配していますか?

多くの感謝!

+0

成功しましたか?私は楽しみにしています。 –

答えて

2

私の心の中で最初に気になるのはパフォーマンスです。

TensorFlowチームは、サーバー/クライアントの使用状況を調査したようです。 tensorflow servingを調べるとよいでしょう。 デフォルトでは、通信プロトコルにgRPCを使用します。

+1

私は同意しますが、どれくらい苦しんでいるか知っていますか?いったんモデルを復元してフラスコサーバーで再利用すれば、恐らくあまり傷つくことはありません。 –

+0

@SungKim実際にフラスコを使うのが好きですか? – user1515940

0

私たちは職場でのFlask + TensorFlowを使用します。私たちのセットアップは、モデルを提供する最も最適な方法ではないかもしれませんが、それは仕事を完了し、これまでのところうまく動作します。

セットアップは以下の通りです:

  1. tfservingを構築するために永遠にかかるため、我々は、ドッキングウィンドウの画像(ないGPUのサポートか何かを構築し、それだけのモデルを提供するために働く、それが提供するよりもより速く、より良いですそれは巨大なPython/Flaskモノライトの中から直接です)。モデルサーバーのイメージは次の場所にあります。https://hub.docker.com/r/epigramai/model-server/
  2. 次にFlaskを使用してAPIを設定します。モデルサーバにリクエストを送るためには、grcp予測クライアントが必要です。そこで私たちはフルトンAPIに直接インポートできるPythonで、https://github.com/epigramai/tfserving_predict_client/をビルドしました。

良いことは、モデルがFlask APIアプリケーションによって提供されていないことです。ドッカー画像モデルサーバは、ドッカーコンテナではなくマシンハードウェア用にコンパイルされたGPU上で動作するモデルサーバで簡単に置き換えることができます。

+0

あなたはこの設定で見ている推論時間について何か言ってもらえますか? (また、フラスコAPIが追加するオーバーヘッド) – Mark

+0

私たちのユースケースについてはうまくいきますが、我々はたくさんのリクエストを受けていないので、推論の前にAPIリクエストをバッチすることは、私たちのユースケースでは必須ではありません。モデルサーバーなどにリクエストを送信する際のオーバーヘッドを伴うこの設定は、テンソルフローとフラスコを同じモノライトで使用してメモリにモデルをロードするだけの速さです。 Pythonフラスコアプリからテンソルフローの複雑さを取り除くことができるので、この設定が便利です。私たちは多くのテストをしておらず推論時間を比較していませんでしたが、私たちの主な利点は懸念の分離です。 – stianlp

関連する問題