開發(fā)人員親自上場:Julia語言搞機器學習和Python比,哪個好用?
2022 年,你會選擇哪種編程語言呢?
前幾年就流傳著這樣一種說法:Julia會替代 Python,成為新的最受歡迎的編程語言之一。我們暫且對這種說法持觀望態(tài)度,但作為科學計算方面的強大工具,Julia優(yōu)勢已然顯現(xiàn),這意味著程序員的選擇又多了一種。
在數(shù)據(jù)科學、人工智能等領(lǐng)域,仔細對比Julia和 Python,我們會發(fā)現(xiàn):相同的任務(wù),只要 Python 能實現(xiàn)的的,Julia都可以做,而且效率高得多,語法也簡潔優(yōu)雅,只是在傳播度上,名氣還不如 Python。
近日,reddit 上的一則熱帖引來廣大網(wǎng)友的討論,這個帖子提到,最近,一些Julia語言包的開發(fā)人員討論了Julia中 ML 的當前狀態(tài),并將其狀態(tài)與 Python ML 生態(tài)系統(tǒng)進行了比較。
原貼地址:
https://www.reddit.com/r/MachineLearning/comments/s1zj44/r_julia_developers_discuss_the_current_state_of/
來自烏得勒支大學的 JordiBolibar 認為,「Julia確實在機器學習方面擁有巨大的潛力,但它目前的狀態(tài)有點喜憂參半。更具體地說,我在 SciML 中堅持使用Julia的主要原因是,DifferentialEquations.jl 庫工作得非常好,但在 Python 中沒有發(fā)現(xiàn)任何類似的東西。然而,對于我的研究來說,真正痛苦的是 AD 部分。自從我開始使用Julia,我在 Zygote 中遇到了兩個錯誤,這使我的工作速度減慢了幾個月。但我仍然認為Julia是 SciML 的最佳選擇,但這些庫(及其文檔)應(yīng)該優(yōu)化的更加用戶友好?!?/p>
網(wǎng)友 @jgreener64 表示:「Julia中的 ML 在某些領(lǐng)域應(yīng)用非常強大,Julia一切皆有可能。Julia面臨的問題是:Julia中的 ML 需要大量現(xiàn)有知識或大量時間搜索 / 反復(fù)試驗。在個人層面上,我目前正在用Julia開發(fā)新穎的可微分算法。」
除了網(wǎng)友的熱烈討論外,Julia軟件包開發(fā)人員 Christopher Rackauckas 圍繞以下 7 個問題,解答了網(wǎng)友比較關(guān)心的內(nèi)容。Rackauckas 是 MIT 和馬里蘭大學的數(shù)學家和藥理學家,主要用Julia進行編程。Rackauckas 為Julia、數(shù)學和隨機生物學開了專門博客,來介紹相關(guān)內(nèi)容,并且 Rackauckas 在Julia中開發(fā)了一些庫,包括(但不限于)DifferentialEquations.jl 和 Pumas。
Christopher Rackauckas
問題包括:
-
今天Julia中的 ML 在哪些地方真正大放異彩?在不久的將來該生態(tài)系統(tǒng)在哪些方面優(yōu)于其他流行的 ML 框架(例如 PyTorch、Flax 等),為什么?
-
目前Julia的 ML 生態(tài)系統(tǒng)在功能或性能方面存在哪些缺點?Julia在這些領(lǐng)域變得具有競爭力的時間節(jié)點在哪?
-
Julia的標準 ML 包(例如深度學習) 在性能方面與流行的替代方案相比如何(更快、更慢、相同數(shù)量級)?
-
有沒有重要的Julia實驗,可以針對流行的 ML 替代方案進行基準測試?
-
如果一家公司或機構(gòu)正在考慮創(chuàng)建職位來為Julia的 ML 生態(tài)系統(tǒng)做出貢獻,有沒有最佳案例?為什么他們應(yīng)該這樣做?哪些貢獻最有影響力?
-
為什么與其他框架合作的獨立開發(fā)人員應(yīng)該考慮為Julia的 ML 生態(tài)系統(tǒng)做出貢獻?
-
對于某些特定任務(wù),Julia開發(fā)人員傾向于使用哪些軟件包?Julia開發(fā)人員希望添加目前不存在的哪些內(nèi)容?
下文中我們挑選了幾個大家比較關(guān)心的問題進行報道:
問題 3:Julia在「標準 ML」中的表現(xiàn)如何?
Julia的內(nèi)核速度很好:在 CPU 上,我們做得非常好,在 GPU 上,每個人都只是調(diào)用相同的 cudnn 等;Julia的 AD 速度也很好。不過 Zygote 可能會有一些開銷,但與 Jax/PyTorch/TensorFlow相比,Zygote 在大多數(shù)情況下速度是很快的。具體來說,PyTorch 開銷要高得多,在標準 ML 工作流程中甚至無法測量。一個足夠大的矩陣乘法會解決分配問題或其他 O(n) 問題;Julia不融合內(nèi)核,因此在大多數(shù)基準測試中,如果用戶查看它,就會發(fā)現(xiàn)它沒有融合 conv 或 RNN cudnn 調(diào)用。
問題 4:我們應(yīng)該跟蹤哪些重要的實驗和基準?
XLA 的分布式調(diào)度器非常好。當我們考慮擴展時,我們應(yīng)該忽略 PyTorch,去考慮 DaggerFlux 與TensorFlow/Jax。XLA 有更多的靈活性來改變操作,所以我認為 XLA 才是贏家,我們需要使用 e-graphs 技巧來匹配它。另一件需要注意的事情就是「自動微分中缺少中間部分」,這種情況還需要解決。
問題 7:有什么推薦的軟件包?
我傾向于在需要時使用 Flux,但大家還是盡量使用 DiffEqFlux。就現(xiàn)有內(nèi)核而言,F(xiàn)lux 是最完整的,但它的風格讓我感到厭煩。我希望有一個 Flux 不使用隱式參數(shù),而是使用顯式參數(shù)。我希望這些參數(shù)由 ComponentArrays 表示。