Django + Celery + CPU/GPU + Tensorflow、Keras + Docker
1628 ワード
GPU マシンを使用して tensorflow モデルを構築し、同じマシンでモデルを呼び出すと、期待どおりに正常に動作するという状況が発生しました.
セロリ タスクの助けを借りて Django フレームワークで実行されるアプリケーションでこのモデルを使用したかったのですが、セロリ ワーカー内のアプリケーション フローでモデルを呼び出しているときに、動作しないかハングアップしました.
考えられる解決策に従ってみましたが、何も機能しませんでした.
CPU マシンのコア数と RAM サイズを増やしました. GPU を有効にして AWS インスタンスを作成し、モデルを使用しようとしました. Tensorflow は GPU を自動的に検出し、モデル予測に使用するため、GPU を使用するための構成は追加していません. Django アプリケーションと celery が docker コンテナーで実行されているため、docker は自動的に GPU を使用できないと考えたため、基本イメージを tensorflow CPU/GPU に変更して基本 docker イメージとしてモデルを使用しようとしましたが、失敗しました :( . モデルを使用する新しい API を作成しましたが、再度出力を取得できませんでした. 最初から、アプリケーション フローなしでモデル呼び出しが正常に機能していることに気付きましたが、アプリケーション経由では機能しません.そのため、マルチプロセッシングを使用してPythonスクリプトを介してモデルを呼び出そうとしましたが、マルチプロセッシングでは(セロリがそれを行うため)機能しないことがわかりました.
ソリューション:
マルチプロセッシング tensorflow モデルの予測が機能しないことがわかった後、内部で何が起こっているかを明確に示す次の投稿にたどり着きました.
why tensorflow model predict not running under multiprocessing
requirements.txt にフローを追加しました
また、docker のビルド中に celery コマンドで --pool を以下のように追加しました.
この変更により、モデルを呼び出して、GPU 対応マシンなしでアプリケーション フローで予測を取得できるようになりました!!!
上で述べたこととは別に、多くの変更を行うことでかなりの日数を費やしました.誰かの一日が救われるように、これを共有しようと思った..
セロリ タスクの助けを借りて Django フレームワークで実行されるアプリケーションでこのモデルを使用したかったのですが、セロリ ワーカー内のアプリケーション フローでモデルを呼び出しているときに、動作しないかハングアップしました.
考えられる解決策に従ってみましたが、何も機能しませんでした.
ソリューション:
マルチプロセッシング tensorflow モデルの予測が機能しないことがわかった後、内部で何が起こっているかを明確に示す次の投稿にたどり着きました.
why tensorflow model predict not running under multiprocessing
requirements.txt にフローを追加しました
eventlet
また、docker のビルド中に celery コマンドで --pool を以下のように追加しました.
celery -A Proj worker -l info -Q Q1,Q2 --pool=eventlet -c 5
この変更により、モデルを呼び出して、GPU 対応マシンなしでアプリケーション フローで予測を取得できるようになりました!!!
To get the prediction alone from a tensorflow model we don't need a GPU machine.
上で述べたこととは別に、多くの変更を行うことでかなりの日数を費やしました.誰かの一日が救われるように、これを共有しようと思った..
Happy Coding!!!
Reference
この問題について(Django + Celery + CPU/GPU + Tensorflow、Keras + Docker), 我々は、より多くの情報をここで見つけました https://dev.to/karthikke/django-celery-cpu-gpu-tensorflow-keras-docker-4mk6テキストは自由に共有またはコピーできます。ただし、このドキュメントのURLは参考URLとして残しておいてください。
Collection and Share based on the CC Protocol