作者 | James Thomason
編譯 | 伊風(fēng)
出品 | 51CTO技術(shù)棧(微信號:blog51cto)
眨眼之間,你可能會錯過又一種編程語言的發(fā)明。
有個笑話說,程序員花費20%的時間編寫代碼,80%的時間決定使用什么語言。
事實上,編程語言如此之多,以至于我們不確定實際有多少種。據(jù)估計,至少有700種編程語言在不同程度上被使用和濫用。現(xiàn)在存在的編程語言似乎總有改進(jìn)的空間。
隨著AI不斷推動技術(shù)進(jìn)步,它也在挑戰(zhàn)我們最流行的編程語言,如Java、C和Python。像其他領(lǐng)域一樣,AI是一個迫切需要新編程語言來解決的問題。
諸如Mojo、Bend等AI-first的編程語言能否獲得開發(fā)人員的芳心?無論答案如何,回顧歷史我們會發(fā)現(xiàn),編程語言的創(chuàng)新并不是一個壞主意。
1.AI語言的上一個黃金時代
這并不是AI第一次推動新編程語言的浪潮。20世紀(jì)70年代和80年代是AI語言的黃金時代,如LISP和Prolog,它們引入了開創(chuàng)性的概念,如符號處理和邏輯編程。那時,AI也是熱門話題。
值得注意的是,LISP語言對軟件的未來產(chǎn)生了深遠(yuǎn)影響,推出了函數(shù)式編程范式,最終影響了現(xiàn)代語言如Python、Haskell和Scala的設(shè)計。LISP也是首批實現(xiàn)動態(tài)類型的語言之一,在這種類型中,類型與值相關(guān)聯(lián)而不是變量,允許更多的靈活性和更容易的原型開發(fā)。它還引入了垃圾回收功能,自動回收不再使用的內(nèi)存,這是許多現(xiàn)代編程語言(如Java、Python和JavaScript)所采用的功能??梢怨降卣f,沒有LISP,我們今天可能不會在這里。
當(dāng)AI領(lǐng)域在20世紀(jì)70年代和80年代經(jīng)歷了一段資金和興趣減少的長時間時,被稱為“AI寒冬”,對專門AI語言如LISP的關(guān)注開始減退。同時,通用計算的快速發(fā)展導(dǎo)致了通用語言如C的興起,這些語言為各種應(yīng)用(包括系統(tǒng)編程和數(shù)值計算)提供了更好的性能和可移植性。
圖片
2.AI-first語言的回歸
現(xiàn)在,歷史似乎在重演,AI再次推動了新編程語言的發(fā)明,以解決其棘手的問題?,F(xiàn)代AI算法所需的強(qiáng)大數(shù)值計算和并行處理突顯了需要能夠有效橋接抽象和充分利用底層硬件的語言。
可以說,這一趨勢始于TensorFlow的Tensor計算語法、Julia以及重新燃起的對數(shù)組導(dǎo)向語言如APL和J的興趣,這些語言提供了與機(jī)器學(xué)習(xí)和神經(jīng)網(wǎng)絡(luò)的數(shù)學(xué)基礎(chǔ)相一致的領(lǐng)域特定構(gòu)造。這些項目試圖減少將數(shù)學(xué)概念轉(zhuǎn)換為通用代碼的開銷,讓研究人員和開發(fā)人員能夠更多地關(guān)注核心AI邏輯,而不是低級實現(xiàn)細(xì)節(jié)。
最近,一波新的AI-first語言應(yīng)運而生,它們從頭開始設(shè)計,以解決AI開發(fā)的特定需求。Higher Order Company創(chuàng)建的Bend旨在為AI提供靈活和直觀的編程模型,具有自動微分和與流行AI框架的無縫集成功能。Modular AI開發(fā)的Mojo則專注于高性能、可擴(kuò)展性和構(gòu)建與部署AI應(yīng)用的易用性。Swift for TensorFlow是Swift編程語言的擴(kuò)展,結(jié)合了Swift的高級語法和TensorFlow的機(jī)器學(xué)習(xí)能力。這些語言代表了朝向AI開發(fā)的專用工具和抽象的日益增長的趨勢。
雖然Python、C++和Java等通用語言在AI開發(fā)中仍然很受歡迎,但AI-first語言的復(fù)興表明,AI的獨特需求需要專門為該領(lǐng)域量身定制的語言,就像早期的AI研究催生了LISP等語言一樣。
3.Python在AI中的局限性
Python因其簡單性、通用性和廣泛的生態(tài)系統(tǒng)長期以來一直是現(xiàn)代AI開發(fā)者的首選。然而,它的性能限制對于許多AI用例來說是一個主要缺點。
用Python訓(xùn)練深度學(xué)習(xí)模型可能會非常慢——我們說的是像在DMV(車輛管理局)排隊等候那樣慢,等待收銀員找零那樣慢。像TensorFlow和PyTorch這樣的庫通過使用底層的C++來幫助提高性能,但Python仍然是瓶頸,特別是在預(yù)處理數(shù)據(jù)和管理復(fù)雜的訓(xùn)練工作流時。
在實時AI應(yīng)用如自動駕駛或?qū)崟r視頻分析中,推理延遲至關(guān)重要。然而,Python的全局解釋器鎖(GIL)阻止了多個本機(jī)線程同時執(zhí)行Python字節(jié)碼,導(dǎo)致在多線程環(huán)境中表現(xiàn)不佳。
在大規(guī)模AI應(yīng)用中,內(nèi)存管理效率對于最大化可用資源的利用至關(guān)重要。Python的動態(tài)類型和自動內(nèi)存管理會增加內(nèi)存使用和碎片化。像C++和Rust這樣的語言提供的低級內(nèi)存控制允許更有效地使用硬件資源,從而提高AI系統(tǒng)的整體性能。
在生產(chǎn)環(huán)境中部署AI模型,特別是在具有有限計算資源的邊緣設(shè)備上,用Python可能會遇到挑戰(zhàn)。Python的解釋性和運行時依賴性會導(dǎo)致資源消耗增加和執(zhí)行速度變慢。像Go或Rust這樣的編譯語言,因其較低的運行時開銷和更好的系統(tǒng)資源控制,通常更適合在邊緣設(shè)備上部署AI模型。
4.Mojo:新的AI-first編程語言,無縫銜接Python生態(tài)
Mojo是一種新編程語言,承諾彌合Python的易用性和前沿AI應(yīng)用所需的超快性能之間的差距。Mojo由Swift編程語言和LLVM編譯器基礎(chǔ)架構(gòu)的創(chuàng)建者Chris Lattner創(chuàng)立的公司Modular開發(fā)。Mojo是Python的超集,這意味著開發(fā)者可以利用他們現(xiàn)有的Python知識和代碼庫,同時解鎖前所未有的性能提升。Mojo的創(chuàng)造者聲稱,它可以比Python代碼快多達(dá)35000倍。
Mojo設(shè)計的核心是其與AI硬件(如運行CUDA的GPU和其他加速器)的無縫集成。Mojo使開發(fā)者能夠充分利用專用AI硬件的潛力,而不必陷入低級細(xì)節(jié)中。
Mojo的一個主要優(yōu)勢是它與現(xiàn)有Python生態(tài)系統(tǒng)的互操作性。與Rust、Zig或Nim等語言不同,Mojo允許開發(fā)者編寫與Python庫和框架無縫集成的代碼。開發(fā)者可以繼續(xù)使用他們喜歡的Python工具和包,同時受益于Mojo的性能增強(qiáng)。
Mojo引入了幾項使其與Python區(qū)別開來的功能。它支持靜態(tài)類型,可以幫助在開發(fā)早期捕捉錯誤并實現(xiàn)更有效的編譯。然而,開發(fā)者仍然可以在需要時選擇動態(tài)類型,提供靈活性和易用性。語言引入了新的關(guān)鍵字,如“var”和“l(fā)et”,提供不同程度的可變性。Mojo還包括一個新的“fn”關(guān)鍵字,用于在嚴(yán)格的類型系統(tǒng)內(nèi)定義函數(shù)。
Mojo還采用了類似于Rust的所有權(quán)系統(tǒng)和借用檢查器,確保內(nèi)存安全并防止常見編程錯誤。此外,Mojo提供指針的內(nèi)存管理,使開發(fā)者可以對內(nèi)存分配和釋放進(jìn)行細(xì)粒度控制。這些功能有助于Mojo的性能優(yōu)化,并幫助開發(fā)者編寫更高效和無錯誤的代碼。
Mojo最令人興奮的方面之一是其加速AI開發(fā)的潛力。Mojo能夠編譯成高度優(yōu)化的機(jī)器代碼,可以在CPU和GPU上本地速度運行,使開發(fā)者能夠在不犧牲性能的情況下編寫復(fù)雜的AI應(yīng)用。語言包括數(shù)據(jù)并行性、任務(wù)并行性和流水線處理的高級抽象,使開發(fā)者能夠用最少的代碼表達(dá)復(fù)雜的并行算法。
Mojo在概念上比一些其他新興AI語言(如Bend)更低級,后者將現(xiàn)代高級語言功能編譯到Apple Silicon或NVIDIA GPU上的本地多線程。Mojo提供對并行性的細(xì)粒度控制,特別適合手工編碼現(xiàn)代神經(jīng)網(wǎng)絡(luò)加速。通過為開發(fā)者提供直接控制計算映射到硬件上的能力,Mojo實現(xiàn)了高度優(yōu)化的AI實現(xiàn)。
圖片
5.利用開源的力量
根據(jù)Mojo的創(chuàng)建者M(jìn)odular的說法,自去年8月普遍可用以來,該語言已經(jīng)吸引了超過17.5萬開發(fā)者和5萬家組織。
盡管Mojo的性能和潛力令人印象深刻,但其最初的采用可能因其專有狀態(tài)而停滯不前。
然而,Modular最近決定將Mojo的核心組件在定制版Apache 2許可下開源。此舉可能會加速Mojo的采用,并培育更充滿活力的協(xié)作和創(chuàng)新生態(tài)系統(tǒng),類似于開源是Python等語言成功的關(guān)鍵因素。
開發(fā)者現(xiàn)在可以探索Mojo的內(nèi)部工作原理,為其開發(fā)做出貢獻(xiàn),并從其實現(xiàn)中學(xué)習(xí)。這種協(xié)作方式可能會導(dǎo)致更快的錯誤修復(fù)、性能改進(jìn)和新功能的增加,最終使Mojo更加多功能和強(qiáng)大。
寬松的Apache許可證允許開發(fā)者自由使用、修改和分發(fā)Mojo,鼓勵圍繞該語言的生態(tài)系統(tǒng)的增長。通過開源,Mojo有潛力吸引更多的開發(fā)者、研究人員和企業(yè),使其成為AI開發(fā)的重要工具。
開放源碼的決定還表明Modular對其技術(shù)和開發(fā)社區(qū)的信心。通過擁抱開源模式,Modular表明他們致力于透明度、協(xié)作和技術(shù)進(jìn)步,這可能會吸引更廣泛的開發(fā)者社區(qū)并加速Mojo的采用。
6.全新的AI優(yōu)先編程浪潮
雖然Mojo是一個有前途的新進(jìn)入者,但它并不是唯一一個試圖成為AI開發(fā)首選的語言。還有幾種其他新興語言也是從頭開始設(shè)計的,以滿足AI工作負(fù)載的需求。
一個顯著的例子是Swift for TensorFlow,這是一個雄心勃勃的項目,旨在將Swift的強(qiáng)大語言功能帶入機(jī)器學(xué)習(xí)。由谷歌和蘋果公司合作開發(fā),Swift for TensorFlow允許開發(fā)者使用原生Swift語法表達(dá)復(fù)雜的機(jī)器學(xué)習(xí)模型,并且具備靜態(tài)類型、自動微分和XLA編譯以在加速器上進(jìn)行高性能執(zhí)行。不幸的是,谷歌已經(jīng)停止了該項目的開發(fā),項目現(xiàn)在已歸檔,這顯示了即使是谷歌這樣的巨頭在新語言開發(fā)中獲得用戶吸引力的難度。
此后,谷歌越來越關(guān)注JAX,一個用于高性能數(shù)值計算和機(jī)器學(xué)習(xí)(ML)的庫。JAX是一個Python庫,提供高性能的數(shù)值計算和機(jī)器學(xué)習(xí)功能,支持自動微分、XLA編譯和高效使用加速器。雖然它不是獨立的語言,但JAX擴(kuò)展了Python,使其具有更具聲明性和功能性的風(fēng)格,非常符合機(jī)器學(xué)習(xí)的數(shù)學(xué)基礎(chǔ)。
圖片
最新的新增內(nèi)容是Bend,一種大規(guī)模并行的高級編程語言,可以將類似Python的語言直接編譯成GPU內(nèi)核。與CUDA和Metal等低級語言不同,Bend更像是Python和Haskell,提供快速對象分配、全閉包支持的高階函數(shù)、不受限制的遞歸,甚至繼續(xù)執(zhí)行。它運行在大規(guī)模并行硬件(如GPU)上,基于核心數(shù)量實現(xiàn)近線性加速,無需顯式的并行注釋——沒有線程生成、鎖、互斥鎖或原子操作。由HVM2運行時驅(qū)動,Bend在任何可能的地方利用并行性,使其成為AI的萬能工具——適用于各種場合。
圖片
這些語言利用現(xiàn)代語言特性和強(qiáng)類型系統(tǒng),使AI算法的編碼更加表達(dá)性和安全,同時仍然在并行硬件上提供高性能執(zhí)行。
7.AI開發(fā)新時代的黎明
像Mojo、Bend、Swift for TensorFlow、JAX等以AI為重點的編程語言的復(fù)興標(biāo)志著AI開發(fā)新時代的開始。隨著對更高效、更具表達(dá)性和硬件優(yōu)化工具的需求增加,我們預(yù)計將看到更多專門針對AI獨特需求的語言和框架的涌現(xiàn)。這些語言將利用現(xiàn)代編程范式、強(qiáng)類型系統(tǒng)以及與專用硬件的深度集成,使開發(fā)者能夠構(gòu)建具有前所未有性能的更復(fù)雜的AI應(yīng)用。
AI優(yōu)先語言的興起可能會激發(fā)AI、語言設(shè)計和硬件開發(fā)之間相互作用的新一波創(chuàng)新。隨著語言設(shè)計師與AI研究人員和硬件供應(yīng)商密切合作以優(yōu)化性能和表達(dá)性,我們可能會看到為這些語言和AI工作負(fù)載設(shè)計的新型架構(gòu)和加速器的出現(xiàn)。
這種AI、語言和硬件之間的密切關(guān)系對于釋放人工智能的全部潛力至關(guān)重要,能夠在自動化系統(tǒng)、自然語言處理、計算機(jī)視覺等領(lǐng)域?qū)崿F(xiàn)突破。我們今天創(chuàng)造的語言和工具正在重塑AI開發(fā)和計算的未來。
參考鏈接:https://venturebeat.com/ai/mojo-rising-the-resurgence-of-ai-first-programming-languages/