06.29 CCAI2018 丨韓銀和:如何設計機器人處理器?

機器人是否需要專用的芯片支持?要想開發機器人芯片,首先必須弄清楚是否有這方面的需求。一方面,儘管今天能實用的機器人數量還比較少,但在可預期的未來,很多人相信會誕生一批經濟適用、量大面廣的現象級產品,就像無人機、無人車一樣,由於其功能的豐富,其總數量甚至會達到百億級,超過個人電腦、手機的數量。如此龐大的應用空間,按照過去計算機的發展經驗,必然伴生孕育著新型計算系統,所以未來機器人系統需要芯片這一點比較肯定。接著,另外一個問題,是否需要設計專用芯片?今天現行的如CPU、DSP、GPU、神經網絡或他們的組合是否就夠用了?這個問題還需要從機器人的功能角度出發去分析。一方面,我們會賦予機器人更多的智能能力,使他能夠聽說看甚至決策;另一方面,機器人也將具有越來越強運動能力。而這些都是現行芯片所解決不好的,我們認為今天機器人無法大規模普及,和他們的能力不足直接相關,而這種能力除了算法方面的改進外,性能的大幅提升也是必要的。因此,我們認為需要設計面向機器人的專用芯片,以解決機器人在應用中的若干問題,為未來機器人的大發展提供硬件基礎。

現行機器人的計算系統

當前已存在著很多不同種類的機器人,這些機器人均已集成了不同類型的計算系統。在傳統工業控制系統中,可編程邏輯控制器(PLC)使用較廣,但在服務類機器人中,更多基於嵌入式通用處理器,以方便集成計算機軟件以及智能算法上的進步。本文以商業上應用較多的情感機器人、工業機器人和移動服務機器人為例,介紹這些機器人載體中所使用的計算系統,其他如軍事機器人、太空機器人、特種機器人在底層計算系統上有類似之處,就不一一介紹:

情感機器人:情感機器人主要功能是和人進行語音和視覺上的交流,是目前較為常見的一類機器人,這類機器人通常具有較強的語音和視覺處理能力,但運動能力較弱。為了快速開發,情感機器人通常使用主流嵌入式芯片提供計算能力,如ARM、Intel ATOM處理器等。當然,對情感機器人而言,還需要具有聯網功能,通過雲計算模式提供語音交互、問題回答等功能。

工業機器人

:工業機器人和情感機器人不同,這一類機器人通常限制在特定應用場景,和人交互不多,它們對對語音和視覺處理能力要求不高,但往往需要較強的實時運動控制功能,以完成特定任務。在工業機器人中,可編程邏輯控制器(PLC)使用較多,PLC是一種微處理器化的控制器,輸出側重於對電機等動力設備進行控制的模擬信號。PLC計算內核一般為單片機,51、PIC、AVR等單片機都有用於PLC中。PLC對單片機進行了二次開發,在穩定性和編程語言(使用電氣工程師所熟悉的梯形圖語言)等方面進行了優化。

移動服務機器人:常見的如掃地機器人、無人機、無人駕駛等,以完成特點服務功能,這類機器人的特點是應用場景複雜多變,運動能力強。需要具備自我定位導航能力和姿態控制能力。其背後使用的計算平臺和移動速度以及應用場景密切相關。速度較慢,硬件平臺使用嵌入式ARM芯片就可滿足計算能力需求。移動速度較快的,如無人機和無人駕駛領域,往往對環境感知處理要求也比較高,目前通常基於GPU提供算力支持。 由於快速移動機器人對計算能力需求較大,這一領域一個趨勢是專用ASIC芯片,如輔助駕駛Mobileye。最近,特斯拉也有相關專用芯片設計的計劃,國內也有創業公司如地平線正在開展這方面工作。

雲化的計算能力是未來機器人計算系統的一個發展方向。雲端引擎具有三個主要好處:(1)能提供更強大的計算能力,接入雲端的機器人自身不再需要裝自帶繁重的計算裝備;(2)能提供大數據存儲和分析能力,使機器人可以非常迅速地分享從大數據中挖掘出的規律和知識;(3)能提供多機協同能力。歐盟和美國在這方面部署了一些很有意思的研究工作。歐盟在2011年開展了RoboEarth研究項目,幫助機器人建立自己的互聯網和知識庫,為機器人提供一個巨大的網絡和數據庫來幫助其共享信息,並互相學習各自的行為、技能和環境,以達到一種經驗共享、互相學習的理想狀態。美國斯坦福大學等高校開展的RoboBrain項目,旨在建立一種新的、主要面向機器人的同時能供任何要執行的設備自由訪問的大規模知識引擎,相當於建立一套面向機器人的搜索引擎。

