04.28 可以拋棄 Python?Google 開源 Swift for TensorFlow 意味什麼

Google開源Swift for TensorFlow無疑是對熱衷於喜愛Swift編程語言的開發者的一種特殊福利。這也不由得讓我更加欽佩Swift之父Chris Lattner此舉的偉大。

此前,Lattner在蘋果領導開發的Swift不僅速度快,可用性高,在開發者群體中極受歡迎,隨後,在Tesla短暫停留的六個月之後,Lattner於2017年8月選擇加盟Google Brain,專攻機器學習和人工智能,目前來看,Swift for TensorFlow應該其加入Google之後的第一個大動作。

可以拋棄 Python?Google 開源 Swift for TensorFlow 意味什麼

上個月底,在TensorFlow舉辦的開發者峰會上,Google重磅發佈了許多產品。除了TensorFlow.js的發佈之外,還有一個就是宣佈了即將開源的Swift for TensorFlow。昨日,Google的承諾如期兌現,也再次將人工智能和深度學習相關項目研發的從業者對TensorFlow的喜愛推向高潮。據瞭解,Swift for TensorFlow在GitHub上開源,鏈接為:https://github.com/tensorflow/swift。

可以拋棄 Python?Google 開源 Swift for TensorFlow 意味什麼

可以說截止目前,TensorFlow已經滿足了包括Python、Java、Swift、Go、C等多種編程語言的支持。

據TensorFlow官方介紹,

“Swift for TensorFlow 為 TensorFlow 提供了一種新的編程模型,將 TensorFlow 計算圖與 Eager Execution 的靈活性和表達能力結合在了一起,同時還注重提高整個軟件架構每一層的可用性。

此外,TensorFlow還編寫了一些文檔,其中詳細介紹了其理論和實現,存放在README 文件中,鏈接:https://github.com/tensorflow/swift/blob/master/README.md。

第一個必讀文檔是“Swift for TensorFlow 設計總覽”,這裡介紹了項目的主要組成部分以及結合方式。

另外,TensorFlow還詳細介紹項目的幾個重要領域,通過“Graph Program Extraction”的算法,可以讓開發者用 Eager Execution 式的編程模型來實現代碼,同時保留 TensorFlow 計算圖的高性能優勢。並且,這個項目還允許開發者直接通過Swift代碼任意使用Python API。

當然,TensorFlow官方還提到,之所以選擇Swift作為主語言,目的在於“實現可靠的 Graph Program Extraction 算法對於編程語言的設計有很高的要求”。

總的來講,自從Tensorflow開源之後,其提供的API對搭建神經網絡有著足夠的自由度,很大程度上為開發者們搭建和實現功能解決了後顧之憂,但另一方面,鑑於使用TensorFlow的基本模型,Python作為數據科學家專用的最舒適的語言,與TensorFlow也是一個很自然的契合。甚至連fast.ai創始人、前任Kaggle總裁Jeremy Howard在看到此次項目之後曾在Twitter上評論:“我們是不是終於可以放下Python了?”

可以拋棄 Python?Google 開源 Swift for TensorFlow 意味什麼

Jeremy Howard在Twitter上的回覆

此前,TensorFlow官方曾給出一個特別的提示:“現在使用Swift for TensorFlow重寫你的深度學習模型還為時尚早。”

那麼,我們何時需要開始真得需要並投入到Swift中來呢?

近期,來自Fritz.ai聯合創始人兼CEO Jameson Toole發表一篇標題為《為什麼數據科學家應該開始開始學習Swift》(Why data scientists should start learning Swift),其中,他談到了Swift for Tensorflow以及機器學習發展的未來。

可以拋棄 Python?Google 開源 Swift for TensorFlow 意味什麼

他表示,不要將Swift視為TensorFlow的簡單包裝,以便其更易於在iOS設備上使用。其意義遠不止如此。該項目改變的將是整個機器學習和數據科學生態系統使用的默認工具。

為什麼這麼講呢?

他繼續談到:

“在此背景之下,可以看到兩種趨勢正慢慢滲透:一個是通過神經網絡和深度學習掀起的人工智能復興;一個是向數十億智能手機和物聯網設備上運行的移動為先應用的轉變。

這兩種技術都需要高性能計算能力,這種情況下Python就顯得尤為不適了。

一方面,深度學習在算力上非常昂貴,需要通過張量運算的長鏈傳遞巨大的數據集。為了快速執行這些計算,軟件必須將數以千計的線條和內核與專用處理器進行編譯。在移動設備的功耗和熱量被得以真正關注的情況下,這些問題開始加劇了。相對來講,以更少的內存換來更為高效的處理器以優化應用,這都是一個不小的挑戰。顯然,迄今為止,Python依然不再是一個很好的解決方案。

而對數據科學家和機器學習研究人員來講,這就是很大的問題。因為,我們不再訴諸於讓GPU承受大量工作負載,但多數人又深陷移動應用開發的泥潭,再耗費時間學習一門新的編程語言似乎不太現實,但這種轉換成本實在太高了。例如Node.js這樣的JavaScript項目和React Native這樣的跨平臺抽象工具。現在,我很難在Python的環境下完成項目。

在由機器學習和邊緣計算主導的世界中,Python無法成為端到端語言,主要還是因為Swift for TensorFlow的推動。Chris Lattner認為,Python作為一種動態型語言,無法帶領我們走得更遠。用他的話來講,工程師需要一種把機器學習當做‘一等公民’的編程語言。當然,雖然他深刻闡述了為什麼採用新的編譯分析與改變利用TensorFlow搭建項目的方式息息相關,但是他最為引人矚目的還對編程過程的理解。”

可以拋棄 Python?Google 開源 Swift for TensorFlow 意味什麼

Chris Lattner提出了構建機器學習系統的一種新的方式

Jameson Toole做出構想,任何一種能夠方便機器學習的編程語言所具有的特徵:

  1. 可讀、高效語法

  2. 腳本功能

  3. 類似於Notebook界面

  4. 大型、活躍的社區可構建第三方機構

  5. 從TPU到移動芯片等專業硬件,可提供乾淨、自動化的編碼方式

  6. 移動設備上的本機執行

  7. 性能更接近於C

寫到最後,Jameson Toole還表示:Lattner和他的團隊正在用Swift for TensorFlow一一核實這些特性。首先,其語法幾乎與Python一模一樣。有一個用於腳本和筆記本的編譯器。最重要的是,它們能通過運行任意Python代碼來幫助遷移,而且由於Swift現在是iOS應用開發的默認選項,因此部署到移動端非常容易。Swift的開放源代碼編譯器和靜態類型使得定位特定AI芯片組成為可能。


分享到:


相關文章: