編譯器大佬Chris Lattner全新編程語(yǔ)言「Mojo」:兼容Python核心功能...
點(diǎn)擊關(guān)注公眾號(hào),Java干貨
及時(shí)送達(dá)
機(jī)器之心報(bào)道
編輯:蛋醬、陳萍它可與 Python 無(wú)縫銜接,但克服了很多 Python 的缺點(diǎn)。Jeremy Howard 試用后表示:「Mojo 可能是幾十年來(lái)最大的編程進(jìn)步?!?/span>對(duì)于全球各地開(kāi)發(fā)者來(lái)說(shuō),Chris Lattner 這個(gè)名字絕對(duì)不陌生。
他曾是許多大型技術(shù)項(xiàng)目的領(lǐng)導(dǎo)者,包括 LLVM 編譯器基礎(chǔ)結(jié)構(gòu)項(xiàng)目、Clang C 和 C++ 編譯器、MLIR 機(jī)器學(xué)習(xí)基礎(chǔ)結(jié)構(gòu)等編譯器技術(shù),以及為蘋果生態(tài)系統(tǒng)提供支持的程序設(shè)計(jì)語(yǔ)言 Swift。此外,Chris Lattner 還為 Google Brain 和 TensorFlow 建立和管理了一系列與 AI 相關(guān)的編譯器、運(yùn)行時(shí)和編程語(yǔ)言團(tuán)隊(duì)。
十多年來(lái),Chris Lattner 的職業(yè)履歷算是相當(dāng)豐富,變動(dòng)也算頻繁:
- 2011-2017 年,任蘋果開(kāi)發(fā)部高級(jí)總監(jiān)、架構(gòu)師
- 2017.1-2017.6,任特斯拉副總裁,負(fù)責(zé)自動(dòng)駕駛
- 2017.8-2020.1,任谷歌 Google Brain 高級(jí)總監(jiān)
- 2020.1,加入芯片創(chuàng)業(yè)公司 SiFive 負(fù)責(zé)平臺(tái)工程
「Mojo 結(jié)合了 Python 的可用性與 C 的性能,釋放了 AI 硬件無(wú)與倫比的可編程性和 AI 模型的可擴(kuò)展性」—— 它與 Python 一樣易于使用,但具有 C++ 和 Rust 的性能。此外,Mojo 提供了利用整個(gè) Python 庫(kù)生態(tài)系統(tǒng)的能力。
Mojo 的出世,在 AI 領(lǐng)域迅速引起了熱議。Jeremy Howard 試用后,在一篇博客文章中表示,Mojo 可能是幾十年來(lái)最大的編程進(jìn)步。
「感覺(jué)編程被顛覆了?!乖?Jeremy Howard 的記憶中,上次有這樣的感覺(jué),還是他首次上手 Visual Basic v1.0。而在 Mojo 中編寫(xiě)代碼,讓他重溫了這種「神奇」的感覺(jué)。
為什么會(huì)有 Mojo?
關(guān)于「Mojo」這項(xiàng)工作的背景,Chris Lattner 和 Tim Davis 在博客中進(jìn)行了詳細(xì)的說(shuō)明:
機(jī)器學(xué)習(xí)基礎(chǔ)設(shè)施已經(jīng)為數(shù)十億美元的商業(yè)提供動(dòng)力,并且正在迅速增長(zhǎng)。但是,它要么由硬件團(tuán)隊(duì)為特定的設(shè)備集合構(gòu)建,要么是由工業(yè)研究實(shí)驗(yàn)室構(gòu)建,許多系統(tǒng)是不兼容技術(shù)的集合。
現(xiàn)有的單體系統(tǒng)很難在其最初的領(lǐng)域目標(biāo)之外進(jìn)行擴(kuò)展或通用,這種情況迫使硬件制造商建立自己的技術(shù)棧。造成的結(jié)果就是,人工智能部署行業(yè)是非常分散的,工具鏈就有幾十個(gè),各自有不同的權(quán)衡和限制。更重要的是,這些設(shè)計(jì)模式也因其可用性、可移植性和難以擴(kuò)展而減緩了創(chuàng)新的步伐。
不幸的是,我們也看到,構(gòu)建和部署這些應(yīng)用程序的技術(shù)復(fù)雜性仍然太高。部署人工智能仍然是全棧專家的領(lǐng)域,而最前沿的應(yīng)用只有那些自己建立 ML 技術(shù)的最大科技公司的人可以使用。大一統(tǒng)的設(shè)想注定會(huì)失敗嗎?今天人工智能的現(xiàn)實(shí)世界的復(fù)雜性是否使得它不可能解決這個(gè)問(wèn)題? Chris Lattner 并不這么認(rèn)為。他表示,軟件行業(yè)會(huì)經(jīng)歷周期,我們以前也見(jiàn)過(guò)并解決過(guò)這樣的問(wèn)題:
20 世紀(jì) 90 年代的軟件世界有過(guò)類似于我們今天看到的人工智能的碎片化問(wèn)題。當(dāng)時(shí),C 和 C++ 已經(jīng)建立起了社區(qū),但卻被分散在幾十個(gè)專有編譯器中。每一個(gè)都有供應(yīng)商的擴(kuò)展、粗糙的邊緣、奇怪的邊角案例和不完整的實(shí)現(xiàn)。當(dāng)時(shí),構(gòu)建跨平臺(tái)的軟件是如此困難,以至于推動(dòng)業(yè)界出現(xiàn)了一些工具來(lái)幫助開(kāi)發(fā)者應(yīng)對(duì)碎片化,使其更容易安裝、構(gòu)建和配置軟件(例如 autoconf)。
「GCC」就是其中一員。憑借其對(duì)跨平臺(tái)的支持、良好的性能和穩(wěn)定性,以及免費(fèi)性,GCC 在 90 年代獲得了巨大的成功。GCC 的成功推動(dòng)了工具行業(yè)的整合浪潮,由此產(chǎn)生的碎片整理使其功能成為事實(shí)上的標(biāo)準(zhǔn),從而帶來(lái)了一波新的創(chuàng)新。它催化了軟件(直接促成了 Linux 等開(kāi)放源碼軟件社區(qū)的迅速崛起)和硬件(促成了指令集架構(gòu)和新商業(yè)模式的創(chuàng)新)的革命,使前者從零散的 C/C++ 實(shí)現(xiàn)中解放出來(lái),使后者不必追趕快速發(fā)展的 C/C++ 語(yǔ)言標(biāo)準(zhǔn)。如今,Mojo 的誕生也承擔(dān)了這樣一份希冀。
當(dāng)我們創(chuàng)辦 Modular 時(shí),我們沒(méi)有打算建立一種新的編程語(yǔ)言。但是,當(dāng)我們?cè)诮⑽覀兊钠脚_(tái),打算統(tǒng)一世界上的 ML/AI 基礎(chǔ)設(shè)施時(shí),我們意識(shí)到,在整個(gè)堆棧中編程太復(fù)雜了。另外,我們用手寫(xiě)了很多 MLIR,但并不愉快。
我們想要的是一個(gè)創(chuàng)新的、可擴(kuò)展的編程模型,可以針對(duì)加速器和其他機(jī)器學(xué)習(xí)中普遍存在的異構(gòu)系統(tǒng)。這意味著一種具有強(qiáng)大的編譯時(shí)元編程的編程語(yǔ)言,整合自適應(yīng)編譯技術(shù),在整個(gè)編譯流程中進(jìn)行緩存,以及其他現(xiàn)有語(yǔ)言不支持的東西。
盡管加速器很重要,但最普遍的、有時(shí)被忽視的加速器之一是主機(jī) CPU。今天,CPU 有很多類似張量核心的加速器塊和其他 AI 加速單元,但它們也是專門加速器無(wú)法處理的運(yùn)算的后備力量,如數(shù)據(jù)加載、前后處理以及與國(guó)外系統(tǒng)的集成。因此,很明顯,我們不能用一種只與特定處理器一起工作的「加速器語(yǔ)言」來(lái)提升人工智能。應(yīng)用 AI 系統(tǒng)需要解決所有這些問(wèn)題,我們認(rèn)為沒(méi)有理由不通過(guò)一種語(yǔ)言來(lái)完成。在這種情況下,Mojo 誕生了。 Mojo:比 Python 快 35000 倍的編程語(yǔ)言 在編程語(yǔ)言領(lǐng)域,Python 可以說(shuō)是非常受歡迎了。如今,這個(gè)領(lǐng)域又迎來(lái)一位新的競(jìng)爭(zhēng)者:Mojo。 Mojo 是一門新的編程語(yǔ)言,其將 Python 的易用性和 C 的性能結(jié)合起來(lái),彌合了研究和生產(chǎn)之間的差距。使用 Mojo,用戶可以編寫(xiě)比 C 語(yǔ)言更快的可移植代碼,并與 Python 生態(tài)系統(tǒng)無(wú)縫互操作,其目標(biāo)是成為 AI 研究和生產(chǎn)的理想選擇。 我們先看一個(gè)示例。下圖展示的是 Mojo 與 Python 無(wú)縫互操作:



Mojo 第三個(gè)特點(diǎn)是互操作性,可以訪問(wèn)整個(gè) Python 生態(tài)系統(tǒng),如可以訪問(wèn) Numpy、Matplotlib 以及用戶自定義代碼:


https://www.modular.com/blog/the-future-of-ai-depends-on-modularity https://www.modular.com/mojo https://www.fast.ai/posts/2023-05-03-mojo-launch.html
?
?

往 期 推 薦
2、該死的單元測(cè)試,寫(xiě)起來(lái)到底有多痛?
3、互聯(lián)網(wǎng)人為什么學(xué)不會(huì)擺爛
4、為什么國(guó)外JetBrains做 IDE 就可以養(yǎng)活自己,國(guó)內(nèi)不行?區(qū)別在哪?
5、相比高人氣的Rust、Go,為何 Java、C 在工具層面進(jìn)展緩慢?
6、讓程序員早點(diǎn)下班的《技術(shù)寫(xiě)作指南》

點(diǎn) 分 享

點(diǎn) 收 藏

點(diǎn) 點(diǎn) 贊
點(diǎn)在看
