0
  • 聊天消息
  • 系統(tǒng)消息
  • 評論與回復(fù)
登錄后你可以
  • 下載海量資料
  • 學習在線課程
  • 觀看技術(shù)視頻
  • 寫文章/發(fā)帖/加入社區(qū)
會員中心
創(chuàng)作中心

完善資料讓更多小伙伴認識你,還能領(lǐng)取20積分哦,立即完善>

3天內(nèi)不再提示

巧用模型編譯器和機器人操作系統(tǒng)在物聯(lián)網(wǎng)上面做開發(fā)

8g3K_AI_Thinker ? 來源:互聯(lián)網(wǎng) ? 作者:佚名 ? 2017-12-02 07:04 ? 次閱讀

通過深度學習技術(shù),物聯(lián)網(wǎng)IoT)設(shè)備能夠得以解析非結(jié)構(gòu)化的多媒體數(shù)據(jù),智能地響應(yīng)用戶和環(huán)境事件,但是卻伴隨著苛刻的性能和功耗要求。本文作者探討了兩種方式以便將深度學習和低功耗的物聯(lián)網(wǎng)設(shè)備成功整合。

近年來,越來越多的物聯(lián)網(wǎng)產(chǎn)品出現(xiàn)在市場上,它們采集周圍的環(huán)境數(shù)據(jù),并使用傳統(tǒng)的機器學習技術(shù)理解這些數(shù)據(jù)。一個例子是Google的Nest恒溫器,采用結(jié)構(gòu)化的方式記錄溫度數(shù)據(jù),并通過算法來掌握用戶的溫度偏好和時間表。然而,其對于非結(jié)構(gòu)化的多媒體數(shù)據(jù),例如音頻信號和視覺圖像則顯得無能為力。

新興的物聯(lián)網(wǎng)設(shè)備采用了更加復(fù)雜的深度學習技術(shù),通過神經(jīng)網(wǎng)絡(luò)來探索其所處環(huán)境。例如,Amazon Echo可以理解人的語音指令,通過語音識別,將音頻信號轉(zhuǎn)換成單詞串,然后使用這些單詞來搜索相關(guān)信息。最近,微軟的Windows物聯(lián)網(wǎng)團隊發(fā)布了一個基于面部識別的安全系統(tǒng),利用到了深度學習技術(shù),當識別到用戶面部時能夠自動解開門鎖。

物聯(lián)網(wǎng)設(shè)備上的深度學習應(yīng)用通常具有苛刻的實時性要求。例如,基于物體識別的安全攝像機為了能及時響應(yīng)房屋內(nèi)出現(xiàn)的陌生人,通常需要小于500毫秒的檢測延遲來捕獲和處理目標事件。消費級的物聯(lián)網(wǎng)設(shè)備通常采用云服務(wù)來提供某種智能,然而其所依賴的優(yōu)質(zhì)互聯(lián)網(wǎng)連接,僅僅在部分范圍內(nèi)可用,并且往往需要較高的成本,這對設(shè)備能否滿足實時性要求提出了挑戰(zhàn)。與之相比,直接在物聯(lián)網(wǎng)設(shè)備上實現(xiàn)深度學習或許是一個更好的選擇,這樣就可以免受連接質(zhì)量的影響。

然而,直接在嵌入式設(shè)備上實現(xiàn)深度學習是困難的。事實上,低功耗是移動物聯(lián)網(wǎng)設(shè)備的主要特征,而這通常意味著計算能力受限,內(nèi)存容量較小。在軟件方面,為了減少內(nèi)存占用,應(yīng)用程序通常直接運行在裸機上,或者在包含極少量第三方庫的輕量級操作系統(tǒng)上。而與之相反,深度學習意味著高性能計算,并伴隨著高功耗。此外,現(xiàn)有的深度學習庫通常需要調(diào)用許多第三方庫,而這些庫很難遷移到物聯(lián)網(wǎng)設(shè)備。

