和TensorFlow一樣,英偉達CUDA的壟斷格局將會被打破?
十年來,機器學習軟體開發的模式發生了重大變化。許多框架如雨後春筍般湧現,但大多數都嚴重依賴英偉達的 CUDA,並在英偉達的 GPU 上以獲得最佳的性能。然而,隨著 PyTorch 2.0 和 OpenAI Triton 的到來,英偉達在這一領域的主導地位正在被打破。
Google早期在機器學習模型架構、訓練、模型最佳化方面都具有很大優勢,但現在卻難以充分發揮這些優勢。而在硬體方面,其他 AI 硬體公司很難削弱英偉達的統治地位。直到 PyTorch 2.0 和 OpenAI Triton 出現,機器學習模型的預設軟體堆疊將不再是英偉達的閉源 CUDA。
TensorFlow vs. PyTorch
類似的競爭出現在機器學習框架中。幾年前,框架生態系統相當分散,但 TensorFlow 是領跑者。表面看來,Google穩操機器學習框架產業,他們憑藉 TensorFlow 設計了 AI 應用特定加速器 TPU,從而獲得了先發優勢。
#然而現在看來,PyTorch 贏了,Google未能將其先發優勢轉化為新興ML 產業的主導地位。如今,Google在機器學習社群中似乎有些被孤立了,因為它沒有使用 PyTorch 和 GPU,而是使用自己的軟體堆疊和硬體。甚至,Google研發了第二個機器學習框架 ——JAX,直接與 TensorFlow 競爭,這是典型的「Google行為」。
有些人認為,由於大型語言模型的興起,特別是OpenAI 的大型語言模型和各種利用OpenAI API 構建的語言模型,谷歌在搜尋和自然語言處理方面的主導地位正在減弱。也許這種觀點過於悲觀,畢竟目前大多數模型的基礎架構仍是Google開發的 transformer。
那麼,為什麼 PyTorch 能大獲全勝?主要原因是相對於 TensorFlow,PyTorch 具有更高的靈活性和可用性。 PyTorch 與 TensorFlow 主要的不同之處在於使用 Eager 模式而非 Graph 模式。
Eager 模式可以說是標準的腳本執行方法,與普通的 Python 程式碼沒什麼兩樣。這使得調試和理解程式碼更加容易,因為使用者可以看到中間操作的結果,以及模型是如何運作的。
相反,Graph 模式分為兩個階段。第一階段代表要執行操作的計算圖,其中的節點代表操作或變量,而節點之間的邊表示它們之間的資料流。第二階段是延遲執行計算圖的最佳化版本。
這種兩階段的方法使得理解和偵錯程式碼更具挑戰性,因為在圖執行結束之前使用者無法看到發生了什麼。這類似於「解釋型」與「編譯型」語言,如 Python 與 C ,除錯 Python 更容易,因為它是解釋型語言。
雖然 TensorFlow 現在也預設使用 Eager 模式,但研究社群和大多數大型科技公司都選擇使用 PyTorch。
機器學習訓練元件
如果將機器學習模型訓練簡化為最簡單的形式,影響機器學習模型訓練的因素主要有兩點:
- 計算( FLOPS ) :在每一層內運行密集矩陣乘法;
- 記憶體頻寬。
以前,影響機器學習訓練時間的主要因素是計算時間,等待系統執行矩陣乘法。隨著英偉達 GPU 的不斷發展,這很快就不再是主要問題了。
英偉達利用摩爾定律將 FLOPS 提高了多個數量級,但主要是架構變化 —— 張量核(tensor core)和更低精度的浮點數格式。相比之下,儲存方面沒有太大的變化。
2018 年,最先進的模型是BERT,英偉達V100 是最先進的GPU,那時矩陣乘法已經不再是提高模型性能的主要因素。之後,模型在參數數量上成長了 3 到 4 個數量級,而最快的 GPU 在 FLOPS 上成長了 1 個數量級。
即使在 2018 年,純計算綁定的工作負載也佔 FLOPS 的 99.8%,但僅佔運行時的 61%。與矩陣乘法相比,歸一化和逐點運算(pointwise ops)使用的 FLOPS 僅為矩陣乘法的 1/250 和 1/700,但它們消耗了近 40% 的模型運行時間。
記憶體牆
##隨著模型規模的不斷飆升,大型語言模型(LLM)僅用於模型權重的記憶體就需要100 GB 以上。百度和 Meta 部署的產品推薦網路需要數十 TB 的記憶體來儲存其海量嵌入表。大型模型訓練 / 推理中的大部分時間都沒有花在計算矩陣乘法上,而是在等待資料傳輸。顯然,問題在於為什麼架構師不將更多記憶體放在更靠近運算的位置,問題的答案也是可想而知的 —— 成本。#
如果将所有时间都花在内存传输上(即处于内存带宽限制状态),那么增加 GPU 的 FLOPS 将无济于事。另一方面,如果将所有时间都花在执行大型 matmuls 上,那么即使将模型逻辑重写为 C 来减少开销也将无济于事。
PyTorch 之所以能胜过 TensorFlow,就是因为 Eager 模式提高了灵活性和可用性,但转向 Eager 模式并不是只有好处。在 Eager 模式下运行时,每次运算都要从内存中读取、计算,然后在处理下一次运算之前发送到内存。如果不进行大量优化,这会显著增加内存带宽需求。
因此对于在 Eager 模式下执行的模型,有一种主要的优化方法是算子融合。融合运算在一次传递中计算多个函数,以最小化内存读 / 写,而不是将每个中间结果写入内存。算子融合改善了运算符调度、内存带宽和内存大小成本。
这种优化通常涉及编写自定义 CUDA 内核,但这比使用简单的 Python 脚本要难得多。随着时间的推移,PyTorch 中稳定地实现了越来越多的算子,其中许多算子只是简单地将多次常用运算融合到一个更复杂的函数中。
算子的增加让在 PyTorch 中创建模型变得更容易,并且由于内存读 / 写更少,Eager 模式的性能更快。缺点是 PyTorch 在几年内激增到了 2000 多个算子。
我们可以说软件开发人员太懒了,但说实话,又有谁没懒惰过呢。一旦习惯了 PyTorch 中的一个新算子,他们就会继续用它。开发人员甚至可能没有意识到性能在提高,而是继续使用该算子,因为这样就不用编写更多的代码。
此外,并非所有算子都可以融合。决定要融合哪些运算,将哪些运算分配给芯片和集群级别的特定计算资源都需要花费大量的时间。算子在何处融合的策略虽大体相似,但因为架构的不同也会有很大差异。
英伟达曾是王者
算子的增长和默认的地位对英伟达来说是优势,因为每个算子都针对其架构进行了快速优化,但并未针对任何其他硬件进行优化。如果一家 AI 硬件初创公司想要全面实施 PyTorch,那就意味着以高性能支持不断增长的 2000 个算子列表。
因为提取到最大性能需要很多技巧,在 GPU 上训练具有高 FLOPS 利用率的大型模型所需的人才水平越来越高。Eager 模式执行加算子融合意味着开发的软件、技术和模型都在不断地被推动,以适应当前一代 GPU 具有的计算和内存比率。
每个开发机器学习芯片的人都受制于同一个内存墙。ASIC 受制于支持最常用的框架,受制于默认的开发方法、GPU 优化的 PyTorch 代码以及英伟达和外部库的混合。在这种情况下,避开 GPU 的各种非计算包袱而支持更多 FLOPS 和更严格的编程模型的架构意义不大。
然而,易用性第一。打破恶性循环的唯一方法是让在英伟达的 GPU 上运行模型的软件尽可能轻松无缝转移到其他硬件。随着模型架构的稳定和来自 PyTorch 2.0、OpenAI Triton 和 MLOps 公司(如 MosaicML)的抽象成为默认,芯片解决方案的架构和经济性开始成为购买的最大驱动力,而不是英伟达高级软件提供的易用性。
PyTorch 2.0
几个月前,PyTorch 基金会成立,并脱离了 Meta 。除了对开放式开发和治理模型的更改外,2.0 还发布了早期测试版本,并于 3 月全面上市。PyTorch 2.0 带来了许多变化,但主要区别在于它添加了一个支持图形执行模型的编译解决方案。这种转变将使正确利用各种硬件资源变得更加容易。
PyTorch 2.0 在英伟达 A100 上的训练性能提升了 86%,在 CPU 上的推理性能提升了 26%。这大大减少了训练模型所需的计算时间和成本。这些好处可以扩展到来自 AMD、英特尔、Tenstorrent、Luminous Computing、特斯拉、谷歌、亚马逊、微软、Marvell、Meta、Graphcore、Cerebras、SambaNova 等的其他 GPU 和加速器。
對於目前未最佳化的硬件,PyTorch 2.0 具有更大的效能改進空間。 Meta 和其他公司對 PyTorch 做出如此巨大的貢獻,是因為他們希望在自己價值數十億美元的 GPU 訓練集群上以更少的努力實現更高的 FLOPS 利用率。這樣他們也有動力使軟體堆疊更易於移植到其他硬件,將競爭引入機器學習領域。
在更好的 API 的幫助下,PyTorch 2.0 還可以支援資料並行、分片、pipeline 並行和張量並行,為分散式訓練帶來了進步。此外,它在整個堆疊中原生支援動態形狀,在許多其他範例中,這更容易支援 LLM 的不同序列長度。下圖是主要編譯器首次支援訓練到推理的Dynamic Shapes:
#
未来他们将支持更多硬件,但关键是 Inductor 大大减少了编译器团队在为其 AI 硬件加速器制作编译器时必须做的工作量。此外,代码针对性能进行了更优化,内存带宽和容量要求得到了显著降低。
研究人员们需要的不是只支持 GPU 的编译器,而是想要支持各种硬件后端。
OpenAI Triton
对英伟达的机器学习闭源软件来说,OpenAI Triton 是一个颠覆性的存在。Triton 直接采用 Python 或通过 PyTorch Inductor 堆栈提供数据,后者是最常见的用法。Triton 负责将输入转换为 LLVM 中间表征,并生成代码。英伟达 GPU 将直接生成 PTX 代码,跳过英伟达的闭源 CUDA 库(如 cuBLAS),转而使用开源库(如 cutlass)。
CUDA 在加速计算领域很受欢迎,但在机器学习研究人员和数据科学家中却鲜为人知。使用 CUDA 可能会带来重重挑战,并且需要深入了解硬件架构,这可能导致开发过程变慢。因此,机器学习专家可能就要依赖 CUDA 专家来修改、优化和并行化他们的代码。
Triton 弥补了这一缺陷,使高级语言实现了与低级语言相当的性能。Triton 内核本身对典型的 ML 研究者来说非常清晰,这对可用性来说非常重要。Triton 在 SM 中自动执行内存合并、共享内存管理和调度。Triton 对逐元素矩阵乘法不是特别有用,但矩阵乘法已经可以非常高效地完成。Triton 对于成本高昂的逐点运算和减少复杂操作的开销非常有用。
OpenAI Triton 目前仅正式支持英伟达的 GPU,但在不久的将来会发生变化,将支持多个其他硬件供应商。其他硬件加速器可以直接集成到 Triton 的 LLVM IR 中,这大大减少了为新硬件构建 AI 编译器堆栈的时间。
英伟达庞大的软件体系缺乏远见,无法利用其在 ML 硬件和软件方面的巨大优势,也就没能成为机器学习的默认编译器。他们缺乏对可用性的关注,而 OpenAI 和 Meta 也正是得益于此才能够创建出可移植到其他硬件的软件堆栈。
原文链接:https://www.semianalysis.com/p/nvidiaopenaitritonpytorch
以上是和TensorFlow一樣,英偉達CUDA的壟斷格局將會被打破?的詳細內容。更多資訊請關注PHP中文網其他相關文章!

