愛伊米

GPU在計算機架構的新黃金時代還會繼續閃耀嗎?

作者 | CP Lu

譯者 | 王強

策劃 | 劉燕

本文最初發佈於 Medium 網站,經原作者授權由 InfoQ 中文站翻譯並分享。

John Hennessy 和 David Patterson 在 2018 年 6 月 4 日以 2017 年圖靈獎(相當於計算機科學諾貝爾獎)的獲得者身份發表了他們的圖靈講座《計算機架構新的黃金時代》。講座的三個關鍵見解分別是:

軟體進步可以激發架構創新。

硬體 / 軟體介面的進化為架構創新創造了機會。

市場最終會解決架構爭論。

我想再補充第四點,補全這個迴圈:

在競爭中勝出的架構促進了後續的軟體進化。

自從 Hennessy/Patterson 的演講以來,市場可以說已經在 AI 領域中實現了見解 #3,將圖形處理單元(GPU)推舉為推動 AI 革命的架構勝出者。在本文中,我將探討 AI 革命是如何激發架構創新和重新發明 GPU 的。我希望本文能回答我自己的一個重要問題:

GPU 能否在計算機架構新的黃金時代繼續閃耀?

領域特定架構

Henessy 和 Patterson 提出了領域特定架構(DSA)的概念,旨在為計算機架構帶來創新,努力邁向新的黃金時代。

顧名思義,GPU 是 3D 圖形領域的 DSA。它的目標在 3D 虛擬世界中渲染照片般逼真的影象;然而,幾乎所有人工智慧研究人員都在使用 GPU 來探索超越 3D 圖形領域的想法,並在人工智慧的“軟體”,也就是神經網路架構方面取得了一系列突破。

GPU 在 3D 世界仍然是不可或缺的,同時它已成為人工智慧世界的“CPU”,因為它促進了 AI 的軟體創新。除了 3D 用途之外,GPU 架構師一直在努力將 GPU 的計算資源用於非 3D 用例。我們將這種設計理念稱為通用 GPU(GPGPU)。

如今,我們看到行業中湧現了大批 AI DSA 而非 GPGPU,前者試圖憑藉更好的效能來取代 GPU。甚至 GPU 本身也掙扎在它的雙重屬性,AI DSA 和 3D DSA 之間。原因是 AI DSA 需要加速張量運算,這在 AI 中是很常見的運算,但在 3D 世界中是沒有的。同時,為 3D 用途準備的固定功能硬體對 AI 來說一般是不需要的。

於是,架構爭論的主題應該集中在以下幾個方面:

GPU 能否保住人工智慧世界“CPU”的寶座?

GPU 是否會分成兩種 DSA,一種用於 AI,另一種用於 3D?

我的預測如下:

GPU 硬體 / 軟體介面將維持 GPU 作為 AI 世界“CPU”的地位。

基於 AI 的渲染會讓張量加速成為 GPU 的一大支柱。

虛擬世界和現實世界互相對映的數字孿生理念將主導市場,最終解決架構爭論。

GPU 硬體 / 軟體介面

我們可以將 GPU 在 3D 領域中的主導地位和在 AI 世界中取得的巨大成功歸功於它的硬體 / 軟體介面,這種介面是 GPU 和 3D 圖形軟體架構師努力推行的。這種介面是解決以下悖論的關鍵。雖然 GPU 社群在繼續提升 GPU 的通用性,但業界的其他人已轉向更專業的硬體,以應對摩爾定律終結的困境。

GPU在計算機架構的新黃金時代還會繼續閃耀嗎?

GPU 流水線

雙層可程式設計性

從概念上講,GPU 是一個處理很多階段的較長線性流水線。不同型別的工作專案在流經這個流水線時被一一處理。在早期,每個處理階段都是一個功能固定的塊。程式設計師對 GPU 能做的唯一控制就是調整每個塊的引數。

如今,GPU 硬體 / 軟體介面讓程式設計師可以自由地處理每個工作專案,無論它們是頂點還是畫素。開發者無需在每個頂點或畫素迴圈中處理迴圈頭,因為 GPU 架構師在一個固定函式中實現了它。這種架構選擇讓程式設計師負責關注迴圈體,或稱“著色器”,它通常以工作專案的型別命名,例如用於處理頂點的“頂點著色器”和用於處理畫素的“畫素著色器”。

