英偉達CUDA壟斷地位難保:PyTorch不斷拆塔,OpenAI已在偷家
曾是英偉達的歷史轉折點
詹士 Alex 發(fā)自 凹非寺
量子位 | 公眾號 QbitAI
英偉達的軟件護城河正在逐漸消失。
隨著PyTorch支持更多GPU廠商,再加上OpenAI的Triton攪局,英偉達手中的利器CUDA?逐漸鋒芒不再。
上述觀點來自Semi Analysis首席分析師Dylan Patel,相關文章已引發(fā)一波業(yè)內關注。
有網友看后評價:
英偉達淪落到此種境地,只因為了眼前利益,放棄創(chuàng)新。
Pytorch的作者之一Sasank Chilamkurthy還補刀:
當英偉達之前提出要收購Arm時,我就對潛在的壟斷感到非常不安。所以我開始做任何正常人都會做的事:讓CUDA從的領先AI框架中被除名。
下面展開談一談Patel提到的這些背后原因。
PyTorch成AI開發(fā)框架贏家,將支持更多GPU
這里先來簡單說說CUDA昔日的輝煌故事。
CUDA是英偉達推出的并行計算框架。
CUDA之于英偉達,可謂歷史的轉折點,它的出現,讓英偉達在AI芯片領域快速起飛。
在CUDA之前,英偉達的GPU只是一個負責在屏幕上繪制圖像的“圖形處理單元”。
而CUDA不僅可以調用GPU計算,還可以調用GPU硬件加速,讓GPU擁有了解決復雜計算問題的能力,可以幫助客戶為不同的任務對處理器進行編程。
除了常見的PC機,無人車、機器人、超級計算機、VR頭盔等多種熱門的設備都有GPU;而在很長一段時間內,只有英偉達的GPU,才能快速處理各種復雜的AI任務。
那么風光無限的CUDA,后來怎么就地位不穩(wěn)了?
這還得從AI開發(fā)框架之爭聊起,尤其是PyTorch VS TensorFlow。
如果把PyTorch這些框架比做車,那CUDA就是變速箱——它可以加速機器學習框架的計算過程,當在英偉達GPU上運行PyTorch等時,可以更快地訓練、運行深度學習模型。
TensorFlow發(fā)育早,也是谷歌門下利器,但奈何近兩年其勢頭逐漸被PyTorch超越。幾大頂會上,PyTorch框架使用的比例也明顯上漲:
△圖源:The Gradient,幾大頂會中專門提到PyTorch的論文占比
還有TensorFlow深度使用者現身說法:“現在我改用PyTorch了?!?/p>
PyTorch能勝出,一個關鍵因素在于它比TensorFlow更靈活易用。
這一方面得益于PyTorch的eager模式,支持在C++運行環(huán)境下修改模型,還可以立即看到每一步操作的結果。雖然TensorFlow現在也有eager模式,但大多數大型科技公司已經在圍繞著PyTorch開發(fā)解決方案。(扎心了……)
另一方面,雖然用這二者都寫Python,但用的PyTorch的舒適度更勝一籌。
此外,PyTorch可用的模型更多,生態(tài)更豐富,據統(tǒng)計,在HuggingFace中,85%的大模型都是用PyTorch框架實現的。
過去,雖然各大AI開發(fā)框架之間打得火熱,但更底層的并行計算架構CUDA可算獨霸一方。
但時過境遷,在AI框架的角逐中,PyTorch最終贏過此前領跑的TensorFlow,地位暫時穩(wěn)了,然后就開始搞事情。
近些年PyTorch在拓展支持更多GPU,即將發(fā)布的PyTorch2.0首個穩(wěn)定版也會對其他各家GPU和加速器支持進行完善,包括AMD、英特爾、特斯拉、谷歌、亞馬遜、微軟、Meta等等。
也就是說,英偉達GPU不再是那個唯一了
不過這背后其實也還有CUDA自身的問題。
內存墻是個問題
前面提到,CUDA崛起與機器學習浪潮彼此促進,共贏生長,但有個現象值得關注:
近些年,領頭羊英偉達硬件的FLOPS不斷提高,但其內存提升卻十分有限。以2018年訓練BERT的V100為例,作為最先進GPU,其在FLOPS上增長一個數量級,但內存增加并不多。
△ 圖源:semianalysis
在實際AI模型訓練中,隨著模型越來越大,內存需求也越來越大。
比如百度和Meta,在部署生產推薦網絡時,需要數十TB內存來存儲海量的embedding table。
放訓練及推理中,大量時間實際上并未花在矩陣乘法計算上,而是在等待數據到達計算資源。
那為什么不搞更多內存?
簡而言之,鈔能力不足。
一般來說,內存系統(tǒng)根據數據使用需求,遵照從“又近又快”到“又慢又便宜”的結構安排資源。通常,最近的共享內存池在同一塊芯片上,一般由SRAM構成。
在機器學習中,一些ASIC試圖用一個巨大的SRAM來保存模型權重,這種方法遇到動輒100B+的模型權重就不夠了。畢竟,即便是價值約500萬美元的晶圓級芯片,也只有40GB的SRAM空間。
放英偉達的GPU上,內存就更小了:A100僅40MB,下一代的H100是50MB,要按量產產品價格算,對于一塊芯片每GB的SRAM內存成本高達100美元。
賬還沒算完。目前來說,片上SRAM成本并沒隨摩爾定律工藝提升而大幅降低,若采用臺積電下一代3nm制程工藝,同樣的1GB,反而成本更高。
相比SRAM,DRAM倒是成本低很多,但延遲高一個數量級,且2012年來DRAM的成本也幾乎沒有明顯壓降。
隨著AI繼續(xù)向前發(fā)展,對內存的需求,還會增加,內存墻問題就是這么誕生的。
目前DRAM已占服務器總成本的50%。比如英偉達2016年的P100,比起最新的H100,FB16性能提升46倍,但內存容量只增加了5倍。
△ NVIDIA H100 Tensor Core GPU
另一個問題也與內存有關,即帶寬。
計算過程中,增加內存帶寬是通過并行性獲得的,為此,英偉達使用了HBM內存(High Bandwidth Memor),這是一種3D堆疊的DRAM層組成的結構,封裝更貴,讓經費樸實的使用者們只能干瞪眼。
前面提到,PyTorch的一大優(yōu)勢在于:Eager模式讓AI訓練推理更靈活易用。但其內存帶寬需求量也十分肥碩。
算子融合,即解決上述問題的主要方法。其要義在于“融合”,不將每個中間計算結果寫入內存,而是一次傳遞,計算多個函數,這樣就將內存讀寫量變少。
△ 算子融合 圖源:horace.io/brrr_intro.html
要落地“算子融合”,要編寫自定義CUDA內核,要用到C++語言。
這時CUDA的劣勢就顯現出來了:比起寫Python腳本,編寫CUDA之于很多人真是難太多了……
相比下,PyTorch 2.0工具就能大幅降低這個門檻。其內置英偉達和外部庫,無需專門學習CUDA,直接用PyTorch就能增加運算符,對煉丹師們來說,自然友好很多。
當然,這也導致PyTorch在近些年大量增加運算符,一度超過2000個(手動狗頭)。
2022年末,剛發(fā)布的升級款PyTorch2.0更是大舉發(fā)力,瞄準編譯。
因添加了一個面向圖像執(zhí)行模型的編譯解決方案,該框架在A100上訓練性能提升86%,CPU推理性能也提升26%。
此外,PyTorch 2.0依靠PrimTorch技術,將原來2000多個算子縮到250個,讓更多非英偉達的后端更易于訪問;還采用了TorchInductor技術,可為多個加速器和后端自動生成快速代碼。
而且PyTorch2.0還能更好支持數據并行、分片、管道并行和張量并行,讓分布式訓練更絲滑。
正是上述技術,再結合對英偉達之外廠商GPU和加速器的支持,原先CUDA為英偉達構筑的軟件城墻就顯得沒那么高不可攀了。
身后還有替代者
這邊英偉達自身內存提升速度沒跟上,那邊還有PyTorch2.0搞事,但還沒完——
Open AI推出了個“簡化版CUDA”:Triton。(直接偷家)
Triton是種新的語言和編譯器。它的操作難度比CUDA低,但性能卻可與后者媲美。
OpenAI聲稱:
Triton只要25行代碼,就能在FP16矩陣乘法上達到與cuBLAS相當的性能。
OpenAI的研究人員已經使用Triton,生成了比同等Torch效率高出1倍的內核。
雖然Triton目前只正式支持英偉達GPU,但之后這個架構也會支持多家硬件供應商。
還有值得一提的是,Triton是開源的,比起閉源的CUDA,其他硬件加速器能直接集成到Triton中,大大減少了為新硬件建立AI編譯器棧的時間。
不過話說回來,也有人覺得CUDA的壟斷地位還遠不算被打破。比如PyTorch的另一位作者、Meta杰出工程師Soumith Chintala就覺得:
(分析師Patel寫的)這篇文章夸大了現實,CUDA將繼續(xù)是PyTorch依賴的關鍵架構。
Triton并不是第一個(優(yōu)化)編譯器,目前大多數還是把注意力放在XLA編譯器上面的。
他表示,現在尚不清楚Triton是否會慢慢被大家接受,這還得靠時間來驗證??傊?,Triton并沒有對CUDA構成太大威脅。
文章作者Patel本人也看到了這條評論,然后回復稱:
我可沒說(CUDA的壟斷地位)已經沒了(Broken),而是說正在退步(Breaking)。
而且目前Triton還只正式支持英偉達GPU(沒在別的GPU測試性能),如果XLA在英偉達GPU上的表現不占優(yōu)勢,那它恐怕不如Triton。
但Soumith Chintala反駁道,就算說CUDA的地位正在下滑也不妥。因為Triton要在硬件上推廣的話,還有很多風險,還有很長的路要走。
有網友和這位PyTorch作者站在同一邊:
我也希望壟斷被打破,但目前CUDA還是最頂的,沒了它,很多人構建的軟件和系統(tǒng)根本玩不轉。
那么,你覺得現在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
- 谷歌研究回顧2022年健康領域進展:達成多個合作,邁向移動醫(yī)療2023-03-03
- 美團創(chuàng)始高管離職創(chuàng)業(yè)/ 國內首個類ChatGPT下月開源/ 推特員工睡公司仍被裁 …今日更多新鮮事在此2023-02-27
- 人類離「定居月球」又近一步:貝索斯公司用月壤實現太陽能發(fā)電2023-02-24
- 每周只上四天班:半年試驗后,老板竟然也喜聞樂見2023-02-23