多核計算芯片領域國際權威Kunle Olukotun教授:解讀用摩爾定律擴展機器學習性能
4月18日,由鯤云科技協辦的2018全球人工智能應用創新峰會在深圳落下帷幕,一場聚焦于人工智能落地應用的高端峰會暫告一段落。而峰會所傳達的最新科研成果和前沿思想卻在持續發酵。
峰會上,鯤云邀請到了來自全球人工智能各個領域的權威大咖進行個人演講,分享他們的最新觀點。本文所分享的《摩爾定律對機器學習的性能提升》,便是由其中一位大咖——Kunle Olukotun教授帶來的。
Kunle Olukotun是斯坦福大學教授,Afara芯片創始人,UltraSPARC T1 芯片架構師。是多核計算芯片領域國際權威。
在他的演講中,Kunle Olukotun教授介紹了DAWN(數據分析的下一步)項目。 其中包括一系列用于開發機器學習加速器的算法,方法和工具。這些加速器可由具有特定領域知識但沒有硬件或機器學習背景的人員開發。通過忽略多核鎖定; 低精度算術;并行編程語言和設計空間探索,該項目幫助提供高性能,高生產力和高效率的機器學習實現。
Kunle Olukotun 教授
今天非常高興跟大家講一下“用摩爾定律擴展機器學習性能”,我們這個項目的名字叫做下一階段的數據分析。
機器學習的興起
最近在影像識別、自然語言處理的進步,都是由機器學習所驅動的。這些應用已經在整個社會產生了非常重大的影響,我們覺得未來可能會出現自動駕駛的汽車,另外有一些更個性化的藥物,比如根據基因序列產生出來的。它的藥物作用是專門為你的基因所創造出來的。還可以進行醫療的診斷和預測。預測的質量有可能比醫生預測的質量更高,所以機器學習有非常大的潛力。
開發高質量的機器學習應用,非常具有挑戰性。前景非常好,但要開發應用程序卻非常具有挑戰性。這需要我們有深入的機器學習的知識、定制的工具以及這些要素如何組合以實現高性能的系統。
DAWN 提案
我們研究的項目包括什么?只要有數據以及某一個領域專業的知識,我們可以使任何人建立起自己的產品級機器學習產品。這也意味著這樣的人不需要有機器學習方面博士學位,也沒有必要成為一個DB系統的專家,更不需要理解最新的硬件。如果不了解最新硬件,不具備這方面的情況下,機器學習可以怎么樣做呢?
20世紀80年代的機器學習
機器學習在20世紀80年代,這里顯示的是例如影像識別或者自然語言處理任務的準確度以及它跟你對于機器學習的算法所提供的數據規模的關系。
80年代,當我們第一次討論機器學習時,大家知道怎么樣建立起一個多層神經網絡。那個時代,一個普通的算法表現反倒更好,機器學習表現沒有那么好。因為機器學習需要更多計算、更加復雜的模型。當然,機器學習有了這些之后,就能超過傳統的算法。這就是為什么現在對于機器學習有那么多高期望。
軟件 1.0 vs 軟件 2.0
換句話說,在說到軟件2.0,就是實現的一個概念,軟件1.0大家都懂,先寫代碼,寫完之后還要理解某一個領域,再把這個領域的專業知識進行應用。這樣就可以做一個算法出來,然后可以把這個算法放到一個系統中。但軟件2.0就不一樣了。2.0你要做一個模型,就是一個神經網絡,然后要把一些數據放到一個神經網絡的架構中。軟件2.0中最重要的一點是訓練的數據量和能夠訓練一個非常復雜的神經網絡的能力。這是要看計算能力了。訓練數據就是編程2.0的關鍵。
訓練數據的機遇和挑戰
我現在想跟大家說一下訓練數據。我們經常說訓練數據就是新時代的石油。如果你想要做一些全新的基于神經網絡的系統,就需要訓練數據,也必須要標簽。你要知道這是一個貓,那是一只狗,那是一部車。如果這是很簡單的貼標簽,那網上隨便誰都可以做。但如果要看一個非常復雜的圖像,比如診斷一個人有沒有患癌,就需要一個專家。
呼吸管主要想法
這種訓練數據的獲得就更加難。傳統訓練的另外一個問題是,標簽是靜態的。但其實你要解決的問題不同,可能把這個標簽改變了。但這個訓練數據不會進行進化。我們做model時就在想怎么樣才能更加容易更加高層次的生成訓練數據,讓我們更加容易的創造更多的訓練數據。我們叫做弱監督,不再給很多標簽,而是有更多的噪音輸入,給它們進行訓練。
整個系統看起來像是這樣的,用一個標簽功能。比如你看到這個化學物品,可能這個人得了那種病,就可以生成一系列標簽功能,再把它跟數據合成。這樣就可以去噪音,可以知道哪個標簽是比較好用的,哪個標簽成功率是90%,哪個標簽只有50%的正確率。在基于有概率的標簽,就能夠做一個噪聲感知的判別模型。
我們的目標是希望能夠用這個創建應用程序。比如這是一個知識庫,我們想做的事情是讓這個神經網絡的訓練變得更加容易,希望讓這個訓練的數據更加容易。解決方案就是創造另外一個全新的神經網絡模型。如果要讓我們更加容易的做這個神經網絡,讓軟件2.0做得更加容易,要做更多神經網絡的訓練,要做更多計算。
機器學習受計算限制
這個機器訓練模型是受到計算能力所限制的。百度的工程師說可能需要讓計算性能改善100倍。我們怎么做到?比如這個微處理器的改善,這是在過去40年微處理器改善的趨勢,我的研究團隊參加了這個研究。在這里會看到最頂層的是摩爾定律。每隔18月或者2年處理器性能會翻一番。但這個單線程的性能已經達到一個頂點,主要是因為功耗的問題,因為功耗是有限制的。這就限制了我們進行計算的能力。
當然,這也就影響了隨之的表現以及影響了整個行業。這個行業就在一個芯片上多放一些核,就能有效使用能耗,不需要一個芯片把所有的事都做了。我也參與到這個多核的技術研發中。說到能耗和性能時,可以說這個能耗是效率乘性能就等于整個能耗。你就會知道功率是固定的,但你想要做的事情是希望它的性能可以改善,性能改善就可以訓練更加復雜的神經網絡的模型。
每年機器學習Arxiv論文
但問題是軟件的算法也沒有在原地踏步。這就給我們看到Arxiv的論文,在過去十幾年,關于機器學習的論文的增長,它的增長是比摩爾定律更快。我們看到有多新的想法不斷創造出來,但是我們沒有辦法去執行這些好的想法。
要懂執行這些算法的硬件,我們需要的時間更加長,它比軟件算法的改善需要的時間更長。你的Arxiv設計時間大概需要兩年。運用在Arxiv的想法在它做完時就已經過時了,因為設計時間那么長。
所以我們必須找一個更加靈活的方法解決這個問題。我們到現在還不知道到底是要讓這個通用的機器設計怎么進行設計,而且現在的機器視覺想做的東西可能跟自然語言不一樣,跟決策也不一樣。比如商業決策或者其他地方的決策,也是不一樣的。我們當然想要加快機器學習的速度,希望它們至少能夠增加100倍。另外我們也希望讓它每瓦特的性能提高,讓我們可以在TB甚至PB上的大數據用實時/交互式機器學習。我們也可以開發一個神經架構。
關鍵問題和方法
現在最重要最核心的問題是怎么樣在得到每一瓦類ASIC性能同時又能得到處理器一般的靈活性。這看起來是互相矛盾的,但我覺得有解決方法。我們必須要同時改善算法、編程語言、編譯器和硬件架構。
硬件感知的機器學習算法可以改善效率,舊的計算模型也是前人開發出來的,他們要決定人來開發算法,計算是確定性的,因為這個人必須要知道到底怎么樣去進行調試。但在軟件2.0應用的底層模型是基于神經網絡的,他們是根據概率的機器模型,是由數據進行訓練的。而且技術很有意思,它們不需要是確定的,也不需要永遠都是100%正確的,只需要在統計學上正確就可以了。既然它只需要統計學上正確,那我們有很多機會來改善它的性能,可以使用基礎性的計算模型來改善。
方法一:硬件感知機器學習算法,可顯著提高效率
現在說說用什么樣的方法、算法做這個模型。它是改善或者最小化一個損失模型或者所謂的Loss function。我們有很多數據或者訓練的例子,可能有數以十億計的數據,其中有很多不同的機器與學習的方法,能夠做分類或者深度學習等等。我們最重要的進行優化的方法是大家可能都熟悉的隨機梯度下降。我們看著一個例子,就可以估計漸變。反過來,也可以看到某一個模型點,然后就可以推到一個訓練集的數據點。有很多次迭代,最終得到最優化的模型,可以通過非常小的程序迭代來進行改善。
這個迭代的機器學習是有兩種效率需要看。
1、統計學效率,我們到底需要做多少次迭代才能得到最高質量的訓練結果
2、硬件效率,每次迭代需要多長時間。我們進行訓練的總時間,是越低越好、越少越好,但我們需要進行一個取舍和衡量。
我們是不是要改善一個硬件效率,讓統計效率稍微低一點。隨機梯度下降法的核心是可能有數十億個小的步驟。你可以問一個問題,我們能不能夠并行做一個事情。這看起來是一個順序的算法,但可以并行做。怎么樣并行做?我在教我的學生時,你在放你的數據時,必須要鎖了它,所以做一個已經編碼的SGD。但鎖了之后發現它做得沒有那么好,因為加了更多處理器時會變得更加慢。
另外一件事情是低精度。低精度使用的能量能源會低了,另外存儲的內容也會下降。也能夠把你所需要的帶寬盡量降低。既然你可以同時并行的處理計算更多信息。比如有8字節數據而不是16字節或者32字節的數據,也能增加吞吐量。這是我們經常要做的,比如在TPU、FPGA都在用。它最大的問題是準確性會降低。剛才說要做判斷,低準確性是可以的。我們以前覺得訓練至少需要16位的準確性。但我們做了一個高準確率低精度,我們能夠隨著更接近最佳值時把它的漸變變得更加小,我們在逐漸靠近中心。
方法二:編寫一個機器學習程序并在所有這些體系結構上高效運行
加速器上可以有更好的效率,我們把機器學習的算法映射到加速器上,可以看到這些機構,它們也有一個編程模式。比如說有集群信息、GPU、FPGA。我們有一個算法,如果想進行有效的訓練,需要在硬件的架構上進行實現。我們對于這個算法的描述以及有效的執行之間,是有一條鴻溝的。
因此,我們可不可以編寫一個機器學習程序,它能夠在這些體系結構上都高效運用。這樣就可以填補這個鴻溝了。我們把這個叫做適定于特定情況的語言?,F在有AI的應用,把不同領域的語言結合起來,他們專注于這個應用不同的組成部分。比如有一個比較稠密或者稀疏的算法,還有算法中的關系。比如你的重點是不是圖像的算法。
總的來說,有各個不同領域的語言,把它結合起來,你怎么樣把它組合起來。我們可以使用一個Delite DSL框架,可以在不同領域進行應用。我們有一個Delite DSL框架,把它叫做OptiML。這里有一些綠點,我們希望把它們分成群,有藍色的X。首先把每一個樣本分配到最近的平均值,計算到當前平均值的距離。將每一個群集移動到分配給他們的點的平均值。在這里有一個高層次的描述,可以在多核集群GPU上進行應用,甚至是FPGA。
我們看一下TensorFlow,也是注重于機器學習的,也使用了很多OptiML中使用的想法,它也是高性能適用于不同領域的語言。這里有一個高度抽象化,它比TensorFlow做得更好,而且同樣給出描述。我們需要以這個領域為主的語言,就意味著需要不同的架構,所以就是Delite。任何人想開發以特定領域為基礎的語言,我們希望這個工作變得更加容易。我們在這當中有一個嵌入在Scala中的DSL和IR。
除此之外,我們在繼續改善機器學習,我們看到現在在做什么事情,也要看未來怎么做。怎么使用比較低的精度,稀疏性也是比較有意思的,很多開發者在關注稀疏新的神經網絡模型。我們想要這個東西是比較靈活性的,加速性也是可編程的。這是為什么我們在用FPGA,這個架構現在受到越來越多的注意力。
對于分層控制也一樣,在控制模板中也定義了哪些程序是要有加速器加速的,所以必須有加速器的范圍。另外也需要有方法進行嵌套,怎么樣進行合適的嵌套。最終用Spatial語言寫了SGD,我們有自定義語言做加速器范圍、內存分配,非常明確的內存傳輸方法和梯度計算。這是非常高層級的,讓開發者能很容易的進行定義。
現在的問題是FPGA總的表現怎么樣,這張圖給大家看到了,在不同的芯片中,全部把它們標準化成28納米,CPU在左邊,能耗效率是1-10。專用的硬件是右邊,有效率大概是1000-10000,CPU是最靈活和最能夠編譯的,專用的硬件是不可以進行編碼,但我們會發現專用的硬件比一個GPU的效率高1000倍。GPU比CPU大概好10倍。
但我們看看能不能夠在維持FPGA的靈活性的方法,但讓編碼性更加靠近CPU,能耗更加靠近GPU和FPGA。這就是一個變形模式的可重構架構,這是一個空間表示,可以關注到這個架構,以跟FPGA相似的方式進行理解。這里有PCU和PMU,模式記憶單元和模式計算單元。一個是更看帶寬的,帶寬能以不同方法配置滿足這個程序的需要。另外可以把它們組合到一起來滿足你們所需要的空間運用。
我們做了這個之后,如果跟25納米的這個比較一下,它的性能能夠改善95倍,每瓦的能耗能改善77倍。但我們能做很多事,這要看架構到底怎么做,它看起來是怎么樣的,怎么樣進行一個平衡。性能和能耗的取舍怎么樣,還有可編程性的取舍。這是我們最關注的東西和我們現在在做的事。我們非常希望軟件定義的硬件架構,能夠更加節省能耗,同時也能夠更加可編程,比FPGA的表現更加好一些。
總 結
我總結一下,我們的確覺得能一石二鳥,什么都能有,功率能做得很好,性能做得好,可編程性也非常高,但需要做全棧的方法,要綜合整合的方法做,需要算法,比如Hogwild和HALP,在語言和編譯器方面也需要進行改善,讓它們更好的更有效的進行執行。原有的語言是不夠的,需要高層級專門面向加速器的抽象語言,才能更好的理解這個域相關的語言和我們所需要的代表加速器的語言。我們需要一個中間的形式,就好象Spatial。
(本文來自鯤云科技微信號,多核計算芯片領域國際權威Kunle Olukotun教授在AI領域聲名卓著,希望小編上傳后可以分享給更多的工程師,方便大家了解國際AI技術最新發展趨勢。)
-
摩爾定律
+關注
關注
4文章
632瀏覽量
78934 -
算法
+關注
關注
23文章
4600瀏覽量
92646 -
機器學習
+關注
關注
66文章
8378瀏覽量
132415 -
AI芯片
+關注
關注
17文章
1860瀏覽量
34911
發布評論請先 登錄
相關推薦
評論