另一方面,樹莓派、Arduino等快速開發板,由於其極強的易開發性和接口豐富性,在一些較低計算量需求的控制場景也有應用。Intel中國研究院研發了基於FPGA的HERO機器人開發平臺,開發者可以根據應用自己決定和設計邏輯。

智能機器人芯片的主要負載總結

芯片的設計取決於負載的特點。要想設計面向特定領域的芯片,首先要清楚芯片上運行的主要負載特點。智能機器人和傳統計算機不太一樣,除了需要較強的智能計算外,還需要較強的感知交互能力、姿態控制能力、運動能力等:

  1. 感知交互負載:機器人的感知信息往往是多通道的,包含語音、視覺、觸覺、嗅覺等。感知信息的處理分為初級處理和智能處理兩大類。初級處理主要是對傳感器數據進行降噪、篩選等,主要用的算法核心包含傅里葉分析、小波變換等,智能處理主要是採用機器學習算法。交互則更多涉及語音、圖像合成等幾何計算算法以及深度神經網絡處理。
  2. 姿態控制負載:在一些立體移動機器人系統中,需要有較強的姿態控制功能。以多軸無人機為例,主要算法包含:對姿態傳感器進行去噪及融合的濾波算法,互補濾波和卡爾曼濾波用得較多;姿態算法,主要是根據濾波後的傳感器信息計算出自身在地理空間座標系中的三維位置,姿態平衡算法,一般採用PID(比例-積分-微分)算法進行反饋調節。算法的核心操作可以抽象為矩陣計算等。
  3. 移動導航負載:SLAM(同步定位導航)算法是機器人自主導航中使用較多的一類算法,根據前端傳感器的不同,又可主要分為激光SLAM和視覺SLAM, SLAM通常可分為前端預處理、匹配、地圖融合等三個大步驟。預處理主要是對激光、深度傳感器等數據進行優化,主要算法包含濾波算法等;匹配是將局部環境數據匹配到已經建立的地圖位置上,主要算法包含ICP(迭代最近點)、圖優化Bundle Adjustment計算等;地圖融合就是將新數據拼接到原始地圖中完成更新,主要算法有Bag-of-Words(BOW) loop closure(迴環)檢測等。儘管有很多步驟,SLAM算法的核心操作主要還是集中在圖形計算方面。
  4. 關節運動控制負載:機器人運動學是機器人運動控制的基礎,包含正運動學和逆運動學。正運動學是給定每個關節變量(角度或長度),求解機器人的位姿;逆運動學,即給定機器人的位姿,求解機器人各個關節的關節變量。正逆運動學求解,核心操作是矩陣計算,但由於規模大,對於高自由度機器人情況更糟。逆運動學方程求解過程比較特殊,使用GPU並不是特別高效。
  5. 控制決策負載:
    機器人控制決策有兩大類方法:基於專家系統和基於新型機器學習方法。強化學習方法由於考慮了與外界的交互作為系統優化指標,非常適合於機器人的控制決策中。在人機圍棋大戰中,Google的AlphaGo和AlphaZero就是採用了這一算法。在這一類負載中,核心操作主要是神經網絡。

除了上述這些主要負載需求以外,機器人芯片還有些特別的需求,比如要求更高的安全性和可靠性。

我們在智能機器人芯片設計上的一些探索

中科院計算所從2015年開始研製面向智能機器人的芯片,進行了一些初步探索,總體目標是希望能為未來具有為豐富功能和更強智能能力的機器人提供通用高性能計算平臺,下面就介紹我們在這方面取得的一些成果。

