運行時間分析
不同的模型在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已經較為(古老)便宜了。