熱AI工具

Undresser.AI Undress
人工智慧驅動的應用程序,用於創建逼真的裸體照片

AI Clothes Remover
用於從照片中去除衣服的線上人工智慧工具。

Undress AI Tool
免費脫衣圖片

Clothoff.io
AI脫衣器

AI Hentai Generator
免費產生 AI 無盡。

熱門文章

熱工具

記事本++7.3.1
好用且免費的程式碼編輯器

SublimeText3漢化版
中文版,非常好用

禪工作室 13.0.1
強大的PHP整合開發環境

Dreamweaver CS6
視覺化網頁開發工具

SublimeText3 Mac版
神級程式碼編輯軟體(SublimeText3)

熱門話題

在機器學習和資料科學領域,模型的可解釋性一直是研究者和實踐者關注的焦點。隨著深度學習和整合方法等複雜模型的廣泛應用,理解模型的決策過程變得尤為重要。可解釋人工智慧(ExplainableAI|XAI)透過提高模型的透明度,幫助建立對機器學習模型的信任和信心。提高模型的透明度可以透過多種複雜模型的廣泛應用等方法來實現,以及用於解釋模型的決策過程。這些方法包括特徵重要性分析、模型預測區間估計、局部可解釋性演算法等。特徵重要性分析可以透過評估模型對輸入特徵的影響程度來解釋模型的決策過程。模型預測區間估計

