上個月底,在TensorFlow舉辦的開發(fā)者峰會上,Google重磅發(fā)布了許多產(chǎn)品。除了TensorFlow.js的發(fā)布之外,還有一個就是宣布了即將開源的Swift for TensorFlow。昨日,Google的承諾如期兌現(xiàn),也再次將人工智能和深度學(xué)習(xí)相關(guān)項目研發(fā)的從業(yè)者對TensorFlow的喜愛推向高潮。據(jù)了解,Swift for TensorFlow在GitHub上開源,鏈接為:https://github.com/tensorflow/swift。 可以說截止目前,TensorFlow已經(jīng)滿足了包括Python、Java、Swift、Go、C等多種編程語言的支持。 據(jù)TensorFlow官方介紹,
此外,TensorFlow還編寫了一些文檔,其中詳細介紹了其理論和實現(xiàn),存放在README 文件中,鏈接:https://github.com/tensorflow/swift/blob/master/README.md。
另外,TensorFlow還詳細介紹項目的幾個重要領(lǐng)域,通過“Graph Program Extraction”的算法,可以讓開發(fā)者用 Eager Execution 式的編程模型來實現(xiàn)代碼,同時保留 TensorFlow 計算圖的高性能優(yōu)勢。并且,這個項目還允許開發(fā)者直接通過Swift代碼任意使用Python API。 當(dāng)然,TensorFlow官方還提到,之所以選擇Swift作為主語言,目的在于“實現(xiàn)可靠的 Graph Program Extraction 算法對于編程語言的設(shè)計有很高的要求”。 總的來講,自從Tensorflow開源之后,其提供的API對搭建神經(jīng)網(wǎng)絡(luò)有著足夠的自由度,很大程度上為開發(fā)者們搭建和實現(xiàn)功能解決了后顧之憂,但另一方面,鑒于使用TensorFlow的基本模型,Python作為數(shù)據(jù)科學(xué)家專用的最舒適的語言,與TensorFlow也是一個很自然的契合。甚至連fast.ai創(chuàng)始人、前任Kaggle總裁Jeremy Howard在看到此次項目之后曾在Twitter上評論:“我們是不是終于可以放下Python了?” Jeremy Howard在Twitter上的回復(fù) 此前,TensorFlow官方曾給出一個特別的提示:“現(xiàn)在使用Swift for TensorFlow重寫你的深度學(xué)習(xí)模型還為時尚早?!?/p> 那么,我們何時需要開始真得需要并投入到Swift中來呢? 近期,來自Fritz.ai聯(lián)合創(chuàng)始人兼CEO Jameson Toole發(fā)表一篇標(biāo)題為《為什么數(shù)據(jù)科學(xué)家應(yīng)該開始開始學(xué)習(xí)Swift》(Why data scientists should start learning Swift),其中,他談到了Swift for Tensorflow以及機器學(xué)習(xí)發(fā)展的未來。 他表示,不要將Swift視為TensorFlow的簡單包裝,以便其更易于在iOS設(shè)備上使用。其意義遠不止如此。該項目改變的將是整個機器學(xué)習(xí)和數(shù)據(jù)科學(xué)生態(tài)系統(tǒng)使用的默認工具。 為什么這么講呢? 他繼續(xù)談到: “在此背景之下,可以看到兩種趨勢正慢慢滲透:一個是通過神經(jīng)網(wǎng)絡(luò)和深度學(xué)習(xí)掀起的人工智能復(fù)興;一個是向數(shù)十億智能手機和物聯(lián)網(wǎng)設(shè)備上運行的移動為先應(yīng)用的轉(zhuǎn)變。這兩種技術(shù)都需要高性能計算能力,這種情況下Python就顯得尤為不適了。 一方面,深度學(xué)習(xí)在算力上非常昂貴,需要通過張量運算的長鏈傳遞巨大的數(shù)據(jù)集。為了快速執(zhí)行這些計算,軟件必須將數(shù)以千計的線條和內(nèi)核與專用處理器進行編譯。在移動設(shè)備的功耗和熱量被得以真正關(guān)注的情況下,這些問題開始加劇了。相對來講,以更少的內(nèi)存換來更為高效的處理器以優(yōu)化應(yīng)用,這都是一個不小的挑戰(zhàn)。顯然,迄今為止,Python依然不再是一個很好的解決方案。 而對數(shù)據(jù)科學(xué)家和機器學(xué)習(xí)研究人員來講,這就是很大的問題。因為,我們不再訴諸于讓GPU承受大量工作負載,但多數(shù)人又深陷移動應(yīng)用開發(fā)的泥潭,再耗費時間學(xué)習(xí)一門新的編程語言似乎不太現(xiàn)實,但這種轉(zhuǎn)換成本實在太高了。例如Node.js這樣的JavaScript項目和React Native這樣的跨平臺抽象工具。現(xiàn)在,我很難在Python的環(huán)境下完成項目。 在由機器學(xué)習(xí)和邊緣計算主導(dǎo)的世界中,Python無法成為端到端語言,主要還是因為Swift for TensorFlow的推動。Chris Lattner認為,Python作為一種動態(tài)型語言,無法帶領(lǐng)我們走得更遠。用他的話來講,工程師需要一種把機器學(xué)習(xí)當(dāng)做‘一等公民’的編程語言。當(dāng)然,雖然他深刻闡述了為什么采用新的編譯分析與改變利用TensorFlow搭建項目的方式息息相關(guān),但是他最為引人矚目的還對編程過程的理解?!?/p> Chris Lattner提出了構(gòu)建機器學(xué)習(xí)系統(tǒng)的一種新的方式 Jameson Toole做出構(gòu)想,任何一種能夠方便機器學(xué)習(xí)的編程語言所具有的特征:
寫到最后,Jameson Toole還表示:Lattner和他的團隊正在用Swift for TensorFlow一一核實這些特性。首先,其語法幾乎與Python一模一樣。有一個用于腳本和筆記本的編譯器。最重要的是,它們能通過運行任意Python代碼來幫助遷移,而且由于Swift現(xiàn)在是iOS應(yīng)用開發(fā)的默認選項,因此部署到移動端非常容易。Swift的開放源代碼編譯器和靜態(tài)類型使得定位特定AI芯片組成為可能。 |
|