現代遊戲是如何透過這種線性流水線生成令人驚歎的畫面的呢?除了透過流水線在一個 pass 中控制不同型別的著色器之外,程式設計師還可以透過流水線的多個 pass 逐步生成多張中間影象,最終生成螢幕上看到的影象。程式設計師快速建立了一個計算圖,描述了中間影象之間的關係。圖中的每個節點代表透過 GPU 流水線的一個 pass。

通用計算資源的集中池

一箇中心化的通用計算資源池被不同的處理階段之間共享,用來完成繁重的工作。這種方案的最初動機是為了負載平衡。在不同的使用場景中,各個處理階段可能具有截然不同的負載。被稱為著色器核心的計算資源逐漸變得更具通用性,以實現靈活性和產品差異化。

某一天,GPU 架構師嘗試將中心化著色器池作為 GPGPU 提供給了非 3D 應用程式。這種設計方案讓 GPU 在 AI 任務方面取得了突破,甚至將 AI 任務作為了自己的兼職工作。

均衡的專業能力

GPU 架構師時不時會在不改變硬體 / 軟體介面的情況下,透過新增協處理單元來“加速”或“對領域定製”著色器池。紋理單元就是這樣一個協處理單元,紋理貼圖中的紋素透過它在到達著色器池的途中被提取和過濾。特殊函式單元(SFU)是負責執行超越數學函式的另一種協處理單元,處理對數、平方根倒數等函式。

雖然這聽起來很像 CPU 中的超標量設計,但它們有一個顯著區別:GPU 架構師根據著色器程式使用協處理單元的“平均”頻率來分配協處理單元的吞吐量。例如,我們可以為紋理單元提供著色器池吞吐量的八分之一,因為我們假設紋理操作出現在基準測試或遊戲中的時間平均為八分之一。當協處理單元處於繁忙狀態時,GPU 會切換任務以讓自己的資源被充分利用。

用於 3D 用途的張量加速

在前文中,我指出了 GPU 在 3D 用途中難以利用張量加速。我們看看如果我們改變 GPU 渲染典型遊戲幀的方式,這種狀況能否改變。GPU 首先為每個畫素生成為畫素著色所需的所有資訊,並存儲在

G-buffer

中。從 G-buffer 中,我們會計算如何點亮一個畫素,然後是幾個處理步驟,包括:

去除鋸齒邊緣(抗鋸齒,AA)

將低解析度影象放大到更高精度的影象(超解析度,SR)

向整個幀新增一些特定視覺效果,例如環境光遮蔽、運動模糊、布隆過濾或景深。

我們稱這種渲染方案為 延遲著色,因為對畫素的著色是“延遲”的,直到每個畫素都獲得所需的資訊後才開始。我們將照明之後的處理步驟稱為後處理。今天,後處理消耗了大約 90% 的渲染時間,這意味著 GPU 的螢幕時間主要用在 2D 而非 3D 上!

NVIDIA 已經展示了用來做 AA 和 SR,基於 AI 的 DLSS 2。0,這項技術聲稱可以生成比沒有 DLSS 2。0 的原生渲染影象更好看的畫面。

此外,NVIDIA 還為光線追蹤提供了基於 AI 的蒙特卡羅去噪演算法,這樣我們就可以使用很少的光線來實現原本需要更多光線才能做到的畫面質量。另外,人工智慧技術為其他許多後處理型別提供了一類新的解決方案,例如用於環境遮蔽的 NNAO 和用於景深的 DeepLens。

如果基於 AI 的後處理成為主流,張量加速將成為 GPU 在 3D 用途上的支柱。GPU 分化為 3D DSA 和 AI DSA 的可能性也會下降。

3D/AI 融合

為了解決架構爭論,我們要解決最後一個難題:我們最後是否應該移除 3D 渲染中的固定功能硬體,尤其是在用於 AI 用途時這樣做?請注意,透過 GPGPU,GPU 可以將 3D 渲染作為純“軟體”來實現,而無需使用任何固定功能的硬體。

嚴格意義上講,給定場景引數,3D 渲染模擬的是光子如何從光源穿過空間,與 3D 虛擬世界中的物件互動。GPU 的傳統 3D 渲染過程是這個過程的一個非常粗略的近似。