基於機器人負載特徵的分析結論,我們設計了一個取名為Dadu的機器人智能處理器平臺。這個名字最初來源於我們能支持大自由度的機器人,後來結合智能計算方面的擴展,形成了雙核結構:一個智能核和一個運動核。智能核為一個低功耗神經網絡處理器,其主要功能是加速視音頻感知交互負載和基於神經網絡的控制決策負載;運動核主要是一個高速的運動方程求解加速器和一些向量計算部件,其主要功能是加速逆運動方程求解和姿態控制及移動導航負載中用到的幾何圖形處理。

CCAI2018 丨韓銀和:如何設計機器人處理器?

圖1. Dadu智能機器人芯片

  1. 智能核

神經網絡處理器是當前芯片領域的一個研究熱點,商業上也已經有一些較為成熟的方案,如寒武紀的DianNao系列、Google的TPU系列、Intel的Movidius等。為了高效處理神經網絡中大量的張量操作,處理器通常設計為脈動陣列結構、2D PE陣列結構和乘加樹等結構。但由於神經網絡拓撲結構創新活躍,新結構層出不窮,不同網絡、不同層之間計算組織形式差異很大。當前,通用神經網絡處理器設計存在較為嚴重的“利用率牆”的問題,也即:由於固定的硬件結構和新的神經網絡數據流的不吻合,導致通用神經網絡處理器的內部計算資源利用率低的問題,比如Google的TPU,在運行AlphaGo時,整個PE的利用率為46.2%,運行LSTM網絡模型時,PE利用率更低,只有8.2%。

和TPU等定位不同,面向機器人的神經網絡處理器設計更側重於嵌入式、低功耗特性。提高並行效率,是打破利用率牆的重要手段,也是提高實際能效比的關鍵技術。我們在這方面做出了一些探索。

發表於2017年體系結構領域會議HPCA上的論文[1],我們首先從特徵圖(feature map)、神經元(Neuro)、神經突觸(Synaps) 三個層次研究了並行化的方法,並進而提出了神經網絡計算並行化劃分的八種方法: SFSNSS(單特徵圖、單神經元、單神經突觸)、SFMNSS、SFSNMS、SFMNMS、MFSNSS、MFSNMS、MFMNSS、MFMNMS。在此基礎上,我們提出了一種強靈活性的硬件數據流架構(FlexFlow),它的主要原理是其同時支持多種並行方式,利用多種並行方式的互補效應來彌補單一併行方式的不足,從而實現了卷積神經網絡的高效計算。

CCAI2018 丨韓銀和:如何設計機器人處理器?

圖2. Flexflow 結構

神經網絡計算中的卷積操作和數據通常是按照卷積核粒度去組織的,不同神經網絡、不同層的卷積核大小不一樣,會導致利用率和數據複用有較大變化。存在兩種數據級並行:卷積核內並行和卷積核間並行。卷積核內並行,是將屬於相同卷積核位置但是不同輸入圖層的n個像素同時進行卷積運算。每個操作將若干個數據權重對加載到PE,在整個卷積核窗口(k×k)重複這個操作,最後累加這些運算結果得到和數。卷積核內並行,是將同一個輸入圖層中的一個或幾個卷積核k×k窗口傳送到PE並行計算。對於深度卷積神經網絡的大部分層的圖層數量都很多,採用卷積核間並行方式,PE 的利用率很高。但是,在神經網絡的前幾層層,輸入圖層數量較少,卷積核比較大,卷積步長一般遠小於卷積核大小,從硬件利用率角度它們顯然更適合於通過卷積核內並行化來加速。

我們提出了一種 C-Brain結構[2],通過自適應的卷積核並行,可根據配置,選擇合適的卷積核並行方法,在硬件上有效支持前幾層的核內並行,和後續層的核間並行,綜合利用並行優勢,有效提高了計算部件的利用率。同時採用“卷積核分割”的並行方法,使卷積核內並行方案易於將數據映射到硬件上,進一步提高了PE的利用率。

2. 運動核

機器人需要通過關節控制實現類似於人類肢體的一些功能,如移動、行走和抓取等等。在機器人學中,每個關節提供一個自由度。一般來講,機器人的自由度越多(關節越多),機器人功能就越強大,運動就越靈活。工業機械臂一般只有6-7個自由度,而NASA的Valkyrie機器人具有44個自由度。如果實現一個像人一樣靈活的機器人,就需要上百個自由度。

