百行程式碼跑贏AI大廠?新研究揭秘高效能計算的“捷徑”‌

在激烈的全球 AI 技術競賽中,科技巨頭正不斷加碼對基礎技術研發的投資力度,以期開發出能夠支撐現代 AI 系統執行的核心演算法庫,從而在競爭中佔據有利地位。
為了達到這一目標,工程師們往往需要編寫數萬乃至數十萬行程式碼來最大限度地挖掘硬體的效能潛力。這種長期的技術積累不僅能夠提升產品的競爭力,還能形成難以被競爭對手逾越的技術“護城河”。
例如,英偉達推出的 cuBLAS、cuDNN、CUTLASS 等高效能計算庫,就是透過深度最佳化 GPU 運算來實現的。這些高效能的“技術黑箱”不僅支援了像 ChatGPT 等大量 AI 應用的執行,還構築起了其他企業難以複製的技術壁壘。
然而,一項由麻省理工學院計算機科學與人工智慧實驗室(CSAIL)最新發布的研究成果似乎正在挑戰這一傳統觀念。
研究人員展示了一種名為“Exo 2”的新型程式語言,幾名在校學生耗時三個月的時間,僅僅用了數百行程式碼就能夠在特定的計算任務上實現與國際前沿高效能計算(HPC)庫相媲美的運算效率。
要知道,同類商業級演算法庫往往需要數萬或數十萬行經過精密最佳化的程式碼,以及大量硬體工程師的深度參與。這項研究預示著或許未來會有更加簡潔高效的途徑來實現複雜的計算任務。
(來源:MIT News)
麻省理工學院教授 Jonathan Ragan-Kelley 將 Exo 2 這類新的程式語言稱為“使用者可排程語言(USLs)”,並認為這一概念或將重新定義程式碼最佳化的方式。
傳統上,編譯器根據預設規則自動生成所謂的“儘可能快”的程式碼,但這種方法往往受限於特定架構的瓶頸,難以實現進一步的效能突破。
而“使用者可排程語言”則賦予開發者更多的控制權,透過編寫具體的“排程”指令,開發者能夠直接指導編譯器如何生成程式碼,從而突破這些限制。
打個比方,傳統編譯器像是一輛自動駕駛汽車,提供有限的最佳化選項,開發者只能被動接受其自動最佳化結果;“使用者可排程語言”則更像是一輛專業賽車,將效能最佳化調校的“方向盤”交回到開發者的手中,讓他們可以根據需要進行更多的精細調整。
藉助這種新的程式設計正規化,開發者可以將相對簡單的程式轉化為執行速度更快、更加複雜的版本,同時確保其核心功能不受影響。例如,在處理高效能計算任務時,開發者能夠透過精確控制程式碼生成過程來提升效率。
然而,早期版本的使用者可排程語言(比如最初的 Exo)也存在一定侷限性,它們提供的排程操作集是相對固定的,這意味著在不同的高效能庫元件(即“核心”)之間複用排程程式碼較為困難。
相比之下,Exo 2 則提供了更大的靈活性,可以讓使用者在編譯器外部定義新的排程操作。這種方式不僅簡化了跨不同核心間排程程式碼的複用問題,還促進了構建一個包含多種排程策略的共享庫的可能性。
“總體來說,Exo 2 能夠將總的排程程式碼量減少到原來的百分之一,同時在各種不同的平臺上實現與目前最先進的技術相當的效能,包括驅動眾多機器學習應用的基礎線性代數子程式(BLAS),這意味著開發者可以用更少的程式碼達到同樣的高效執行效果。”這項研究的主導者、麻省理工學院電氣工程和計算機科學博士生及 CSAIL 成員 Yuka Ikarashi 表示。
“對於那些致力於在不同操作、資料型別和目標架構上最佳化核心的高效能計算工程師而言,這是一個極具吸引力的選擇。”她補充說。
畢竟,這些工程師們通常需要處理複雜的硬體和軟體挑戰,以確保計算任務能夠在不同的環境中高效執行,而 Exo 2 提供了一種更加靈活且高效的解決方案,讓他們能夠更專注於核心問題,而不是陷入繁瑣的程式碼編寫工作中。
而 Exo 2 的一個優勢是能夠在應用程式和硬體目標之間複用排程程式碼,從而大幅減少了所需的編碼工作量。透過這種方法,開發者可以在不同的專案中重複利用已有的最佳化程式碼,顯著提高了開發效率。
此外,Yuka Ikarashi 還強調了 Exo 2 的獨特方法:“我們採用了一種自底向上的自動化策略,而非依賴於機器學習或人工智慧來搜尋高效能程式碼。這意味著工程師和硬體部署人員可以根據自己的需求編寫定製化的排程庫,即一套專門針對其硬體平臺的最佳化技術,從而達到最佳效能。”
在研究過程中,團隊在 Exo 2 中實現了一個包含約 2,000 行程式碼的排程庫,該庫封裝了針對線性代數運算以及特定硬體加速器(如 AVX512、AVX2、Neon 和 Gemmini 等)的可重複使用最佳化。
這個庫整合超 80 個高效能核心的排程策略,每個核心僅需十幾行程式碼即可實現,並且能夠提供與 MKL、OpenBLAS、BLIS 和 Halide 等高效能計算庫相當甚至更優的效能表現。
從技術角度來看,Exo 2 引入了一種名為“Cursors”的新機制,這一機制在整個排程過程中為物件程式碼提供了所謂的“穩定引用”。
這種“穩定引用”對於將排程邏輯封裝進庫函式至關重要,因為它確保了排程程式碼可以獨立於物件程式碼的轉換過程,從而增強了程式碼的可維護性和靈活性。
Yuka Ikarashi 解釋道:“‘穩定引用’是使用者將排程邏輯封裝到庫函式中的關鍵,因為它使排程程式碼不依賴於物件程式碼的具體轉換方式。”
她進一步補充說:“我們認為,使用者可排程語言的設計應當是使用者可擴充套件的,而不是侷限於一套固定的操作。透過這種方式,一種語言可以透過實現適應不同最佳化需求和應用領域的庫來支援大型專案的持續發展。”
Exo 2 的創新設計讓工程師能夠專注於高層次的最佳化策略,同時透過使用安全的基本單元確保底層的物件程式碼保持功能等效。
未來,團隊計劃擴充套件 Exo 2 對不同型別硬體加速器的支援,尤其是 GPU,並進一步於改進編譯器在正確性、編譯時間和表達能力等方面的分析能力。
除了 Jonathan Ragan-Kelley 和 Yuka Ikarashi,這項研究的合作者還包括 Kevin Qian、Samir Droubi、Alex Reinking 等多位成員。另外,這項研究還得到了美國國防高階研究計劃局(DARPA)和美國國家科學基金會等的資助。
原文連結:
https://news.mit.edu/2025/high-performance-computing-with-much-less-code-0313

相關文章