首頁 > AI資訊 > 最新資訊 > PyTorch核心開發者靈魂發問:我們怎么越來越像Julia了?

PyTorch核心開發者靈魂發問:我們怎么越來越像Julia了?

新火種    2024-11-21

PyTorch社區最近有一種聲音:下個版本應該拋棄Python改用Julia語言。

現在就連PyTorch團隊內部也會拿這個說法來開玩笑。

對這個問題,核心開發成員中的Edward Yang在論壇上作出過一些回應。

他認為PyTorch的確越來越像Julia了,比如借鑒Julia的多重分派特性開發了Pytorch Dispatcher。

PyTorch總體的發展方向也和Julia的愿景一致,也就是同時具備拓展性、易用性和執行性能。

一方面PyTorch的底層代碼后期用C++重寫以獲得更好的性能,另一方面functorch、fx等新功能又讓用戶可以直接使用Python做以前必須借助C++完成的工作。

那為什么不直接改用Julia呢?

害,其實是舍不得Python那無可替代的生態。

當初從原版Torch使用的Lua改用Python就是看中了生態這一點。這么多年過去了其他語言生態連一點可能超過Python的跡象都沒有。

簡而言之,Julia語言本身的特性和Python的生態他們全都要,向Julia的優點學習也是團隊未來的努力方向。

那么,Julia這種語言到底好在哪,讓PyTorch開發團隊都向它學習?

面向科學計算設計的語言

Julia來自麻省理工CSAIL實驗室,設計初衷就是想要一個既有C的速度又有Ruby的動態性、既能像Matlab一樣使用數學表達式又有Python的通用性。

Julia要能像Perl一樣自然地處理字符串、像R一樣適用于統計,像Shell一樣作為膠水語言去和其他語言交互。

要有Hadoop的并行計算能力,又不想要那些繁雜的配置。

最后做出來的Julia采用即時編譯(Just In Time),速度比需要解釋器的Python快得多,又沒有失去交互性。

通過多重分派(Multiple Dispatch)特性來實現類型穩定又不時腳本語言的簡潔靈活。

同一個函數名對不同參數類型的調用分派不同的操作,因為適合處理多種數據類型還被PyTorch給學了去。

具體到機器學習來說,Julia執行各類算法包括矩陣運算的速度都比Python快得多。

Julia生態里也有自己的開源深度學習框架Julia Flux。

此外Julia還在語法上對線性代數、數據處理這些場景有額外的優化。

比如支持Unicode數學符號,數字乘以變量時候可以省略「*」,以及索引從1而不是0開始更符合人類直覺….

Julia代碼可以寫成這樣:

α = 0.5?f(u) = α*u; ?f(2)sin(2π)

以至于有些數學背景的開發者認為,Julia代碼寫起來就像在黑板上做數學題一樣的,很親切。

相比之下,用Python做矩陣運算感覺就……不是那么好。

Python:

np.dot(array1,array2)

Julia:

array1 .* array2

Julia的歷史可以追溯到2009年,由于想實現的功能太多,直到2018年才對外發布1.0正式版。

不過最近幾年Julia已迅速被金融、醫藥、航天等一些行業接受,使用者包括摩根大通、輝瑞、NASA等。

TIOBE指數中的Julia流行趨勢變化

Julia改變了過去他們只能用C等高性能語言做底層開發、同時用高易用性的Python等語言做擴展開發的割裂問題。

今年7月,Julia創始團隊成立的公司Julia Computing還獲得2400萬美元的A輪融資。

Julia語言速度快、天生適合機器學習又在高速成長,也難怪PyTorch社區會有用Julia替代Python的聲音出現。

有人認為Python是一種糟糕的語言,雖然有優秀的生態,但生態中對機器學習最有價值的部分(Numpy)其實是用C實現的。

Python生態雖然強大,但人們對其中的混亂也有不少詬病,各種重復開發的包管理系統讓配置好Python開發環境都不是一件容易事。

相比之下,Julia的包管理方案就很統一,雖然有可能是還在起步階段沒來得及混亂。

也有人認為Python這些所謂的缺點其實正是它流行的原因。

像Python、Javascript和PHP這種看起來糟糕的語言,正是因為能夠輕松的編寫糟糕代碼,降低了門檻而流行。

這位要提醒大家Julia自身就帶有和其他語言的交互功能,他平常會在Julia代碼里調用Huggingface的Python模型作開發,兩種生態都用上才是墜吼的。

最后,有人很不理解PyTorch開發團隊不選擇遷移到Julia的做法,既然Julia語言有所有他們需要的特性,還要花時間在Python里重新造輪子是自找麻煩。

另一位的視角有些微妙的不同:

這正是PyTorch團隊想把方便留給用戶,而把麻煩留給自己。對這種態度我很感激。

相關推薦
免責聲明
本文所包含的觀點僅代表作者個人看法,不代表新火種的觀點。在新火種上獲取的所有信息均不應被視為投資建議。新火種對本文可能提及或鏈接的任何項目不表示認可。 交易和投資涉及高風險,讀者在采取與本文內容相關的任何行動之前,請務必進行充分的盡職調查。最終的決策應該基于您自己的獨立判斷。新火種不對因依賴本文觀點而產生的任何金錢損失負任何責任。

熱門文章