我使用 GPU (1080 ti) 训练了一个神经网络。在 GPU 上的训练速度远远优于使用 CPU。
目前,我想使用 TensorFlow Serving 来服务这个模型。我只是想知道在服务过程中使用 GPU 是否对性能有同样的影响?
由于训练适用于批处理,但推理(服务)使用异步请求,您是否建议使用 GPU 来为使用 TensorFlow 服务的模型提供服务?
我使用 GPU (1080 ti) 训练了一个神经网络。在 GPU 上的训练速度远远优于使用 CPU。
目前,我想使用 TensorFlow Serving 来服务这个模型。我只是想知道在服务过程中使用 GPU 是否对性能有同样的影响?
由于训练适用于批处理,但推理(服务)使用异步请求,您是否建议使用 GPU 来为使用 TensorFlow 服务的模型提供服务?
简短的回答是肯定的,训练后在 GPU 上运行将获得大致相同的加速。有一些小资格。
您在训练中对数据进行了 2 次传递,这一切都发生在 GPU 上,在前馈推理期间,您做的工作更少,因此相对于计算而言,将数据传输到 GPU 内存的时间将比训练中更多。不过,这可能是一个很小的区别。如果这是一个问题,您现在可以异步加载 GPU ( https://github.com/tensorflow/tensorflow/issues/7679 )。
您是否真的需要 GPU 进行推理取决于您的工作量。如果您的工作负载要求不高,那么无论如何您都可以使用 CPU,毕竟每个样本的计算工作负载不到一半,因此请考虑您需要服务的每秒请求数并测试是否你超载你的CPU来实现这一点。如果你这样做了,是时候把 GPU 拿出来了!
你仍然需要在图上做很多张量操作来预测一些东西。所以 GPU 仍然为推理提供了性能提升。看看这篇nvidia 论文,他们还没有在 TF 上测试过他们的东西,但它仍然是相关的:
我们的结果表明,GPU 提供了最先进的推理性能和能源效率,使其成为想要在该领域部署经过训练的神经网络的任何人的首选平台。特别是,Titan X 的性能比 16 核 Xeon E5 CPU 高 5.3 到 6.7 倍,同时能效提高 3.6 到 4.4 倍。