为什么Swift可能是深度学习的下一代重要的工具
點擊上方“中生代技術”,選擇“置頂公眾號”
中生代技術,關注技術人的成長
@開發者,如果你正在研究深度學習,那么建議你開始學習Swift語言。
作者 |?Max Pechyonkin
譯者 | 彎月,責編 | 郭芮
出品 | CSDN(ID:CSDNnews)
以下為譯文:
當程序員聽到Swift時,可能都會聯想到iOS或MacOS的應用開發。如果你正在研究深度學習,那么你一定聽說過Swift版的TensorFlow。你可能不禁想問:“為什么Google會創建Swift版的TensorFlow?現在已經有Python和C++版本了,為什么還要添加另一種語言?”
我將在這篇文章中為你解答這個問題,并概述為什么你需要留意Swift版的TensorFlow以及Swift語言本身。我不打算在文本中提供詳細的解釋,但是我會提供大量鏈接,如果你對這個話題感興趣的話,那么可以深入挖掘。
Swift擁有強力的后援
Swift是由Chris Lattner在蘋果工作時創建的。目前,Chris Lattner在Google Brain工作——這是世界上最先進的人工智能研究團隊之一。 Swift語言的創始人如今在研究深度學習的實驗室工作,這個事實說明這是一個重大的項目。
前段時間,Google意識到盡管Python是一種優秀的語言,但它仍有許多難以克服的局限性。TensorFlow需要一種新語言,經過長時間的考慮后,這個重任落到了Swift肩上。我不打算對此做詳細的介紹,但是你可以自行閱讀這篇文檔(https://github.com/tensorflow/swift/blob/master/docs/WhySwiftForTensorFlow.md),文中描述了Python的缺點,有關其他語言的考量,以及最終選中了Swift的經過。
Swift版的TensorFlow不僅僅是一個代碼庫
Swift版的TensorFlow不僅僅是另一種語言的TensorFlow。
從本質上來說,它是Swift語言的另一個分支(就像在git上創建branch一樣)。這意味著Swift版的TensorFlow并不是一個代碼庫, 它本身就是一種語言,它內置的功能支持TensorFlow所需的所有功能。
例如,Swift版的TensorFlow擁有非常強大的自動微分系統,這是深度學習計算梯度所需的基礎。相比之下,Python的自動微分系統不是語言的核心組成部分。有一些最初為Swift版的TensorFlow開發的功能后來被集成到了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非常靠近硬件,Swift與硬件之間沒有其他用C寫的附加層。這也意味著Swift代碼非常快,如上所述。
因此,開發人員能夠檢查所有的代碼,無論是高層的代碼還是非常底層的代碼,都無需深入C。
將來的發展
Swift只是Google深度學習創新的一部分。還有另一個非常密切相關的組件:MLIR(Multi-Level Intermediate Representation,多層中間表示)。MLIR將會成為Google統一的編譯基礎設施,它允許你用Swift(或任何其他支持的語言)編寫代碼,并編譯成任何支持的硬件。
目前,有許多針對不同目標硬件的編譯器,但MLIR將改變這種局面,它不僅可以支持代碼的可重用性,而且還允許你編寫編譯器自定義的底層組件。同時,它還允許研究人員應用機器學習來優化低級算法:
雖然MLIR是機器學習的編譯器,但我們也看到它可以將機器學習的技術應用到編譯器本身!這一點非常重要,因為工程師開發數值計算庫的速度跟不上機器學習模型或硬件多元化的速度。
想象一下,我們能夠使用深度學習來優化處理數據的底層內存切片算法(類似于Halide正在努力完成的任務)。而且,這只是一個開端,還有其他機器學習的創造性應用也可以在編譯器中使用!
總結
如果你正在研究深度學習,那么我建議你開始學習Swift語言。與Python相比,Swift擁有多方面的優勢。Google正在大力投資,讓Swift成為TensorFlow多層基礎設施的關鍵組成部分,而且Swift很可能成為深度學習的語言。 因此,先下手為強,盡早開始學習Swift吧。
鏈接:https://towardsdatascience.com/why-swift-may-be-the-next-big-thing-in-deep-learning-f3f6a638ca72
本文為 CSDN 翻譯,轉載請注明來源出處。
【END】
研發管理好文回顧
??專訪《突破》作者劉朋: 程序員快速提升領導力的15個模式!
??劉朋 | 招招“至”勝 “六步工作法”打造致勝團隊
??大衛張33|研發管理在互聯網時代|文末有視頻
??老曹眼中的研發管理二三事
??《突破-程序員如何練就領導力》引用參考文獻歸納與推薦
??遠離低效加班! 高效領導者提升思考力的5個底層法則
??不是所有的程序員都適合轉管理,但是領導力可以有套路練就
??4個誤區:由「技術崗」轉「管理崗」小心避開
??突破技術管理,IT人中年危機變契機
? ? ? ??
#專注技術人的成長#
點擊閱讀原文,閱讀英文原版
你點的每個“在看”,我都認真當成了喜歡總結
以上是生活随笔為你收集整理的为什么Swift可能是深度学习的下一代重要的工具的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: java中的进制转换
- 下一篇: java-判断相同和对象比较大小