在深度學習任務(wù)中,最廣泛使用的神經(jīng)網(wǎng)絡(luò)是卷積神經(jīng)網(wǎng)絡(luò)(CNNs),它能夠?qū)⒎墙Y(jié)構(gòu)化的圖像數(shù)據(jù)轉(zhuǎn)換成結(jié)構(gòu)化的對象標簽數(shù)據(jù)。一般來說,CNNs的工作流程如下:首先,卷積層掃描輸入圖像以生成特征向量;第二步,激活層確定在圖像推理過程中哪些特征向量應(yīng)該被激活使用;第三步,使用池化層降低特征向量的大?。蛔詈?,使用全連接層將池化層的所有輸出和輸出層相連。

在本文中,我們將討論如何使用CNN推理機在物聯(lián)網(wǎng)設(shè)備上實現(xiàn)深度學習。

將服務(wù)遷移到云端

對于低功耗的物聯(lián)網(wǎng)設(shè)備,問題在于是否存在一個可靠的解決方案,能夠?qū)⑸疃葘W習部署在云端,同時滿足功耗和性能的要求。為了回答這個問題,我們在一塊Nvidia Jetson TX1設(shè)備上實現(xiàn)了基于CNN的物體推理,并將其性能、功耗與將這些服務(wù)遷移到云端后的情況進行對比。

為了確定將服務(wù)遷移到云端后,是否可以降低功耗并滿足對物體識別任務(wù)的實時性要求,我們將圖像發(fā)送到云端,然后等待云端將結(jié)果返回。研究表明,對于物體識別任務(wù),本地執(zhí)行的功耗為7 W,而遷移到云端后功耗降低為2W。這說明將服務(wù)遷移到云端確實是降低功耗的有效途徑。

然而,遷移到云端會導(dǎo)致至少2秒的延遲,甚至可能高達5秒,這不能滿足我們500ms的實時性要求。此外,延遲的劇烈抖動使得服務(wù)非常不可靠(作為對比,我們在美國和中國分別運行這些實驗進行觀察)。通過這些實驗我們得出結(jié)論,在當前的網(wǎng)絡(luò)環(huán)境下,將實時性深度學習任務(wù)遷移到云端是一個尚未可行的解決方案。

移植深度學習平臺到嵌入式設(shè)備

相比遷移到云端的不切實際,一個選擇是將現(xiàn)有的深度學習平臺移植到物聯(lián)網(wǎng)設(shè)備。為此,我們選擇移植由Google開發(fā)并開源的深度學習平臺TesnsorFlow來建立具有物體推理能力的物聯(lián)網(wǎng)設(shè)備Zuluko——PerceptIn的裸機ARM片上系統(tǒng)。Zuluko由四個運行在1 GHz的ARM v7內(nèi)核和512 MB RAM組成,峰值功耗約為3W。根據(jù)我們的研究,在基于ARM-Linux的片上系統(tǒng)上,TensorFlow能夠提供最佳性能,這也是我們選擇它的原因。

我們預(yù)計能夠在幾天內(nèi)完成移植工作,然而,移植TensorFlow并不容易,它依賴于許多第三方庫(見圖1)。為了減少資源消耗,大多數(shù)物聯(lián)網(wǎng)設(shè)備都運行在裸機上,因此移植所有依賴項可以說是一項艱巨的任務(wù)。我們花了一個星期的精力才使得TensorFlow得以在Zuluko上運行。此次經(jīng)驗也使我們重新思考,相比移植一個現(xiàn)有的平臺,是否從頭開始構(gòu)建一個新平臺更值得。然而缺乏諸如卷積算子等基本的構(gòu)建塊,從頭開始構(gòu)建并不容易。此外,從頭開始構(gòu)建的推理機也很難比一個久經(jīng)測試的深度學習框架表現(xiàn)更優(yōu)。


圖1 TensorFlow對第三方庫的依賴。因為依賴于許多第三方庫,將現(xiàn)有的深度學習平臺(如TensorFlow)移植到物聯(lián)網(wǎng)設(shè)備并不是一個簡單的過程。

從頭開始構(gòu)建推理機

ARM最近宣布推出其計算庫(ACL,developer.arm.com/technologies/compute-library),為ARM Cortex-A系列CPU處理器和ARM Mali系列GPU實現(xiàn)了軟件功能的綜合集成。具體而言,ACL為CNNs提供了基本的構(gòu)建模塊,包括激活、卷積、全連接和局部連接、規(guī)范化、池化和softmax功能。這些功能正是我們建立推理機所需要的。

我們使用ACL構(gòu)建塊構(gòu)建了一個具有SqueezeNet架構(gòu)的CNN推理機,其內(nèi)存占用空間小,適合于嵌入式設(shè)備。SqueezeNet在保持相似的推理精度的同時,使用1×1卷積核來減少3×3卷積層的輸入大小。然后,我們將SqueezeNet推理機的性能與Zuluko上的TensorFlow進行比較。為了確保比較的公平性,我們啟用了TensorFlow中的ARM NEON向量計算優(yōu)化,并在創(chuàng)建SqueezeNet引擎時使用了支持NEON的構(gòu)建塊。確保兩個引擎都使用了NEON向量計算,這樣任何性能差異將僅由平臺本身引起。如圖2所示,平均來言,TensorFlow處理227×227像素的RGB圖像需要420 ms,而SqueezeNet將處理相同圖像的時間縮短到320ms,加速了25%。


圖2 在TensorFlow上運行的SqueezeNet推理機與使用ARM Compute Library(ACL)構(gòu)建的SqueezeNet推理機的性能。從頭開始構(gòu)建簡單的推理引擎不僅需要較少的開發(fā)時間,而且相比現(xiàn)有的深度學習引擎,如TensorFlow,表現(xiàn)更加優(yōu)秀。

為了更好地了解性能增益的來源,我們將執(zhí)行過程分為兩部分:第一部分包括卷積、ReLU(線性整流函數(shù))激活和級聯(lián);第二部分包括池化和softmax功能。圖2所示的分析表明,SqueezeNet在第一部分中的性能相比TensorFlow提高23%,在第二部分中提高110%??紤]資源利用率,當在TensorFlow上運行時,平均CPU使用率為75%,平均內(nèi)存使用量為9MB;當在SqueezeNet上運行時,平均CPU使用率為90%,平均內(nèi)存使用量約為10MB。兩個原因帶來了性能的提升:首先,SqueezeNet提供了更好的NEON優(yōu)化,所有ACL運算符都是使用NEON提供的運算符直接開發(fā)的,而TensorFlow則依靠ARM編譯器來提供NEON優(yōu)化。其次,TensorFlow平臺本身可能會引起一些額外的性能開銷。

接下來,我們希望能夠從TensorFlow中榨出更多的性能,看看它是否能勝過我們構(gòu)建的SqueezeNet推理機。一種常用的技術(shù)是使用矢量量化,使用8位權(quán)重以精度來換取性能。8位權(quán)重的使用,使得我們可以通過向量操作,只需一個指令便可計算多個數(shù)據(jù)單元。然而,這種優(yōu)化是有代價的:它引入了重新量化和去量化操作。我們在TensorFlow中實現(xiàn)了這個優(yōu)化,圖3比較了有無優(yōu)化的性能。使用矢量量化將卷積性能提高了25%,但由于去量化和重新量化操作,也顯著地增加了開銷??傮w而言,它將整個推理過程減慢了超過100毫秒。


圖3 有無矢量量化的TensorFlow性能。手動優(yōu)化現(xiàn)有的深度學習平臺(如TensorFlow)很困難,可能不會帶來顯著的性能提升。

網(wǎng)絡(luò)連接是易失的,因此我們想要確保能夠在本地設(shè)備上實現(xiàn)某種形式的智能,使其能夠在ISP或網(wǎng)絡(luò)故障的情況下繼續(xù)運行。然而要想實現(xiàn)它,需要較高的計算性能和功耗。

盡管將服務(wù)遷移到云端能夠減少物聯(lián)網(wǎng)設(shè)備的功耗,但很難滿足實時性要求。而且現(xiàn)有的深度學習平臺是為了通用性任務(wù)而設(shè)計開發(fā)的,同時適用于訓練和推理任務(wù),這意味著這些引擎未針對嵌入式推理任務(wù)進行優(yōu)化。并且它們還依賴于裸機嵌入式系統(tǒng)上不易獲得的其他第三方庫,這些都使其非常難以移植。

通過使用ACL構(gòu)建塊來建立嵌入式CNN推理引擎,我們可以充分利用SoC的異構(gòu)計算資源獲得高性能。因此,問題變?yōu)槭沁x擇移植現(xiàn)有引擎,還是從零開始構(gòu)建它們更容易。我們的經(jīng)驗表明,如果模型很簡單,相比之下從頭開始構(gòu)建它們?nèi)菀椎枚唷6S著模型越來越復(fù)雜,在某些情況下,可能我們遷移現(xiàn)有引擎相對更加高效。然而,考慮到嵌入式設(shè)備實際運行的任務(wù),不大可能會需要用到復(fù)雜的模型。因此我們得出結(jié)論,從頭開始構(gòu)建一個嵌入式推理引擎或許是向物聯(lián)網(wǎng)設(shè)備提供深度學習能力的可行方法。

更進一步

相比從頭開始手動構(gòu)建模型,我們需要一種更方便的方式來在物聯(lián)網(wǎng)設(shè)備上提供深度學習能力。一個解決方案是實現(xiàn)一個深度學習的模型編譯器,可以將給定的模型經(jīng)過優(yōu)化,編譯為目標平臺上的可執(zhí)行代碼。如圖4中間的圖所示,這種編譯器的前端可以從主要的深度學習平臺(包括MXNet、Caffe、TensorFlow等)解析模型。然后,優(yōu)化器可以執(zhí)行額外的優(yōu)化,包括模型修剪,量化和異構(gòu)執(zhí)行。優(yōu)化后,由代碼生成器生成目標平臺上可執(zhí)行代碼,可以是ACL(用于ARM設(shè)備),TensorRT(用于Nvidia GPU)或其他ASIC設(shè)備。


圖4 物聯(lián)網(wǎng)設(shè)備服務(wù)架構(gòu)。我們需要一個新的系統(tǒng)架構(gòu)來實現(xiàn)物聯(lián)網(wǎng)設(shè)備上的深度學習:首先,我們需要直接編譯和優(yōu)化深度學習模型生成目標設(shè)備上的可執(zhí)行代碼; 其次,我們需要一個非常輕量級的操作系統(tǒng),以實現(xiàn)多任務(wù)及其間的高效通信。IMU:慣性測量單元。

NNVM項目(github.com/dmlc/nnvm)是邁向這一目標的第一步。我們已經(jīng)成功地擴展了NNVM來生成代碼,以便我們可以使用ACL來加速ARM設(shè)備上的深度學習操作。這種方法的另一個好處是,即使模型變得更加復(fù)雜,我們?nèi)匀豢梢暂p松地在物聯(lián)網(wǎng)設(shè)備上實現(xiàn)它們。

當前的物聯(lián)網(wǎng)設(shè)備通常由于計算資源的限制而執(zhí)行單個任務(wù)。然而,我們預(yù)計很快將有能夠執(zhí)行多個任務(wù)的低功耗物聯(lián)網(wǎng)設(shè)備(例如,我們的Zuluko設(shè)備就包含了四個內(nèi)核)。為了使用這些設(shè)備,我們需要一個非常輕量級的消息傳遞協(xié)議來連接不同的服務(wù)。

如圖4所示,物聯(lián)網(wǎng)設(shè)備的基本服務(wù)包括傳感,感知和決策。傳感節(jié)點涉及處理來自例如攝像機,慣性測量單元和車輪測距的原始傳感器數(shù)據(jù)。感知節(jié)點使用已處理的傳感器數(shù)據(jù),并對所捕獲的信息進行解釋,例如對象標簽和設(shè)備位置。動作節(jié)點包含一組規(guī)則,用于確定在檢測到特定事件時如何響應(yīng),例如在檢測到所有者的臉部時解鎖門,或者當檢測到障礙物時調(diào)整機器人的運動路徑。Nanomsg(nanomsg.org)是一個非常輕量級的消息傳遞框架,非常適合類似的任務(wù)。另一個選擇是機器人操作系統(tǒng),盡管我們發(fā)現(xiàn)對于物聯(lián)網(wǎng)設(shè)備來說,其在內(nèi)存占用和計算資源需求方面顯得太重了。

為了有效地將深度學習與物聯(lián)網(wǎng)設(shè)備集成,我們開發(fā)了自己的操作系統(tǒng),包括用于消費級傳感器輸入的傳感器接口,基于NNVM的編譯器,將現(xiàn)有的深度學習模型編譯并優(yōu)化為可執(zhí)行代碼,以及基于Nanomsg的消息傳輸框架來連接所有的節(jié)點。

聲明:本文內(nèi)容及配圖由入駐作者撰寫或者入駐合作網(wǎng)站授權(quán)轉(zhuǎn)載。文章觀點僅代表作者本人,不代表電子發(fā)燒友網(wǎng)立場。文章及其配圖僅供工程師學習之用,如有內(nèi)容侵權(quán)或者其他違規(guī)問題,請聯(lián)系本站處理。 舉報投訴
  • 物聯(lián)網(wǎng)
    +關(guān)注

    關(guān)注

    2902

    文章

    44110

    瀏覽量

    370402
  • 編譯器
    +關(guān)注

    關(guān)注

    1

    文章

    1617

    瀏覽量

    49019
  • 機器人操作系統(tǒng)

    關(guān)注

    0

    文章

    9

    瀏覽量

    5134

原文標題:如何使用 CNN 推理機在 IoT 設(shè)備上實現(xiàn)深度學習

文章出處:【微信號:AI_Thinker,微信公眾號:人工智能頭條】歡迎添加關(guān)注!文章轉(zhuǎn)載請注明出處。

收藏 人收藏

    評論

    相關(guān)推薦

    什么是嵌入式操作系統(tǒng)?

    機器人的大腦。它告訴機器人怎么工作,什么時候做什么事,怎么和它身體上的各種傳感和部件溝通,EOS是為嵌入式系統(tǒng)設(shè)計的專用操作系統(tǒng)。 那它到
    發(fā)表于 11-08 15:07

    開啟全新AI時代 智能嵌入式系統(tǒng)快速發(fā)展——“第六屆國產(chǎn)嵌入式操作系統(tǒng)技術(shù)與產(chǎn)業(yè)發(fā)展論壇”圓滿結(jié)束

    嵌入式系統(tǒng)是電子信息產(chǎn)業(yè)的基礎(chǔ),是智能系統(tǒng)的核心。大模型催生AI走入千家萬戶、喚醒端側(cè)AI的需求爆發(fā)。以機器人、無人駕駛和智能制造為代表的智能嵌入式
    發(fā)表于 08-30 17:24

    第六屆國產(chǎn)嵌入式操作系統(tǒng)技術(shù)與產(chǎn)業(yè)發(fā)展論壇議程發(fā)布

    第30次)主題是“開啟全新AI時代、智能嵌入式操作系統(tǒng)的研究與應(yīng)用”,我們將聚焦人工智能、聯(lián)網(wǎng)與嵌入式操作系統(tǒng)技術(shù)和生態(tài)發(fā)展,智能機器人
    發(fā)表于 07-26 10:54

    ROS讓機器人開發(fā)更便捷,基于RK3568J+Debian系統(tǒng)發(fā)布!

    ,簡單快捷地調(diào)用合適的算法庫,以提高開發(fā)效率,加快開發(fā)進程。 (2) 開源免費,架構(gòu)精簡 ROS系統(tǒng)是一個開源免費,架構(gòu)精簡的機器人操作系統(tǒng)
    發(fā)表于 07-09 11:38

    Al大模型機器人

    金航標kinghelm薩科微slkor總經(jīng)理宋仕強介紹說,薩科微Al大模型機器人有哪些的優(yōu)勢?薩科微AI大模型機器人由清華大學畢業(yè)的天才少年N博士和王博士團隊
    發(fā)表于 07-05 08:52

    Meta發(fā)布基于Code Llama的LLM編譯器

    近日,科技巨頭Meta在其X平臺上正式宣布推出了一款革命性的LLM編譯器,這一模型家族基于Meta Code Llama構(gòu)建,并融合了先進的代碼優(yōu)化和編譯器功能。LLM編譯器的推出,標
    的頭像 發(fā)表于 06-29 17:54 ?1437次閱讀

    編碼機器人系統(tǒng)中的應(yīng)用

    隨著科技的飛速發(fā)展,機器人技術(shù)已廣泛應(yīng)用于工業(yè)、醫(yī)療、服務(wù)等多個領(lǐng)域。機器人系統(tǒng)中,編碼作為核心的位置和速度檢測裝置,發(fā)揮著至關(guān)重要的作
    的頭像 發(fā)表于 06-13 14:51 ?723次閱讀

    基于飛凌嵌入式RK3568J核心板的工業(yè)機器人控制應(yīng)用方案

    的主要作用是完成多軸運動的計算與控制,因此機器人控制的主控就需要擁有高性能的CPU、內(nèi)置實時操作系統(tǒng)、支持EtherCAT工業(yè)總線以及豐富的功能接口。 機器人控制
    發(fā)表于 05-11 09:40

    基于鴻道(Intewell?)操作系統(tǒng)研發(fā)的農(nóng)業(yè)機器人操作系統(tǒng)

    江蘇大學與科東軟件聯(lián)合研發(fā)“農(nóng)業(yè)機器人操作系統(tǒng)”,并成立“農(nóng)業(yè)機器人操作系統(tǒng)”聯(lián)合實驗室,奮力推進農(nóng)業(yè)智能化,推動農(nóng)業(yè)科技創(chuàng)新?!稗r(nóng)業(yè)機器人
    的頭像 發(fā)表于 04-30 11:09 ?374次閱讀

    工業(yè)控制:鴻道(Intewell)操作系統(tǒng)工業(yè)機器人控制解決方案

    鴻道(Intewell)操作系統(tǒng)作為核心基礎(chǔ)軟件,構(gòu)建機器人控制系統(tǒng)的底層技術(shù)平臺。系統(tǒng)支持Linux/Windows的實時擴展,設(shè)備上可同時運行單個非實時
    的頭像 發(fā)表于 03-14 10:19 ?437次閱讀
    工業(yè)控制:鴻道(Intewell)<b class='flag-5'>操作系統(tǒng)</b>工業(yè)<b class='flag-5'>機器人</b>控制解決方案

    機器人基于開源的多模態(tài)語言視覺大模型

    ByteDance Research 基于開源的多模態(tài)語言視覺大模型 OpenFlamingo 開發(fā)了開源、易用的 RoboFlamingo 機器人操作
    發(fā)表于 01-19 11:43 ?352次閱讀
    <b class='flag-5'>機器人</b>基于開源的多模態(tài)語言視覺大<b class='flag-5'>模型</b>

    LabVIEW的六軸工業(yè)機器人運動控制系統(tǒng)

    LabVIEW開發(fā)六軸工業(yè)機器人運動控制系統(tǒng) 本項目開發(fā)了一個高效的工業(yè)機器人控制系統(tǒng),重點關(guān)注
    發(fā)表于 12-21 20:03

    ROS讓機器人開發(fā)更便捷,基于RK3568J+Debian系統(tǒng)發(fā)布!

    ROS系統(tǒng)是什么 ROS(Robot Operating System)是一個適用于機器人的開源的元操作系統(tǒng)。它提供了操作系統(tǒng)應(yīng)有的服務(wù),包括硬件抽象,底層設(shè)備控制,常用函數(shù)的實現(xiàn),進
    發(fā)表于 11-30 16:01

    如何創(chuàng)建機器人模型

    的細節(jié),先來找link和joint,看下這個機器人是由哪些部分組成的,了解完全局之后,再看細節(jié)。 創(chuàng)建機器人模型 好啦,講了這么多,還是要看一個完整的示例。 我們以這款移動機器人
    的頭像 發(fā)表于 11-22 17:09 ?870次閱讀
    如何創(chuàng)建<b class='flag-5'>機器人</b><b class='flag-5'>模型</b>

    基于動力學模型機器人介紹

    控制如計算力矩控制(Compute Torque Control)和阻抗控制(ImpedanceControl)等均需要使用機器人動力學模型。 機器人
    的頭像 發(fā)表于 11-17 17:43 ?776次閱讀