機器學習系統與基礎設施
CUDA 圖(CUDA graphs)
從 CPU 啟動一個 GPU 核心要花幾微秒的開銷——對單一大核心而言可以忽略,但當你像小批次大型語言模型推論那樣連發上千個小核心時,就會要命。CUDA 圖讓你把一整串核心啟動以「運算之圖」的形式錄一次,之後用單一次啟動就重播整串,每個核心的 CPU 成本只在擷取時付一次。
你把一串 CUDA 運算——核心、記憶體複製、以及它們之間的依賴——擷取進一個圖物件,實例化一次,此後就反覆啟動這個實例化的圖。重播以一次 CPU 呼叫把整張有向無環圖(DAG)交給 GPU,消除每個核心的啟動延遲,並讓驅動程式高效地排程那個固定的依賴結構。限制在於這張圖是靜態的:每次重播都是相同的核心、相同的形狀、通常還是相同的記憶體位址,所以輸入必須寫進預先配置好的緩衝區,控制流也不能在各次迭代間改變。
對解碼吃重的大型語言模型服務、以及其他受限於 CPU 啟動的工作負載,圖重播能消除那些原本害 GPU 在小核心之間空轉的啟動氣泡——端到端常是一大勝利。代價是僵硬,這也是為何圖天生就和靜態形狀、固定批次的推論搭,而不和動態的訓練迴圈搭。
又称
另见