首頁?學習  »   正文

為什么Swift會是深度學習的下一個大熱門?

為什么Swift會是深度學習的下一個大熱門?

本文介紹

如果你喜歡編程,當你聽到Swift,你可能會想到iOS或MacOS的應用程序開發。如果你正在進行深度學習,那么你一定聽說過Swift for Tensorflow(縮寫為S4TF)。然后,你可以問自己:“為什么谷歌要為Swift創建一個TensorFlow版本?”Python和c++已經有了版本;為什么要添加另一種語言?在這篇文章中,我將試著回答這個問題,并概述為什么你應該認真遵循S4TF以及Swift語言本身的原因。這篇文章的目的不是給出非常詳細的解釋,而是提供一個總體概述和大量的鏈接,這樣,如果您感興趣,就可以進行更深入的研究。

Swift背后有強大的支持

Swift是Chris Lattner在蘋果工作時創造的。現在,Chris Lattner就職于谷歌Brain,世界上最好的人工Max Pechyonkin之一,5月27日·5分鐘閱讀智能研究團隊。事實上,Swift語言的創造者現在在實驗室從事深度學習的研究來告訴你,這是一個嚴肅的項目。

不久前,谷歌的人意識到,盡管Python是一種優秀的語言,但是它有許多難以克服的限制。TensorFlow需要一種新的語言,經過長時間的考慮,Swift被選為候選人。我不會在這里詳細介紹,但是有一個文檔描述了Python的缺點,以及考慮了哪些其他語言,以及最終如何將其縮小到Swift。

對于TensorFlow來說,Swift不僅僅是一個庫

Swift對于TensorFlow不僅僅是另一種語言的TF。它本質上是Swift語言本身的另一個分支(在git的意義上)。這意味著S4TF不是一個庫;它本身是一種語言,內置了支持TensorFlow所需的所有功能的特性。例如,S4TF中有一個非常強大的自動微分系統,這是計算梯度所需要的深度學習的基礎之一。對比一下Python,在Python中,自動區分不是語言的核心組件。最初作為S4TF的一部分開發的一些功能后來被集成到Swift語言本身。

Swift很快

當我第一次知道Swift的運行速度和C代碼一樣快時,我很驚訝。我知道C是高度優化的,可以達到非常高的速度,但這是以微管理內存為代價的,這導致C的內存不安全)。此外,C語言不是一門很容易學的語言。

現在,Swift在數值計算中運行得和C一樣快,而且它沒有內存安全問題,而且它更容易學習。Swift背后的LLVM編譯器非常強大,并且有非常高效的優化,這將確保您的代碼運行得非常快。

在SWIFT中可以使用Python、C和C++代碼

因為機器學習的Swift還處于非常早期的階段,這意味著適合Swift的機器學習庫并不多。不必擔心,因為Swift具有驚人的Python互操作性。只需導入Swift中的任何Python庫,它就能正常工作。

類似地,您可以將C和c++庫導入到Swift中(對于c++,您需要確保頭文件是用純C編寫的,而沒有c++特性)。總之,如果您需要特定的功能,但它還沒有在Swift中實現,您可以導入相應的Python、C或c++包。令人印象深刻的!

SWIFT可以降到很低的水平

如果您曾經使用過TensorFlow,那么很可能是通過Python包完成的。在底層,Python版本的TensorFlow庫底層有C代碼。所以當你調用TensorFlow中的任何函數時,在某種程度上你會碰到一些C代碼。這意味著檢查源代碼的速度是有限制的。例如,如果您想了解卷積是如何實現的,您將無法看到Python代碼,因為它是在C語言中實現的。

在Swift中,情況就不同了。Chris Lattner稱Swift是“LLVM(匯編語言)的語法糖”。這意味著從本質上說,Swift非常接近硬件,而且在硬件之間沒有其他用C編寫的代碼層。這也意味著Swift代碼非常快,如上所述。這一切都使您作為開發人員能夠從一個非常高的級別檢查代碼到一個非常低的級別,而不需要進入C語言。

接下來是什么

Swift只是谷歌深度學習創新的一部分。還有一個非常密切相關的組件:MLIR,它代表多級中間表示。MLIR將是谷歌統一的編譯器基礎設施,允許用Swift(或任何其他受支持的語言)編寫代碼,并將其編譯到任何受支持的硬件。目前,針對不同的目標硬件有大量的編譯器,但是MLIR將改變這一點,不僅允許代碼重用,還允許編寫定制的編譯器底層組件。它還將允許研究人員應用機器學習來優化底層算法:

雖然MLIR充當ML的編譯器,但是我們也看到它支持在編譯器中使用機器學習技術!這一點尤其重要,因為開發數字庫的工程師的擴展速度趕不上ML模型或硬件的多樣化。

想象一下能夠使用深度學習來幫助優化數據的底層內存平鋪算法(類似于Halide試圖完成的任務)。而且,這僅僅是機器學習在編譯器中的開始和其他創造性應用!

總結

如果你喜歡深度學習,那么Swift是一門你應該開始學習的語言。與Python相比,它具有許多優勢。谷歌正在大力投資,使Swift成為其TensorFlow ML基礎設施的一個關鍵組件,而且很有可能Swift將成為深度學習的語言。所以,早點開始學習Swift也會是你一個先發制人的優勢。

歡迎關注ATYUN官方公眾號,商務合作及內容投稿請聯系郵箱:[email protected]

發表評論