Flask では問題なく動作しますが、uvloop ベースのサーバー ( Sanic ) でTensorflow モデルを実行すると問題が発生します。Sanic が複数のプロセスを生成する方法と関係があると思いますか? これは、Sanic を 1 つのワーカー (つまり、プロセス) で実行すると、モデルが問題なく提供されるためです。複数のワーカーとワーカーごとのスレッドを使用して、Flask+gunicorn でこの同じモデルを展開したことは困惑していますが。
私が得る特定のエラーは次のとおりです。
2019-10-22 18:05:39.062833: E tensorflow/core/grappler/clusters/utils.cc:87] Failed to get device properties, error code: 3
2019-10-22 18:05:39.731232: F tensorflow/stream_executor/cuda/cuda_driver.cc:175] Check failed: err == cudaSuccess || err == cudaErrorInvalidValue Unexpected CUDA error: initialization error
少なくとも部分的にhttps://github.com/pytorch/pytorch/issues/2517に関連していると思います
予測を無駄に返すコードを呼び出す前に、sess.as_default()
andを使用してみました。graph.as_default()
私は壁にぶつかり、どのように進めるか迷っているので、試してみるべきいくつかのアイデアであっても、助けていただければ幸いです。