运行时间分析
不同的模型在cpu和gpu下的时间差异较大,一般来说gpu会比cpu快5-20倍。我们选用了最常用的inception v3的分类模型,输入图片尺寸为:3x299x299。
GPU
在一块P100GPU(显存16276MiB),性能如下:
由上图可见,随着进程数目的增大耗时会线性增加。
所以:如果服务中在同个卡上多开进程只是服务连接/下载图片的并发实现了并发提速(neuron框架中连接建立、下载图片、算法处理是并发独立的,可近似认为互不影响);算法的吞吐量基本不变。而且从RT角度考虑单进程较好独占卡(任务可以占据Volatile GPU-Util 90%左右的情况下)。
当然,如果RT满足要求,卡上可以同时部署其他任务。
CPU
Intel(R) Xeon(R) CPU E5-2620 v3 @ 2.40GHz 24核服务器下。TF默认为尽可能的占用所有的核,真正的neuron服务也是尽可能的占用所有的核,所以请求量大的时候RT会上升。
24核服务器下,QPS呈现log趋势。考虑RT,算法可以开启10个进程较优。此时CPU使用率已经逼近2400%。当然如果RT有限制,则采用更小的并发/更多的机器。
PS:一个进程下CPU占用率1600% 2个并发2000% 3个并发2100% 4个并发2200% 5个并发2250% 6个并发已达2280%。
CPU more
从另个角度来看,通过改变进程使用的核数统计RT值。这部分和前面CPU部分很类似。
对于这个分类任务,10核以后性能基本不会提升了(并发就到这水平了)。
如果要保证一定的RT,就要保证每个请求可以拿到足够多的核。
总结
单GPU QPS可以达到55;24核CPU的QPS可以达到24左右。但是GPU的TR要远低于CPU,不过GPU并发数上来,RT也会线性增加。
按照目前线上一个GPU的成本约等于96个CPU核,CPU性价比还是远优于GPU的。
PS:评测中P100性能较好价格较贵、CPU E5-2620已经较为(古老)便宜了。