天天看點

英偉達CUDA壟斷地位難保:PyTorch不斷拆塔,OpenAI已在偷家

作者:量子位

詹士 Alex 發自 凹非寺

量子位 | 公衆号 QbitAI

英偉達的軟體護城河正在逐漸消失。

随着PyTorch支援更多GPU廠商,再加上OpenAI的Triton攪局,英偉達手中的利器CUDA 逐漸鋒芒不再。

上述觀點來自Semi Analysis首席分析師Dylan Patel,相關文章已引發一波業内關注。

英偉達CUDA壟斷地位難保:PyTorch不斷拆塔,OpenAI已在偷家

有網友看後評價:

英偉達淪落到此種境地,隻因為了眼前利益,放棄創新。
英偉達CUDA壟斷地位難保:PyTorch不斷拆塔,OpenAI已在偷家

Pytorch的作者之一Sasank Chilamkurthy還補刀:

當英偉達之前提出要收購Arm時,我就對潛在的壟斷感到非常不安。是以我開始做任何正常人都會做的事:讓CUDA從的領先AI架構中被除名。
英偉達CUDA壟斷地位難保:PyTorch不斷拆塔,OpenAI已在偷家

下面展開談一談Patel提到的這些背後原因。

PyTorch成AI開發架構赢家,将支援更多GPU

這裡先來簡單說說CUDA昔日的輝煌故事。

CUDA是英偉達推出的并行計算架構。

CUDA之于英偉達,可謂曆史的轉折點,它的出現,讓英偉達在AI晶片領域快速起飛。

在CUDA之前,英偉達的GPU隻是一個負責在螢幕上繪制圖像的“圖形處理單元”。

而CUDA不僅可以調用GPU計算,還可以調用GPU硬體加速,讓GPU擁有了解決複雜計算問題的能力,可以幫助客戶為不同的任務對處理器進行程式設計。

英偉達CUDA壟斷地位難保:PyTorch不斷拆塔,OpenAI已在偷家

除了常見的PC機,無人車、機器人、超級計算機、VR頭盔等多種熱門的裝置都有GPU;而在很長一段時間内,隻有英偉達的GPU,才能快速處理各種複雜的AI任務。

英偉達CUDA壟斷地位難保:PyTorch不斷拆塔,OpenAI已在偷家

那麼風光無限的CUDA,後來怎麼就地位不穩了?

這還得從AI開發架構之争聊起,尤其是PyTorch VS TensorFlow。

如果把PyTorch這些架構比做車,那CUDA就是變速箱——它可以加速機器學習架構的計算過程,當在英偉達GPU上運作PyTorch等時,可以更快地訓練、運作深度學習模型。

TensorFlow發育早,也是谷歌門下利器,但奈何近兩年其勢頭逐漸被PyTorch超越。幾大頂會上,PyTorch架構使用的比例也明顯上漲:

英偉達CUDA壟斷地位難保:PyTorch不斷拆塔,OpenAI已在偷家

△圖源:The Gradient,幾大頂會中專門提到PyTorch的論文占比

還有TensorFlow深度使用者現身說法:“現在我改用PyTorch了。”

英偉達CUDA壟斷地位難保:PyTorch不斷拆塔,OpenAI已在偷家

PyTorch能勝出,一個關鍵因素在于它比TensorFlow更靈活易用。

這一方面得益于PyTorch的eager模式,支援在C++運作環境下修改模型,還可以立即看到每一步操作的結果。雖然TensorFlow現在也有eager模式,但大多數大型科技公司已經在圍繞着PyTorch開發解決方案。(紮心了……)

另一方面,雖然用這二者都寫Python,但用的PyTorch的舒适度更勝一籌。

此外,PyTorch可用的模型更多,生态更豐富,據統計,在HuggingFace中,85%的大模型都是用PyTorch架構實作的。

過去,雖然各大AI開發架構之間打得火熱,但更底層的并行計算架構CUDA可算獨霸一方。

但時過境遷,在AI架構的角逐中,PyTorch最終赢過此前領跑的TensorFlow,地位暫時穩了,然後就開始搞事情。

近些年PyTorch在拓展支援更多GPU,即将釋出的PyTorch2.0首個穩定版也會對其他各家GPU和加速器支援進行完善,包括AMD、英特爾、特斯拉、谷歌、亞馬遜、微軟、Meta等等。

也就是說,英偉達GPU不再是那個唯一了

不過這背後其實也還有CUDA自身的問題。

記憶體牆是個問題

前面提到,CUDA崛起與機器學習浪潮彼此促進,共赢生長,但有個現象值得關注:

近些年,領頭羊英偉達硬體的FLOPS不斷提高,但其記憶體提升卻十分有限。以2018年訓練BERT的V100為例,作為最先進GPU,其在FLOPS上增長一個數量級,但記憶體增加并不多。

英偉達CUDA壟斷地位難保:PyTorch不斷拆塔,OpenAI已在偷家

△ 圖源:semianalysis

在實際AI模型訓練中,随着模型越來越大,記憶體需求也越來越大。

比如百度和Meta,在部署生産推薦網絡時,需要數十TB記憶體來存儲海量的embedding table。

放訓練及推理中,大量時間實際上并未花在矩陣乘法計算上,而是在等待資料到達計算資源。

那為什麼不搞更多記憶體?

簡而言之,鈔能力不足。

英偉達CUDA壟斷地位難保:PyTorch不斷拆塔,OpenAI已在偷家

一般來說,記憶體系統根據資料使用需求,遵照從“又近又快”到“又慢又便宜”的結構安排資源。通常,最近的共享記憶體池在同一塊晶片上,一般由SRAM構成。

在機器學習中,一些ASIC試圖用一個巨大的SRAM來儲存模型權重,這種方法遇到動辄100B+的模型權重就不夠了。畢竟,即便是價值約500萬美元的晶圓級晶片,也隻有40GB的SRAM空間。

放英偉達的GPU上,記憶體就更小了:A100僅40MB,下一代的H100是50MB,要按量産産品價格算,對于一塊晶片每GB的SRAM記憶體成本高達100美元。

賬還沒算完。目前來說,片上SRAM成本并沒随摩爾定律工藝提升而大幅降低,若采用台積電下一代3nm制程工藝,同樣的1GB,反而成本更高。

相比SRAM,DRAM倒是成本低很多,但延遲高一個數量級,且2012年來DRAM的成本也幾乎沒有明顯壓降。

随着AI繼續向前發展,對記憶體的需求,還會增加,記憶體牆問題就是這麼誕生的。

目前DRAM已占伺服器總成本的50%。比如英偉達2016年的P100,比起最新的H100,FB16性能提升46倍,但記憶體容量隻增加了5倍。

英偉達CUDA壟斷地位難保:PyTorch不斷拆塔,OpenAI已在偷家

△ NVIDIA H100 Tensor Core GPU

另一個問題也與記憶體有關,即帶寬。

計算過程中,增加記憶體帶寬是通過并行性獲得的,為此,英偉達使用了HBM記憶體(High Bandwidth Memor),這是一種3D堆疊的DRAM層組成的結構,封裝更貴,讓經費樸實的使用者們隻能幹瞪眼。

前面提到,PyTorch的一大優勢在于:Eager模式讓AI訓練推理更靈活易用。但其記憶體帶寬需求量也十分肥碩。

算子融合,即解決上述問題的主要方法。其要義在于“融合”,不将每個中間計算結果寫入記憶體,而是一次傳遞,計算多個函數,這樣就将記憶體讀寫量變少。

英偉達CUDA壟斷地位難保:PyTorch不斷拆塔,OpenAI已在偷家

△ 算子融合 圖源:horace.io/brrr_intro.html

要落地“算子融合”,要編寫自定義CUDA核心,要用到C++語言。

這時CUDA的劣勢就顯現出來了:比起寫Python腳本,編寫CUDA之于很多人真是難太多了……

相比下,PyTorch 2.0工具就能大幅降低這個門檻。其内置英偉達和外部庫,無需專門學習CUDA,直接用PyTorch就能增加運算符,對煉丹師們來說,自然友好很多。

當然,這也導緻PyTorch在近些年大量增加運算符,一度超過2000個(手動狗頭)。

