在 GPU 的競爭中,硬體性能只是表面——深層次在於軟體生態系統壁壘。就在今天,華為宣佈開源CANN,正面硬鋼CUDA霸權。
Nvidia 的地位是建立在一個由領先硬體、網路能力以及深厚軟體生態系統構成的三巨頭之上。在這個生態系統的核心是 CUDA,這是一個專有的程式設計框架,允許開發者高效地將計算對應到 Nvidia 的 GPU 上。CUDA 的價值不僅在於其性能,還在於其廣泛的庫、最佳化的工作流程以及與廣泛使用的機器學習框架的緊密整合,使其成為行業標準。
這裡又要再次提到前段時間龍芯董事長講的:從設計的複雜度來講,通用CPU是最難的,其次是圖形GPU,而AI用的NPU/GPGPU是比較容易的。如果CPU複雜度是1的話,那麼圖形GPU的複雜度是0.3-0.4,而AI晶片的複雜度還不到0.1,它就是矩陣乘法和摺積運算,就是需要堆料。
而且從國內這幾年突然就冒出來的一堆GPGPU公司就能看出,GPGPU的設計難度確實不是很大,但這些公司沒有一個能挑戰輝達,就是因為輝達成熟的CUDA生態。筆者之前跟一個CSP的朋友聊,他們內部已經把國內頭部的GPGPU/NPU公司的晶片跑起來了,但也是在原廠大力支援下才跑起來的,但並沒有更多的精力去適配其他國產GPU廠的硬體,主要原因當然是因為軟體生態。所以國內的某些GPGPU公司,還是會儘量相容CUDA,不然都沒有參與進去的機會。
在輝達之前發佈的一個聲明中,也可以輝達對於CUDA生態的重視程度:NVIDIA 的一大優勢在於我們擁有超過 600 萬開發者的全球網路,他們基於我們的平台進行開發。如果我們失去這個生態系統,要重新奪回將幾乎不可能。
這個聲明中特意提到了華為,老黃也害怕華為搶了輝達的開發者生態,但為時已晚,華為真的來了。
在Substack的ChinaTalk上,有一篇文章分析了華為的CANN和輝達CUDA的現狀,經過原作者的允許,我們下面把裡面的部分內容,結合筆者自己的理解重新梳理一下。
CUDA 的發展歷程是 GPU 從圖形加速邁向通用計算的變革史。20 世紀 90 年代,GPU 作為圖形加速器逐漸可程式設計,1999 年輝達推出首款 GPU,其卓越浮點性能吸引研究人員用於通用計算。2003 年,Ian Buck 團隊推出 Brook 程式設計模型,擴展了 C 語言的資料平行能力。2006 年,輝達在 Tesla 架構基礎上推出 CUDA,開啟了 GPU 通用計算時代。2007 年,CUDA 1.0 發佈,支援 C 語言程式設計,適配 GeForce 8800 系列 GPU。此後,CUDA 不斷發展,2008 年的 CUDA 2.0 引入 C++ 部分支援,2010 年的 CUDA 3.0 引入 Fermi 架構 GPU。隨著技術演進,CUDA 陸續支援了 Kepler、Maxwell、Pascal 等架構,到 2022 年 CUDA 12.0 發佈,支援 Hopper 架構和 Grace CPU,持續提升高性能計算和深度學習性能。
CUDA 已從單純的程式設計模型發展為全端軟體生態的核心。隨著輝達軟硬體在深度學習領域的普及,其持續最佳化 CUDA,建構了包括深度學習庫 cuDNN 在內的豐富工具集,大幅降低了高性能模型部署的門檻和專業要求。這幾年,CUDA 不斷進化,吸引了眾多開發者且至今仍在完善。儘管閉源,輝達重視開發者反饋並常融入更新,還通過線上論壇提供交流支援,以建立基於CUDA的開發者生態。到現在,輝達在全球已擁有超過600萬的開發者。
這種成熟生態帶來了顯著的轉換成本:開發者若離開 CUDA,不僅要重寫大量程式碼,還可能面臨替代庫不成熟的問題,同時失去龐大社區的技術支援。如今,多數機器學習開發者雖不直接編寫 CUDA 程式碼,而是使用 Python 及 PyTorch、JAX 等框架,但 CUDA 依然是連接這些框架與輝達 GPU 架構的關鍵後端橋樑,地位舉足輕重。
華為對 CUDA 最直接的挑戰來自 CANN(昇騰神經網路計算架構)—— 這是專為昇騰神經網路處理器打造的專有程式設計環境。CANN 在軟體棧中的定位與 CUDA 相當,為在華為硬體上運行高性能機器學習模型提供必要工具。與之配套的還有華為的高級深度學習框架 MindSpore,其概念類似 PyTorch。這兩者共同構成了華為原生的替代方案,對標輝達主導的 “PyTorch + CUDA” 組合。
CANN 的研發至少可追溯至 2019 年(當年華為被列入美國實體清單)。華為 2024 年年度報告中四次提及 2024 年 9 月發佈的 CANN 8.0,稱這一進展是提升 AI 計算能力的重要一步。
為提高 CANN 的 adoption 率,華為借鑑了輝達 2000 年代推廣 CUDA 的策略:直接派遣工程師入駐客戶現場,協助程式碼遷移。
不過,儘管在原生軟體棧上投入巨大,華為似乎也意識到,短期內用 CANN 取代 CUDA 並不現實。因此,其部分策略已從 “替代” 轉向 “互操作”,這一點在華為日益深入參與 PyTorch 生態中體現得尤為明顯。
為降低開發者從輝達生態遷移的難度,華為將與 PyTorch 的相容性作為重點 ——PyTorch 是目前學術界和工業界廣泛使用的主流開源機器學習框架。該框架最初由 Meta 旗下 AI 研究實驗室於 2016 年開發,2017 年公開發佈,2022 年轉入 Linux 基金會旗下,由更廣泛的企業網路共同管理,形成了 PyTorch 基金會。基金會的核心成員包括 Meta、微軟、Google、亞馬遜、AMD、英特爾、輝達,以及 2023 年 10 月加入的華為。
PyTorch 能讓開發者用簡潔直觀的 Python 程式碼定義、訓練和部署機器學習模型,其流行得益於 “即時執行” 模式:每個操作都能立即運行,相比Google TensorFlow 等其他框架,更便於偵錯、原型開發和迭代。
從一開始,PyTorch 就針對輝達 GPU 進行了最佳化 —— 新算子和功能會先在 CUDA 上測試調優,性能基準測試也常基於輝達硬體;通過 Python 包管理器安裝 PyTorch 時,會自動配置為在輝達 GPU 上運行。這使得該框架幾乎成了輝達的 “原生工具”,要在非輝達硬體上使用它,不僅需要替換後端,還得進行完整的生態工程改造。
但就像我們前面提到的,畢竟昇騰屬於NPU,不是GPU的架構,所以在國內客戶剛開始使用時,華為也是派了專門的工程師去一起偵錯,幫助客戶能把真實的應用場景在昇騰處理器上運行起來。這並不說昇騰做的不好,而是所有的軟體都要經歷這樣一個過程,輝達的CUDA也是這麼過來的。
下面這個表詳細對比了輝達的CUDA和華為的CANN在各方面的差異。
1、華為的Ascend AI晶片通過開源CANN降低開發者使用門檻,可能搶佔輝達CUDA平台的部分市場份額,當然主要是在中國。輝達在全球AI晶片市場佔據主導地位,但華為的開源策略可能吸引對成本敏感或尋求替代方案的客戶。
2、開發者生態的挑戰 ,輝達的CUDA平台因其成熟生態和廣泛開發者支援而領先。華為開源CANN旨在建構Ascend生態,吸引開發者從CUDA遷移或平行開發。如果CANN生態快速成長,可能分流部分開發者資源,長期削弱輝達生態的獨佔性。
3、開源CANN可能加速華為AI技術迭代,通過社區貢獻最佳化Ascend性能。這對輝達形成間接壓力,促使其加快CUDA、cuDNN等工具的創新步伐,以維持技術領先。
但最後還要提一點,其實除了輝達,其他的國產GPU廠商也會受到影響,等昇騰的生態做起來了,而且國內的先進工藝產能也提升了,華為如果供貨充足的話,其他的國產AI晶片何去何從?除了CSP們為了供應商的均衡還是會買一些其他廠商,還有其他理由不選擇華為嗎? (傅里葉的貓)