人工智能先驅阿蘭.圖靈曾設想過這樣一個機器,它擁有電子的大腦,以攝像頭為眼睛,以輪為腳,可以在鄉間漫步,這其實是阿蘭.圖靈對人工智能走入生活的一個憧憬。而在很長的時間之內,由于硬件條件的不成熟,智能只能從無形的算法入手,隨著深度學習研究的深入,在很多領域都取得了里程碑式的進展。
然而,要想讓人工智能真正融入人們的生活,則亟需解決算法在端側落地的問題,而芯片,作為銜接算法與場景之間的橋梁,無可避免地成為了一大挑戰。
本文中,地平線聯合創始人、美國西北大學楊銘博士,來和大家分享“在芯片上加速神經網絡用于視覺任務的挑戰”。
非常高興來到VALSE,來到美麗的大連,首先和大家分享一下人工智能芯片的話題,另外介紹一下地平線在最近兩年做的工作。由于最近的熱點新聞,大家對芯片這個話題比較感興趣,希望今天的分享能給大家一個概念:為什么人工智能芯片非常重要,它的研發具有哪些挑戰,都需要做哪些工作。
這是我要分享的幾個要點,先簡介一下地平線,接著介紹一下AI芯片的背景,包括AI芯片研發的必要性,以及現在主流的AI芯片的類型和選擇。隨后會介紹關于AI芯片的兩個主要研究,一個是Google TPU的第一代,這應該是目前公開資料最多的AI芯片,另一個是地平線研發的BPU,最后是關于AI芯片的一個總結。
地平線機器人成立于2015年,我們的愿景是希望能夠成為嵌入式人工智能的領導者,為大家提供高性能、低功耗、低成本、完整開放的嵌入式人工智能解決方案。主要業務面向智能駕駛、智慧城市、智慧零售等應用場景,為多種終端設備裝上人工智能“大腦”,讓它們具有從感知、交互、理解到決策的智能,賦能萬物,讓每個人的生活更方便、更安全、更美好。
從2015年7月開始運作,目前地平線已經成長為500人左右的公司,總部位于首都北京,主要進行算法研發、硬件研發、芯片研發;2016年在南京成立了第二個研發基地,包括應用開發、硬件開發;2017年在上海成立了第三個研發中心,主要目標是把自動駕駛產品和方案落地,同時在深圳也有一個分部,主要負責完成客戶支持、銷售服務工作。
地平線的主要核心團隊都具有計算機視覺與機器學習的背景,我們選擇了從計算機視覺出發轉向于硬件芯片開發。余凱博士是CEO創始人,黃暢博士負責基礎算法的研發,吳強博士是在計算機體系結構以及云端后臺服務器的專家,也負責南京所有的研發工作。
首先談談我們為什么需要人工智能?在經歷了PC互聯網和移動互聯網時代以后,未來10年最大的可能就是讓萬事萬物所有的設備本身都具備互聯能力和智能功能。什么是智能功能?就是能夠自主感受環境,能夠根據感受環境的結果自主做出判斷和控制。相信在未來的10年、20年,包括無人車、無人機,也包括攝像頭和玩具,所有這些設備慢慢都會具有智能功能,都會具有自主判斷能力,同時這些設備都會對人工智能提出更高的要求。過去的10年,由于人工神經網絡重新煥發出活力,為我們解決這些人工智能問題提供了可能。
近幾年來,神經網絡基本改變了我們對人工智能問題解決的范式,現在的基本模式是,數據入、結果出,由神經網絡解決問題,只要能夠定義好數據格式,標注好數據,就很有可能在短時間內得到不錯的解決方案,這也是人工智能被廣泛關注的重要原因。
同時,我們發現神經網絡是一種非常靈活的建模語言,可以有效描述各種問題,之前的嘉賓也都談到它確實能解決很多不同領域的問題。
神經網絡、深度學習正在慢慢改變著很多行業,首先是互聯網行業的廣告搜索業務,之后是語音識別、圖像識別,在金融領域也開始應用神經網絡。近兩年來,自動駕駛領域、醫學圖像識別、工業控制領域都逐步應用了神經網絡技術。
大規模地應用深度學習還需要解決哪些核心的挑戰呢?我們總結了三個主要問題。
第一:如果將AI和神經網絡應用到一些行業中去,必須對行業和應用場景有非常深入的理解,這些行業和應用場景有很多痛點,它們描述問題的語言和我們研究AI的語言并不是很兼容的。比如說我們講識別率是99%,大家就會覺得這就很準確了,而我們要表達的是在多數情況下我們的識別率是100%,少數情況的識別率是0%,平均下來才是99%。另一方面,很多行業如果需要AI的話,并不是應用技術,往往需要應用完整的解決方案或者系統,我們需要做進一步深入的工作,才能把技術轉化為系統應用起來,也就是讓算法和行業之間能夠有很好的交流和理解。
第二:目前還沒有低成本、低功耗,成本很經濟的硬件平臺。如果有了這樣很好的硬件平臺,應用范圍和難度也會降低很多。在各種行業中,包括無人車、無人機或者其它設備都具有不同的限制,比如功耗、成本,以及散熱性和可靠性等。因此,缺少低成本、低功耗、高性能的硬件平臺限制了大規模應用AI和神經網絡的解決方案。
第三:近年來,算法發展非常迅速,帶來的問題是人們的期望也不斷提高,算法的發展是不是能夠一直跟上期望值的增加呢?比如說隨便在一個應用場景只要應用神經網絡就能夠達到很好的性能,這是不能保證的。神經網絡存在解釋性的問題,它是一個黑匣子,用對了當然很好,如果性能很差,為什么差呢?這是很難解釋的一個問題。神經網絡是基于統計的,針對很少見的情況,比如說在自動駕駛中出現車禍的情況,訓練集能否覆蓋這種情況呢?在實際應用中很難給應用方解釋我們的方法是非常可靠的。
另外,雖然加大數據量可以解決一些問題,但是能不能夠把所有數據都標注呢?這也是值得思考的問題。AI或者神經網絡距離大規模應用有這樣三個問題,我們今天想談的是第二個問題,能不能先做好硬件平臺準備。
我們也看到在整個行業中,眾多公司中最近幾年最受益于AI發展的是NVidia。這也說明現階段,有了很好的硬件平臺才能做應用,才能讓各種行業應用AI算法。
為什么神經網絡適合專用芯片或者硬件來加速呢?神經網絡結構這幾年有很大發展,從計算角度給大家帶來了新的挑戰。首先神經網絡運算有大規模的并行性,所有運算都有共同基本單元,就是相乘累加,非常適合硬件實現的運算符方式。神經網絡運算中間會產生很多中間結果,這些中間結果并不會被重用,這與之前的通用計算方式很不同。在神經網絡計算中,無論是網絡的權重還是數據本身,對硬件帶寬的需求都很高。
這些新的挑戰使得原來非常強大的CPU并不能高效計算神經網絡,CPU計算方式還是串行的方式,即使有些指令可以處理多個數據。CPU設計花了很多精力優化多級的緩存,可以方便獲取數據,這對一般運算來說非常好的,但是對于神經網絡不必要。這些CPU的優化,如分支預測,讓一般運算非常高效,對神經網絡來說額外開銷,因此用CPU來訓練神經網絡效率是相對比較低的。因此我們發現近年來提出來很多CPU+X,對神經網絡做專門的運算加速。
AI片基本上等價于神經網絡加速,我們需要AI芯片的原因是,通過硬件工藝的提高已經很難大幅度提升計算性能,而需要專用芯片架構提高計算性能。例如,硬件工藝改進,隨著三極管數量增加,頻率更高,功耗不變,這條規律在2006年的時候已經不成立了;我們所熟知的摩爾定律,在2015、2016年也已經終結,單純通過硬件改善不太可能繼續提高計算性能,所以需要新的專用架構設計來幫助提高對神經網絡計算性能。
通常來講,根據之前提到的神經網絡計算的特點,神經網絡芯片能采取的針對措施有以下幾點:
1.由于有大量數據吞吐,可試圖降低數據量,讓芯片上保存更多的片上數據,存儲計算中間結果。
2.由于需平行運算很多,盡量用比較簡單的數據類型和數據大小,實現大量基本運算單元,不需要復雜的調度、分支預測、配置的管理,盡量減少管理調度所需芯片面積開銷。
3.神經網絡運算資源調度優化工作讓軟件去做,而不是用硬件實現復雜的調度。那么這個軟件是指哪些層面的軟件呢?后面可以會明確地提到。
下面介紹一下已有的神經網絡加速芯片的類型,我們可以看到在過去幾年中,很多層出不窮的xPU出現。
首先是GPU,具有很強大的并行計算能力,但能耗比較高,也是目前最成熟的一個軟件工具平臺,有很多開源社區軟件的支持;
其次是DSP,利用一些單指令多數據的計算單元,一次性提供超過100個字節的運算,優點是低功耗,并具有硬件支持的低開銷或無開銷循環及跳轉運算。問題在于DSP的指令集取決于其廠商與型號,不同型號的DSP的指令集都是不太一樣的,這樣給學習和編程開發造成了較大的困難。
FPGA是一種半定制化的硬件,采用編程方式,對片內門電路進行編程,配置片內RAM使用,具有一定的靈活性和可修改性。從編程的角度來看,FPGA采用硬件描述語言,調度連接已有的LUT等運算單元,開發難度高一些;從功耗和成本來看,FPGA采用CMOS工藝,功耗低比GPU低,但比DSP之類ASIC高。
對于TPU,在后面的工作中會提到。
最后是IBM做的仿人腦的芯片,芯片的單元只有激活狀態下才會工作,功耗會非常低。
設計AI芯片,主要有哪些挑戰呢?
1.設定合理恰如其分的目標。由于資源的限制,對行業理解的限制,設計一個放之四海而皆準、而全的芯片是很難的,如何去設定好支持哪些功能,如何設定好成本、功耗、可靠性的目標,這是最難的一個問題。另外,整個芯片設計流程周期長、成本高,并不能在實施期間隨意更改目標。
2.如何設計系統架構,包括指令集的設計,能夠讓架構盡可能滿足更多需求,實現更多類型的神經網絡,這是一件不容易的事情。
3.為了讓神經網絡芯片能廣泛可用,需要提供全面的工具支持,提高編程開發效率。而工具鏈的支持也是相當復雜的,需要訓練平臺,需要編譯器把神經網絡轉換成可運行模塊下載到芯片中去,需要模擬器在沒有芯片的時候可以模擬開發,并且能夠調試分析性能,能夠設計出參考模型。這一系列軟件工具鏈的支持,對AI芯片能否成功起著關鍵性的作用。
當然由于這是一個非常復雜的過程,而任何人的資源都不是無限的,總是要做一些非常痛苦的抉擇和權衡,在成本、開發時間、各種資源條件限制下做一個權衡。
對于神經網絡加速芯片,又會有哪些具體難題呢?
1.首先要確定支持的網絡子集。神經網絡多種多樣,新的算法層出不窮,到底要支持到什么程度,支持哪些網絡結構激活函數和操作。
2.支持哪些函數和數據類型,同時要考慮是否支持模型壓縮、量化方法,這些都需要在算法層面上對神經網絡目標做很好的設定。
3.設計芯片結構,比如片上內存和片下內存,片上內存當然越多越好,但是成本高,功耗和測試時間都會增加。盡量讓硬件本身簡易化,只完成神經網絡加速,把任務調度、任務優化交給軟件去完成。這些最終都需要對開發者透明,需要由中間件工具鏈來做優化,這也是工作量非常大的一項工作。
4.最后還要提供很多參考模型和設計,完成具體應用場景中的功能示例。
這是一個非常簡化的開發AI芯片的流程,從需求(MRD)開始,首先是算法的研發,要明確哪些神經網絡模型是最重要的,是需要支持的,是否能夠滿足應用場景的要求;之后會生成很多參考模型,實現Golden C,在設計的時候可以參考C的實現;右邊是芯片設計的過程,實現架構設計,實現核心神經網絡相關的編程,同時芯片需要訪問內存,訪問接口,需要IP集成,集成之后需要進行驗證,并需要實現FPGA平臺去做實際驗證;之后是后端設計,包括邏輯綜合、布局布線等;然后進行流片(Tapeout),這需要之前各種驗證都已經做得很充分之后,流片之后修改的機會就很少了,而且流片經濟成本和時間非常高。最后需要把硬件芯片放在一個硬件平臺上,啟動起來之后能夠開發中間件運行軟件。左邊是軟件相關工作,包括訓練平臺、編譯器、模擬器和調試器,最終做到應用,再測試??梢钥闯?,整個流程的工程量非常巨大。
具體介紹兩個例子。先看一下TPU,這是Google 2013年開發的,經歷了大約15個月,TPU的定位是對神經網絡加速的芯片,它可以在數據中心使用,15個月的開發時間已經是相當快的速度,功耗大概是75瓦。TPU上有256×256×8bit的矩陣乘法器,這是最核心的計算單元,所有的設計目標都是希望能夠讓這個乘法器效率最高。每個TPU指令都是由服務器通過PCIe總線發送回來的;然后通過指令把數據調到24兆的緩沖區,安排好數據,同時把神經網絡權重從外部DRAM調到芯片中去,讓矩陣乘法器不斷計算,并把中間結果、乘加結果存到4兆緩存區中去;最后再通過激活歸一化函數后存回到緩存區。可以看到TPU實現了一個非常直觀的神經網絡預測,并做了很多簡化和約束工作。
TPU的主要指令是從主存儲器中讀數據、讀權重,然后進行乘加,最后通過激活函數把結果寫進去。
對比之前提到的幾個原則,TPU首先做了一些限制,只支持神經網絡預測(inference),根據Google內部的業務的需求,主要支持MLP(Multi-layer Perceptron)網絡。它支持整數運算,通常為8bit運算,也可以進行16bit或32bit的運算,但處理速度會降低一半或者4倍。從存儲角度上設計了24MB的SRAM來存儲中間結果,權重也是通過SRAM調用進去。它把優化工作基本上都交給軟件來完成,芯片本身的架構沒有非常復雜的優化,主要優化是在于讓乘法器核心能夠持續運算,同時把其它的運算并行起來。從分析和處理的角度來看,TensorFlow和TPU是兼容的,TensorFlow能夠讓它的工作效率很高,因為很多Google軟件工程師針對TensorFlow和TPU進行了開發。
地平線也做了AI芯片,我們做的是什么呢?首先也是針對于神經網絡預測,同時這種預測還只針對圖像和計算機視頻的任務。我們做了一些限制,輸入是8bit 多通道的2D的矩陣,可以是灰度或YUV圖像。我們針對的就是圖像應用,目標是開發高性能、低功耗、低成本神經網絡協同處理器,通過編程方式改變算法架構和替換不同的神經網絡。
開發過程首先從MxNet的訓練開始,同樣支持TensorFlow網絡架構。主要支持8bit整數的運算,用芯片來實現的話,支持很多的數據類型成本和復雜度會提高。
我們的工作核心是把一個神經網絡模型編譯成我們支持的匯編語言,一方面我們知道具體的神經網絡模型,另一方面我們知道這是一個檢測算法,把檢測算法對應的模型和算法架構合并在一起,通過聯接器(Linker)得到機器語言的模型文件,其物理地址沒有完全確定,如果是真實芯片則確定物理地址在芯片上運行,如果是軟件模擬器就則可仿真運行。
我們會提供比較全面的開發平臺支持,從算法角度來說,能夠在不同尺度下進行圖象識別,在不同的視頻中進行時間維度上的融合,可以支持分類、檢測、跟蹤、識別等任務。
從芯片架構來講,一個比較創新的思考方式是彈性的Tensor Core。把圖像所需要的一些操作(卷積、池化等)進行硬件化,同時有很多片上內存,通過一個data routing bridge從SRAM中選擇這些操作所需的數據并同時存儲,把存儲跟運算作為兩個資源,通過編程方式靈活調動,實現更多的算法。
這是圖像所需要的一些基本操作,除了卷積以外,還包括升采樣,降采樣等操作。
第一代芯片在2017年流片,目前已經生產出來了,它支持單路高清視頻進行30幀的物體檢測、跟蹤和識別。第二代芯片支持6~8路的物體檢測識別,包括像素級的分割和識別。
這就是我們在2017年12月份發布的產品,包括兩個系列,一個是面向自動駕駛,叫做“征程系列芯片(Journey)”;一個是面向智能攝像頭的,叫做“旭日芯片(Sunrise)”。它們可以實現1路視頻檢測,同時處理200個物體,并且功耗很低,可以實現物體級別的檢測識別。
這是我們能夠實現的一些功能,包括大范圍的非常密集的場景下的人臉識別(先抓拍,再識別人臉屬性),在本地可以做到一萬人左右的識別,我們已經有了樣機,大家可以體驗。也包含視頻結構化的應用,在復雜的交通環境下,檢測機動車、非機動車、行人,區別屬性、車牌,這也是非常實用的功能,如果把這些功能應用到攝像頭中可以節省很多帶寬和成本。
這是第二代芯片架構,能達到像素級別的識別,這是今年在拉斯維加斯的車上實測的結果,另外一個是在三藩市實時運行的結果,包括物體分割和檢測。
總結一下,在未來10-20年AI功能將無處不在,AI芯片將是非常必要的基礎設施,只有芯片成功才能讓AI算法真正在生活中得到大規模應用。我們相信我們公司會堅定地致力于“算法+芯片”,把算法和芯片兩者結合,做一些創新的、有趣的工作,把AI算法真正推向大家的生活中去,謝謝大家。
作者簡介:
楊銘博士,地平線(Horizon Robotics)聯合創始人 & 軟件副總裁,Facebook 人工智能研究院創始成員之一。楊銘曾任 NEC 美國研究院高級研究員,專注于計算機視覺和機器學習領域研究,包括物體跟蹤、人臉識別、海量圖片檢索、及多媒體內容分析。他在 Facebook 工作期間負責的深度學習研發項目 DeepFace 在業界產生重大影響,被多家媒體廣泛報道,包括 Science Magazine、MIT Tech Review、Forbes 等。他領導 NEC-UIUC 團隊參加 TRECVID08/09 視頻監控事件檢測評測,獲得最佳成績;參與 NEC 團隊 ImageNet2010 大規模圖像分類挑戰,獲得第一名。申請獲得美國專利15項。楊銘畢業于清華大學電子工程系并獲得工學學士和碩士學位,于美國西北大學電氣工程與計算機科學系獲得博士學位。他在頂級國際會議 CVPR/ICCV 發表論文20余篇,在頂級國際期刊 T-PAMI 上發表9篇論文,被引用超過7600次;多次擔任 CVPR/ICCV/NIPS/ACMMM 等頂級國際會議程序委員會成員,T-PAMI/IJCV/T-IP 等頂級國際期刊審稿人。
-
神經網絡
+關注
關注
42文章
4771瀏覽量
100719 -
人工智能
+關注
關注
1791文章
47183瀏覽量
238266 -
地平線
+關注
關注
0文章
340瀏覽量
14941
發布評論請先 登錄
相關推薦
評論