💬 Pofat 的話
WWDC 到臨前的風平浪靜正適合興風作浪,Modular AI 的發表會令人興奮,這期就來和大家聊聊我的想法和期待。
🌎 特別專題
Mojo:金玉其外,超凡其中,開啟 AI 新時代(看起來啦)
Python 的簡便易用,C++ 的效能,Rust 的安全性,不可能吧?
上週最轟動的事件莫過於 Modular AI 的發表會上全新語言 Mojo 的亮相。AI 算法開發與佈署的破碎環境是目前公認的挑戰,而 Modular AI 推出的高速統一介面引擎和 Mojo 的結合旨在解決這些問題,並徹底顛覆業界現況。
Modular AI 引擎本身提供了上層框架和下層硬體的抽象介接,並以高效的方式運作(宣稱),在這方面,LLVM(具體來說是 MLIR)的優勢顯而易見。當 Mojo 與引擎結合,透過語言的力量讓效能的提升更加顯著,且同時能夠在上層和下層進行開發,這讓我聯想到蘋果軟硬整合美學的精神。倘若這兩者能如宣稱地那樣良好配合運行,我想 Mojo 將引領 AI 全端開發的新時代。
Chris Lattner 顯然在 Swift for Tensorflow 專案中看到 MLIR 的巨大潛力以及靜態型別帶來的根本性變革。他為實現這一願景而創辦 Modular AI,並從過去的經驗中吸取教訓。創建一個新的程式語言雖然比 API 更具靈活性和可擴展性,但如果缺乏社群支援、相容性和可遷移性,該語言的發展將面臨重重困境。Mojo 的設計以 AI 領域中無法撼動的 Python 為基礎,並結合了編譯器技術,實現了近乎神奇的效能提升,這其實也與近年來對動態語言加上型別的趨勢吻合。Mojo 與 Ptyhon 的完全相容直接納入了其強大的生態系與資源,和引擎結合後便有從上到下同一語言的彈性,這正是當年專案方向的新體現 - 「 Swfit as a syntax sugar for MLIR」。
回到正題,Mojo 用起來到底如何?讓我用 demo 影片內容分享其宣稱的體驗是怎麼一回事。第一,Mojo 是 Python 的超集,無需修改原始程式碼,引入 Mojo 框架直接重新運行就能獲得十倍以上的加速效果(這裡黑魔法為何不清楚,從官網的說明看來可能是 autotune 的效果或者部分標準函數實作在 runtime 介接到 Mojo)。原本使用的 model 也可以冠上自己聲明的型別(他們稱為漸進式型別化),可以帶來多達五十倍的效能提升。再加上設定底層資料寬度和平行化運算的能力,效能提升甚至可達千倍。最後,通過啟用自動調整(autotune)功能,平台可以找到最佳的運行硬體設定值,將提升到驚人的四千倍。這數字看到後面已經麻痺了,這種提升程度讓可是讓本僅能處理靜態圖像的算法輕鬆實現即時處理影片的能力。
除了效能上的亮點,Mojo 身上充滿 Swift 發展史的身影(當然也有 Rust,C++)。比如引入保證記憶體的安全性 ownership 同時也有可以直接存取 C 語言的記憶體(unsafe 操作)的彈性,這裡大家應該不陌生。 Swift 到 Objective-C 的遷移經驗也被運用到此,不同語言間的 runtime 互通是保證相容性和遷移性的關鍵點(就像 Swift 可以繼承 NSObject ),才有機會逐步遷移。雖然目前 Mojo 還很早期階段,與 Python 之間的相容性還不完善,但這個決策大大降低了轉換的難度,縱使 Mojo 同時也將繼承缺點們,我仍認為這是非常重要的第一步。因為許多先例一再地證明,只有「對新特性的吸引力」是無法支撐一個新語言生態系統發展的。另外有趣的是,他們還提到 Mojo 與 CPython 之間的關係並非單向的,也許 CPtyhon 可以使用 Mojo 實現 API,這也頗有 Swift 在編譯器自舉的味道。
Mojo 承載了許多美好的願景自然會招致不少懷疑,我相信從 Python 出發是一個強而有力的開始,因大公司早已在努力嘗試加速 Python 但都沒有突破性成果。不過除了 AI 應用外,我更期待 Mojo 未來面向一般開發的可能性(考慮到 Python 生態系的多樣性,如果成功的話,這也許將壓縮 Swift 在蘋果生態系外的空間)。然而這些目前都只是發表會上展示的美好面容,最關鍵的還是引擎和語言之間的協作成果夠出色否,這目前還很含糊。總之我個人是準備來學習這個新語言,有興趣的話可以申請 playground waitlist,他們同時也開了 compiler engineer 的職缺,有興趣的話別錯過這個改變世界的機會。
🤪 Pofat 選推
Mojo 同時也引發了副檔名之亂
平行世界的資安等級
Chromium, chromium everywhere
有理,人類編劇勝利
哭啊