首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何确保tensorflow在会话中使用所有cpu核心?

如何确保tensorflow在会话中使用所有cpu核心?
EN

Stack Overflow用户
提问于 2019-10-25 00:00:03
回答 1查看 511关注 0票数 2

我想部署一个带有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),但我不能控制每个会话使用的核心数量。

我认为其他核心可以用于并发请求是很好的,但我希望有更多的控制。

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2019-11-04 17:18:05

这个问题可能是由constant folding pass引起的。使用tf.placeholder应该可以解决此问题。

代码语言:javascript
复制
                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

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/58545092

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档