文|侃科技
外界常有這樣一種錯(cuò)覺(jué),因?yàn)橛⑻貭朇PU賣(mài)的好就將其歸于一家成功的硬件公司,而事實(shí)上,英特爾統(tǒng)治桌面處理器的功臣是誕生于1978年的X86架構(gòu)。
同樣的錯(cuò)覺(jué)在英偉達(dá)身上也有。
英偉達(dá)之所以能夠壟斷人工智能訓(xùn)練芯片市場(chǎng),CUDA架構(gòu)絕對(duì)是幕后功臣之一。
這個(gè)誕生于2006年的架構(gòu),已經(jīng)涉及計(jì)算機(jī)計(jì)算的各個(gè)領(lǐng)域,幾乎被塑造成了英偉達(dá)的形狀。航空航天、生物科學(xué)研究、機(jī)械和流體模擬及能源探索等領(lǐng)域的研究,80%在CUDA的基礎(chǔ)上進(jìn)行。
而在最火爆的AI領(lǐng)域,幾乎所有的大廠都在準(zhǔn)備Plan B:谷歌、亞馬遜、華為、微軟、OpenAI、百度……誰(shuí)也不想讓自己的未來(lái)攥在別人手中。
創(chuàng)業(yè)服務(wù)咨詢(xún)機(jī)構(gòu)Dealroom.co公布過(guò)一組數(shù)據(jù),在這波生成式AI的熱浪中,美國(guó)獲得了全球投融資的89%,而在AI芯片的投融資中,中國(guó)AI芯片投融資世界第一,超過(guò)美國(guó)兩倍。
也就是說(shuō),盡管中美企業(yè)在大模型的發(fā)展方式和階段都存在諸多差異,但在掌控算力這件事,大家卻顯得格外一致。
為什么CUDA有這種魔力?
2003年,英偉達(dá)為了與推出4核CPU的英特爾競(jìng)爭(zhēng),開(kāi)始著手發(fā)展統(tǒng)一計(jì)算設(shè)備架構(gòu)技術(shù),也就是CUDA。
CUDA的初衷是為GPU增加一個(gè)易用的編程接口,讓開(kāi)發(fā)者無(wú)需學(xué)習(xí)復(fù)雜的著色語(yǔ)言或者圖形處理原語(yǔ)。英偉達(dá)最初的想法是為游戲開(kāi)發(fā)者提供一個(gè)圖形計(jì)算領(lǐng)域的應(yīng)用,也就是黃仁勛口中的"make graphics programmable"。
不過(guò)CUDA推出后一直找不到關(guān)鍵應(yīng)用,也缺少重要客戶(hù)支持。而且英偉達(dá)還要花費(fèi)大筆金錢(qián)來(lái)開(kāi)發(fā)應(yīng)用、維持服務(wù)并推廣與行銷(xiāo),到2008年遭遇金融風(fēng)暴,顯卡銷(xiāo)售不好的英偉達(dá)營(yíng)收大跌,股價(jià)一度跌到只剩1.5美元,比AMD最慘的時(shí)候還要慘。
直到2012年,Hinton的兩個(gè)學(xué)生用英偉達(dá)的GPU參加了一個(gè)叫做ImageNet的圖像識(shí)別速度比賽。他們使用GTX580顯卡,利用CUDA技術(shù)進(jìn)行訓(xùn)練,結(jié)果算出的速度超過(guò)第二名數(shù)十倍,精確度也比第二名高10%以上。
讓業(yè)內(nèi)震驚的不只是ImageNet模型本身。這個(gè)需要1400萬(wàn)張圖片、總計(jì)262千萬(wàn)億次浮點(diǎn)運(yùn)算訓(xùn)練的神經(jīng)網(wǎng)絡(luò),一個(gè)星期的訓(xùn)練過(guò)程中僅用了四顆GTX 580。作為參考,谷歌貓用了1000萬(wàn)張圖片、16000顆CPU和1000臺(tái)計(jì)算機(jī)。
這次比賽不僅是AI的一次歷史轉(zhuǎn)折,也為英偉達(dá)打開(kāi)了突破口。英偉達(dá)開(kāi)始與業(yè)界合作推動(dòng)AI生態(tài),推廣開(kāi)源AI框架,并與Google、Facebook等公司合作推動(dòng)TensorFlow等AI技術(shù)發(fā)展。
這等于完成了黃仁勛口中的第二步,"open up GPU for programmability for all kinds of things"。
當(dāng)GPU的算力價(jià)值被發(fā)現(xiàn)后,大廠也猛然醒悟,英偉達(dá)此前數(shù)年迭代和鋪墊的CUDA,已然成為AI繞不開(kāi)的一堵高墻。
為了籌建CUDA生態(tài),英偉達(dá)為開(kāi)發(fā)者提供了豐富的庫(kù)和工具,如cuDNN、cuBLAS和TensorRT等,方便開(kāi)發(fā)者進(jìn)行深度學(xué)習(xí)、線(xiàn)性代數(shù)和推理加速等任務(wù)。此外,英偉達(dá)還提供包括CUDA編譯器和優(yōu)化器在內(nèi)的完整開(kāi)發(fā)工具鏈,使開(kāi)發(fā)者能夠更方便地進(jìn)行GPU編程和性能優(yōu)化。
與此同時(shí)英偉達(dá)也與許多流行的深度學(xué)習(xí)框架(如TensorFlow、PyTorch和MXNet)緊密合作,為CUDA提供了在深度學(xué)習(xí)任務(wù)中的顯著優(yōu)勢(shì)。
這種“扶上馬,送一程”的奉獻(xiàn)精神,使英偉達(dá)僅用了兩年半時(shí)間,就將CUDA生態(tài)的開(kāi)發(fā)者數(shù)量翻了一倍。
這還不夠,過(guò)去十余年里英偉達(dá)將CUDA的教學(xué)課程推廣到超過(guò)350所大學(xué),平臺(tái)內(nèi)有專(zhuān)業(yè)的開(kāi)發(fā)者和領(lǐng)域?qū)<遥麄兺ㄟ^(guò)分享經(jīng)驗(yàn)和解答疑難問(wèn)題,為CUDA的應(yīng)用提供了豐富的支持。
更關(guān)鍵的是,英偉達(dá)深知硬件作為護(hù)城河的缺陷在于沒(méi)有用戶(hù)粘性,于是將硬件與軟件捆綁,GPU渲染要用CUDA、AI降噪要用OptiX、自動(dòng)駕駛計(jì)算需要CUDA……
盡管英偉達(dá)目前憑借GPU+NVlink+CUDA壟斷了AI算力90%的市場(chǎng),但帝國(guó)的裂縫已經(jīng)不止一條了。
一條條裂縫
AI廠商苦CUDA久矣,并不是危言聳聽(tīng)。
CUDA的神奇之處就在于它處在軟硬結(jié)合的關(guān)鍵位置,對(duì)軟件來(lái)說(shuō)它是整個(gè)生態(tài)的基石,競(jìng)爭(zhēng)對(duì)手難以繞過(guò)CUDA去兼容英偉達(dá)的生態(tài);對(duì)硬件來(lái)說(shuō),CUDA的設(shè)計(jì)基本就是英偉達(dá)硬件形態(tài)的軟件抽象,基本每個(gè)核心概念都和GPU的硬件概念相對(duì)應(yīng)。
那么對(duì)于競(jìng)爭(zhēng)對(duì)手來(lái)說(shuō),就只剩兩個(gè)選擇:
1、繞開(kāi)CUDA,重建一套軟件生態(tài),這就要直面英偉達(dá)用戶(hù)粘性的巨大挑戰(zhàn);
2、兼容CUDA,但也要面臨兩個(gè)問(wèn)題,一是如果你的硬件路線(xiàn)和英偉達(dá)不一致,那么就有可能實(shí)現(xiàn)的低效且難受,二是CUDA會(huì)跟隨英偉達(dá)硬件特性演進(jìn),兼容這也只能選擇跟隨。
但為了擺脫英偉達(dá)的鉗制,兩種選擇都有人嘗試。
2016年,AMD推出的基于開(kāi)源項(xiàng)目的GPU生態(tài)系統(tǒng)ROCm,提供HIP工具完全兼容CUDA,就是一種跟隨路線(xiàn)。
但因?yàn)楣ぞ哝湈?kù)資源匱乏、開(kāi)發(fā)和迭代兼容性代價(jià)較大等掣肘,使ROCm生態(tài)難以壯大。在Github上,貢獻(xiàn)CUDA軟件包倉(cāng)庫(kù)的開(kāi)發(fā)者超過(guò)32600位,而 ROCm只有不到600個(gè)。
走兼容英偉達(dá)CUDA路線(xiàn)的難點(diǎn)在于,其更新迭代速度永遠(yuǎn)跟不上CUDA并且很難做到完全兼容:
1、迭代永遠(yuǎn)慢一步:英偉達(dá)GPU在微架構(gòu)和指令集上迭代很快,上層軟件堆棧的很多地方也要做相應(yīng)的功能更新。但AMD不可能知道英偉達(dá)的產(chǎn)品路線(xiàn)圖,軟件更新永遠(yuǎn)會(huì)慢英偉達(dá)一步。例如AMD有可能剛宣布支持了CUDA11,但是英偉達(dá)已經(jīng)推出CUDA12了。
2、難以完全兼容反而會(huì)增加開(kāi)發(fā)者的工作量:像CUDA這樣的大型軟件本身架構(gòu)很復(fù)雜,AMD需要投入大量人力物力用幾年甚至十幾年才能追趕上。因?yàn)殡y免存在功能差異,如果兼容做不好反而會(huì)影響性能(雖然99%相似了,但是解決剩下來(lái)的1%不同之處可能會(huì)消耗開(kāi)發(fā)者99%的時(shí)間)。
也有公司選擇繞開(kāi)CUDA,比如2022年1月成立的Modular。
Modular的思路是盡可能降低門(mén)檻,但更像是一種奇襲。它提出“用于提高人工智能模型性能”的AI引擎,通過(guò)“模塊化”方式解決“當(dāng)前AI應(yīng)用棧常與特定硬件和軟件耦合”的問(wèn)題。
為了配合這個(gè)AI引擎,Modular還開(kāi)發(fā)了開(kāi)源編程語(yǔ)言Mojo。你可以把它想象成一個(gè)“專(zhuān)為AI而生”的編程語(yǔ)言,Modular用它開(kāi)發(fā)各種工具整合到前面提到的AI引擎里,同時(shí)又可以無(wú)縫銜接上Python,降低學(xué)習(xí)成本。
但Modular的問(wèn)題在于,其所設(shè)想的“全平臺(tái)開(kāi)發(fā)工具”太過(guò)理想化。
雖然頂著“超越Python”的頭銜,又有Chris Lattner名聲作為背書(shū),但Mojo作為一種新語(yǔ)言,在推廣上還需要經(jīng)過(guò)眾多開(kāi)發(fā)者的考驗(yàn)。
而AI引擎要面臨的問(wèn)題就更多,不僅需要與眾多硬件公司之間達(dá)成協(xié)議,還要考慮各平臺(tái)之間的兼容。這些都是需要長(zhǎng)時(shí)間的打磨才能完成的工作,到時(shí)候的英偉達(dá)會(huì)進(jìn)化成什么樣子,恐怕沒(méi)人會(huì)知道。
尾聲
在英偉達(dá)展開(kāi)宏大敘事的2006年,沒(méi)有人認(rèn)為CUDA會(huì)是一個(gè)革命性的產(chǎn)品,黃仁勛要苦口婆心的說(shuō)服董事會(huì)每年投入5億美金,來(lái)賭一個(gè)回報(bào)期超過(guò)10年的未知,而當(dāng)年英偉達(dá)的營(yíng)收也不過(guò)30億美金而已。
但在所有以技術(shù)和創(chuàng)新作為關(guān)鍵詞的商業(yè)故事里,總有人因?yàn)閷?duì)長(zhǎng)遠(yuǎn)目標(biāo)的持久堅(jiān)持而收獲巨大的成功,英偉達(dá)和華為都是其中的佼佼者。
參考資料
[1] 英偉達(dá)的「鐮刀」,不是AI芯片,硅基研究室
[2] 為了成為“英偉達(dá)平替”,大模型廠商開(kāi)卷了,小飯桌創(chuàng)服
[3] 成立僅1年,這家AI明星創(chuàng)企,想挑戰(zhàn)英偉達(dá),鎂客網(wǎng)
[4] 英偉達(dá)帝國(guó)的一道裂縫,遠(yuǎn)川研究所
[7] 2023年AIGC行業(yè)專(zhuān)題報(bào)告:AI 芯片四大技術(shù)路線(xiàn),寒武紀(jì)復(fù)制英偉達(dá),申萬(wàn)宏源
[8] CUDA如何成就NVIDIA:AI領(lǐng)域的巨大突破,騰訊云社區(qū)