C++中機器學習演算法面臨的常見挑戰包括記憶體管理、多執行緒、效能最佳化和可維護性。解決方案包括使用智慧指標、現代線程庫、SIMD指令和第三方庫,並遵循程式碼風格指南和使用自動化工具。實作案例展示如何利用Eigen函式庫實現線性迴歸演算法,有效地管理記憶體和使用高效能矩陣操作。

開放LLM社群正是百花齊放、競相爭鳴的時代,你能看到Llama-3-70B-Instruct、QWen2-72B-Instruct、Nemotron-4-340B-Instruct、Mixtral-8x22BInstruct-v0.1等許多表現優良的模型。但是,相較於以GPT-4-Turbo為代表的專有大模型,開放模型在許多領域仍有明顯差距。在通用模型之外,也有一些專精關鍵領域的開放模型已被開發出來,例如用於程式設計和數學的DeepSeek-Coder-V2、用於視覺-語言任務的InternVL

本站6月2日消息,在目前正在進行的黃仁勳2024台北電腦展主題演講上,黃仁勳介紹生成式人工智慧將推動軟體全端重塑,展示其NIM(NvidiaInferenceMicroservices)雲端原生微服務。英偉達認為「AI工廠」將掀起一場新產業革命:以微軟開創的軟體產業為例,黃仁勳認為生成式人工智慧將推動其全端重塑。為方便各種規模的企業部署AI服務,英偉達今年3月推出了NIM(NvidiaInferenceMicroservices)雲端原生微服務。 NIM+是一套經過優化的雲端原生微服務,旨在縮短上市時間

