支撐20億人的機器學習:Jeff Dean、賈揚清等ScaledML大會演講
新智元編譯
來源:ScaledML
作者:文強
【新智元導讀】如何利用GPU,TPU,CPU等不同計算平台,如何從數據、模型等多個維度擴展機器學習?可擴展是機器學習接下來的攻關重點之一。谷歌大腦負責人Jeff Dean日前在ScaledML大會發表演講《系統與機器學習》,介紹TPU最新進展以及谷歌在可擴展機器學習方面的工作。英偉達首席科學家Bill Dally、Facebook賈揚清等也發表演講。
機器學習有可能解決世界規模的難題。在2008年美國工程院列出的「21世紀重大工程挑戰」(Grand Engineering Challenges for 21st Century)中,有很多都是可以用機器學習解決的,包括完善城市基礎設施、推進健康信息學、增強虛擬現實以及提升個性化學習。
但是,要支持重大工程問題,也就需要大規模可擴展的機器學習。現在,ML不斷發展,以利用諸如GPU,TPU,CPU以及這些硬體構成的集群。大學和行業研究人員也一直在使用這些新的計算平台,從數據、模型等多個維度擴展機器學習。
ScaledML:支撐20億人的機器學習
正是在這樣的背景下,Scaled Machine Learning(ScaledML)大會應運而生,將在各種計算平台上運行和擴展機器學習演算法的研究人員聚集到一起,展示和交流彼此的角度和思維。
與新智元之前介紹過的系統機器學習大會(SystemML)一樣,ScaledML近年來也愈發受關注,2018年的票,700多張,據說是放出來不到一小時就搶光。
ScaledML大會的組織/發起人之一是斯坦福大學兼職教授、深度學習和計算機視覺初創公司Matroid聯合創始人Reza Zadeh。ScaledML 2018的嘉賓陣容大牛如雲,除了組織人Reza Zadeh:
Andrej Karpathy,特斯拉AI總監
Jeff Dean,谷歌大腦負責人
Ion Stoica,伯克利RISE實驗室負責人
Francois Chollet,Keras作者、谷歌研究科學家
Bill Dally,英偉達首席科學家、斯坦福教授
Jennifer Chayes,微軟新英格蘭研究院和微軟紐約研究院院長
Simon Knowles,Graphcore聯合創始人兼CTO
Anima Anandkumar,亞馬遜深度學習首席科學家,加州理工教授
Ilya Sutskever,OpenAI研究總監
賈揚清,Facebook AI基礎設施總監
英偉達首席科學家、斯坦福教授Bill Dally指出,深度學習正在助推人工智慧革命,在教育、交通、醫療和圖像等領域,越來越多的研究人員擴展深度學習——微軟的圖像識別從2012年到2015年模型增長了15倍(從8層神經網路、1.4 GFLOP,變為152層22.6 GFLOP),百度的語音識別DeepSpeech,從2014年到2015年一年之間就增長了10倍,由此也開啟了硬體革命。如何在摩爾定律之後繼續擴展?稀疏性、僅用4-6位來表示權重,支持稀疏權重和碼本的高效推理引擎(EIE),以及新的訓練方法。
Graphcore作為最近極受關注的AI晶元初創公司,其聯合創始人兼CTO Simon Knowles介紹了他們的晶元IPU的特點。Knowles特別提到,小批量(批量大小在4~16之間)SGD得到的模型是最好的,機器處理非常小的、能並行的批量最有效。此外,我們還需要採用其他高效利用內存的演算法,比如用計算換存儲,以及可逆模型(reversible models)。
最後,作為Facebook AI基礎設施總監的賈揚清,介紹了Facebook如何利用機器學習,包括Facebook用於機器學習的硬體和平台、框架。作為支撐20億用戶的超大平台,Facebook的機器學習流程如下:
其中,Facebook機器學習平台FBLearner Flow的流程如下。這一平台要能方便地在不同的產品中重複使用多種演算法,並可以延伸到成千上萬種模擬的定製試驗操中,輕鬆地對實驗進行管理。FBLearner Flow提供了創新性的功能,比如從流水線定義和對Python編碼進行自動化平行移用中自動生成用戶界面(UI)試驗。
Jeff Dean主題演講:系統與機器學習
下面,我們重點介紹Jeff Dean在ScaledML 2018的演講《系統與機器學習》(Systems and Machine Learning)。演講中,Jeff Dean主要介紹了兩方面,一是谷歌如何利用機器學習解決一些重大的問題(比如天文、醫療),二是他們如何應對在規模上變得越來越大的機器學習難題。
演講從機器學習系統開始。他首先介紹了通用處理器性能趨勢,指出經過數十年的指數式增長,單核性能保持穩定。
就在那時深度學習創造出了巨大的計算需求。在terabyte甚至petabyte大小的訓練數據集上訓練強大卻昂貴的深度模型。再加上AutoML等技巧,可以將期望訓練算力擴大5到1000倍。
在系統中使用昂貴深度模型的推理,有以下特點:每秒數十萬的請求;延遲要求幾十毫秒;數十億用戶。
機器學習系統能解決21世紀重大難題:城市基礎設施、醫療、人腦逆向工程
在2008年美國工程院列出的「21世紀重大工程難題」中,14個問題里,至少有8項,也就是一半多,都能用到機器學習,甚至用機器學習去解決,包括環境問題、健康、醫藥、城市基礎設施,以及人腦的逆向工程。
在城市基礎設施問題中,Jeff Dean以谷歌Waymo自動駕駛為例:自動駕駛涉及到大量的數據、Waymo每周都會行駛2.5萬英里,大部分是在複雜的城市道路上,在2016年,在模擬器上產生的數據量是10億英里。因此,需要用到深度學習。
在健康問題上,谷歌用深度學習分析糖尿病視網膜圖像,演算法的準確率已經超越了人類醫生。
不僅如此,谷歌還使用深度學習視網膜圖像分析來預測心血管疾病突發風險。使用深度學習來獲得人體解剖學和疾病變化之間的聯繫,這是人類醫生此前完全不知道的診斷和預測方法,不僅能幫助科學家生成更有針對性的假設,還可能代表了科學發現的新方向。
此外,在預防性醫療保健任務上,給定一個大量的去識別醫療記錄的訓練數據,我們是否可以預測不在訓練集中的患者的有關情況,比如患者將在未來N天內再次入院嗎?患者入住的可能住院時間是多少?現在對患者最有可能的診斷是什麼? 醫生應該考慮使用哪些藥物?該對患者做哪些檢測?下個月哪些患者出現什麼癥狀的風險最高?
為此,谷歌聯合幾大頂級醫院和醫學研究機構,發表了他們迄今最大的電子病例深度學習研究。
還有預測分子結構和性質:
在人腦逆向工程方面,谷歌和馬克思普朗克研究所等機構合作,首先從理解人腦神經網路圖像開始,重構生物神經網路,已經取得了一些進展。
關於神經系統如何產生精確的、時序運動行為,並且進行強化學習,研究人員提出了一些假設,這個項目的目標,就是完整重建用於連接和測試這些特定假設的連接。目前,使用馬克思普朗克研究所的數據,研究人員已經生成了大約6000億個體素。
他們還提出了一種模擬生成神經網路的演算法「Flood Filling Networks」,可以使用原始數據,利用此前的預測,自動跟蹤神經傳導。
機器學習系統能解決21世紀重大難題:設計科學工具
在設計科學工具方面,自然是TensorFlow。作為基礎框架,TensorFlow能支持很多工具開發,這些工具能夠用來尋找行星、設計新的感測器,用來監測非法森林採伐,以及安裝在奶牛身上,讓農場主了解每頭牛的健康狀況。這裡就不多介紹了,大家想深入了解可以看視頻/下載PPT(文末有鏈接)。
自動機器學習AutoML:超越機器學習專家,並且給人以啟發
目前,機器學習的解決方案是由ML專家設計模型或網路,在大數據和超強計算力的支撐下得出。但是,眾所周知,ML專家少,如何應對這一點。從去年開始,Jeff Dean就在他的演講中頻頻提到「要用計算力替代ML專家/ML專業知識」,而事實證明,這一點確實可行。
如今,谷歌AutoML的概念已經深入人心。谷歌使用神經網路自動搜索和優化神經網路架構,不僅迭代速度更快,而且最終性能也更加優越。
Jeff Dean特別指出,由頂級機器學習研究人員設計的模型,在利用硬體的效率和模型大小上,都被AI設計的模型所超越。AI設計的模型,與人設計的結構非常不同,很多都是人不會想到,也不會去走的路,比如沒有池化層,有很多跳躍的連接。但是,從中還是能看出一些底層的共通點,也對今後人類設計和優化網路結構給予了啟發。
軟體需求改變硬體結構:谷歌TPU最新進展
因此我們需要更多的計算力,而深度學習正在改變我們設計計算機的方式。深度學習具有的兩種特殊計算性能:可以降低精度,浮點計算;出現了很多專門的深度學習模型運算。
為此,谷歌研發了TPU,第一代TPU是用於神經網路推理的晶元:92 T ops/秒 of 8位 量化整數運算,用於搜索請求、神經機器翻譯、言語和圖像識別、AlphaGo比賽等。
第一代TPU對推理起到了巨大的幫助,但不能做訓練。對於研究者的生產力和不斷增多的問題來說,加快訓練速度至關重要。於是,谷歌推出了第二代TPU,一個TPU由四個專用集成電路組成,配有64GB的「超高帶寬」內存。這一組合單元可以提供高達180 teraflops的性能,內存為64 GB HBM, 2400 GB/秒mem BW。
Jeff Dean介紹了谷歌TPU的最新進展,能支持圖像識別、機器翻譯更多的模型,接下來還預計推出基於Transformer的語音識別和圖像生成,以及DeepVariant基因檢測等新模型支持。
從去年底到現在,再次將訓練時間縮短。
今年下半年,谷歌計劃增加一個集群選項,讓雲客戶將多個TPU聚合成一個「Pod」,速度達到petaflop的範圍。而當時內部使用的Pod包括64個TPU,總吞吐為11.5 petaflops。這一點,在昨天的TensorFlow開發者大會上也有介紹。
Cloud TPU是谷歌設計的硬體加速器,為加速、拓展特定tensorflow機器學習workload而優化。每個TPU里內置了四個定製ASIC,單塊板卡的計算能力達每秒180 teraflops,高帶寬內存有64GB。某些程序只會對CPU、GPU、TPU進行微小的修改,某些程序通過同步數據並行度進行縮放,而不能在TPU pod上進行修改。
當然,Jeff Dean重點推薦了谷歌剛剛發布不久的Cloud TPU。谷歌設計Cloud TPU是為了給TensorFlow的workload提供差異化性能,並讓機器學習工程師和研究人員更快速地進行迭代。
如Resnet,MobileNet,DenseNet和SqueezeNet(物體分類),RetinaNet(對象檢測)和Transformer(語言建模和機器翻譯)等模型實現可以幫助用戶快速入門:https://github.com/tensorflow/tpu/
使用單個 Cloud TPU,訓練 ResNet-50 使其在 ImageNet 基準挑戰上達到期望的準確率。
在未來,我們將如何建造深度學習加速器?
在Arxiv上的機器學習的論文逐年增長,速度已經超過摩爾定律。如果你現在開始做ASIC,大約兩年後能夠流片,而這款晶元需要能夠持續使用3年。換句話說,必須看清楚未來5年的技術發展,但是,我們能夠看清嗎?怎樣看清?
一些必須考慮的問題包括精度、稀疏性和嵌入等等。Jeff Dean說,因為不得不直接在ML模型中進行批處理(batching),他常常感到很頭痛。
極低精度訓練(1-4位權重,1-4位激活)能否適用於通用問題?我們應該如何處理疏密混合的專家路由?如何處理針對某些問題非常巨大的嵌入?我們是否應該專門為處理大的批量建立機器?至於訓練演算法,SGD一類的演算法還會是主流訓練範式嗎?像K-FAC一類的大批量二階方法會是更好的選擇嗎?
在System for ML這節,Jeff Dean談了機器學習如何直接影響系統。現在,很多系統實際上都沒有用到機器學習,但這一點應該得到轉變。一個很好的例子就是高性能機器學習模型,這也是谷歌大腦最近在從事的一個研究重點。
對於大規模模型來說,並行計算很重要,模型的並行也很重要。讓不同的機器計算不同的模型,或者模型的不同部分,就避免了單台機器內存不足的問題,將來讓模型擴展到更多機器上也更加方便。
但是,如何將模型分布到不同機器上並且取得好的性能是很難的。Jeff Dean以下面這個網路為例,比如有兩個LSTM,有Attention機制,在頂層有Softmax,你可以將方框中的部分放到不同的GPU卡上,因為這些部分都有同樣的參數,這些層也不用移動。
此外,谷歌大腦還在進行一項研究,用強化學習來替代一部分硬體上的計算。你將計算視為運算元和dependencies組成的graph,然後給一組硬體,比如你想在4塊GPU或者8塊GPU上運行這個模型,結果整個過程成了很好的強化學習過程(見下圖)。
結果:比人類專家要快19.3%(神經轉換模型)和19.7%(InceptionV3圖像模型)。
之後,谷歌大腦將上述研究泛化,提出了一個層次模型(Hierarchical Model),將計算圖有效地放置到硬體設備上,特別是在混合了CPU,GPU和其他計算設備的異構環境中。這項研究提出了一種方法,叫做「分層規劃器」(Hierarchical Planner),能夠將目標神經網路的runtime最小化,這裡的runtime包括一次前向傳播,一次BP,一次參數更新。
為了測量運行時間,預測全部在實際的硬體上運行。方法完全是端到端的,擴展到包含超過80,000個運算的計算圖。最終,新方法在圖中找到了高度細化的並行性,比以前的方法大幅提高速度。
接下來,Jeff Dean介紹了谷歌大腦的研究,用ML模型替代資料庫組件。他們將神經網路應用於三種索引類型:B樹,用於處理範圍查詢;哈希映射(Hash-map),用於點查找查詢;以及Bloom-filter,用於設置包含檢查。
B-tree實際上可以看做模型。數據的累積分布函數(CDF)可以作為索引。舉例來說,如果鍵的範圍在0到500m之間,比起用哈希,直接把鍵當索引速度可能更快。如果知道了數據的累積分布函數(CDF),「CDF*鍵*記錄大小」可能約等於要查找的記錄的位置,這一點也適用於其他數據分布的情況。
在測試時,研究人員將機器學習索引與B樹進行比較,使用了3個真實世界數據集,其中網路日誌數據集(Weblogs)對索引而言極具挑戰性,包含了200多萬個日誌條目,是很多年的大學網站的請求,而且每個請求都有單一的時間戳,數據中含有非常複雜的時間模式,包括課程安排、周末、假期、午餐休息、部門活動、學期休息,這些都是非常難以學習的。
對於網路日誌數據,機器學習索引帶來的速度提升最高達到了53%,對應的體積也有76%的縮小,相比之下誤差範圍稍有加大。
精確了解數據分布,可以大幅優化當前資料庫系統使用的幾乎所有索引結構。
這裡有一個關鍵點,那就是用計算換內存,計算越來越便宜,CPU-SIMD/GPU/TPU的功能越來越強大,在論文里,谷歌大腦的研究人員指出,「運行神經網路的高昂成本在未來可以忽略不計——谷歌TPU能夠在一個周期內最高完成上萬次神經網路運算。有人聲稱,到2025年CPU的性能將提高1000倍,基於摩爾定律的CPU在本質上將不復存在。利用神經網路取代分支重索引結構,資料庫可以從這些硬體的發展趨勢中受益。」
Jeff Dean說,這代表了一個非常有前景且十分有趣的方向,傳統系統開發中,使用ML的視角,就能發現很多新的應用。
那麼,除了資料庫,ML還能使用在系統的哪些方面?一個很大的機會是啟發式方法。計算機系統里大量應用啟發式方法,因此,ML在用到啟發式方法的地方,都有機會帶來改變。
只要現在使用啟發式方法的地方,都存在改善的機會
編譯器:指令調度,寄存器分配,循環嵌套並行策略
網路:TCP窗口大小決定,退避重傳,數據壓縮
操作系統:進程調度,緩衝區緩存插入/替換,文件系統預取
作業調度系統:哪些任務/ VM要在同一台機器上定位,哪些任務要搶先……
ASIC設計:物理電路布局,測試用例選擇
許多程序都有大量可調的命令行標記,通常不會從默認值中更改。
所有都可以元學習(meta-learn)
ML:
學習位置決定
學習快速內核實現
學習優化更新規則
學習輸入預處理流程步驟
學習激活函數
學習針對特定設備類型的模型架構,或針對移動設備快速推理的模型架構,學習哪些預訓練的組件可重用,......
計算機體系結構/數據中心網路設計
通過自動測試設計空間來學習最佳設計性能(通過模擬器)
在這些設置中取得成功的幾個關鍵:
(1)有一個數字指標來衡量和優化
(2)具有清晰的介面,可以輕鬆地將學習整合到所有這些系統
目前的工作:探索API和實現
基本的想法:
在某些情況下做出一系列選擇
最終獲得關於這些選擇的反饋
即使在分散式設置中,也可以以非常低的開銷工作
支持核心介面的許多實現
總結:ML硬體尚處於起步階段。更快的系統和更廣泛的部署將導致更廣泛的領域取得更多突破。我們的所有計算機系統核心的學習將使它們更好/更具適應性。
ScaledML資源匯總
介紹完Jeff Dean這將近1小時的演講,你會發現ScaledML絕對是一場乾貨爆棚的大會。
所有講者的視頻和Slides都在這裡:
https://www.matroid.com/blog/post/slides-and-videos-from-scaledml-2018
英偉達首席科學家Bill Dally的PPT:https://www.matroid.com/scaledml/2018/bill.pdf
賈揚清大神的PPT:https://www.matroid.com/scaledml/2018/yangqing.pdf
Keras作者大規模深度學習PPT:https://www.matroid.com/scaledml/2018/francois.pdf
註定是一個忙碌的周末,學習吧!
※谷歌最慷慨排第二,最摳門的亞馬遜卻高居榜首
※顧險峰:技術爆炸的親歷觀察
TAG:新智元 |