為什麼說Swift將接任Python成為深度學習下一任“掌門”?
https://mp.weixin.qq.com/s/nOvJIum4SHzyualoQ0eUzA
Yann LeCun曾說,深度學習可能需要一種新的程式語言了。現在 Swift 來了!沒錯,這就是讓萬千飽受Python缺點困擾的開發者興奮不已的深度學習語言。本文便將帶領讀者詳細瞭解一下為什麼 Swift 將成為深度學習的下一大熱門。
當你聽到Swift的時候,第一反應肯定會想到iOS或者MacOS的應用程式開發。當你玩兒過深度學習,也肯定聽說過Swift for Tensorflow(縮寫為S4TF)。
而後你就會產生困惑:“為什麼谷歌要為Swift建立TensorFlow版本呢?已經有了Python和C++版本了,為什麼還要新增另一種語言?”
在這篇文章中,作者將嘗試回答這些問題,並告訴你為什麼要認真遵循S4TF以及Swift語言本身。 本文的目的不是提供非常詳細的解釋,而是提供下文大量連結內容的一般概述,方便讀者深入挖掘。
Swift for Tensorflow官方地址:
Swift“背景硬”:背後有強大的支援
Swift是Chris Lattner在蘋果公司工作時建立的。 Swift語言的創造者現在在實驗室從事深度學習的研究,這一事實應該告訴你,這就是一個嚴肅的專案。
前段時間,谷歌的員工意識到一件事情:儘管Python是一種優秀的語言,但它有許多難以克服的侷限性—— TensorFlow需要一種新的語言 。
經過長時間的考慮,Swift被選為候選語言。作者沒有在本文詳細介紹,但下方連結中的文件描述了Python的缺點、在候選語言篩選過程中考慮哪些語言,以及最終為何Swift當選。
對於TensorFlow來說,Swift不僅僅是一個庫
Swift對於TensorFlow不僅僅是另一種語言的TF。
它本質上是Swift語言本身的另一個分支(在git術語中)。這意味著S4TF不是一個庫;它本身就是一種語言,內建了支援TensorFlow所需的所有功能的特性。
例如,S4TF中有非常強大的自動微分系統,這是計算梯度所需要的深度學習的基礎之一。對比一下Python,在Python中,自動微分不是語言的核心元件。最初作為S4TF的一部分開發的功能後來被整合到Swift語言本身。
Git地址:
有關自動微分:
Swift速度極快
當作者第一次知道Swift的執行速度和C程式碼一樣快時,作者表示非常驚訝。
我們知道C語言是高度最佳化的,可以達到非常高的速度,但這是以微管理記憶體為代價的,這導致C語言不是記憶體安全的。此外,C語言並不是一門很容易學的語言。
現在,Swift在數值計算中執行得和C一樣快,而且它沒有記憶體安全問題,而且它更容易學習。Swift背後的LLVM編譯器非常強大,並且有非常高效的最佳化,這就確保了程式碼執行的速度。
Swift為何和C一樣快:
在Swift中可以使用Python,C和C ++程式碼
由於適用於機器學習的Swift還處於早期階段,這意味著適合Swift的機器學習庫並不多。
但不必過於擔心這一點,因為 Swift具有驚人的Python互操作性 。
只需匯入Swift中的任何Python庫,它就能正常工作。類似地,可以將C和C++的庫匯入Swift(對於C++,需要確保標頭檔案是用純C編寫的,沒有C++特性)。
有關Python互操作性:
匯入C和C++庫:
https://oleb.net/blog/2017/12/importing-c-library-into-swift/
總而言之,如果需要特定功能,但尚未在Swift中實現,則可以匯入相應的Python,C或C ++包。
Swift可以在非常底層的地方執行
如果你曾經使用過TensorFlow,那麼通常情況下可能是透過Python包完成的。
在底層,Python版本的TensorFlow庫底層有C程式碼。所以當你呼叫TensorFlow中的任何函式時,在某種程度上你會碰到一些C程式碼。
這意味著檢查原始碼的速度是有限的。例如,如果你想了解卷積是如何實現的,你無法看到Python程式碼,因為它是在C語言中實現的。
在Swift中,情況就不同了。Chris Lattner稱Swift是“ LLVM(組合語言)的語法糖 ”。
從本質上說,Swift非常接近硬體,而且在硬體之間沒有其他用C編寫的程式碼層。這也意味著Swift程式碼執行速度非常快。這就使得開發人員能夠從高到低,任何層次都可以開始檢查程式碼,而無需使用C。
有關“LLVM(組合語言)的語法糖”:
接下來的一步
Swift只是谷歌深度學習創新的一部分。還有一個非常相關的元件:MLIR,代表多級中間表示。
MLIR將是谷歌統一的編譯器基礎設施,允許用Swift(或任何其他受支援的語言)編寫程式碼,並將其編譯到任何受支援的硬體。
目前,針對不同的目標硬體有大量的編譯器,但是MLIR將改變這一點,不僅允許程式碼重用,還允許編寫定製的編譯器底層元件。它還將允許研究人員應用機器學習來最佳化底層演算法:
雖然MLIR充當ML的編譯器,但我們也看到它可以在編譯器中使用機器學習技術! 一點尤其重要,因為開發數值庫的工程師的擴充套件速度趕不上ML模型或硬體的多樣化。
想象一下,如果我們能夠使用深度學習來幫助最佳化資料的低階記憶體分塊演算法(類似於Halide試圖完成的任務)會怎麼樣。
有關MLIR:
有關Halide:
總結
如果你對深入學習感興趣,那麼Swift是一門你應該開始學習的語言。
與Python相比,它有許多優勢。谷歌正在大力投資,使Swift成為其TensorFlow ML基礎設施的一個關鍵元件,而且很有可能Swift將成為深度學習的語言。
所以,早點學習Swift總不會有錯的。
原文連結:
來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/29829936/viewspace-2646048/,如需轉載,請註明出處,否則將追究法律責任。
相關文章
- Python為什麼這麼熱門?學習Python有什麼好處?Python
- 為什麼要學習Python語言?Python入門Python
- 故障診斷為什麼要用深度學習?深度學習
- 為什麼會有深度學習?如何看待?深度學習
- 為什麼要學習Python?學習Python可以做什麼?Python
- 為什麼學習Python?什麼途徑學習Python合適?Python
- 為什麼企業需要關注深度學習深度學習
- 為什麼要學習Python?因為能「為所欲為」啊……Python
- 深度學習為什麼需要那麼多的資料?深度學習
- Python優勢是什麼?為什麼要學習?Python
- 為什麼要學習Python?Python可以做什麼事情?Python
- Python為什麼這麼火?學習python有什麼用?Python
- 為什麼學習Python資料分析Python
- 獨家 | 日本機器學習領軍人杉山將:為什麼說弱監督學習是未來的熱門?機器學習
- 為什麼學習python及爬蟲,Python爬蟲[入門篇]?Python爬蟲
- 為什麼資料科學家應該開始學習Swift?資料科學Swift
- Python是什麼?Python成為熱門語言的原因!Python
- 為什麼說學人工智慧一定要學Python?人工智慧Python
- 你為什麼學不好Python?論學習方法Python
- 為什麼這麼多人願意學習Python?Python
- 為什麼Spark將成為資料科學家的統一平臺Spark資料科學
- 為什麼 python 那麼熱門Python
- 為什麼要選擇學習python?學習python的原因!Python
- 為什麼說:“你不合適學Python?”醍醐灌頂!Python
- 為什麼學習python要掌握Linux?PythonLinux
- Python為什麼成為了必備的技能?Python
- 為什麼自建深度學習機器?因為比AWS便宜10倍啊!深度學習
- 為什麼學習Python,python的薪資為什麼這麼高,進去看看就知道Python
- 為什麼我們要學習DMAIC?—舉例說明AI
- 為什麼醫學影像AI已進入「後深度學習時代」?AI深度學習
- 為什麼學習Python以及Python的安裝Python
- 都說python是最佳程式設計入門語言,為什麼你學習卻是如此坎坷?Python程式設計
- Python教程學習:為什麼越來越多的人學Python?Python
- 為什麼要學習 RustRust
- 為什麼要學習 Julia
- 為什麼要學習 Vim?
- 為什麼說要把人工智慧習以為常化人工智慧
- 學習Python為什麼要報培訓班?Python