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