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