英偉達CUDA壟斷地位難保:PyTorch不斷拆塔,OpenAI已在偷家

2022年末,剛釋出的更新款PyTorch2.0更是大舉發力,瞄準編譯。

因添加了一個面向圖像執行模型的編譯解決方案,該架構在A100上訓練性能提升86%,CPU推理性能也提升26%。

此外,PyTorch 2.0依靠PrimTorch技術,将原來2000多個算子縮到250個,讓更多非英偉達的後端更易于通路;還采用了TorchInductor技術,可為多個加速器和後端自動生成快速代碼。

而且PyTorch2.0還能更好支援資料并行、分片、管道并行和張量并行,讓分布式訓練更絲滑。

正是上述技術,再結合對英偉達之外廠商GPU和加速器的支援,原先CUDA為英偉達構築的軟體城牆就顯得沒那麼高不可攀了。

英偉達CUDA壟斷地位難保:PyTorch不斷拆塔,OpenAI已在偷家

身後還有替代者

這邊英偉達自身記憶體提升速度沒跟上,那邊還有PyTorch2.0搞事,但還沒完——

Open AI推出了個“簡化版CUDA”:Triton。(直接偷家)

英偉達CUDA壟斷地位難保:PyTorch不斷拆塔,OpenAI已在偷家

Triton是種新的語言和編譯器。它的操作難度比CUDA低,但性能卻可與後者媲美。

OpenAI聲稱:

Triton隻要25行代碼,就能在FP16矩陣乘法shang上達到與cuBLAS相當的性能。

OpenAI的研究人員已經使用Triton,生成了比同等Torch效率高出1倍的核心。

雖然Triton目前隻正式支援英偉達GPU,但之後這個架構也會支援多家硬體供應商。

還有值得一提的是,Triton是開源的,比起閉源的CUDA,其他硬體加速器能直接內建到Triton中,大大減少了為新硬體建立AI編譯器棧的時間。

不過話說回來,也有人覺得CUDA的壟斷地位還遠不算被打破。比如PyTorch的另一位作者、Meta傑出工程師Soumith Chintala就覺得:

(分析師Patel寫的)這篇文章誇大了現實,CUDA将繼續是PyTorch依賴的關鍵架構。

Triton并不是第一個(優化)編譯器,目前大多數還是把注意力放在XLA編譯器上面的。

英偉達CUDA壟斷地位難保:PyTorch不斷拆塔,OpenAI已在偷家

他表示,現在尚不清楚Triton是否會慢慢被大家接受,這還得靠時間來驗證。總之,Triton并沒有對CUDA構成太大威脅。

文章作者Patel本人也看到了這條評論,然後回複稱:

我可沒說(CUDA的壟斷地位)已經沒了(Broken),而是說正在退步(Breaking)。

而且目前Triton還隻正式支援英偉達GPU(沒在别的GPU測試性能),如果XLA在英偉達GPU上的表現不占優勢,那它恐怕不如Triton。

英偉達CUDA壟斷地位難保:PyTorch不斷拆塔,OpenAI已在偷家

但Soumith Chintala反駁道,就算說CUDA的地位正在下滑也不妥。因為Triton要在硬體上推廣的話,還有很多風險,還有很長的路要走。

英偉達CUDA壟斷地位難保:PyTorch不斷拆塔,OpenAI已在偷家

有網友和這位PyTorch作者站在同一邊:

我也希望壟斷被打破,但目前CUDA還是最頂的,沒了它,很多人建構的軟體和系統根本玩不轉。
英偉達CUDA壟斷地位難保:PyTorch不斷拆塔,OpenAI已在偷家

那麼,你覺得現在CUDA境況如何?

參考連結:

[1]https://www.semianalysis.com/p/nvidiaopenaitritonpytorch

[2]https://analyticsindiamag.com/how-is-openais-triton-different-from-nvidia-cuda/

[3]https://pytorch.org/features/

[4]https://news.ycombinator.com/item?id=34398791

[5]https://twitter.com/soumithchintala/status/1615371866503352321

[6]https://twitter.com/sasank51/status/1615065801639489539

— 完 —

量子位 QbitAI · 頭條号簽約

關注我們,第一時間獲知前沿科技動态