因此,微軟將光線追蹤宣傳為“未來的完整 3D 效果”時表示,“[基於傳統光柵化的]3D 圖形是一個謊言”。然而,一位 3D 渲染純粹主義者可能仍然不會理會光線追蹤技術,因為在光線追蹤過程中,我們是將光線從畫素向後追蹤到 3D 虛擬世界來實現 3D 渲染的,這也是不真實的。

這兩種方法都是基於模擬的 3D 渲染的近似方案。在兩種方案下,我們都會將 3D 虛擬世界的建模,或者說內容建立與渲染分離開來。

在第一種方案下,對 3D 虛擬世界建模需要工程師和藝術家進行大量艱苦而富有創造性的工作,來描述每個物件及其與燈光互動方式的物理屬性。

在第二種方案下,透過渲染做到完全真實是不可能的,因為我們需要大幅簡化 3D 渲染以在資源預算內達成多個性能目標。

相比使用最著名的科學知識和數學理論為給定問題尋找解決方案,人工智慧方法是從資料中“學習”計算模型,或者說神經網路。我們透過反覆試驗迭代地調整網路引數。我們透過先前的引數估計向前執行網路並測量失配或稱“損失”。

然後我們根據梯度調整引數以減少損失,有效地向梯度的相反方向引導損失圖景。這種機制稱為反向傳播,要求沿前向路徑的所有計算都是可微的,以參與梯度計算。

神經渲染是一個新興的人工智慧研究領域,它使用上述方法來研究 3D 渲染。下面是我用來跟蹤神經渲染進展的思維導圖:

GPU在計算機架構的新黃金時代還會繼續閃耀嗎?

這個 3D 虛擬世界模型隱式表示為神經網路引數(參見 NeRF、GRAF、GIRAFFE),我們將真實世界影象與我們從虛擬世界渲染的影象對比來推斷出這些引數。然後我們反向傳播對比的梯度來調整神經網路引數。或者,我們可以從資料中學習顯式 3D 網格(參見 DeepMarching Cube,GAN2Shape)。

實際上,對 3D 虛擬世界建模與學習神經網路引數是一回事。這個過程要求我們在前向路徑中包含一個 3D 渲染流水線,並在多個緊密迴圈中整合 3D 虛擬世界的建模和渲染。透過對真實世界影象迭代多個渲染和測試,我們獲得了可用於渲染虛擬世界新檢視的所需模型和場景引數。

在這個框架內,我們可以選擇不調整每個引數的整體,例如,保持物體的形狀完整但估計其位置(參見 iNeRF)。這樣,我們可以高效地嘗試識別和定位有問題的物件,而不是對其建模。建模和識別任務之間不再存在區別。相反,問題在於我們想要“學習”或“估計”哪些場景引數。

結 論

因此,在人工智慧解決問題的正規化下,3D 渲染的目標不僅是生成 3D 虛擬世界的逼真影象,而且還是根據現實世界來構建虛擬世界。此外,新的框架透過以下方式重新定義了 3D 和 AI:

3D 渲染成為 AI 訓練迴圈中必不可少的操作

訓練,或“梯度下降”,過去只出現在雲中的神經網路訓練過程,現在則是推理的一部分。

照片級影象與保持真實世界和虛擬世界之間的對應關係是同樣重要的。

數字孿生理念要求將龐大且不斷變化的現實世界帶到其尚未開發的孿生虛擬世界中,並不斷維持兩者之間的對應關係。透過神經渲染獲得的虛擬物件需要與透過經典方法構建的虛擬物件共存。

因此,我相信神經渲染和傳統渲染將在 GPU 上融合,充分利用其成熟和高效能的 3D 流水線。數字孿生的需求將由未來的 GPU 負責實現。我們還需要在 GPU 端做很多工作來實現“可微”,以參與 AI 訓練迴圈的梯度計算,。

假設 GPU 因響應 3D 世界中的 AI 進展而獲得原生可微和張量加速能力,我預計 GPU 的雙重人格將化為一體。

然後,GPU 會維持其首選架構的地位,繼續促進 AI 軟體的進一步發展,並最終在計算機架構新的黃金時代繼續閃耀。

https://towardsdatascience。com/will-the-gpu-star-in-a-new-golden-age-of-computer-architecture-3fa3e044e313