![]()
![]()
大語言模型推理的兩個階段
根據嚴明玉團隊的研究,大語言模型的推理過程可以分為兩個完全不同的階段,Prefill階段和Decode階段。每個階段的性能瓶頸和挑戰各不相同。
這個過程主要依賴于大規模矩陣運算,GPU的計算單元負載較高,且并行性較好,因此,推理的瓶頸主要受到計算能力的制約。這意味著,推理延遲和吞吐量主要取決于GPU的算力。
![]()
相比Prefill階段,Decode階段需要逐步生成輸出的每個token。
因此Decode階段的性能更多受到內存訪問速度的限制,而不是算力。
研究還指出,推理過程中到底是Prefill慢還是Decode慢,并不是固定的,它與輸入和輸出的長度密切相關。
![]()
輸入較短時,Decode階段通常是瓶頸;但輸入較長時,Prefill階段的計算量增加,反而可能成為瓶頸。
![]()
影響推理性能的因素
Decode階段的瓶頸與模型規模也有很大關系。
![]()
對于較小的模型頻繁訪問KV Cache的Attention計算會成為瓶頸;但對于較大的模型,前饋網絡的內存加載成本則可能更加突出。
這意味著,不能簡單地將Attention或FFN視為固定的瓶頸,而是需要結合具體情況來判斷。
研究團隊還對能耗進行了分析,結果顯示,大語言模型推理的總能耗幾乎全部來自Decode階段。
輸入長度對總能耗的影響很小,而輸出的token數量則幾乎直接決定了能耗的大小。因此,若要降低能耗,限制輸出長度比優化Prefill階段的計算更為有效。
![]()
在多GPU擴展方面,團隊的實驗發現,GPU的并行處理并非在所有場景下都能帶來性能提升。
對于Prefill階段,由于計算量大,分攤到多GPU上通常能夠提高效率。
在Decode階段,由于計算量較小,每一步都需要頻繁的GPU間通信和同步,這反而可能成為性能瓶頸,導致并行化效果不明顯,甚至可能會拖慢速度。
因此,在Decode為主的場景下,單GPU或較輕量的流水并行方案可能更為合適。
![]()
![]()
總結
嚴明玉教授團隊的這項研究為我們提供了一套完整的、系統的框架,幫助我們深入理解大語言模型推理階段的性能瓶頸。研究表明,推理性能不僅僅取決于算力或Attention計算,還涉及內存帶寬、計算和內存的平衡以及系統配置等多方面因素。
對于工程師和研究人員來說,這項研究的意義不僅在于糾正了一些長期存在的誤解(如Attention是瓶頸、多GPU一定更快等),更重要的是為后續的優化方向提供了清晰的思路:Prefill和Decode階段應分別針對其特有的瓶頸進行優化,而不是簡單的統一方案。
![]()
隨著大語言模型的不斷發展,我們必須從系統級別重新審視其性能表現,從而更有效地設計出高效的推理架構,并應對日益增長的計算需求。這項研究不僅為大語言模型的未來發展提供了寶貴的見解,也為優化策略的制定提供了切實可行的指導。
特別聲明:以上內容(如有圖片或視頻亦包括在內)為自媒體平臺“網易號”用戶上傳并發布,本平臺僅提供信息存儲服務。
Notice: The content above (including the pictures and videos if any) is uploaded and posted by a user of NetEase Hao, which is a social media platform and only provides information storage services.