CCAI2018 丨韓銀和:如何設計機器人處理器?

圖3. 關節控制中的正運動學方程和逆運動學方程

機器人運動學包含正運動學和逆運動學,其中逆運動學是關節控制的關鍵。其要解決的問題是:給定機器人的位姿,求解機器人各個關節的關節變量。下圖是逆運動方程求解的過程。

CCAI2018 丨韓銀和:如何設計機器人處理器?

圖4.逆運動學方程求解過程

可以看出,每次求解變化量,都是對變換矩陣求逆和矩陣乘的過程。目前,常用方法基於雅克比的求解,但是對大自由度機器人來講,基於雅克比的方法非常耗時,不能滿足機器人控制的實時性要求,最快的機器人逆運動學求解方法在求解100自由度機器人的逆運動學方程仍需要1秒鐘左右的時間,很難滿足機器人控制的實時性要求。為此,我們提出了兩種方法:

Dadu-N:將逆運動學方程求解的過程近似為神經網絡計算的過程。通過設計一個深度神經網絡,將大量初始化位姿、目標位姿以及相應的夾角變化作為數據進行神經網路訓練,得到一組權重。實際場景關節控制時,以初始位姿和目標位姿為輸入數據,通過神經網絡的推斷過程,得到夾角變化數據。使用該方法的好處是,求解過程的複雜度和自由度無關,而只和選擇的神經網絡的複雜度有關,實現了計算複雜度和自由度解耦,自由度越高,加速比越大。

Dadu-S: 在上述雅克比求解過程中,主要耗時過程發生在矩陣J求逆。我們通過將雅克比矩陣求逆近似為對雅克比矩陣求轉置: 來減少計算量,但該方法引入一個參數 ,需要通過多次迭代求出近似解,這一過程難以並行。我們改變直接求解的思路,採用 “投機求解”的思路。在每次迭代時,生成若干個參數值(投機值) , ,..., ,依據這些不同的參數值可以得到多個關節變量更新值θ,經過多次迭代最終找到滿足精度要求的關節變量θ。由於多個參數值的計算及後續的關節變量更新值計算之間沒有依賴,可以通過並行處理單元同時執行,從而加速求解速度。相比原雅克比轉置法,該方法可以減少97%的迭代次數。

根據投機求解的方法[3],設計了相應的硬件加速器,用以提供更高的求解速度以及更高的能效比。該加速器可以在12ms內求解100自由度機器人的逆運動學問題,相比原方法可以提速1000倍,相比GPU版實現可以提速30倍左右。同時,相比GPU,該加速器的能效比可以提升700多倍。

結論

儘管機器人研究很熱,但機器人處理器的研究尚處於萌芽階段。本文介紹了我們在機器人智能處理器領域的一些探索性工作,應該說這項工作還比較初步,甚至“未來機器人領域會不會有一個被廣泛接受的通用芯片形態”這個問題,我們目前都不能很好回答。但創新研究的一個目的就是解決探索未知世界道路上的不確定性,無論是科學價值還是應用前景,機器人智能芯片領域都值得探索。

致謝:

計算所孫凝暉所長最初提出了控制計算機化的思路,對我們的研究起到了極大的推動作用。文中提及的技術是和計算所李曉維、鄢貴海、王穎等老師以及盧文巖、宋莉莉、連世奇等學生合作完成的,由於作者人數受限,無法把他們都作為共同作者,在此一併表示感謝。

參考文獻:

Wenyan Lu, Guihai Yan, Jiajun Li, et.al. FlexFlow: A Flexible Dataflow Accelerator Architecture for Convolutional Neural Networks. HPCA 2017: 553-564

Lili Song, Ying Wang, Yinhe Han, Xin Zhao, et.al. C-brain: a deep learning accelerator that tames the diversity of CNNs through adaptive data-level parallelization. DAC 2016: 123:1-123:6

Shiqi Lian, Yinhe Han, Ying Wang, et.al. Dadu: Accelerating Inverse Kinematics for High-DOF Robots. DAC 2017: 59:1-59:6

CCAI2018 丨韓銀和:如何設計機器人處理器?

韓銀和

CCF理事,中國科學院計算技術研究所研究員

主要研究方向是集成電路設計與測試、計算機體系結構等


分享到:


相關文章: