PyTorch核心開發(fā)者靈魂發(fā)問:我們?cè)趺丛絹碓较馢ulia了?
想要Julia的性能,又舍不得Python的生態(tài)
PyTorch社區(qū)最近有一種聲音:下個(gè)版本應(yīng)該拋棄Python改用Julia語(yǔ)言。
現(xiàn)在就連PyTorch團(tuán)隊(duì)內(nèi)部也會(huì)拿這個(gè)說法來開玩笑。
對(duì)這個(gè)問題,核心開發(fā)成員中的Edward Yang在論壇上作出過一些回應(yīng)。
他認(rèn)為PyTorch的確越來越像Julia了,比如借鑒Julia的多重分派特性開發(fā)了Pytorch Dispatcher。
PyTorch總體的發(fā)展方向也和Julia的愿景一致,也就是同時(shí)具備拓展性、易用性和執(zhí)行性能。
一方面PyTorch的底層代碼后期用C++重寫以獲得更好的性能,另一方面functorch、fx等新功能又讓用戶可以直接使用Python做以前必須借助C++完成的工作。
那為什么不直接改用Julia呢?
害,其實(shí)是舍不得Python那無(wú)可替代的生態(tài)。
當(dāng)初從原版Torch使用的Lua改用Python就是看中了生態(tài)這一點(diǎn)。這么多年過去了其他語(yǔ)言生態(tài)連一點(diǎn)可能超過Python的跡象都沒有。
簡(jiǎn)而言之,Julia語(yǔ)言本身的特性和Python的生態(tài)他們全都要,向Julia的優(yōu)點(diǎn)學(xué)習(xí)也是團(tuán)隊(duì)未來的努力方向。
那么,Julia這種語(yǔ)言到底好在哪,讓PyTorch開發(fā)團(tuán)隊(duì)都向它學(xué)習(xí)?
面向科學(xué)計(jì)算設(shè)計(jì)的語(yǔ)言
Julia來自麻省理工CSAIL實(shí)驗(yàn)室,設(shè)計(jì)初衷就是想要一個(gè)既有C的速度又有Ruby的動(dòng)態(tài)性、既能像Matlab一樣使用數(shù)學(xué)表達(dá)式又有Python的通用性。
Julia要能像Perl一樣自然地處理字符串、像R一樣適用于統(tǒng)計(jì),像Shell一樣作為膠水語(yǔ)言去和其他語(yǔ)言交互。
要有Hadoop的并行計(jì)算能力,又不想要那些繁雜的配置。
最后做出來的Julia采用即時(shí)編譯(Just In Time),速度比需要解釋器的Python快得多,又沒有失去交互性。
通過多重分派(Multiple Dispatch)特性來實(shí)現(xiàn)類型穩(wěn)定又不時(shí)腳本語(yǔ)言的簡(jiǎn)潔靈活。
同一個(gè)函數(shù)名對(duì)不同參數(shù)類型的調(diào)用分派不同的操作,因?yàn)檫m合處理多種數(shù)據(jù)類型還被PyTorch給學(xué)了去。
具體到機(jī)器學(xué)習(xí)來說,Julia執(zhí)行各類算法包括矩陣運(yùn)算的速度都比Python快得多。
Julia生態(tài)里也有自己的開源深度學(xué)習(xí)框架Julia Flux。
此外Julia還在語(yǔ)法上對(duì)線性代數(shù)、數(shù)據(jù)處理這些場(chǎng)景有額外的優(yōu)化。
比如支持Unicode數(shù)學(xué)符號(hào),數(shù)字乘以變量時(shí)候可以省略「*」,以及索引從1而不是0開始更符合人類直覺….
Julia代碼可以寫成這樣:
α = 0.5
?f(u) = α*u; ?f(2)
sin(2π)
以至于有些數(shù)學(xué)背景的開發(fā)者認(rèn)為,Julia代碼寫起來就像在黑板上做數(shù)學(xué)題一樣的,很親切。
相比之下,用Python做矩陣運(yùn)算感覺就……不是那么好。
Python:
np.dot(array1,array2)
Julia:
array1?.*?array2
Julia的歷史可以追溯到2009年,由于想實(shí)現(xiàn)的功能太多,直到2018年才對(duì)外發(fā)布1.0正式版。
不過最近幾年Julia已迅速被金融、醫(yī)藥、航天等一些行業(yè)接受,使用者包括摩根大通、輝瑞、NASA等。
△ TIOBE指數(shù)中的Julia流行趨勢(shì)變化
Julia改變了過去他們只能用C等高性能語(yǔ)言做底層開發(fā)、同時(shí)用高易用性的Python等語(yǔ)言做擴(kuò)展開發(fā)的割裂問題。
今年7月,Julia創(chuàng)始團(tuán)隊(duì)成立的公司Julia Computing還獲得2400萬(wàn)美元的A輪融資。
Julia語(yǔ)言速度快、天生適合機(jī)器學(xué)習(xí)又在高速成長(zhǎng),也難怪PyTorch社區(qū)會(huì)有用Julia替代Python的聲音出現(xiàn)。
有人認(rèn)為Python是一種糟糕的語(yǔ)言,雖然有優(yōu)秀的生態(tài),但生態(tài)中對(duì)機(jī)器學(xué)習(xí)最有價(jià)值的部分(Numpy)其實(shí)是用C實(shí)現(xiàn)的。
Python生態(tài)雖然強(qiáng)大,但人們對(duì)其中的混亂也有不少詬病,各種重復(fù)開發(fā)的包管理系統(tǒng)讓配置好Python開發(fā)環(huán)境都不是一件容易事。
相比之下,Julia的包管理方案就很統(tǒng)一,雖然有可能是還在起步階段沒來得及混亂。
也有人認(rèn)為Python這些所謂的缺點(diǎn)其實(shí)正是它流行的原因。
像Python、Javascript和PHP這種看起來糟糕的語(yǔ)言,正是因?yàn)槟軌蜉p松的編寫糟糕代碼,降低了門檻而流行。
這位要提醒大家Julia自身就帶有和其他語(yǔ)言的交互功能,他平常會(huì)在Julia代碼里調(diào)用Huggingface的Python模型作開發(fā),兩種生態(tài)都用上才是墜吼的。
最后,有人很不理解PyTorch開發(fā)團(tuán)隊(duì)不選擇遷移到Julia的做法,既然Julia語(yǔ)言有所有他們需要的特性,還要花時(shí)間在Python里重新造輪子是自找麻煩。
另一位的視角有些微妙的不同:
這正是PyTorch團(tuán)隊(duì)想把方便留給用戶,而把麻煩留給自己。對(duì)這種態(tài)度我很感激。
參考鏈接:
[1]https://dev-discuss.pytorch.org/t/where-we-are-headed-and-why-it-looks-a-lot-like-julia-but-not-exactly-like-julia/276
[2]https://news.ycombinator.com/item?id=29354474
[3]https://ucidatascienceinitiative.github.io/IntroToJulia/Html/WhyJulia
- 字節(jié)突然開源Seed-OSS,512K上下文主流4倍長(zhǎng)度,推理能力刷紀(jì)錄2025-08-21
- “現(xiàn)在讀AI博士已經(jīng)太晚了”2025-08-19
- 谷歌AI攻克亞洲語(yǔ)言難題,2300種語(yǔ)言數(shù)字化計(jì)劃正在推進(jìn)2025-08-18
- AMD蘇姿豐公開懟扎克伯格!反對(duì)1億年薪挖人,使命感比鈔票更重要2025-08-18