Meta 和其他公司對 PyTorch 做出如此巨大的貢獻,是因為他們希望在自己價值數十億美元的 GPU 訓練叢集上以更少的努力實現更高的 FLOPS 使用率。 這樣他們也有動力使軟體堆疊更易於移植到其他硬體,將競爭引入機器學習領域。 雖然記憶體容量是一個重要瓶頸,但另一個瓶頸 —— 記憶體頻寬也非常關鍵。 雖然如今標準 DRAM 的價格僅為幾美元 / GB,但為了獲得機器學習所需的巨量頻寬,NVIDIA 使用 HBM 記憶體 —— 一種由 3D 堆疊 DRAM 層組成的設備,需要更昂貴的封裝。 HBM 的成本大概是 美元 / GB,包括封裝和產量成本。
- 除了對開放式開發和治理模型的更改外,2.0 還發佈了早期測試版本,並於 3 月全面上市。
- 2018 年,最先進的模型是 BERT,NVIDIA V100 是最先進的 GPU,那時矩陣乘法已經不再是提高模型性能的主要因素。
- Triton 對逐元素矩陣乘法不是特別有用,但矩陣乘法已經可以非常高效地完成。
- Triton 在 SM 中自動執行記憶體合併、共用記憶體管理和調度。
- CUDA 在加速運算領域很受歡迎,但在機器學習研究人員和資料科學家中卻鮮為人知。
- 雖然 TensorFlow 現在也預設使用 Eager 模式,但研究社羣和大多數大型科技公司都選擇使用 PyTorch。
計算過程中,增加內存帶寬是通過並行性獲得的,爲此,英偉達使用了HBM內存(High Bandwidth Memor),這是一種3D堆疊的DRAM層組成的結構,封裝更貴,讓經費樸實的使用者們只能乾瞪眼。 如果把PyTorch這些框架比做車,那CUDA就是變速箱——它可以加速機器學習框架的計算過程,當在英偉達GPU上運行PyTorch等時,可以更快地訓練、運行深度學習模型。 圖 / Tesla系列是NVIDIA用於工作站級的CUDA處理器,其浮點運算能力是消費級產品的數倍之多。 部分圖擷取允許模型包含不受支援的 / 非 python 構造。 當無法為模型部分生成圖時,將插入圖中斷,並且將在部分圖之間以 eager 模式執行不支援的構造。 從 A100 到 H100,FLOPS 增長到原來的 6 倍以上,但記憶體頻寬僅增長到 1.65 倍。
nvidiacuda: 電腦DIY粉絲團
也許這種觀點過於悲觀,畢竟當前大多數模型的基礎架構仍是谷歌開發的 transformer。 而且目前Triton還只正式支持英偉達GPU(沒在別的GPU測試性能),如果XLA在英偉達GPU上的表現不佔優勢,那它恐怕不如Triton。 nvidiacuda 此外,PyTorch 2.0依靠PrimTorch技術,將原來2000多個算子縮到250個,讓更多非英偉達的後端更易於訪問;還採用了TorchInductor技術,可爲多個加速器和後端自動生成快速代碼。
接著,Inductor 進入調度階段,在該階段融合運算元,並確定記憶體規劃。 PyTorch 的目標是創建一個具有流暢 UX 的統一前端,該前端利用 Dynamo 產生 graph。 該解決方案的使用者體驗不會發生變化,但性能可以得到顯著提升。 運算元的增長和預設的地位對NVIDIA 來說是優勢,因為每個運算元都針對其架構進行了快速最佳化,但並未針對任何其他硬體進行最佳化。 如果一家 AI 硬體初創公司想要全面實施 PyTorch,那就意味著以高性能支援不斷增長的 2000 個運算元列表。 這種最佳化通常涉及編寫自訂 CUDA 核心,但這比使用簡單的 Python 腳本要難得多。
nvidiacuda: 電腦王網站地圖
封裝器 Codegen 取代了編譯器堆疊的解譯器部分,可以系統呼叫核心和分配記憶體。 後端程式碼生成部分利用適用於 GPU 的 OpenAI Triton 並輸出 PTX 程式碼。 對於 CPU,Intel編譯器生成 C++(也適用於非Intel CPU)。 打破惡性循環的唯一方法是讓在NVIDIA 的 GPU 上運行模型的軟體盡可能輕鬆無縫轉移到其他硬體。 隨著模型架構的穩定和來自 PyTorch 2.0、OpenAI Triton 和 MLOps 公司(如 MosaicML)的抽象成為預設,晶片解決方案的架構和經濟性開始成為購買的最大驅動力,而不是NVIDIA 高級軟體提供的易用性。 運算元的增加讓在 PyTorch 中創建模型變得更容易,並且由於記憶體讀 / 寫更少,Eager 模式的性能更快。
- 這個想法讓一個 SM 中的資料可以直接寫入另一個 SM 的 SRAM(共用記憶體 /L1 Cache)中。
- 融合運算在一次傳遞中運算多個函式,以最小化記憶體讀 / 寫,而不是將每個中間結果寫入記憶體。
- 之後,模型在參數數量上增長了 3 到 4 個數量級,而最快的 GPU 在 FLOPS 上增長了 1 個數量級。
- 有網友看後評價:英偉達淪落到此種境地,只因爲了眼前利益,放棄創新。
- 計算過程中,增加內存帶寬是通過並行性獲得的,爲此,英偉達使用了HBM內存(High Bandwidth Memor),這是一種3D堆疊的DRAM層組成的結構,封裝更貴,讓經費樸實的使用者們只能乾瞪眼。
上述觀點來自Semi Analysis首席分析師Dylan Patel,相關文章已引發一波業內關注。 有網友看後評價:英偉達淪落到此種境地,只因爲了眼前利益,放棄創新。 正是上述技術,再結合對英偉達之外廠商GPU和加速器的支持,原先CUDA爲英偉達構築的軟件城牆就顯得沒那麼高不可攀了。 nvidiacuda2025 目前來說,片上SRAM成本並沒隨摩爾定律工藝提升而大幅降低,若採用臺積電下一代3nm製程工藝,同樣的1GB,反而成本更高。 而CUDA不僅可以調用GPU計算,還可以調用GPU硬件加速,讓GPU擁有了解決複雜計算問題的能力,可以幫助客戶爲不同的任務對處理器進行編程。
nvidiacuda: CPU第一次整合內存!16.9mm極限輕薄本硬塞RTX 4080
然而現在看來,PyTorch 贏了,Google未能將其先發優勢轉化為新興 ML 行業的主導地位。 如今,Google在機器學習社羣中似乎有些被孤立了,因為它沒有使用 PyTorch 和 GPU,而是使用自己的軟體堆疊和硬體。 甚至,Google研發了第二個機器學習框架 ——JAX,直接與 TensorFlow 競爭,這是典型的「谷歌行為」。 Google早期在機器學習模型架構、訓練、模型最佳化方面都具有很大優勢,但現在卻難以充分發揮這些優勢。 而在硬體方面,其他 AI 硬體公司很難削弱NVIDIA 的統治地位。 直到 PyTorch 2.0 和 OpenAI Triton 出現,機器學習模型的預設軟體堆疊將不再是NVIDIA 的閉源 CUDA。
nvidiacuda: 硬體加速搞不懂?CUDA讓一切變得更簡單
NVIDIA CUDA的問世,對於大部分的玩家來說還是相當陌生,也許你只聽過CUDA,但是卻不知道它能帶來哪些好處,這次小編所介紹的CUDA只是皮毛而已,是整個CUDA架構的冰山一角。 簡單來說CPU可以輕鬆的記下非常大量且複雜的指令,但是處理時會有先後順序的問題,每條指令必須一一運算,就算是大量且簡單或是重複的資料呢? nvidiacuda 沒意外的話結果還是一樣,CPU是非常遵守運算的順序,雖然快速但還是得要從頭運算一遍。 也許玩家們不常需要轉檔,所以比較沒辦法感受CUDA所帶來的效益,但是總是會上網吧!
nvidiacuda: 科技要聞
Triton 對於成本高昂的逐點運算和減少複雜操作的開銷非常有用。 CUDA 在加速運算領域很受歡迎,但在機器學習研究人員和資料科學家中卻鮮為人知。 使用 CUDA 可能會帶來重重挑戰,並且需要深入瞭解硬體架構,這可能導致開發過程變慢。 因此,機器學習專家可能就要依賴 CUDA 專家來修改、最佳化和並行化他們的程式碼。 因為提取到最大性能需要很多技巧,在 GPU 上訓練具有高 FLOPS 使用率的大型模型所需的人才水準越來越高。 Eager 模式執行加運算元融合意味著開發的軟體、技術和模型都在不斷地被推動,以適應當前一代 GPU 具有的運算和記憶體比率。
nvidiacuda: 科技
第一階段代表要執行操作的運算圖,其中的節點代表操作或變數,而節點之間的邊表示它們之間的資料流程。 NVIDIA 龐大的軟體體系缺乏遠見,無法利用其在 ML 硬體和軟體方面的巨大優勢,也就沒能成為機器學習的預設編譯器。 他們缺乏對可用性的關注,而 OpenAI 和 Meta 也正是得益於此纔能夠創建出可移植到其他硬體的軟體堆疊。 隨後,Inductor 進入「Wrapper Codegen」,它生成在 CPU、GPU 或其他 nvidiacuda2025 AI 加速器上運行的程式碼。
nvidiacuda: 電腦
爲此,會經常出現卸載CUDA,再安裝CUDA的問題,所以對於CUDA的卸載與安裝就會有一些注意事項,現在總結一下。 nvidiacuda 詹士 Alex 發自 凹非寺轉載自:量子位(QbitAI)英偉達的軟件護城河正在逐漸消失。 隨着PyTorch支持更多GPU廠商,再加上OpenAI的Triton攪局,英偉達手中的利器CUDA逐漸鋒芒不再。
nvidiacuda: 美元M2已降回21.2萬億美元!人民幣,何時將大貶值?
隨著模型規模的不斷飆升,大型語言模型(LLM)僅用於模型權重的記憶體就需要 100 GB 以上。 百度和 Meta 部署的產品推薦網路需要數十 TB 的記憶體來儲存其巨量嵌入表。 大型模型訓練 / 推理中的大部分時間都沒有花在運算矩陣乘法上,而是在等待資料傳輸。 顯然,問題在於為什麼架構師不將更多記憶體放在更靠近運算的位置,問題的答案也是可想而知的 —— 成本。
nvidiacuda: 運算元融合
結合上面所有的特效處裡,我們就能得知一個完整的畫面中需要有基本圖形、渲染紋理和光影效果。 Google的 TensorFlow/Jax 和其他圖模式執行 nvidiacuda pipeline 通常要求使用者確保他們的模型適合編譯器架構,以便可以擷取圖。 nvidiacuda2025 Dynamo 透過啟用部分圖擷取、受保護的圖擷取和即時重新擷取來改變這一點。 Dynamo 將所有複雜運算元減少到 PrimTorch 中的約 250 個原始運算元。
Triton 彌補了這一缺陷,使高階語言實現了與低階語言相當的性能。 Triton 核心本身對典型的 ML 研究者來說非常清晰,這對可用性來說非常重要。 Triton 在 SM 中自動執行記憶體合併、共用記憶體管理和調度。 Triton 對逐元素矩陣乘法不是特別有用,但矩陣乘法已經可以非常高效地完成。
nvidiacuda: 內存牆是個問題
另一方面,如果將所有時間都花在執行大型 matmuls 上,那麼即使將模型邏輯重寫為 C++ 來減少開銷也將無濟於事。 NVIDIA 設計的晶片片上記憶體容量要少得多 ——A100 有 40MB,H100 有 50MB。 臺積電 5 奈米晶片上的 1GB SRAM 需要約 200 平方毫米的矽,要實現相關的控制邏輯 / 結構,將需要超過 400 平方毫米的矽。 鑒於 A100 GPU 的成本在 1 萬美元以上,而 H100 更是接近 2 萬美元,從經濟角度看,這種方法是不可行的。 即使忽略NVIDIA 在資料中心 GPU 上約 75% 的利潤率,對於完全量產的產品,SRAM 記憶體的成本仍在 100 美元 / GB 左右。 以前,影響機器學習訓練時間的主要因素是運算時間,等待系統執行矩陣乘法。
還有值得一提的是,Triton是開源的,比起閉源的CUDA,其他硬件加速器能直接集成到Triton中,大大減少了爲新硬件建立AI編譯器棧的時間。 前面提到,PyTorch的一大優勢在於:Eager模式讓AI訓練推理更靈活易用。 一般來說,內存系統根據數據使用需求,遵照從“又近又快”到“又慢又便宜”的結構安排資源。 通常,最近的共享內存池在同一塊芯片上,一般由SRAM構成。 比如百度和Meta,在部署生產推薦網絡時,需要數十TB內存來存儲海量的embedding table。
這使得調試和理解程式碼更加容易,因為使用者可以看到中間操作的結果,以及模型是如何運行的。 幾年前,框架生態系統相當分散,但 TensorFlow處於領先地位。 表面看來,Google穩操機器學習框架行業,他們憑藉 TensorFlow 設計了 AI 應用特定加速器 TPU,從而獲得了先發優勢。 比如英偉達2016年的P100,比起最新的H100,FB16性能提升46倍,但內存容量只增加了5倍。 如果擷取的圖對於執行無效,則即時重新擷取允許重新擷取圖。 為了實現這一轉向,Meta 和 PyTorch 已經嘗試了大約 5 年的時間,但是他們提出的每個解決方案都存在明顯的缺點。
nvidiacuda: CUDA 應用程式
X86處理器中的CISC架構(Complex Instruction Set Computer – 複雜指令集)實際上因為暫存器數量有限,所以並不擅長多媒體運算,雖然如此還是得不斷改善CISC架構以及SIMD運算的能力,進而發展出多媒體加速指令集MMX來加速多媒體運算的能力。 GPU的重要性,我們所看到的一切都必須要藉由強大的CUDA技術來做平行運算,透過大量的GPU核心運算來輸入和輸出3D材質與畫面的像素,和CPU所擅長的純量運算特性是完全不一樣的,當然,這也不是一般的電腦就可以獨力完成,因為這樣如此龐大的平行運算,需要數量相當多的GPU串在一起做平行運算。 以上的解說是要強調CUDA GPU在電影工業上的特效運算擁有強大的效能表現。 對於除NVIDIA GPU 之外的每個機器學習 ASIC 來說,為 PyTorch 編寫一個完全支援所有 2000 多個運算元的高性能後端並非易事。 PrimTorch 將運算元的數量減少到約 250 個原始運算元,同時還保持 PyTorch 最終使用者的可用性不變。 PrimTorch 使 PyTorch 的不同非NVIDIA 後端的實現變得更加簡單和易於存取。