上一篇文章中,我們已明確P-GPU/D-CPU模式相較于PD-GPU模式時(shí),Decode階段性能會(huì)顯著下降。但P-GPU/D-CPU模式通過(guò)GPU快速完成Prefill階段,從而能快速釋放GPU資源以處理更多新請(qǐng)求的Prefill階段,可能提升系統(tǒng)整體的TTFT(首個(gè)詞元生成時(shí)間)和并發(fā)能力,在特定場(chǎng)景下仍具應(yīng)用價(jià)值。
這些討論默認(rèn)GPU參與是既定事實(shí)。 但在完整的技術(shù)選型和成本效益分析中,不能僅停留在“有GPU時(shí)怎么做得更好”。一個(gè)更根本的問(wèn)題是:當(dāng)我們考慮將Prefill和Decode階段完全交由CPU處理(即PD-CPU模式)時(shí),P-GPU/D-CPU這種引入GPU硬件和跨設(shè)備復(fù)雜性的方案,其性能提升是否顯著到足以讓我們放棄純CPU方案的簡(jiǎn)潔與便捷?尤其是在處理長(zhǎng)輸入、短輸出(LISO)這類對(duì)首個(gè)詞元生成時(shí)間(TTFT)和GPU周轉(zhuǎn)率要求較高的場(chǎng)景時(shí),P-GPU/D-CPU模式的潛力值得深入探究。
換句話說(shuō),之前的實(shí)驗(yàn)只將P-GPU/D-CPU方案與全GPU的方案進(jìn)行了對(duì)比,但沒(méi)有與全CPU方案進(jìn)行對(duì)比。本文正是要補(bǔ)齊這一環(huán),通過(guò)新的實(shí)驗(yàn)數(shù)據(jù),考察P-GPU/D-CPU模式在面對(duì)純CPU方案時(shí),其性能表現(xiàn)和應(yīng)用價(jià)值究竟如何。
關(guān)于Prefill階段和Decode階段吞吐量的巨大差異的內(nèi)容,可以閱讀本篇文章
關(guān)于PD階段在CPU上運(yùn)行分析的內(nèi)容,可以閱讀本篇文章
實(shí)驗(yàn)設(shè)計(jì)與對(duì)比方案
本次實(shí)驗(yàn)的核心設(shè)計(jì)思路是分別測(cè)試長(zhǎng)輸入長(zhǎng)輸出(LILO)、長(zhǎng)輸入短輸出(LISO)、短輸入長(zhǎng)輸出(SILO)和短輸入短輸出(SISO)四種情況下,PD都在GPU上運(yùn)行、P在GPU,D在CPU上運(yùn)行,以及PD都在CPU上運(yùn)行的耗時(shí)。本文將重點(diǎn)分析長(zhǎng)輸入短輸出(LISO)的數(shù)據(jù),以評(píng)估P-GPU/D-CPU模式的特定優(yōu)勢(shì)。
實(shí)驗(yàn)使用gpt2模型,模擬 100 個(gè)并發(fā)用戶請(qǐng)求,長(zhǎng)輸入、長(zhǎng)輸出對(duì)應(yīng)的是512個(gè)token,而短輸入、短輸出都是對(duì)應(yīng)的64個(gè)token。
實(shí)驗(yàn)代碼已開源??梢允褂帽炬溄樱?/div>
https://github.com/chen-ace/LLM-Prefill-Decode-Benchmark。開源庫(kù)中提供了英偉達(dá)CUDA的腳本和Apple M系列芯片的代碼。方便蘋果筆記本的用戶也能運(yùn)行測(cè)試腳本。但由于Apple M系列設(shè)備的硬件資源有限,因此MPS版本的測(cè)試代碼只是用了gpt2模型進(jìn)行測(cè)試。
實(shí)驗(yàn)所要探究的核心問(wèn)題是:P-GPU/D-CPU模式在與純CPU(PD-CPU)模式的對(duì)比中,是否依然保有足夠的性能優(yōu)勢(shì)以證明其應(yīng)用價(jià)值。
P階段
我們將整個(gè)過(guò)程分兩階段分析,首先關(guān)注單獨(dú)的P階段數(shù)據(jù)。
如上圖所示,PD分離后,P階段可以充分利用GPU資源,在運(yùn)行效率上獲得了較大的提升,具體數(shù)值如表一所示,LILO模式下,P-GPU比P-CPU節(jié)省了4.59s;LISO模式下,P-GPU比P-CPU節(jié)省了5.51s;SILO模式下,P-GPU比P-CPU節(jié)省了0.56s;SISO模式下,P-GPU比P-CPU節(jié)省了0.72s;
表一 四種情況下P階段所消耗時(shí)間統(tǒng)計(jì)表
PD-GPU
P-GPU/D-CPU
PD-CPU
P階段在GPU比在CPU上節(jié)省的時(shí)間
LILO模式P階段耗時(shí)(s)
0.8322
0.797
5.3853
4.5883
LISO模式P階段耗時(shí)(s)
0.8158
0.8076
6.3184
5.5108
SILO模式P階段耗時(shí)(s)
0.1008
0.1083
0.6658
0.5575
SISO模式P階段耗時(shí)(s)
0.1008
0.1082
0.8291
0.7209
完整階段
從P階段的數(shù)據(jù)來(lái)看,即使是在CPU上運(yùn)行,最長(zhǎng)耗時(shí)也就6.32s,對(duì)于GPU資源的寶貴性醒來(lái)說(shuō),還是可以接受的范圍。但是如果加上D階段的耗時(shí)就是另外一回事了,數(shù)據(jù)如下表所示:
表二 四種情況下PD各階段所消耗時(shí)間統(tǒng)計(jì)表(比值均為PD-CPU與P-GPU/D-CPU的倍率)
PD-GPU
總耗時(shí)
P-GPU/D-CPU
總耗時(shí)
PD-CPU
總耗時(shí)
各階段倍率
總耗時(shí)倍率
LILO模式P階段耗時(shí)(s)
0.83
23.14
0.80
100.57
(含KV轉(zhuǎn)移時(shí)間)
5.39
162.02
6.76
1.61
LILO模式D階段耗時(shí)(s)
22.31
98.52
156.63
1.59
LISO模式P階段耗時(shí)(s)
0.82
2.06
0.81
18.47
(含KV轉(zhuǎn)移時(shí)間)
6.32
26.47
7.82
1.43
LISO模式D階段耗時(shí)(s)
1.24
16.40
20.15
1.23
SILO模式P階段耗時(shí)(s)
0.10
10.69
0.11
59.94
(含KV轉(zhuǎn)移時(shí)間)
0.67
55.02
6.15
0.92
SILO模式D階段耗時(shí)(s)
10.58
59.65
54.35
0.91
SISO模式P階段耗時(shí)(s)
0.10
0.56
0.11
6.40
(含KV轉(zhuǎn)移時(shí)間)
0.83
4.77
7.66
0.75
SISO模式D階段耗時(shí)(s)
0.46
6.16
3.94
0.64
實(shí)驗(yàn)數(shù)據(jù)如上圖所示:在SILO以及SISO模式下,P階段在GPU上的提升在整個(gè)PD過(guò)程中性能的提升可以忽略不計(jì)。但是在LISO模式下,P階段在P-GPU/D-CPU模式中消耗時(shí)間為0.8076s,而在PD-CPU模式中則消耗了6.3184s,速度提升了7.82倍,D階段在P-GPU/D-CPU模式中,消耗時(shí)間為16.3957s,PD-CPU模式中,D階段消耗時(shí)間為20.1514,速度提升了1.23倍。
從實(shí)驗(yàn)的數(shù)據(jù)中可以很明顯地得出以下結(jié)論:
LISO場(chǎng)景性能更優(yōu)
面對(duì)長(zhǎng)輸入序列(如512詞元),GPU在Prefill階段擁有顯著的速度優(yōu)勢(shì)。這一巨大優(yōu)勢(shì)足以彌補(bǔ)CPU Decode階段的相對(duì)緩慢,使得P-GPU/D-CPU模式在處理長(zhǎng)輸入時(shí),總耗時(shí)明顯優(yōu)于純CPU模式,例如在長(zhǎng)輸入長(zhǎng)輸出時(shí),實(shí)測(cè)速度提升可達(dá)約1.61倍,在長(zhǎng)輸入短輸出時(shí)也達(dá)到了約1.43倍的提升。
GPU資源緊張時(shí),優(yōu)化TTFT與并發(fā)能力
當(dāng)GPU資源成為瓶頸時(shí),P-GPU/D-CPU模式的價(jià)值尤為突出。它允許GPU在快速完成計(jì)算密集的Prefill階段后,立即將后續(xù)的Decode任務(wù)卸載給CPU處理。這樣能迅速釋放寶貴的GPU資源,使其能夠服務(wù)于更多新的并發(fā)請(qǐng)求,從而有效縮短用戶感知的首個(gè)詞元生成時(shí)間(TTFT)并提升系統(tǒng)的整體并發(fā)處理能力。這對(duì)于那些需要優(yōu)先保證眾多用戶快速獲得初步響應(yīng),而非追求單用戶極致長(zhǎng)序列生成速度的場(chǎng)景,是一個(gè)極具吸引力的平衡策略。
總結(jié)
P-GPU/D-CPU部署策略在處理LISO任務(wù)時(shí)表現(xiàn)最佳,能顯著優(yōu)化首個(gè)詞元生成時(shí)間(TTFT)和并發(fā)處理能力,尤其適合GPU資源瓶頸的場(chǎng)景。其優(yōu)勢(shì)源于GPU對(duì)Prefill階段的極致加速及后續(xù)CPU Decode階段的相對(duì)高效,總體性能明顯優(yōu)于純CPU方案。
盡管此策略也能加速LILO任務(wù),但考慮到LILO本身耗時(shí)較長(zhǎng)可能影響交互體驗(yàn),LISO更能發(fā)揮P-GPU/D-CPU在提升即時(shí)響應(yīng)方面的特長(zhǎng)。
但是P-GPU/D-CPU并非普適方案。對(duì)于短輸入任務(wù),純CPU因其簡(jiǎn)潔和低開銷反而更具優(yōu)勢(shì)。
因此,選擇部署策略時(shí),需權(quán)衡P-GPU/D-CPU的性能提升與實(shí)現(xiàn)復(fù)雜性、成本,并結(jié)合具體應(yīng)用場(chǎng)景、性能瓶頸和對(duì)復(fù)雜度的接受程度來(lái)綜合決策。