這兩個月,英特爾(Intel)在顯卡產品上的更新動作愈加頻繁。如8月初Intel在SIGGRAPH繪圖大會上首次展示了Arc Pro顯卡——鎖定專業繪圖市場;上周則正式推出了資料中心GPU Flex系列——不過這個系列是基於Xe-HPG架構,和Ponte Vecchio那樣更純粹的加速卡(Xe-HPC架構)還是有區別,針對的應用類型包括遊戲、視訊媒體、VDI (virtual desktop infrastructure)、AI等。
前不久的Hot Chips 34之上,Intel更詳細地介紹了Ponte Vecchio,並宣稱Ponte Vecchio相較Nvidia A100有2.5倍的性能優勢。似乎無論是PC遊戲、專業視覺、資料中心繪圖運算,還是資料中心AI與HPC加速,Intel都有大舉攻城的意思,而且產品上和Nvidia、AMD高度重合;即便Intel在這一領域還是十足的新手。
很少有新手以這麼快的速度全面覆蓋GPU應用的各方各面,畢竟無論在哪個市場上,Nvidia都佔據著絕對的強勢地位。尤其像PC遊戲、專業繪圖加速這些應用領域,實則都已經發展到了相對成熟的階段,早就過了百花齊放的市場爭霸期,新進選手要在其中分一杯羹已經有十二分難度。
不過資料中心市場的確還有巨大發展空間,要不然近些年也不會湧現出這麼多資料中心的AI訓練(training)晶片,以及完全不做繪圖運算的GPU產品。在這一市場上,由於異質運算趨勢的到來,GPU的地位空前顯赫,CPU的市場地位已經大不如前。這應該也是Intel當前花大代價開發GPU (和更多DSA晶片)的關鍵。
從既有PC市場的少量Arc GPU鋪貨情況來看,在PC的遊戲GPU產品上,Intel現下最欠缺的還是軟體和生態:包括驅動程式的效率、遊戲的支援度,以及部分新特性的亟待問世。但這也的確不是一蹴可幾,Nvidia和AMD都耕耘幾十年。
跟摩爾定律有點關係
遊戲和繪圖運算的新特性裡,有一項是當前的大熱門,即基於AI的超解析度(Super Resolution)技術:用通俗的話來說,也就是把低解析度的畫面upscale為高解析度。這麼做的好處在於,GPU渲染低解析度的畫面,超解析度過後,也能獲得不錯的畫質和觀感;更重要的是,因為只渲染低解析度內容,所以遊戲影格率(又稱幀率)還能顯著提升。
以前,遊戲畫面的清晰度(解析度)和流暢度(影格率)是一對矛盾體,GPU渲染更高的解析度必然意味著要犧牲影格率,反之亦然。超解析度技術似乎就是為了解決這個問題而生。超解析度技術本身一點也不新鮮,實施方案和演算法各異。
現在會被廣泛提起,一方面是因為摩爾定律放緩,GPU堆料、繪圖運算力提升不像以前那麼容易,急需技術來解決清晰度和流暢度的矛盾。另一方面則在於AI技術崛起,為超解析度提出了新的思路——而AI技術的崛起,和摩爾定律的放緩實則也有關係。
Intel版本的AI超解析度技術名為XeSS (Xe Super Sampling),關注GPU技術的讀者對此應該也不會陌生。XeSS本身就是Intel在大力宣傳的GPU技術點,畢竟誰不希望花更少的錢,獲得更高的遊戲影格率呢?超解析度技術對入門級GPU的意義非常大:原本很多入門GPU無法暢玩的遊戲,在有了超解析度技術加成之後,也能在不怎麼影響畫質的情況下暢玩了。
上周Intel專門發佈了一個大約40分鐘的視訊,用以解析XeSS技術——而且是讓Intel Fellow Tom Peterson主講,可見對於XeSS技術的重視。不過,這則視訊的內容基本還是在做科普,而且是大方向AI超解析度技術的科普。所以,它對於理解廣泛意義上的AI超解析度技術都算有幫助;在講解上比此前Nvidia公佈的資料更詳實。
那麼本文可大致談談AI是怎麼進行超解析度的。起碼在大方向上,它與Nvidia DLSS也十分相似。
遊戲中插入超解析度流程
GPU工作有個渲染流水線,先幹什麼、再幹什麼,最後成為螢幕上顯示的畫面——也就是一影格一影格的影像。每個影格都需要這樣工作,影格連在一起就構成了連續的畫面。下圖展示了對於一個傳統的4K解析度影格而言,3部分工作的佔比情況,其中渲染(render)佔了絕大部分時間。
時域抗鋸齒(TAA)和後處理(Post-Effects)只佔了一小部分。如果要讓每一影格處理的時間足夠少,那麼減少前面的Render & Pre-Effects的時間顯然是最符合直覺。減少這部分工作時間的方法,自然是渲染更少畫素(更低解析度)的畫面——比如把4K解析度降低到1,080p,或者把1,080p解析度降低至480p。
而另一方面,將TAA這個步驟換成超解析度(如XeSS),前後工作內容不變。那麼每一影格所需的時間就能縮短到如下圖的程度——因為Render渲染階段就不需要做4K解析度的工作,所以處理時間顯著變短;XeSS相較傳統的TAA所需的時間當然會更久一些——XeSS就是把1,080p解析度的畫面再upscale為4K解析度。
值得一提的是,XeSS階段的工作專案中多出了紫色的部分。這部分就可簡單看作是AI單元或對應指令的工作過程,所以這是個基於AI的超解析度技術。
對於Nvidia GPU而言,這部分工作交由Tensor core完成,聯發科則部分交給APU,Intel將自家GPU內部的AI單元稱作XMX (Xe Matrix Extensions)。對於Intel這一代用作繪圖運算的GPU而言,每個Xe核心都會配16個XMX矩陣引擎,結構上也就是脈動陣列(systolic array),用於AI工作的加速。
Tom Peterson特別談到,這裡的紫色部分雖然看起來不多,但實際上因為XMX指令在矩陣引擎中達成了16倍的性能提升,所以如果要是按照比例畫這部分工作,那麼已經超出這張圖的天際了。類似tensor core和XMX引擎的存在,本質上都是當代處理器朝著DSA方向邁進的佐證。
用AI來做超解析度
以上是從渲染管線和階段的角度談XeSS所處的位置,接下來就涉及到XeSS究竟怎麼工作的問題了。本質上將低解析度的畫面升格為高解析度的演算法,都是做一系列算術題,只不過不同技術所做的算術題不一樣,效果和複雜度也存在差異:不管是如何更好地抗鋸齒,還是把一個畫素神奇地切成幾個。
而AI的本質是透過訓練,建構出一個適用性很高的模型或網路。這個神經網路會從外界獲取資料,然後生成輸出。對於AI超解析度而言,從外界輸入的就是低解析度的影格,經過網路以後,生成高解析度的影格——這個輸出的高解析度影格起初應該是很不理想的。所以還要將其與原先就準備好、用做參考的超採樣、高解析度影像進行對比。
透過這種循環往復的對比和訓練,就能不斷修正輸出的幀、修正權重參數,令網路模型達到理想的效果。這個過程一般會在雲端進行,因為需要大量算力。最終得到滿意的模型,這個網路就可以拿來用了——也就是在遊戲過程中,將低解析度的影格輸入給該網路,就能獲得相對準確的高解析度影格,幾近達到原生高解析度渲染的效果,使用該網路的過程就叫AI推理(inference)。
日常所說狹義的AI大致上也就是這麼回事。從更往下的層面來說,這類繁重的運算任務通常意味著海量的乘加運算,下圖是在進行AI推理操作時,一般MAC乘法累加運算的過程,先對兩個寄存器中的Int8資料進行乘法運算,然後將結果與其他寄存器中的結果進行累加,大量此類運算在此過程中進行。
對於這類運算來說,專用的AI單元顯然有著高得多的效率。比如對於XMX矩陣引擎而言,就能大規模地平行做此類乘加運算,比進行一次次乘加、寫出結果,速度也就快得多了,所以Intel說XMX對此達成的吞吐提升最高有16倍。
在遊戲中真正實施這套方案的流程實際上還會更複雜——而且未來可能還有進一步進化的餘地。Nvidia DLSS發佈至今已經更新了很多版本,在Nvidia DLSS 1.0剛發佈之際,遊戲玩家的回饋並不好。在遊戲過程中,因為DLSS的接入,不少動態畫面會出現偽像。
Nvidia DLSS 2.0。
Intel XeSS。
於是DLSS 2.0對實施方案進行最佳化。DLSS 2.0的工作流程,XeSS實則與此還頗為相似。對於XeSS這道工序而言,首先輸入的是低解析度影格,以及動作向量(motion vectors)——對比一下DLSS 2.0會發現,Nvidia也是這麼幹的。motion vector也是相當重要,與此同時再加入已經生成的歷史影格資訊。
Tom Peterson在解釋中還特別談到了,會對camera進行抖動(camera可以理解為觀察遊戲畫面的視角),以生成更多樣本、更多資料。然後將這些連續影格再餵給XeSS,最終生成超解析度以後的高解析度畫面。下面的這個gif動態圖,相對抽象地解釋了這一過程。
中間的就是神經網路:從左邊輸入低解析度影格、運動向量,生成超解析度以後的高解析度影像——並且將該影格也將作為歷史影格,成為後續影格的素材,並且「我們還會在前面抖動camera,」Tom Peterson說。
軟體和生態問題
從XeSS所處流程,就不難發現,這東西是需要遊戲開發者特別接入對應API的。一旦涉及到開發,就和生態問題有關了。對於任何專用方向的應用而言,生態都是逃避不了的話題,繪圖運算如此,AI更是如此。就像Nvidia總是說自己可不只是一家晶片公司那樣,軟體和生態是其現如今制霸GPU市場的根本。晶片做的再好,卻沒有高效的軟體搭配,或者沒有開發者去應用,則晶片本身就沒有價值。
即便DLSS 1.0正式發佈至今也有3年多了,Nvidia也仍舊在不遺餘力地宣傳和擴張DLSS生態。不同GPU廠商之間的超解析度技術各有不同,開發者接入不同的超解析度技術自然涉及不同的開發更動。
Tom Peterson在談到XeSS SDK的時候說,其接入介面與TAA類似:「如果某個遊戲用上了TAA,則接入XeSS也不難。」
比較值得一提的是,Intel也做了單獨的模型來支援DP4a。對於DP4a指令的支援,應該主要是讓XeSS可以用到Arc之外的GPU上,其中也包括Intel現如今的核顯(Xe-LP)。像核顯這種繪圖運算資源緊張的GPU,接入超解析度技術的價值本身也是相當大。那麼不出意外的,XeSS也對其他廠商的GPU提供支援,主要自然就是AMD和Nvidia了。當然支援情況還是要看遊戲開發者支援度,這本身也是一種拓展生態的方法。
Tom Peterson在技術講解中也特別提到了DP4a指令的工作方式,工作效率會比一般MAC指令執行要高,但也會顯著低於專用AI單元。DP4a能做到4倍於MAC的並行度,如上圖所示——可與MAC和XMX做比較。
這次視訊講解中,Intel展示了20款遊戲對於XeSS的支援,其中已經有部分遊戲發售,未來應該會加上XeSS的支持補丁。與此同時Intel也特別提到了兩款新遊戲,一則將在今秋發佈的遊戲《使命與召喚:現代戰爭2》(Call of Duty: Modern Warfare II)。
還有一款是預計於2025年發佈的《Instinction》。去年就看到過有關這款遊戲的預告,其亮點之一是會採用虛幻引擎 5(UE5),包括對其中Lumen照明和Nanite虛擬幾何體特性的採用;另外當然就是會加入Intel XeSS支持。Intel特別提到這款遊戲,似乎是為了說明自家對XeSS技術長期支援的決心。
此前Arc顯卡發佈之初,網上對XeSS特性的上市時間和初期遊戲數量實則是多有詬病的。筆者倒是認為先期遊戲支援數量還不錯,只不過還要看XeSS達成的畫質水準如何,畢竟DLSS也不是發佈頭一天就廣受好評。
今年3月,Arc 3發佈之際,Tom在接受採訪時,我們就問過XeSS與DLSS相較,畫質水準和影格率提升效果如何。Tom Peterson回答:「很難去直接比較我們的AI網路和別家的同類技術,這對對比、評估、基準測試來說,其實都是個全新的領域。」實則在綜合畫質水準和影格率提升幅度因素之後,這樣的比較的確很難進行。
不過同樣作為生態的一部分,Intel似乎和UL Benchmarks也展開了合作,開發者版本的3DMark已經加入了針對XeSS的測試專案。只不過比的也就是開啟和關閉XeSS的兩種場景下,遊戲影格率變化情況;另外也支持設定渲染固定影格數,並放大對比原生渲染+TAA和XeSS之間的畫質水準如何——不過這個對比大概是指如1,080p渲染+TAA,和1,080p渲染並XeSS超解析度至4K後,兩者的靜態畫面比較。
基於畫質+影格率,應該也能做指標量化,來衡量不同的超解析度技術可達成的體驗加成效果;感覺3DMark未來也可以推這樣的Benchmark,這對推動AI超解析度技術的持續進化大概也會有幫助吧。
最後展示Intel提供的第一方影格率提升資料,這是基於Arc A770的測試結果,設定為XeSS性能模式,升格至1,440p解析度。看起來XeSS有Performance、Balanced、Quality、Ultra Quality多檔可選——這個對應的主要就是從哪種解析度upscale為目標解析度,更低的解析度達成更高的影格率,但畫質會更差。
Tom Peterson特別提到,像《殺手3》、《幽靈線:東京》這種遊戲的影格率有超過2倍的性能提升。「越是存在性能挑戰、跑在較低影格率的遊戲,越能從XeSS技術上獲利。回看前面的表就會發現,最長的渲染時間經過XeSS就能獲得最大的收益。」所以筆者始終覺得,全系不同定位的獨立GPU普及XMX單元,還是有很大價值。至於XeSS的具體表現如何,還是交給未來的市場表現來說話。
本文原刊登於EE Times China網站
The post 當GPU堆料受制摩爾定律 提升遊戲影格率還能靠誰? appeared first on 電子工程專輯.