譯者|李睿審校|重樓人工智慧(AI)和機器學習(ML)模型如今變得越來越複雜,這些模型產生的產出是黑盒子-無法向利害關係人解釋。可解釋性人工智慧(XAI)致力於透過讓利害關係人理解這些模型的工作方式來解決這個問題,確保他們理解這些模型實際上是如何做出決策的,並確保人工智慧系統中的透明度、信任度和問責制來解決這個問題。本文探討了各種可解釋性人工智慧(XAI)技術,以闡明它們的基本原理。可解釋性人工智慧至關重要的幾個原因信任度和透明度:為了讓人工智慧系統被廣泛接受和信任,使用者需要了解決策是如何做出的

MetaFAIR聯合哈佛優化大規模機器學習時所產生的資料偏差,提供了新的研究架構。據所周知,大語言模型的訓練常常需要數月的時間,使用數百甚至上千個GPU。以LLaMA270B模型為例,其訓練總共需要1,720,320個GPU小時。由於這些工作負載的規模和複雜性,導致訓練大模型存在著獨特的系統性挑戰。最近,許多機構在訓練SOTA生成式AI模型時報告了訓練過程中的不穩定情況,它們通常以損失尖峰的形式出現,例如Google的PaLM模型訓練過程中出現了多達20次的損失尖峰。數值偏差是造成這種訓練不準確性的根因,

機器學習是人工智慧的重要分支,它賦予電腦從數據中學習的能力,並能夠在無需明確編程的情況下改進自身能力。機器學習在各個領域都有廣泛的應用,從影像辨識和自然語言處理到推薦系統和詐欺偵測,它正在改變我們的生活方式。機器學習領域存在著多種不同的方法和理論,其中最具影響力的五種方法被稱為「機器學習五大派」。這五大派分別為符號派、聯結派、進化派、貝葉斯派和類推學派。 1.符號學派符號學(Symbolism),又稱符號主義,強調利用符號進行邏輯推理和表達知識。該學派認為學習是一種逆向演繹的過程,透過現有的

小模型崛起了。上個月,Meta發布了Llama3.1系列模型,其中包括Meta迄今為止最大的405B模型,以及兩個較小的模型,參數量分別為700億和80億。 Llama3.1被認為是引領了開源新時代。然而,新一代的模型雖然效能強大,但部署時仍需要大量運算資源。因此,業界出現了另一種趨勢,即開發小型語言模型(SLM),這種模型在許多語言任務中表現足夠出色,部署起來也非常便宜。最近,英偉達研究表明,結構化權重剪枝與知識蒸餾相結合,可以從初始較大的模型中逐步獲得較小的語言模型。圖靈獎得主、Meta首席A
