會變成什么樣,機(jī)器學(xué)習(xí)如何改變未來十年軟硬件
最近,Google Brain員工,TensorFlow產(chǎn)品經(jīng)理Zak Stone在硅谷創(chuàng)業(yè)者社群South Park Commons上做了個講座,談到了TensorFlow、XLA、Cloud TPU、TFX、TensorFlow Lite等各種新工具、新潮流如何塑造著機(jī)器學(xué)習(xí)的未來。同時,他還暗示了一些還未向公眾披露的exciting的事兒。
本文引用地址:http://butianyuan.cn/article/201708/363597.htm講座的題目叫“Tensor Flow, Cloud TPUs, and ML progress”,以下是整個講座的概要,量子位編譯整理自South Park Commons官方博客。
作為一個平臺來說,TensorFlow算是一場豪賭:它兼顧了快速,靈活,還可用于生產(chǎn)。實驗和執(zhí)行之間的轉(zhuǎn)換要足夠快,才能保證工程生產(chǎn)力,靜態(tài)圖像計算通過Python等高級靈活的語言來表示,同時圖編譯允許對特定目標(biāo)進(jìn)行準(zhǔn)確度優(yōu)化。
作為一個開源項目,TensorFlow極為成功,它從2015年11月發(fā)布至今在Github上已經(jīng)獲得了超過20,000個commit。Github版的TensorFlow每周與Google內(nèi)部鏡像文件之間至少會進(jìn)行一次雙向同步,同時TensorFlow也收獲了來自Intel,Microsoft,IBM,Rstudio,Minds.ai以及其他公司研發(fā)團(tuán)隊的大大小小的貢獻(xiàn)。
為了更好地觸及用戶,能夠在移動端上提高運行TensorFlow模型效率的TensorFlow Lite將會在今年晚些時候內(nèi)嵌到設(shè)備中,而像是XLA這樣的項目更具野心:XLA使用深度學(xué)習(xí)來支持線性代數(shù)元的先時和實時編譯,從而為任意的目標(biāo)后端系統(tǒng)生成加速過的代碼。XLA的目標(biāo)是在遞階優(yōu)化上實現(xiàn)重大突破,不僅是在GPU架構(gòu)上,而是要在任意能夠平行放置線性代數(shù)元的架構(gòu)上實現(xiàn)突破。
谷歌內(nèi)部,在CEO Sundar Pichai要成為“AI-first”公司的號召下,TensorFlow被應(yīng)用到非常多的項目當(dāng)中。
而加速研發(fā)基于機(jī)器學(xué)習(xí)軟件的趨勢不僅在Google身上發(fā)生,亞馬遜,蘋果,百度,F(xiàn)acebook,微軟,Salesforce,Uber,Lyft等幾乎所有的主流科技企業(yè),都雇傭了專業(yè)的研發(fā)團(tuán)隊來推動機(jī)器學(xué)習(xí)的工業(yè)化。而在這些公司中,深度學(xué)習(xí)的開發(fā)平臺也是五花八門,其中包括來自Facebook的PyTorch和Caffe2,來自Microsoft的CNTK,來自Apple的Core ML以及來自Amazon的MXNet等。
未來十年,
軟件工程會變成什么樣?
機(jī)器學(xué)習(xí)的崛起,意味著原來的clean abstraction和模塊化設(shè)計正在被高維浮點張量和高效矩陣乘法所取代。
按這種趨勢發(fā)展下去,軟件工程行業(yè)將徹底改變。
Google軟件工程師D. Sculley曾寫過一篇題為“Machine Learning: The High-Interest Credit Card of Technical Debt”的文章,他在其中列舉出了機(jī)器學(xué)習(xí)系統(tǒng)促進(jìn)低劣軟件設(shè)計的種種可能,甚至?xí)惯@些低劣的設(shè)計成為必須。他提到,“這些系統(tǒng)的基本代碼跟正常代碼擁有相同的復(fù)雜度,但在系統(tǒng)層面上擁有更大的復(fù)雜度,從而可能引發(fā)潛在的風(fēng)險?!?/p>
閱讀D. Sculley的文章:https://research.google.com/pubs/pub43146.html
機(jī)器學(xué)習(xí)系統(tǒng)通過將所有系統(tǒng)輸入緊密耦合,模糊了模型邊界和抽象:理想的行為不變性不是來自軟件邏輯,而是來自于驅(qū)動它們的特定外部數(shù)據(jù)。盡管存在通過靜態(tài)分析和圖連接來辨別代碼可靠性的工具,但總體上,這些工具并沒有辦法用來分析數(shù)據(jù)的相關(guān)性。
D Sculley等人在文章中討論了幾種系統(tǒng)設(shè)計中的劣勢,很能與相關(guān)從業(yè)者產(chǎn)生共鳴:
1. Glue Code(粘滯的代碼)系統(tǒng)設(shè)計樣式,“在這其中需要寫大量的支持代碼負(fù)責(zé)把數(shù)據(jù)傳入、傳出各種用途的安裝包”;
2. Pipeline jungles(亂七八糟的流水線),它會隨時間有機(jī)地演變,數(shù)據(jù)準(zhǔn)備系統(tǒng)“可能會變成由scape,join和sampling步驟組成的一團(tuán)亂麻,通常還伴隨著中間文件的輸出”;
3. Configuration debt(龐大的編譯代價),將會隨著系統(tǒng)和生產(chǎn)線的研發(fā)而逐漸累積,集合了“各種編譯選項,包括使用的特征有哪些,怎樣篩選數(shù)據(jù),特定學(xué)習(xí)算法的設(shè)置(范圍很寬),潛在的預(yù)處理或者后處理,驗證方法等等。”
即使在更小、更輕量化的項目中,工程師還會被以下這些問題困擾:
1. 在實驗中模型架構(gòu)和權(quán)重的版本——尤其是當(dāng)模型從不同體系借來了部分與訓(xùn)練模型,或者從其他模型借來了權(quán)重的時候。
2. 數(shù)據(jù)來源和特征的版本;
3. 在實驗環(huán)境和實際生產(chǎn)環(huán)境之間的遷移(domain shift);
4. 監(jiān)測生產(chǎn)中推斷的質(zhì)量。
解決這些問題的一個可能方案是TFX,它是一個Google內(nèi)部研發(fā)的平臺,用來在生產(chǎn)中分布和供應(yīng)機(jī)器學(xué)習(xí)模型:
創(chuàng)造和管理一個可用于可靠地生產(chǎn)和部署機(jī)器學(xué)習(xí)模型的平臺,需要在很多部件之間進(jìn)行細(xì)致編排——這些部件包括基于訓(xùn)練數(shù)據(jù)生成模型的學(xué)習(xí)器、用于分析和驗證數(shù)據(jù)和模型的模塊、以及最終在生產(chǎn)工程中用于部署模型的基礎(chǔ)架構(gòu)。當(dāng)數(shù)據(jù)隨著時間變化且模型在連續(xù)更新時,平臺的管理就變得非常難。
不幸的是,這些編排通常是在通過glue code和特定的腳本文件來有針對性的一一處理,導(dǎo)致了復(fù)制成本大、系統(tǒng)脆弱同時伴隨著大量的技術(shù)隱患。
TFX標(biāo)準(zhǔn)化了這些過程和部件,并把它們整合到單個平臺上,從而簡化了平臺編譯的過程,在確保平臺可靠性、減少服務(wù)崩潰的基礎(chǔ)上,將制作的時間從數(shù)月減少到了數(shù)周。
未來十年,
硬件會變成什么樣?
摩爾定律放緩,使得我們得以重新進(jìn)入“架構(gòu)的黃金年代”,見證各式各樣芯片和指令集的飛速發(fā)展。
諸如英特爾旗下的Nervana、英偉達(dá)、Cerebras和Google等公司全都開始研發(fā)能夠加速機(jī)器學(xué)習(xí)中線性代數(shù)運算的下一代硬件架構(gòu)。且在默認(rèn)情況下,每種架構(gòu)都需要獨特的、像cuDNN那樣的底層、手動優(yōu)化基元庫。(cuDNN全稱是CUDA Deep Neural Network library,是NVIDIA專門針對深度神經(jīng)網(wǎng)絡(luò)設(shè)計的一套GPU計算加速庫。)
想打破這個趨勢,需要同行們在XLA等更普適的編譯器框架上下更多功夫。
Google的TPU(Tensor Processing Units)目前最有可能打破GPU的統(tǒng)治。每個Cloud TPU能提供高達(dá)每秒180萬億次的浮點運算,64GB的超高帶寬存儲空間以及可串聯(lián)的特性。跟之前超級計算機(jī)的架構(gòu)不同,TPU是從零開始設(shè)計,專門針對機(jī)器學(xué)習(xí)中常見的線性代數(shù)運算。
TPU是與TensorFlow集成的,Google提供收費云端服務(wù)(Cloud TPU),同時通過TensorFlow Research Cloud(TFRC)項目,對想要提前使用TPU的機(jī)器學(xué)習(xí)專家進(jìn)行補貼,提供1000個Cloud TPU,希望他們能通過論文和開源軟件來跟世界分享其研究成果。
小結(jié)
像TensorFlow這樣的圖計算和深度學(xué)習(xí)庫是未來計算行業(yè)發(fā)展背后的主要驅(qū)動力,這推動我們?nèi)ブ匦聦徱曄到y(tǒng)架構(gòu),從硬件到編譯器再到更高級的程序語言和設(shè)計規(guī)范。
于是,繁重的工作擺在了軟件架構(gòu)師,工程師、研究人員等從業(yè)者面前,但同時這過程也很令人興奮。就像Zak在演講中所總結(jié)的一樣:
我讀研究生的時候,這些驚艷的應(yīng)用大都還不可能實現(xiàn)——當(dāng)人們對機(jī)器學(xué)習(xí)技術(shù)習(xí)以為常,然后開始做一些我們現(xiàn)在預(yù)見不到的事情,會是什么樣呢?第一批TensorFlow原生的產(chǎn)品會是什么樣?”
評論