LLVM 之父 Chris Lattner:模塊化設計決定 AI 前途,不服來辯
作者 | OneFlow社區
來源 | OneFlow
缺乏模塊化的單體系統就像渾然一體的金字塔,失去了演化空間,抑制了創新速度。當前,AI領域正面臨系統和工具鏈的互不兼容和碎片化,對這種混雜局面,編譯器大牛Chris Lattner看不下去了。
2022年1月,他宣布下海創業,同Tim Davis共同成立了Modular AI, 目標是重建全球ML基礎設施,包括編譯器、運行時,異構計算、邊緣到數據中心并重,并專注于可用性,提升開發人員的效率。目前,Modular AI已構建了來自TensorFlow、TF Lite、XLA、TPU、Android ML、Apple ML、MLIR 等世界上大部分的生產機器學習基礎設施,并已將生產工作負載部署到數十億用戶和設備。
此前,Chris Lattner在《編譯器的黃金時代》中指出,隨著硬件和軟件的協同設計變得更加重要,我們需要比以往更快地推動創新。而在最新文章里,他們抨擊了當前AI軟件技術棧的碎片化現狀,并極盡對模塊化設計的推崇。
Chris Lattner本人擔任Modular AI聯合創始人和CEO,他畢業于波特蘭大學的計算機科學系,具有創建和領導多個知名大型項目的經驗,其中包括 LLVM、Clang、MLIR和CIRCT等編譯器基礎設施項目,他還帶頭創建了Swift編程語言。他還曾在蘋果開發者工具部門、特斯拉自動駕駛團隊、Google Brain和SiFive公司領導相關工程研發工作。Tim Davis擔任Modular AI的聯合創始人及首席產品官,他此前在谷歌團隊參與了TF Lite、 Android ML、NNAPI等項目的編譯器開發工作。
TensorFlow、PyTorch、CUDA等平臺不夠模塊化——沒錯,不服來辯!它們屬于技術蔓延大背景下的產物,各自有數千個相互依賴的組成部分,每個部分各自演化、野蠻生長,發展成復雜的結構。 在使用多種硬件平臺和加速器將工作負載部署到服務器、移動設備、微控制器和web瀏覽器時,人工智能軟件開發人員必須應對這種混雜的狀況。 除初始領域目標之外,上述提到的單體系統(Monolithic systems)不易擴展或泛化,這迫使硬件制造商不得不自己構建相應的技術棧。 其結果是,AI部署領域變得高度碎片化,出現了數十種工具鏈,它們各有取舍和局限性。更重要的是,這些設計模式的易用性、可移植性和可擴展性阻礙了創新速度。
11990年代軟件業的碎片化
正如今天的AI行業一樣,上世紀90年代的軟件業也存在碎片化問題。當時,C和C++語言都有自己的社區,但卻分散到數十種專有編譯器軟件上,這些編譯器都有各自的供應商擴展(vendor extensions)和小瑕疵,奇怪的邊角案例和不完整的實現。 當時,構建跨平臺軟件非常困難,因此出現了各種工具來幫助開發人員應對碎片化,使安裝、構建和配置軟件(如autoconf)變得更容易。 后來,GCC編譯器的興起拯救了我們,它不僅支持跨平臺運行、性能良好且穩定,并且是免費的,因此在90年代取得了巨大的成功。GCC的成功推動了工具行業的整合浪潮,通過使其能力成為行業事實標準,去碎片化催生了新一波的創新浪潮。 由于軟件不再受限于C/C++語言各自為政的問題,硬件也不再需要跟在不斷變化的C/C++語言標準后面疲于奔命地調整適應,所以這波浪潮催化了軟硬件的革新,在軟件方面,Linux等開源軟件社區得以迅速崛起;在硬件方面,指令集架構得以創新,新商業模式得以萌芽。 雖然GCC對計算機世界造福至深,但它在架構上也有一些挑戰。GCC沿襲了所有現代編譯器所使用的經典的“解析器+優化器+代碼生成器”架構,但它被有意設計成一個單體的批處理編譯器系統,而且GCC的領導者也不愿意改進設計、提高模塊化程度,針對這個問題,業內也一直爭論不休。
2模塊化設計的崛起回過頭來,大家可能才會意識到,其實2000年是編譯器和編程語言史上具有里程碑式意義的一年,因為在這一年,LLVM項目面世了。 LLVM之所以出現,是因為當時的編譯器難以擴展,而且很難基于它們進行編譯器研究工作。 22年后的今天,LLVM/Clang支持著世界上的大部分計算,包括iOS、Android、Google、Meta等公司和系統。然而,人們卻對它的成功感到驚訝,因為LLVM/Clang和它的前身一樣,依然采用標準的“解析器+優化器+代碼生成器”方法,它沒有突破性的代碼生成算法,而其他系統最終都遵循了“全程序優化”等早期創新。LLVM在傳統的C/C++工作負載方面沒有超越現有的編譯器,但它還是取得了成功。 LLVM的創新之處在于其軟件架構:LLVM是一個模塊化庫的集合。這些庫擁有已定義的接口,能夠以創新的方式進行組合和擴展,它們可以被內置到大型軟件項目中,也可以重新組合,用于非常小的應用,例如特定領域的即時編譯器。模塊化和清晰的接口會提高可測試性,有助于高質量的實現。模塊化和關注點分離也讓領域專家不必事無巨細地了解系統各部分如何工作就可以開發大規模項目。 Chris Lattner曾在2011年撰文回顧LLVM的發展(https://www.aosabook.org/en/llvm.html),其中寫到,模塊化使LLVM能夠擴展,從而產生新的開發者工具(如clang-format)和創新的編程語言(如Rust、Julia、Swift)等等。上述技術以前在理論上就可以實現,但正是由于LLVM的可用性和可編輯性,它們才得以成真。模塊化設計為OpenCL和CUDA等下一代即時加速器編程模型的誕生提供了條件,推動了下一波編譯器技術的整合,這就是LLVM現在成為大多數CPU、GPU和AI系統的基礎的原因。 LLVM最激動人心的貢獻是,它可以用在許多讓人意想不到的地方。LLVM設計之初并沒有打算用在AI,或者Snowflake的數據庫查詢優化器上,但如果沒有LLVM(或類似LLVM的東西),許多這些用例或許永遠不會實現,比如,一個數據庫團隊如果想做查詢優化,但沒有LLVM,那他們就必須從頭開始構建一個X86代碼生成器,才能建立即時編譯器實行查詢優化。 3
2022年的AI基礎設施今天,我們見證了人工智能行業的巨大進步,比如,世界各地的數據科學家可以通過Jupyter Notebook平臺在100+PetaFLOP超級計算機上訓練模型。盡管如此,至今端到端模型部署還沒有實現“平民化”,還不能觸達更多人。正如1990年代和2000年代初期的編譯器和工具那樣,今天的AI模型部署工具遇到的問題與其相比驚人地相似,依然是嚴重的碎片化,硬件種類繁多且都有各自的定制工具。 多年來,世界上各大科技巨頭已經構建了多個針對不同硬件產品的內部工具鏈,而這些工具鏈往往不兼容,而且共享的代碼很少。整個行業內已經誕生了許多良莠不齊的轉換器和編譯器,是時候做減法了。 許多業內人士認為,這些問題是由于人工智能的內在特性造成的,但我們知道這只是因為人工智能基礎設施仍處于起步階段。人工智能已經對世界產生了如此驚人的影響,但我們還是忍不住設想,如果我們有機會以正確的方式重建ML行業,那它的影響究竟會有多大?
4下一代AI系統的目標過去十年,AI基礎設施和工具發展神速,我們從中汲取了很多經驗,現在已經能夠充分理解曾經孜孜探索的許多東西。是時候結合過去的經驗和行業最知名的技術,建立一個模塊化的、可組合的系統了。 下一代ML系統需要達到高質量并滿足開發人員的需求。 下一代ML系統不需要對用戶代碼付出成本高昂的重寫、重新架構或重新定位(Rebasing);它是原生的多框架、多云和多硬件的組合;它要將最好的性能、最高的效率與最佳易用性結合起來。這是減少碎片化和解鎖下一代硬件、數據和算法創新的唯一途徑。 這是一項艱巨的重任。實現這一目標需要多方人員的合作,包括架構師、工程師和技術領袖,他們既是許多現有系統的開創者,也是尖端技術發展的推動者。在追逐這個目標的過程中,專注、自律以及對卓越技術的追求缺一不可,這是一種以正確方式構建事物的價值體系。為了實現這一目標,我們需要在面對一些誘人項目時有說“不”的定力,以確保我們的基本面不會變形。 我們的目標是讓AI更易用、易于觸及、可移植、可擴展,使全世界的開發者都能暢通無阻地用AI造福人類。在這個世界上,我們應該花更多時間用AI來解決實際問題,而不是遭受碎片化、低質量的工具和基礎設施的折磨。這就是我們要為之努力的未來。
我們正在構建AI的未來,愿景是讓任何人、任何地方都可以使用AI。
*博客內容為網友個人發布,僅代表博主個人觀點,如有侵權請聯系工作人員刪除。