為什麼資料科學家應該開始學習Swift?

AI前線發表於2019-03-02

為什麼資料科學家應該開始學習Swift?

作者 | Jameson Toole
譯者 | 胡紅星
編輯 | Natalie
AI 前線導讀: Python 因為其易用性在資料分析和機器學習領域廣受歡迎,但效能問題一直是它的短板。從谷歌推出 Swift for TensorFlow 開始,事情似乎發生了一些變化。Swift 會成為比 Python 更適合資料分析和機器學習領域的程式語言嗎?

更多幹貨內容請關注微信公眾號“AI 前線”,(ID:ai-front)

在密歇根大學第一年物理課程的一週後,一位教授佈置了一些需要模擬多體系統的問題。這些問題必須在星期五完成。那是我學習第一門程式語言 Matlab 的那一週。

這就是我為何在過去十年中零星學習了十幾種語言的原因。除了入門級 CS 課程中學習的 C++ 和研究生階段學習的基於 Java 的資料庫課程外,我從未接觸過軟體工程方面的任何正式學習。對我而言,編碼是完成作業,分析資料來回答問題,或者用來實現我的想法。有時這意味著要熟悉演算法或資料結構的細節,但我從來沒有發現自己為了編碼而編碼。我對泛型沒有意見(不要 @我)。我認為這描述了我所知道的絕大多數資料科學家和機器學習工程師。針對要解決的問題在選擇工具時,我們通常會優先考慮可用性和效率,而不是軟體基礎。

快進到 2018 年,Python 已經得到了機器學習和資料科學社群的認可。Python 的語法很容易入門,它是一門優秀的指令碼語言,當你想要優化效能時,可以直接與底層 C 語言庫打交道。然而,對我來說,Python 最吸引人的部分是它能用於建立端到端的整個系統。用於科學計算的包如 Numpy,Pandas,Matplotlib 和 Jupyter notebooks 擁有巨大的社群支援。並且,當需要圍繞你的工作構建應用程式時,Flask 和 Django 等框架的效能足以擴充套件至數以億計的使用者。我可以使用一種程式語言來構建整個系統。

過去 10 年我很喜歡使用 Python。但我認為未來不會再使用它了,接下來我會使用 Swift。

在 2018 年的 TensorFlow 開發峰會上,來自 Google 的 Chris Lattner 宣佈 TensorFlow 即將支援 Swift。不要認為 TensorFlow for Swift 僅僅是對 TensorFlow 進行了簡單的包裝以方便 iOS 裝置使用。這遠不止於此。該專案試圖改變整個機器學習和資料科學生態系統所使用的預設工具。

在我熟悉 Python 技術棧時,背後隱藏的另外兩種技術趨勢在慢慢滲透:人工智慧通過神經網路和深度學習的復興以及人工智慧的應用場景轉向數十億智慧手機和物聯網裝置。這兩種技術都需要高效能運算,Python 看起來不太合適。

深度學習需要向長鏈網路傳遞海量的資料,這導致深度學習的計算量非常大。為了快速執行這些計算,軟體必須針對具有數千個執行緒和核心的專用處理器進行編譯。這些問題在非常關注功耗和熱量的移動裝置上更加明顯。要在更慢的處理器、更少的記憶體上進行優化是極具挑戰的。到目前為止,Python 未能提供太多幫助。

這對於資料科學家和機器學習研究人員來說是個很大的問題。我們最終採用黑客工作方式使用 GPU 進行計算,而我們許多人都在為移動應用程式開發而苦惱。學習一種新語言並不是不可能的,但轉換成本很高。看看 Node.js 和 React-Native 這樣的跨平臺專案就能知道轉換成本有多大。我曾經計劃永遠堅持我的 numpy 陣列,但是現在,不放棄 Python 已經無法完成任務。它不再是一個足夠好的解決方案。

在由機器學習和邊緣計算主導的世界中,Python 無法成為端到端語言是 Swift for TensorFlow 背後的動力。 Chris Lattner 認為 Python 的動態型別和直譯器阻礙了我們更進一步。用他的話說,工程師需要一種把機器學習當作“一等公民”的語言。雖然他深刻地闡述了技術上的原因,為什麼需要採用新的編譯器分析方法來改變使用 TensorFlow 的程式的構建和執行方式,他的論點最引人注目的是程式設計人員的經驗。

為什麼資料科學家應該開始學習Swift?

能夠更容易做機器學習的程式語言應該包括的特性有:

  • 可讀,高效的語法

  • 指令碼能力

  • Notebook-like 的介面

  • 活躍社群構建的第三方庫

  • 能自動編譯針對從 TPU 到移動晶片特定硬體的程式碼

  • 能在移動裝置上執行

  • 接近 C 的效能

Lattner 和他的團隊正在用 Swift for TensorFlow 新增所有這些特性。Swift 語法幾乎和 Python 一樣高效,擁有一個用於指令碼的直譯器。最重要的是,為了方便移植,可以執行任何 Python 程式碼,並且因為 Swift 現在是 iOS 應用程式開發的預設開發語言,所以部署到移動裝置很容易。Swift 的開源編譯器和靜態型別使得針對特定 AI 晶片組進行構建成為可能。作為 Swift 的創始人之一,Lattner 可能會有偏見,但我深信他對機器學習的理解。

你可以在這裡看到 Chris Lattner 的整個演講。

閱讀原文:

https://heartbeat.fritz.ai/why-data-scientists-should-start-learning-swift-66c3643e0d0d

相關文章