Kev*_*ang 9 multithreading gpu tensorflow tensorflow-serving
我正在尝试在一个 NVIDIA Tesla V100 GPU 上运行 Tensorflow 作为服务。作为服务器,我的程序需要同时接受多个请求。所以,我的问题如下:
当多个请求同时到达时,假设我们没有使用批处理,这些请求是在 GPU 上顺序运行还是并行运行?我了解独立进程具有单独的 CUDA 上下文,它们在 GPU 上按顺序运行。但这些请求实际上是同一进程中的不同线程,应该共享一个 CUDA 上下文。所以根据文档,GPU 可以同时运行多个内核。如果这是真的,是否意味着如果我有大量请求同时到达,GPU 利用率可以达到 100%?但这在我的实验中从未发生过。
在不同线程中运行一个会话与在不同线程中运行不同会话有什么区别?哪个是实现 Tensorflow 服务器的正确方法?Tensorflow Serving 使用哪一种?
任何建议将被认真考虑。谢谢!
关于#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)
谢谢。
| 归档时间: |
|
| 查看次数: |
2700 次 |
| 最近记录: |