RESTサービスまたはクラウドに対して外部呼び出しを行う必要がないように、Tensorflowの画像処理モデルをインラインで提供しようとしています速度目的のために-ML/ML-エンジンモデル。Python Beamは大きなTensorflowモデルをピクル/ディル化できません
すべての推論でモデルをロードしようとするのではなく、beam.DoFnオブジェクトのインスタンスごとにモデルをメモリにロードできるかどうかをテストしたかったので、ロードとサービモデルの時間。
from __future__ import absolute_import
from __future__ import division
from __future__ import print_function
import tensorflow as tf
import numpy as np
class InferenceFn(object):
def __init__(self, model_full_path,):
super(InferenceFn, self).__init__()
self.model_full_path = model_full_path
self.graph = None
self.create_graph()
def create_graph(self):
if not tf.gfile.FastGFile(self.model_full_path):
self.download_model_file()
with tf.Graph().as_default() as graph:
with tf.gfile.FastGFile(self.model_full_path, 'rb') as f:
graph_def = tf.GraphDef()
graph_def.ParseFromString(f.read())
_ = tf.import_graph_def(graph_def, name='')
self.graph = graph
そのないbeam.DoFnと普通のクラスが、そのはDoFnにオーバー変換され、私はクラウドのデータフローを使用してリモートそれを実行しようとすると、ジョブが失敗したので、これはローカルだけで結構ことで実行されますシリアル化/酸洗いの間に、私はモデル全体をシリアライズしようとしていると信じたい。
これを回避したり、python/dataflowがモデルをシリアル化しようとするのを防ぐ手段はありますか?
されます。問題は、私たちが提供しようとしていたモデルファイルの深さにありました。 – bR3nD4n