機(jī)器人是否需要專用的芯片支持?要想開發(fā)機(jī)器人芯片,首先必須弄清楚是否有這方面的需求。一方面,盡管今天能實(shí)用的機(jī)器人數(shù)量還比較少,但在可預(yù)期的未來,很多人相信會誕生一批經(jīng)濟(jì)適用、量大面廣的現(xiàn)象級產(chǎn)品,就像無人機(jī)、無人車一樣,由于其功能的豐富,其總數(shù)量甚至?xí)_(dá)到百億級,超過個人電腦、手機(jī)的數(shù)量。如此龐大的應(yīng)用空間,按照過去計(jì)算機(jī)的發(fā)展經(jīng)驗(yàn),必然伴生孕育著新型計(jì)算系統(tǒng),所以未來機(jī)器人系統(tǒng)需要芯片這一點(diǎn)比較肯定。接著,另外一個問題,是否需要設(shè)計(jì)專用芯片?今天現(xiàn)行的如CPU、DSP、GPU、神經(jīng)網(wǎng)絡(luò)或他們的組合是否就夠用了?這個問題還需要從機(jī)器人的功能角度出發(fā)去分析。一方面,我們會賦予機(jī)器人更多的智能能力,使他能夠聽說看甚至決策;另一方面,機(jī)器人也將具有越來越強(qiáng)運(yùn)動能力。而這些都是現(xiàn)行芯片所解決不好的,我們認(rèn)為今天機(jī)器人無法大規(guī)模普及,和他們的能力不足直接相關(guān),而這種能力除了算法方面的改進(jìn)外,性能的大幅提升也是必要的。因此,我們認(rèn)為需要設(shè)計(jì)面向機(jī)器人的專用芯片,以解決機(jī)器人在應(yīng)用中的若干問題,為未來機(jī)器人的大發(fā)展提供硬件基礎(chǔ)。
現(xiàn)行機(jī)器人的計(jì)算系統(tǒng)
當(dāng)前已存在著很多不同種類的機(jī)器人,這些機(jī)器人均已集成了不同類型的計(jì)算系統(tǒng)。在傳統(tǒng)工業(yè)控制系統(tǒng)中,可編程邏輯控制器(PLC)使用較廣,但在服務(wù)類機(jī)器人中,更多基于嵌入式通用處理器,以方便集成計(jì)算機(jī)軟件以及智能算法上的進(jìn)步。本文以商業(yè)上應(yīng)用較多的情感機(jī)器人、工業(yè)機(jī)器人和移動服務(wù)機(jī)器人為例,介紹這些機(jī)器人載體中所使用的計(jì)算系統(tǒng),其他如軍事機(jī)器人、太空機(jī)器人、特種機(jī)器人在底層計(jì)算系統(tǒng)上有類似之處,就不一一介紹:
情感機(jī)器人:情感機(jī)器人主要功能是和人進(jìn)行語音和視覺上的交流,是目前較為常見的一類機(jī)器人,這類機(jī)器人通常具有較強(qiáng)的語音和視覺處理能力,但運(yùn)動能力較弱。為了快速開發(fā),情感機(jī)器人通常使用主流嵌入式芯片提供計(jì)算能力,如ARM、Intel ATOM處理器等。當(dāng)然,對情感機(jī)器人而言,還需要具有聯(lián)網(wǎng)功能,通過云計(jì)算模式提供語音交互、問題回答等功能。
工業(yè)機(jī)器人:工業(yè)機(jī)器人和情感機(jī)器人不同,這一類機(jī)器人通常限制在特定應(yīng)用場景,和人交互不多,它們對對語音和視覺處理能力要求不高,但往往需要較強(qiáng)的實(shí)時運(yùn)動控制功能,以完成特定任務(wù)。在工業(yè)機(jī)器人中,可編程邏輯控制器(PLC)使用較多,PLC是一種微處理器化的控制器,輸出側(cè)重于對電機(jī)等動力設(shè)備進(jìn)行控制的模擬信號。PLC計(jì)算內(nèi)核一般為單片機(jī),51、PIC、AVR等單片機(jī)都有用于PLC中。PLC對單片機(jī)進(jìn)行了二次開發(fā),在穩(wěn)定性和編程語言(使用電氣工程師所熟悉的梯形圖語言)等方面進(jìn)行了優(yōu)化。
移動服務(wù)機(jī)器人:常見的如掃地機(jī)器人、無人機(jī)、無人駕駛等,以完成特點(diǎn)服務(wù)功能,這類機(jī)器人的特點(diǎn)是應(yīng)用場景復(fù)雜多變,運(yùn)動能力強(qiáng)。需要具備自我定位導(dǎo)航能力和姿態(tài)控制能力。其背后使用的計(jì)算平臺和移動速度以及應(yīng)用場景密切相關(guān)。速度較慢,硬件平臺使用嵌入式ARM芯片就可滿足計(jì)算能力需求。移動速度較快的,如無人機(jī)和無人駕駛領(lǐng)域,往往對環(huán)境感知處理要求也比較高,目前通?;贕PU提供算力支持。 由于快速移動機(jī)器人對計(jì)算能力需求較大,這一領(lǐng)域一個趨勢是專用ASIC芯片,如輔助駕駛Mobileye。最近,特斯拉也有相關(guān)專用芯片設(shè)計(jì)的計(jì)劃,國內(nèi)也有創(chuàng)業(yè)公司如地平線正在開展這方面工作。
云化的計(jì)算能力是未來機(jī)器人計(jì)算系統(tǒng)的一個發(fā)展方向。云端引擎具有三個主要好處:(1)能提供更強(qiáng)大的計(jì)算能力,接入云端的機(jī)器人自身不再需要裝自帶繁重的計(jì)算裝備;(2)能提供大數(shù)據(jù)存儲和分析能力,使機(jī)器人可以非常迅速地分享從大數(shù)據(jù)中挖掘出的規(guī)律和知識;(3)能提供多機(jī)協(xié)同能力。歐盟和美國在這方面部署了一些很有意思的研究工作。歐盟在2011年開展了RoboEarth研究項(xiàng)目,幫助機(jī)器人建立自己的互聯(lián)網(wǎng)和知識庫,為機(jī)器人提供一個巨大的網(wǎng)絡(luò)和數(shù)據(jù)庫來幫助其共享信息,并互相學(xué)習(xí)各自的行為、技能和環(huán)境,以達(dá)到一種經(jīng)驗(yàn)共享、互相學(xué)習(xí)的理想狀態(tài)。美國斯坦福大學(xué)等高校開展的RoboBrain項(xiàng)目,旨在建立一種新的、主要面向機(jī)器人的同時能供任何要執(zhí)行的設(shè)備自由訪問的大規(guī)模知識引擎,相當(dāng)于建立一套面向機(jī)器人的搜索引擎。
另一方面,樹莓派、Arduino等快速開發(fā)板,由于其極強(qiáng)的易開發(fā)性和接口豐富性,在一些較低計(jì)算量需求的控制場景也有應(yīng)用。Intel中國研究院研發(fā)了基于FPGA的HERO機(jī)器人開發(fā)平臺,開發(fā)者可以根據(jù)應(yīng)用自己決定和設(shè)計(jì)邏輯。
智能機(jī)器人芯片的主要負(fù)載總結(jié)
芯片的設(shè)計(jì)取決于負(fù)載的特點(diǎn)。要想設(shè)計(jì)面向特定領(lǐng)域的芯片,首先要清楚芯片上運(yùn)行的主要負(fù)載特點(diǎn)。智能機(jī)器人和傳統(tǒng)計(jì)算機(jī)不太一樣,除了需要較強(qiáng)的智能計(jì)算外,還需要較強(qiáng)的感知交互能力、姿態(tài)控制能力、運(yùn)動能力等:
感知交互負(fù)載:機(jī)器人的感知信息往往是多通道的,包含語音、視覺、觸覺、嗅覺等。感知信息的處理分為初級處理和智能處理兩大類。初級處理主要是對傳感器數(shù)據(jù)進(jìn)行降噪、篩選等,主要用的算法核心包含傅里葉分析、小波變換等,智能處理主要是采用機(jī)器學(xué)習(xí)算法。交互則更多涉及語音、圖像合成等幾何計(jì)算算法以及深度神經(jīng)網(wǎng)絡(luò)處理。
姿態(tài)控制負(fù)載:在一些立體移動機(jī)器人系統(tǒng)中,需要有較強(qiáng)的姿態(tài)控制功能。以多軸無人機(jī)為例,主要算法包含:對姿態(tài)傳感器進(jìn)行去噪及融合的濾波算法,互補(bǔ)濾波和卡爾曼濾波用得較多;姿態(tài)算法,主要是根據(jù)濾波后的傳感器信息計(jì)算出自身在地理空間坐標(biāo)系中的三維位置,姿態(tài)平衡算法,一般采用PID(比例-積分-微分)算法進(jìn)行反饋調(diào)節(jié)。算法的核心操作可以抽象為矩陣計(jì)算等。
移動導(dǎo)航負(fù)載:SLAM(同步定位導(dǎo)航)算法是機(jī)器人自主導(dǎo)航中使用較多的一類算法,根據(jù)前端傳感器的不同,又可主要分為激光SLAM和視覺SLAM, SLAM通常可分為前端預(yù)處理、匹配、地圖融合等三個大步驟。預(yù)處理主要是對激光、深度傳感器等數(shù)據(jù)進(jìn)行優(yōu)化,主要算法包含濾波算法等;匹配是將局部環(huán)境數(shù)據(jù)匹配到已經(jīng)建立的地圖位置上,主要算法包含ICP(迭代最近點(diǎn))、圖優(yōu)化Bundle Adjustment計(jì)算等;地圖融合就是將新數(shù)據(jù)拼接到原始地圖中完成更新,主要算法有Bag-of-Words(BOW) loop closure(回環(huán))檢測等。盡管有很多步驟,SLAM算法的核心操作主要還是集中在圖形計(jì)算方面。
關(guān)節(jié)運(yùn)動控制負(fù)載:機(jī)器人運(yùn)動學(xué)是機(jī)器人運(yùn)動控制的基礎(chǔ),包含正運(yùn)動學(xué)和逆運(yùn)動學(xué)。正運(yùn)動學(xué)是給定每個關(guān)節(jié)變量(角度或長度),求解機(jī)器人的位姿;逆運(yùn)動學(xué),即給定機(jī)器人的位姿,求解機(jī)器人各個關(guān)節(jié)的關(guān)節(jié)變量。正逆運(yùn)動學(xué)求解,核心操作是矩陣計(jì)算,但由于規(guī)模大,對于高自由度機(jī)器人情況更糟。逆運(yùn)動學(xué)方程求解過程比較特殊,使用GPU并不是特別高效。
控制決策負(fù)載:機(jī)器人控制決策有兩大類方法:基于專家系統(tǒng)和基于新型機(jī)器學(xué)習(xí)方法。強(qiáng)化學(xué)習(xí)方法由于考慮了與外界的交互作為系統(tǒng)優(yōu)化指標(biāo),非常適合于機(jī)器人的控制決策中。在人機(jī)圍棋大戰(zhàn)中,Google的AlphaGo和AlphaZero就是采用了這一算法。在這一類負(fù)載中,核心操作主要是神經(jīng)網(wǎng)絡(luò)。
除了上述這些主要負(fù)載需求以外,機(jī)器人芯片還有些特別的需求,比如要求更高的安全性和可靠性。
我們在智能機(jī)器人芯片設(shè)計(jì)上的一些探索
中科院計(jì)算所從2015年開始研制面向智能機(jī)器人的芯片,進(jìn)行了一些初步探索,總體目標(biāo)是希望能為未來具有為豐富功能和更強(qiáng)智能能力的機(jī)器人提供通用高性能計(jì)算平臺,下面就介紹我們在這方面取得的一些成果。
基于機(jī)器人負(fù)載特征的分析結(jié)論,我們設(shè)計(jì)了一個取名為Dadu的機(jī)器人智能處理器平臺。這個名字最初來源于我們能支持大自由度的機(jī)器人,后來結(jié)合智能計(jì)算方面的擴(kuò)展,形成了雙核結(jié)構(gòu):一個智能核和一個運(yùn)動核。智能核為一個低功耗神經(jīng)網(wǎng)絡(luò)處理器,其主要功能是加速視音頻感知交互負(fù)載和基于神經(jīng)網(wǎng)絡(luò)的控制決策負(fù)載;運(yùn)動核主要是一個高速的運(yùn)動方程求解加速器和一些向量計(jì)算部件,其主要功能是加速逆運(yùn)動方程求解和姿態(tài)控制及移動導(dǎo)航負(fù)載中用到的幾何圖形處理。
圖1. Dadu智能機(jī)器人芯片
智能核
神經(jīng)網(wǎng)絡(luò)處理器是當(dāng)前芯片領(lǐng)域的一個研究熱點(diǎn),商業(yè)上也已經(jīng)有一些較為成熟的方案,如寒武紀(jì)的DianNao系列、Google的TPU系列、Intel的Movidius等。為了高效處理神經(jīng)網(wǎng)絡(luò)中大量的張量操作,處理器通常設(shè)計(jì)為脈動陣列結(jié)構(gòu)、2D PE陣列結(jié)構(gòu)和乘加樹等結(jié)構(gòu)。但由于神經(jīng)網(wǎng)絡(luò)拓?fù)浣Y(jié)構(gòu)創(chuàng)新活躍,新結(jié)構(gòu)層出不窮,不同網(wǎng)絡(luò)、不同層之間計(jì)算組織形式差異很大。當(dāng)前,通用神經(jīng)網(wǎng)絡(luò)處理器設(shè)計(jì)存在較為嚴(yán)重的“利用率墻”的問題,也即:由于固定的硬件結(jié)構(gòu)和新的神經(jīng)網(wǎng)絡(luò)數(shù)據(jù)流的不吻合,導(dǎo)致通用神經(jīng)網(wǎng)絡(luò)處理器的內(nèi)部計(jì)算資源利用率低的問題,比如Google的TPU,在運(yùn)行AlphaGo時,整個PE的利用率為46.2%,運(yùn)行LSTM網(wǎng)絡(luò)模型時,PE利用率更低,只有8.2%。
和TPU等定位不同,面向機(jī)器人的神經(jīng)網(wǎng)絡(luò)處理器設(shè)計(jì)更側(cè)重于嵌入式、低功耗特性。提高并行效率,是打破利用率墻的重要手段,也是提高實(shí)際能效比的關(guān)鍵技術(shù)。我們在這方面做出了一些探索。
發(fā)表于2017年體系結(jié)構(gòu)領(lǐng)域會議HPCA上的論文[1],我們首先從特征圖(feature map)、神經(jīng)元(Neuro)、神經(jīng)突觸(Synaps) 三個層次研究了并行化的方法,并進(jìn)而提出了神經(jīng)網(wǎng)絡(luò)計(jì)算并行化劃分的八種方法: SFSNSS(單特征圖、單神經(jīng)元、單神經(jīng)突觸)、SFMNSS、SFSNMS、SFMNMS、MFSNSS、MFSNMS、MFMNSS、MFMNMS。在此基礎(chǔ)上,我們提出了一種強(qiáng)靈活性的硬件數(shù)據(jù)流架構(gòu)(FlexFlow),它的主要原理是其同時支持多種并行方式,利用多種并行方式的互補(bǔ)效應(yīng)來彌補(bǔ)單一并行方式的不足,從而實(shí)現(xiàn)了卷積神經(jīng)網(wǎng)絡(luò)的高效計(jì)算。
圖2. Flexflow 結(jié)構(gòu)
神經(jīng)網(wǎng)絡(luò)計(jì)算中的卷積操作和數(shù)據(jù)通常是按照卷積核粒度去組織的,不同神經(jīng)網(wǎng)絡(luò)、不同層的卷積核大小不一樣,會導(dǎo)致利用率和數(shù)據(jù)復(fù)用有較大變化。存在兩種數(shù)據(jù)級并行:卷積核內(nèi)并行和卷積核間并行。卷積核內(nèi)并行,是將屬于相同卷積核位置但是不同輸入圖層的n個像素同時進(jìn)行卷積運(yùn)算。每個操作將若干個數(shù)據(jù)權(quán)重對加載到PE,在整個卷積核窗口(k×k)重復(fù)這個操作,最后累加這些運(yùn)算結(jié)果得到和數(shù)。卷積核內(nèi)并行,是將同一個輸入圖層中的一個或幾個卷積核k×k窗口傳送到PE并行計(jì)算。對于深度卷積神經(jīng)網(wǎng)絡(luò)的大部分層的圖層數(shù)量都很多,采用卷積核間并行方式,PE 的利用率很高。但是,在神經(jīng)網(wǎng)絡(luò)的前幾層層,輸入圖層數(shù)量較少,卷積核比較大,卷積步長一般遠(yuǎn)小于卷積核大小,從硬件利用率角度它們顯然更適合于通過卷積核內(nèi)并行化來加速。
我們提出了一種 C-Brain結(jié)構(gòu)[2],通過自適應(yīng)的卷積核并行,可根據(jù)配置,選擇合適的卷積核并行方法,在硬件上有效支持前幾層的核內(nèi)并行,和后續(xù)層的核間并行,綜合利用并行優(yōu)勢,有效提高了計(jì)算部件的利用率。同時采用“卷積核分割”的并行方法,使卷積核內(nèi)并行方案易于將數(shù)據(jù)映射到硬件上,進(jìn)一步提高了PE的利用率。
2. 運(yùn)動核
機(jī)器人需要通過關(guān)節(jié)控制實(shí)現(xiàn)類似于人類肢體的一些功能,如移動、行走和抓取等等。在機(jī)器人學(xué)中,每個關(guān)節(jié)提供一個自由度。一般來講,機(jī)器人的自由度越多(關(guān)節(jié)越多),機(jī)器人功能就越強(qiáng)大,運(yùn)動就越靈活。工業(yè)機(jī)械臂一般只有6-7個自由度,而NASA的Valkyrie機(jī)器人具有44個自由度。如果實(shí)現(xiàn)一個像人一樣靈活的機(jī)器人,就需要上百個自由度。
圖3. 關(guān)節(jié)控制中的正運(yùn)動學(xué)方程和逆運(yùn)動學(xué)方程
機(jī)器人運(yùn)動學(xué)包含正運(yùn)動學(xué)和逆運(yùn)動學(xué),其中逆運(yùn)動學(xué)是關(guān)節(jié)控制的關(guān)鍵。其要解決的問題是:給定機(jī)器人的位姿,求解機(jī)器人各個關(guān)節(jié)的關(guān)節(jié)變量。下圖是逆運(yùn)動方程求解的過程。
圖4.逆運(yùn)動學(xué)方程求解過程
可以看出,每次求解變化量,都是對變換矩陣求逆和矩陣乘的過程。目前,常用方法基于雅克比的求解,但是對大自由度機(jī)器人來講,基于雅克比的方法非常耗時,不能滿足機(jī)器人控制的實(shí)時性要求,最快的機(jī)器人逆運(yùn)動學(xué)求解方法在求解100自由度機(jī)器人的逆運(yùn)動學(xué)方程仍需要1秒鐘左右的時間,很難滿足機(jī)器人控制的實(shí)時性要求。為此,我們提出了兩種方法:
Dadu-N:將逆運(yùn)動學(xué)方程求解的過程近似為神經(jīng)網(wǎng)絡(luò)計(jì)算的過程。通過設(shè)計(jì)一個深度神經(jīng)網(wǎng)絡(luò),將大量初始化位姿、目標(biāo)位姿以及相應(yīng)的夾角變化作為數(shù)據(jù)進(jìn)行神經(jīng)網(wǎng)路訓(xùn)練,得到一組權(quán)重。實(shí)際場景關(guān)節(jié)控制時,以初始位姿和目標(biāo)位姿為輸入數(shù)據(jù),通過神經(jīng)網(wǎng)絡(luò)的推斷過程,得到夾角變化數(shù)據(jù)。使用該方法的好處是,求解過程的復(fù)雜度和自由度無關(guān),而只和選擇的神經(jīng)網(wǎng)絡(luò)的復(fù)雜度有關(guān),實(shí)現(xiàn)了計(jì)算復(fù)雜度和自由度解耦,自由度越高,加速比越大。
Dadu-S: 在上述雅克比求解過程中,主要耗時過程發(fā)生在矩陣J求逆。我們通過將雅克比矩陣求逆近似為對雅克比矩陣求轉(zhuǎn)置: 來減少計(jì)算量,但該方法引入一個參數(shù) ,需要通過多次迭代求出近似解,這一過程難以并行。我們改變直接求解的思路,采用 “投機(jī)求解”的思路。在每次迭代時,生成若干個參數(shù)值(投機(jī)值) , ,..., ,依據(jù)這些不同的參數(shù)值可以得到多個關(guān)節(jié)變量更新值θ,經(jīng)過多次迭代最終找到滿足精度要求的關(guān)節(jié)變量θ。由于多個參數(shù)值的計(jì)算及后續(xù)的關(guān)節(jié)變量更新值計(jì)算之間沒有依賴,可以通過并行處理單元同時執(zhí)行,從而加速求解速度。相比原雅克比轉(zhuǎn)置法,該方法可以減少97%的迭代次數(shù)。
根據(jù)投機(jī)求解的方法[3],設(shè)計(jì)了相應(yīng)的硬件加速器,用以提供更高的求解速度以及更高的能效比。該加速器可以在12ms內(nèi)求解100自由度機(jī)器人的逆運(yùn)動學(xué)問題,相比原方法可以提速1000倍,相比GPU版實(shí)現(xiàn)可以提速30倍左右。同時,相比GPU,該加速器的能效比可以提升700多倍。
結(jié)論
盡管機(jī)器人研究很熱,但機(jī)器人處理器的研究尚處于萌芽階段。本文介紹了我們在機(jī)器人智能處理器領(lǐng)域的一些探索性工作,應(yīng)該說這項(xiàng)工作還比較初步,甚至“未來機(jī)器人領(lǐng)域會不會有一個被廣泛接受的通用芯片形態(tài)”這個問題,我們目前都不能很好回答。但創(chuàng)新研究的一個目的就是解決探索未知世界道路上的不確定性,無論是科學(xué)價值還是應(yīng)用前景,機(jī)器人智能芯片領(lǐng)域都值得探索。
-
處理器
+關(guān)注
關(guān)注
68文章
19896瀏覽量
235258 -
機(jī)器人
+關(guān)注
關(guān)注
213文章
29748瀏覽量
212896
原文標(biāo)題:CCAI2018 丨韓銀和:如何設(shè)計(jì)機(jī)器人處理器?
文章出處:【微信號:CAAI-1981,微信公眾號:中國人工智能學(xué)會】歡迎添加關(guān)注!文章轉(zhuǎn)載請注明出處。
發(fā)布評論請先 登錄
評論