我想部署一个带有tensorflow服务的keras模型。模型将从keras .h5模型转换为.pb文件。(原始模型来自这里https://github.com/shaoanlu/face_toolbox_keras)
当在这个模型上使用keras执行推理时,如果我只使用我的CPU,那么12个核心都在工作,推理平均花费0.7s。
当转换模型并使用tensorflow服务时,它只使用一个核心,平均需要2.7秒。
我尝试将--tensorflow_session_parallelism、--tensorflow_intra_op_parallelism和--tensorflow_inter_parallelism等选项设置为12,但没有任何变化,从tfserving容器内部查看时只有一个内核在工作。
我还尝试为我的机器的架构编译tensorflow-serving,我得到了一点改进(2.7s到2.5s),但我不能控制每个会话使用的核心数量。
我认为其他核心可以用于并发请求是很好的,但我希望有更多的控制。
发布于 2019-11-04 17:18:05
这个问题可能是由constant folding pass引起的。使用tf.placeholder应该可以解决此问题。
if args.const_fold:
A = tf.ones([size, size], name=("A%s" % i))
B = tf.ones([size, size], name=("B%s" % i))
else:
A_name = "A%s" % i
B_name = "B%s" % i
A = tf.placeholder(tf.float32, shape=[size, size], name=A_name)
B = tf.placeholder(tf.float32, shape=[size, size], name=B_name)
feed["%s:0" % A_name] = np.random.rand(size, size)
feed["%s:0" % B_name] = np.random.rand(size, size)据我所知,您的代码可能如上面所示的if block中所示。将其更改为else block应该可以解决此问题。
有关更多信息,请参阅此Stack Overflow Link
https://stackoverflow.com/questions/58545092
复制相似问题