【问题标题】:Can multiple tensorflow inferences run on one GPU in parallel?多个 tensorflow 推理可以在一个 GPU 上并行运行吗?
【发布时间】:2019-09-18 07:25:10
【问题描述】:

我正在尝试在一个 NVIDIA Tesla V100 GPU 上运行 Tensorflow 作为服务。作为服务器,我的程序需要同时接受多个请求。所以,我的问题如下:

  1. 当多个请求同时到达时,假设我们没有使用批处理,这些请求是在 GPU 上按顺序运行还是并行运行?我了解独立进程具有单独的 CUDA 上下文,它们在 GPU 上按顺序运行。但这些请求实际上是同一进程中的不同线程,应该共享一个 CUDA 上下文。所以根据documentation,GPU 可以同时运行多个内核。如果是这样,是不是意味着如果我有大量的请求同时到达,GPU 利用率可以达到 100%?但这在我的实验中从未发生过。

  2. 在不同的线程中运行一个会话与在不同的线程中运行不同的会话有什么区别?哪种是实现 Tensorflow 服务器的正确方法? Tensorflow Serving 使用哪一个?

任何建议将不胜感激。谢谢!

【问题讨论】:

    标签: multithreading tensorflow gpu tensorflow-serving


    【解决方案1】:

    关于 #1:所有请求都将在同一个 GPU 上按顺序运行,因为 TF 为每个物理 GPU 设备使用全局单一计算流 (https://github.com/tensorflow/tensorflow/blob/master/tensorflow/core/common_runtime/gpu/gpu_device.cc#L284)

    关于#2:在多流方面,这两个选项是相似的:默认情况下多流是不启用的。如果您想尝试多流,可以尝试virtual_device 选项(https://github.com/tensorflow/tensorflow/blob/master/tensorflow/core/protobuf/config.proto#L138

    谢谢。

    【讨论】:

    • 我有点不清楚你所说的“多流”是什么意思。你的意思是每个逻辑设备都会有自己的流吗?如果我理解正确,这似乎与您对第 1 部分的回答相矛盾,您说“TF 对每个物理 GPU 设备使用全局单一计算流”。
    【解决方案2】:

    对于模型推理,您可能需要查看高性能推理引擎,例如 nvidia triton。它允许多个模型实例,每个模型实例都有专用的 cuda 流,GPU 可以在其中利用更多的并行性。

    https://docs.nvidia.com/deeplearning/triton-inference-server/master-user-guide/docs/architecture.html#concurrent-model-execution

    【讨论】:

      猜你喜欢
      • 2020-02-11
      • 1970-01-01
      • 2018-10-24
      • 2021-05-04
      • 1970-01-01
      • 1970-01-01
      • 2018-02-19
      • 2018-04-06
      • 2020-03-15
      相关资源
      最近更新 更多