【问题标题】:How to execute multiple sessions in tensorflow via one graph in CPU如何通过 CPU 中的一张图在 tensorflow 中执行多个会话
【发布时间】:2018-11-21 06:10:48
【问题描述】:

目前我正在构建一个 Tensorflow Graph,然后在 CPU 中用 C++ 执行 graph->getSession()->Run(input,model,output)

我想实现并发。我有哪些并行执行的选项,以便我可以支持同时执行的多个请求。

我可以以多线程方式运行会话吗?

通过并行执行多个会话,处理时间会保持不变吗?示例:如果一个会话需要 100 毫秒,那么同时运行 2 个会话大约需要 100 毫秒。

注意:我想在 CPU 上运行它

【问题讨论】:

    标签: c++ multithreading tensorflow neural-network deep-learning


    【解决方案1】:

    首先要注意的是,tensorflow 默认会使用所有的核进行处理。通过此权威答案中讨论的内部和内部操作并行性,您对此有一些有限的控制方式:

    Tensorflow: executing an ops with a specific core of a CPU

    要注意的第二点是会话是线程安全的。您可以从多个线程调用它。每次调用都会看到变量的一致时间点快照,就像调用开始时一样,这是我曾经问过的一个问题:

    How are variables shared between concurrent `session.run(...)` calls in tensorflow?

    道德:

    如果您正在运行大量的小型顺序操作,您可以针对一个会话同时运行它们,并且如果您限制 tensorflow 对并行性的使用,则可能会提高一些性能。如果您正在运行从分布式多核处理中受益更多的大型操作(例如大型矩阵倍数),则您不需要自己处理并行性,默认情况下 tensorflow 已经分布在所有 CPU 内核上。

    此外,如果您的图形依赖项适合任何数量的并行化,tensorflow 也可以处理此问题。您可以设置分析以查看此操作。

    https://towardsdatascience.com/howto-profile-tensorflow-1a49fb18073d

    【讨论】:

      猜你喜欢
      • 2018-03-18
      • 1970-01-01
      • 2020-01-04
      • 2018-05-06
      • 2017-09-26
      • 2016-12-13
      • 1970-01-01
      • 2019-08-02
      • 2015-06-11
      相关资源
      最近更新 更多