2
我們正嘗試在線提供圖像處理模型(在Tensorflow中),以便我們不必向外部調用REST服務或雲-ML/ML-Engine模型由於速度的目的。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試圖序列化模型?
的start_bundle功能工作。問題在於我們試圖提供的模型文件的深度。 – bR3nD4n