作者:九林
最近,軟件工程師Longhorn注意到,安裝的 EULA 文本文件中的一個條款寫道:“不得對使用 SDK 組件生成的軟件產(chǎn)品的任何部分進行逆向工程、反編譯或反匯編,以便轉(zhuǎn)換此類軟件產(chǎn)品、從而在非英偉達平臺上運行?!?(You may not reverse engineer, decompile or disassemble any portion of the output generated using SDK elements for the purpose of translating such output artifacts to target a non-NVIDIA platform)
這是英偉達對于“禁止使用轉(zhuǎn)換層在其他硬件平臺上運行基于 CUDA 的軟件”的警告。實際上,英偉達在2021年已經(jīng)在網(wǎng)上公示的許可條款中禁止,不過之前這則警告并未出現(xiàn)在安裝過程中添加到主機系統(tǒng)上的文檔中。
而現(xiàn)在,這個警告已經(jīng)添加到了安裝 CUDA 11.6 及更新版本時所附的最終用戶許可協(xié)議(EULA)中。
英偉達針對CUDA 11.6及更高版本的突發(fā)舉動,引發(fā)了業(yè)內(nèi)震動。不少人士認為,這一招是針對Intel、AMD都有參與的ZLUDA等第三方項目,摩爾線程MUSA、登臨科技GPU+以及中國廠商的兼容方案。
英偉達突然出手的背后,是CUDA的“霸權(quán)”受到威脅。
?01、CUDA的“霸權(quán)”
CUDA是什么?簡單來說,CUDA是英偉達推出的并行計算框架。
CUDA不僅可以調(diào)用GPU計算,還可以調(diào)用GPU硬件加速,讓GPU擁有了解決復(fù)雜計算問題的能力,可以幫助客戶為不同的任務(wù)對處理器進行編程。
在CUDA之前,英偉達的GPU僅僅是一個負責(zé)在屏幕上繪制圖像的“圖形處理單元”,也就是原本只能當(dāng)作獨立顯卡的存在。有了CUDA后,GPU就可以通用了。GPU通用的意思就是,所有類似顯卡運算的簡單量大的工作,GPU都能干。例如AI深度學(xué)習(xí),就需要GPU。
CUDA之于英偉達,可以說是歷史的轉(zhuǎn)折點。
自從2006年開始,英偉達將大筆資金投入到CUDA的研發(fā)中。為了把旗下的所有芯片都納入CUDA的架構(gòu)里,英偉達累計花了超過100億美元。
2009年開始,也就是CUDA推出兩三年后,英偉達每年的研發(fā)費用從營收的15%陡增到25%甚至30%。為了顯示這個研發(fā)費用的超高,給大家舉幾個例子:蘋果每年不足10%,微軟每年15%-20%,英特爾每年20%左右。
所以可以看出來,英偉達在CUDA里,投入了大量的財力。
同時,CUDA的出現(xiàn),也確實讓英偉達在AI芯片領(lǐng)域快速起飛。CUDA推出后,英偉達迅速打開了新業(yè)務(wù)的大門,在航空航天、天文學(xué)、氣象學(xué)領(lǐng)域里都有GPU的身影。
深諳需要利用工具和應(yīng)用來幫助擴展自己的市場的英偉達,對于CUDA的策略是:“不開源,但免費提供,并處于英偉達的嚴格控制之下?!?/p>
因此,英偉達為人們獲取自身硬件設(shè)置了非常低的門檻,包括 CUDA 工具包。CUDA在“使用人數(shù)越多,CUDA平臺就越好用,新開發(fā)者就越傾向于選擇CUDA”的良性循環(huán)中,加固了生態(tài)優(yōu)勢。
知名分析師本·湯普森(Ben Thompson)曾說:“英偉達既不是一家硬件公司,也不是一家軟件公司:它是一家將兩者融為一體的公司?!?/p>
CUDA最強的護城河事實上在于軟件-芯片協(xié)同設(shè)計。英偉達強大的軟硬件協(xié)同完善的生態(tài),讓第三方軟件公司難以打破英偉達的CUDA領(lǐng)先地位。
嘗試超越CUDA的企業(yè)往往會出現(xiàn)三種可能。
第一種,陷入追趕狀態(tài)。第三方軟件公司在研究透徹英偉達的GPU后,需要半年到一年的時間才能實現(xiàn)性能基本匹配CUDA,但很難在新GPU發(fā)布后立即實現(xiàn)性能匹配甚至領(lǐng)先。
第二種,時間滯后。第三方軟件公司適配新的人工智能加速硬件需要時間,而在一年后等到其方案達到接近CUDA的水平時,英偉達已經(jīng)發(fā)布了下一代GPU。這種時間滯后導(dǎo)致芯片公司無法及時利用最新的技術(shù)。
第三種,無法打破領(lǐng)先地位。由于英偉達的不斷創(chuàng)新和市場領(lǐng)先,第三方軟件公司很難打破這種局面。他們不僅面臨著技術(shù)上的挑戰(zhàn),還面臨著市場競爭的壓力。
英偉達靠著 CUDA 綁定了數(shù)百萬 AI 開發(fā)者,吸引著大型云計算公司采購它的 GPU。目前,CUDA生態(tài)合作者規(guī)模翻倍增長。
根據(jù)英偉達2023財年年報,目前有400萬名開發(fā)者正在與CUDA合作,而且規(guī)模還在不斷擴大。英偉達通過12年的時間達到200萬名開發(fā)者,在過去的兩年半里該數(shù)字翻了一番。目前CUDA的下載量已經(jīng)超過了4000萬次。
?02、CUDA的兼容問題
事實證明 CUDA 和英偉達硬件的結(jié)合非常高效,大批程序都依賴這種結(jié)合。然而,隨著更多競爭性的硬件涌入市場,更多的用戶傾向于在與英偉達競爭的平臺上運行其 CUDA 程序。
有兩種方法可以做到這一點:重新編譯代碼(這種方法可供相應(yīng)程序的開發(fā)人員使用),或使用轉(zhuǎn)換層(也就是兼容)。
其實這里的“兼容”并不是真正的兼容。因為CUDA不是開源代碼,是“黑盒子”,因此100%兼容CUDA在技術(shù)上是無法實現(xiàn)的。這里是說,通過架構(gòu)的相似性,使產(chǎn)品可以比較容易地運行CUDA的代碼。
使用像 ZLUDA 這樣的轉(zhuǎn)換層是在非英偉達硬件上運行 CUDA 程序的最簡單方法。你要做的就是拿來已經(jīng)編譯好的二進制代碼,然后使用 ZLUDA 或其他轉(zhuǎn)換層運行它們。
談到這里,我們可以一起來了解一下ZLUDA。其實,這個項目是在2020年時候開始的,被描述為‘英特爾GPU 上 CUDA 的直接替代品’。這個項目提出了一個概念:在非英偉達顯卡上運行未更改的 CUDA 應(yīng)用程序。
不過,隨著英特爾、AMD轉(zhuǎn)向支持自有軟件平臺,ZLUDA 現(xiàn)在似乎舉步維艱。今年2月,AMD放棄資助ZLUDA項目。受到資金的限制,“ZLUDA”項目已經(jīng)在 GitHub 上開源。
現(xiàn)在,英偉達已經(jīng)禁止第三方公司兼容CUDA。
顯而易見,使用轉(zhuǎn)換層威脅到了英偉達在加速計算領(lǐng)域的霸主地位,尤其是在 AI 應(yīng)用領(lǐng)域。這可能是英偉達決定禁止使用轉(zhuǎn)換層在其他硬件平臺上運行 CUDA 應(yīng)用程序背后的初衷。
其實,從全球來看,許多國外的做算力芯片企業(yè),例如 Graphcore、SambaNova、tenstorrent,沒有一家兼容CUDA。而之所以不去兼容CUDA,歸根結(jié)底,是因為各家希望探索出更適合做AI計算的路。
許多算力芯片企業(yè)選擇在軟件棧上另辟蹊徑,主要是因為擔(dān)心“兼容”CUDA會成為自家產(chǎn)品發(fā)展的“天花板”。
?03、CUDA遭到業(yè)內(nèi)“炮轟”
其實,英偉達的CUDA一直是業(yè)內(nèi)被頻頻提及的話題。
在去年12月時,英特爾CEO 帕特·基辛格曾公開抨擊英偉達,稱其 CUDA 技術(shù)護城河又淺又小,并聲稱對于人工智能來說推理技術(shù)將比訓(xùn)練更重要。
在接受采訪的時候,基辛格還在暗示英偉達CUDA的主導(dǎo)地位不會永遠持續(xù)下去。
基辛格說到:“你知道,整個行業(yè)都在想如何消滅 CUDA 市場?!薄拔覀冋J為 CUDA 護城河又淺又窄。因為整個行業(yè)都致力于為廣泛的訓(xùn)練、創(chuàng)新、數(shù)據(jù)科學(xué)等領(lǐng)域帶來更廣泛的技術(shù)?!?/p>
頂級芯片大師吉姆?凱勒也在今年2月發(fā)布推文,吐槽英偉達 CUDA,認為CUDA是“沼澤”而不是“護城河”。
凱勒在后續(xù)推文中表示:“CUDA 毫無美感,只是粗暴地堆砌而成?;旧蠜]有人會寫 CUDA,即便是寫了相關(guān)代碼,其執(zhí)行速度也不快。這也是為何 Triton、Tensor RT、Neon、Mojo 孕育而出的原因?!?/p>
凱勒認為 CUDA 像 X86 一樣,英偉達為了確保軟件和硬件的向后兼容性,逐步增加功能的過程中拖慢了性能,增加了程序開發(fā)的難度。與此同時,許多開源軟件開發(fā)框架可以比 CUDA 更高效地使用。
不過,此前Semi Analysis首席分析師Dylan Patel曾表示:“隨著PyTorch支持更多GPU廠商,再加上OpenAI的Triton攪局,英偉達手中的利器CUDA 逐漸鋒芒不再。”
Triton實際上是Open AI推出了個“簡化版CUDA”。Triton是種新的語言和編譯器。它的操作難度比CUDA低,但性能卻可與后者媲美。
OpenAI聲稱:“Triton只要25行代碼,就能在FP16矩陣乘法shang上達到與cuBLAS相當(dāng)?shù)男阅??!敝档靡惶岬氖?,Triton是開源的。相較于閉源的CUDA,其他硬件加速器能直接集成到Triton中,大大減少了為新硬件建立AI編譯器棧的時間。
?04、國內(nèi)企業(yè)作出回應(yīng)
在國內(nèi),目前一部分國產(chǎn)GPU廠商采取兼容CUDA的策略,以確保用慣了英偉達產(chǎn)品的客戶在遷移時沒有障礙。另外也有廠商著手培育自己的軟件生態(tài),其中包括摩爾線程、壁仞科技、登臨科技等。如摩爾線程推出基于旗下GPU產(chǎn)品的“MUSA”軟件架構(gòu)。
昨日晚間,摩爾線程發(fā)布聲明,強調(diào)摩爾線程MUSA/MUSIFY未受影響。
摩爾線程MUSA/MUSIFY不涉及英偉達EULA相關(guān)條款,開發(fā)者可放心使用。摩爾線程表示,MUSA是摩爾線程自主研發(fā)、擁有全部知識產(chǎn)權(quán)、軟硬一體的全功能GPU先進計算統(tǒng)一系統(tǒng)架構(gòu),與CUDA無任何依賴關(guān)系。
MUSIFY是摩爾線程面向廣大MUSA開發(fā)者提供的開發(fā)工具,方便用戶在MUSA計算平臺上進行應(yīng)用移植與開發(fā),可以讓開發(fā)者將自己的C++源代碼,轉(zhuǎn)換成MUSA C++源代碼,再通過MUSA編譯器MCC編譯生成基于MUSA指令集的二進制代碼,最終運行在摩爾線程全功能GPU上。
總體來說,目前,英偉達只是在CUDA 11.6協(xié)議中增加了警告條款,尚未有實際行動。不過,這次警告,也代表著英偉達對兼容CUDA的一種態(tài)度。
重新編譯現(xiàn)有的 CUDA 程序仍然完全合法。為了簡化這項工作,AMD 和英特爾都有工具將 CUDA 程序分別移植到 ROCm(1)平臺和 OpenAPI 平臺上。
AMD于去年12月發(fā)布ROCm 6.0之后,正馬不停蹄地推進6.1版本更新,從而進一步增強同英偉達CUDA的競爭力。AMD在 2月向 GitHub 公共倉庫提交了大量關(guān)于 ROCm 6.1 的提交,這表明 AMD 有望在近期發(fā)布新版本。