忘記Nvidia用了30年才一夜成名的事實吧,它最近令人難以置信的崛起似乎有點泡沫的潛質。
大約15年前,Nvidia進行了一場豪賭,從遊戲轉向高性能計算和人工智慧,而且各項數據變得越來越瘋狂。過去三個季度,Nvidia的收入同比增長一倍多。在將長期領導者英特爾公司推回後視鏡之後,Nvidia最近又宣布進行10比1的股票拆分,以保持股價實惠。
但讓我們問一個更為微妙的問題吧。當然,最終在某個時候萬有引力定律會打擊Nvidia,但更可行的一個問題是,長期來看Nvidia的地位會有多穩固。答案可能不僅取決於Nvidia如何有效地保持技術優勢,還取決於平台的粘度。對於AI開發者來說,加入或退出Nvidia有多容易?壁壘是否足夠高,以至於我們正在見證事實上的AI主機的誕生?
正如我們今年早些時候指出的,Nvidia主導著先進AI處理器的供應鏈。AWS和Google Cloud都推出了自己的專用晶片,而AMD和英特爾還在焦急地準備著。如果這只是通用晶片,那麼確實需要一定的時間來提高製造能力,但最終,供需規律應該會創造公平的競爭環境,就像英特爾和AMD晶片不僅可以在「Wintel」電腦上互換,還可以在Mac上互換是一樣的。
但這裡有個劇透。我們談論的不僅僅是晶片和晶圓廠。在過去15多年裡,Nvidia一直忙於構建一個自上而下的技術堆棧,這為典型的「鎖定」提供了機會。在Nvidia處理器產品組合之上,是不斷擴展的軟體堆棧,正在把Nvidia轉變為端到端的軟體和硬體計算平台。從晶片到超級電腦,再到庫、工具和微服務,Nvidia AI Enterprise採用了統一的、通用的架構構建方法,與大型機有著驚人的相似之處。
雖然Nvidia成立於20世紀90年代,為遊戲玩家設計晶片,但真正的企業故事始於2006年推出CUDA,這是Nvidia及其合作夥伴提供的150多個庫、軟體開發工具包、分析和優化工具組合。Nvidia不得不重新設計整個晶片產品組合以運行CUDA。
CUDA(Compute Unified Device Architecture)是一個並行計算平台,使開發者能夠定義在Nvidia GPU上運行的並行函數。CUDA讓開發者能夠使用應用編程接口,而不必編寫低級驅動程序,就像他們在使用CPU的習慣一樣。
CUDA產品組合尤為豐富,支持深度學習、線性代數、信號處理(用於音頻和影片)、廣義並行和數據處理計算的功能,以及計算光刻和通信的專用功能,等等。CUDA抽象了GPU編程的複雜性;讓開發者能夠專注於分配內存和設置數據傳輸,而不必擔心如何並行寫入處理器。
Nvidia將GPU視為運行科學計算工作負載的傳統高性能計算架構的一個替代品。傳統的高性能計算會配備數百個或者數千個CPU,而GPU是把計算都集中在晶片上,並且針對計算密集型作業(而非輸入輸出操作密集型作業,CPU就是為此設計的)進行了優化。
但當時,高性能計算還是一個小眾市場,華爾街擔心CUDA會分散Nvidia對核心市場的注意力。而在21世紀初,摩爾定律仍然具有一定的生命力;直到21世紀10年代,摩爾定律才逐漸失效,GPU或多核將成為唯一的出路。
對於CUDA來說,分水嶺是2012年的AlexNet項目,這個實驗是要使用卷積神經網路(CNN)進行圖像識別。使用CUDA在Nvidia GTX 580 3GB GPU上訓練的卷積神經網路以最低的錯誤率超越了競爭對手。AlexNet研究論文的下載量超過10萬次,使得CUDA名聲大噪。儘管出現了CUDA的替代品,但在21世紀10年代初期,這些多用途庫還是無法與CUDA的定製設計相媲美。
AlexNet證明了Nvidia藉助CUDA向技術計算領域邁進的正確性。但在21世紀10年代初期,深度學習和神經網路仍然是前沿技術。Nvidia超越了遊戲玩家這個細分市場,進入了更具擴展性的細分市場,但當時這至少仍然是一個細分市場。
Nvidia需要的只是「注意力」
在贏得AlexNet競賽之後,Nvidia把AI變成了公司對外傳遞資訊的核心。但問題就在這裡。如前所述,圖像或語音識別,或任何形式的神經網路,都還處於市場早期階段。相反,21世紀10年代是大數據的十年,在AI方面,機器學習遠遠領先於深度學習。
數據和機器學習都是IOPS密集型流程,如果你可以擴展到足夠多的商品硬體,就可以很好地開展工作;GPU對這些工作負載來說有點配置過高了。毫不奇怪,在大數據的十年裡,AWS、Azure和Google——而非Nvidia——一舉奪魁。
但隨後Google在2017年發表了具有開創性的《注意力,就是你所需要的一切》研究論文,最終讓Nvidia獲得了它所需要的全部關注。這篇論文中介紹的變壓器模式使生成式AI成為可能,因為它提供了一條繞過傳統神經網路處理的捷徑。在此一年前,Nvidia定製了第一台DGX超級電腦,並將其提供給Open AI。五年後,ChatGPT誕生了。
在此期間,CUDA的廣度和成熟度推動了深度學習框架(如TensorFlow、PyTorch、Caffe、Theano和MXNet)的原生支持,這些功能組合來自Nvidia及其合作夥伴。經過20多年的構建,這些庫現在已經成為整整一代AI開發者的編碼工具。AMD和英特爾制定了宏偉的跨越式計劃,讓他們全新的先進晶圓廠上線。然而,除非他們能夠迎合AI新手開發者,否則AMD和英特爾最好能在編寫模擬器方面做得非常好。
CUDA只是一個開始
雖然CUDA是吸引開發者的一個紐帶,但實際上它只是Nvidia不斷擴展的專有工具和庫生態系統的冰山一角。誠然,你可以開發程序來運行Nvidia H100,而無需任何這些層,但Nvidia正在增加便利設施以保持程式設計師的生產力,並將整個堆棧發展為超級計算平台。它從流行的RAPIDS開源軟體庫和數據科學API開始,輔以NeMo開發者平台工具,用於策劃數萬億規模的token;不同的預配置分布式計算模式的選擇;一個預訓練的模型庫,可以使用內置的快速工程和微調工具進行定製;還和Nvidia自己的Triton推理伺服器進行了集成。
在這之上是一層新的微服務,是Nvidia在應用層的表現。Nvidia Inference Microservices(NIM)是一組優化的雲原生微服務,用於嵌入為Nvidia堆棧編寫的模型,其中包含了用於語言、語音、藥物發現和其他模式的標準API,以及預構建的容器和打包了優化模型的Helm圖表。藉助這些微服務,運行在Nvidia系統上的模型就可以嵌入到企業應用中。
第三方已經在打包自己的NIM以供部署,例如Adobe的PDF提取服務、SAP的Joule copilot擴展、以及ServiceNow的智能助手。Nvidia客戶可以單獨混合搭配這些服務,也可以將其作為Nvidia AI Enterprise的軟體包進行授權,提高了管理所有這些開發和部署服務的能力,而且這些都提供了在部署在伺服器和/或邊緣的版本。
回到晶片上,Nvidia的模型變得比以往任何時候都更加複雜,Nvidia GB200 Grace Blackwell「超級晶片」通過每秒900 Gb的超低功耗NVLink晶片到晶片互連技術把2個Nvidia B200 Tensor Core GPU連接到Nvidia Grace CPU上。
所有這些都被打包到一台集成的超級電腦中:Nvidia DGX(如圖所示)。DGX提供了一個獨立的數據中心,可以作為混合雲部署在本地,也部署成AWS、Azure、Google或者Oracle Cloud上的服務。根據已發布的報告,自1月以來,Nvidia將DGX雲服務與每個超大規模數據中心企業的未來部署量增加了近3倍。DGX包括了基本命令作為管理層,提供所有必要的作業調度、編排、網路和集群管理功能。就像俄羅斯套娃一樣,DGX捆綁了Nvidia AI Enterprise——一個完整的軟體堆棧。
那麼大型機的情況如何?
在大型機的鼎盛時期,IBM主導了企業計算領域。那個時代全是硬體,軟體被視為事後考慮的事情:Enterprise MIS部門(當時還不叫IT)要麼自己編寫程序,要麼聘請顧問來做,要麼程序與盒子捆綁在一起,當時還不存在商業包裝的軟體。軟體是在特定的硬體平台上編寫的,儘管模擬器已經存在,但無法替代真正的硬體。
不可否認,IBM並不是當時唯一的大型機製造商,但Honeywells、Sperry-Univacs、Control Datas和GE最終被掃入了歷史的垃圾箱,為它們編寫的所有程序也隨之被掃入了歷史的垃圾箱。20世紀70年代和80年代,隨著中端電腦的興起,也出現了類似的模式,因為為DEC編寫的軟體已經無法運行在Prime或者Data General機器上,如今,這些代碼大部分也已經消失。
當今的世界並非是過去的翻版。專有孤島和多平台現實並存,一個明顯的例子就是蘋果公司和其他廠商之間的競爭——移動設備上的Android和筆記本電腦上的Windows。但抽象程度已經足夠高了,更不用說只有兩個主要生態系統,移動和筆記本電腦開發者可以非常輕鬆地針對這兩個目標平台進行開發。
另一方面,伺服器已經成為了一個開放系統的領域,Linux成為事實上的標準,軟體跨硬體的可移植性被視為一件理所當然的事情。同樣,得益於強大的W3C標準,Web應用應該可以運行在任何一種瀏覽器上。
但神經網路和人工智慧仍然是兩碼事。鑑於對計算的迫切需求,在轉換到另一個硬體平台的時候,任何性能損失都是不可接受的;風險太高了。
如上所述,不僅僅是因為Nvidia在基礎設施方面取得了壓倒性的領先地位(儘管具有諷刺意味的是,Nvidia實際上並沒有製造任何東西),但Nvidia提供了一個完全優化的堆棧,這使得在沒有認真重寫或重構代碼的情況下很難甚至不可能在其他地方獲得與之可比的性能。誠然,開發者可以採用架構的方法從平台中抽象出算法,但這需要額外的工作量和預先考慮。考慮到生成或神經網路AI模型對性能的苛刻要求,處理器的定製優化可能是模型取得成功的一個主要限制因素。
Nvidia目前處於壟斷地位,但蘊含著潛在的威脅。例如,多年來,人們曾多次嘗試將接口與GPU進行通用化,這可以追溯到蘋果公司在2008年啟動的OpenCL項目;令人驚訝的是,它實際上可以運行在CUDA上。最近,Linux基金會加入了Unified Acceleration Foundation(UXL)項目,這是一個標準框架,應該允許開發者編寫可以跨平台運行的代碼。藉助UXL,那些為在AMD ROCm上運行而開發的模型也應該以英特爾的oneAPI為目標,而無需更改代碼了。
谷歌和微軟等公司也已經採取行動,在來自AMD等第二來源的基礎設施上支持各種競爭對手的專有框架和開放框架。順便說一句,隨著企業在尋求更為緊湊的、特定領域的小型語言模型,這可能會為替代平台敞開一扇大門,而這些平台不必是最強大的平台。
當然,一旦供應跟上,供需法則可能就會追趕上Nvidia的發展速度了。但現在不要抱太大希望。英特爾要到2027年才會推出新的晶圓廠,AMD和蘋果也可能需要幾年時間才能實現類似的擴張。對CUDA替代方案的支持越來越多,例如一些流行的框架如PyTorch和TensorFlow都支持ROCm等替代方案。
當然,超大規模雲提供商提供了自己的專用於訓練和推理工作負載的晶片。雖然超大規模提供商希望繼續獲得Nvidia的青睞,但他們的首要任務仍然是售賣計算周期。超大規模提供商將根據客戶需求預訂容量。
儘管如此,在短期內,Nvidia最大的擔憂是如何與華爾街保持一致,因為由於客戶資本支出的影響,明年市盈率可能會趨於平穩。目前,Nvidia並不擔憂開發者轉向成本較低的平台。Nvidia AI Enterprise仍然比其他任何產品都更完整,更不用說大多數大型AI程序都是為CUDA庫編寫的。雖然這是一個昂貴而複雜的平台,但Nvidia如今擁有與傳統大型機相同的內置防禦能力。