邊緣深度學(xué)習(xí)設(shè)備基準(zhǔn)評(píng)測(cè):英偉達(dá)Jetson Nano勝出
邊緣計(jì)算對(duì)勢(shì)頭正盛的物聯(lián)網(wǎng)的發(fā)展至關(guān)重要。近日,機(jī)器學(xué)習(xí)和數(shù)據(jù)科學(xué)咨詢(xún)公司 Tryolabs 發(fā)布了一篇基準(zhǔn)評(píng)測(cè)報(bào)告,測(cè)試比較了英偉達(dá) Jetson Nano、谷歌 Coral 開(kāi)發(fā)板(內(nèi)置 Edge TPU)、英特爾神經(jīng)計(jì)算棒這三款針對(duì)機(jī)器學(xué)習(xí)設(shè)計(jì)的邊緣計(jì)算設(shè)備以及與不同的機(jī)器學(xué)習(xí)模型的組合。結(jié)果表明,無(wú)論是在推理時(shí)間還是準(zhǔn)確度方面,英偉達(dá)的 Jetson Nano 都是當(dāng)之無(wú)愧的贏家。另外他們也給出了在樹(shù)莓派 3B 與英偉達(dá) 2080ti GPU 上的結(jié)果以供參考。
為什么需要邊緣計(jì)算?
人類(lèi)產(chǎn)生和收集的數(shù)據(jù)超過(guò)了以往任何時(shí)候。我們口袋中的設(shè)備就能產(chǎn)生巨量數(shù)據(jù),比如照片、GPS 坐標(biāo)、音頻以及我們有意無(wú)意泄漏的各種個(gè)人信息。
此外,我們不僅會(huì)產(chǎn)生與個(gè)人相關(guān)的數(shù)據(jù),也會(huì)從很多其它地方收集未知的數(shù)據(jù),比如交通和出行控制系統(tǒng)、視頻監(jiān)控單元、衛(wèi)星、智能汽車(chē)以及其它不勝枚舉的智能設(shè)備。
數(shù)據(jù)增長(zhǎng)的趨勢(shì)已然形成,并還將繼續(xù)呈指數(shù)級(jí)發(fā)展。在數(shù)據(jù)點(diǎn)方面,國(guó)際數(shù)據(jù)咨詢(xún)公司(IDC)預(yù)計(jì)世界數(shù)據(jù)總量將從 2019 年的 33 ZB 增長(zhǎng)至 2025 的 175 ZB,年增長(zhǎng)率 61%。
盡管我們一直在處理數(shù)據(jù),起先是在數(shù)據(jù)中心,然后是在云中,但這些解決方案不適用于數(shù)據(jù)量很大的高要求的任務(wù)。網(wǎng)絡(luò)的性能和速度不斷推進(jìn)新的極限,隨之而來(lái)的是對(duì)新型解決方案的需求?,F(xiàn)在正是邊緣計(jì)算和邊緣設(shè)備時(shí)代的起點(diǎn)。
本報(bào)告是對(duì)五種新型邊緣設(shè)備的基準(zhǔn)評(píng)測(cè)。我們使用了不同的框架和模型來(lái)測(cè)試哪些組合表現(xiàn)最佳。我們將重點(diǎn)關(guān)注邊緣機(jī)器學(xué)習(xí)的性能結(jié)果。
什么是邊緣計(jì)算?
邊緣計(jì)算包含把數(shù)據(jù)處理任務(wù)放至網(wǎng)絡(luò)邊緣的設(shè)備上,使其盡可能地靠近數(shù)據(jù)源。這種計(jì)算方式能以非常高的速度實(shí)現(xiàn)實(shí)時(shí)的數(shù)據(jù)處理,對(duì)很多具備機(jī)器學(xué)習(xí)能力的復(fù)雜物聯(lián)網(wǎng)方案而言是必備能力。在此基礎(chǔ)上,邊緣計(jì)算能夠緩解網(wǎng)絡(luò)壓力、降低能耗、提升安全性以及改善數(shù)據(jù)隱私。
使用這種新范式,針對(duì)邊緣機(jī)器學(xué)習(xí)而優(yōu)化的專(zhuān)用硬件和軟件庫(kù)組合到一起,能造就最前沿的應(yīng)用和產(chǎn)品,進(jìn)而實(shí)現(xiàn)大規(guī)模部署。
構(gòu)建這類(lèi)應(yīng)用面臨的最大難題源自音頻、視頻和圖像處理任務(wù)。事實(shí)表明,深度學(xué)習(xí)技術(shù)在克服這些困難方面做得非常成功。
實(shí)現(xiàn)邊緣深度學(xué)習(xí)
以自動(dòng)駕駛汽車(chē)為例。自動(dòng)駕駛汽車(chē)需要快速且持續(xù)不斷地分析傳入的數(shù)據(jù),以便能在數(shù)毫秒內(nèi)解析周?chē)氖澜绮⒉扇⌒袆?dòng)。這種時(shí)間限制使得我們不能依靠云來(lái)處理數(shù)據(jù)流,而是必須在本地完成處理。
但在本地處理有個(gè)缺點(diǎn):硬件沒(méi)有云中的超級(jí)計(jì)算機(jī)那么強(qiáng)大,而我們又不能在準(zhǔn)確度和速度上妥協(xié)。
解決這個(gè)問(wèn)題的方案要么使用更強(qiáng)更高效的硬件,要么就不要使用那么復(fù)雜的 深度神經(jīng)網(wǎng)絡(luò) 。為了得到最佳結(jié)果,必須在兩者之間找到平衡。
因此,真正要解答的問(wèn)題是:
為了最大化深度學(xué)習(xí)算法的準(zhǔn)確度和速度,我們應(yīng)該組合使用哪款邊緣硬件和哪種類(lèi)型的網(wǎng)絡(luò)?
在我們尋找兩者的最佳組合的旅程中,我們將比較多種當(dāng)前最佳的邊緣設(shè)備與不同的 深度神經(jīng)網(wǎng)絡(luò) 模型的組合。
新型邊緣設(shè)備基準(zhǔn)測(cè)試
我們探討的是最具創(chuàng)新性的用例。這里我們將通過(guò)一次一張的圖像分類(lèi)任務(wù)來(lái)測(cè)量實(shí)時(shí)的推理吞吐量,從而得到近似的每秒處理幀數(shù)。
我們的具體做法是在 ImagenetV2 數(shù)據(jù)集的一個(gè)特定子集上評(píng)估在所有類(lèi)別上的 top-1 推理準(zhǔn)確度,并將結(jié)果與某些 卷積神經(jīng)網(wǎng)絡(luò) 模型進(jìn)行比較。我們還盡量實(shí)驗(yàn)了不同的框架和優(yōu)化過(guò)的版本。
硬件加速器
盡管過(guò)去幾年人們?cè)谔嵘F(xiàn)有邊緣硬件方面做了很多工作,但我們選擇拿下面這幾種新型設(shè)備做實(shí)驗(yàn):
-
英偉達(dá) Jetson Nano
-
谷歌 Coral 開(kāi)發(fā)板
-
英特爾神經(jīng)計(jì)算棒
-
樹(shù)莓派(參考上限)
-
英偉達(dá) 2080ti GPU(參考下限)
實(shí)驗(yàn)將包含樹(shù)莓派和英偉達(dá) 2080ti,以便將所測(cè)試硬件與廣為人知的系統(tǒng)進(jìn)行對(duì)比,其中樹(shù)莓派是邊緣設(shè)備,英偉達(dá) 2080ti GPU 常用在云中。
這個(gè)下限很簡(jiǎn)單,我們 Tryolabs 會(huì)設(shè)計(jì)和訓(xùn)練我們自己的深度學(xué)習(xí)模型。因此,我們有很多算力可用。所以我們當(dāng)然也就用了。為了確定推理時(shí)間的下限,我們?cè)谝慌_(tái)英偉達(dá) 2080ti GPU 上運(yùn)行了測(cè)試。但是,由于我們僅將其用作參考,所以我們只使用了未經(jīng)優(yōu)化的基本模型運(yùn)行測(cè)試。
至于上限,我們選擇了衛(wèi)冕冠軍:最流行的單板計(jì)算機(jī):樹(shù)莓派 3B。
神經(jīng)網(wǎng)絡(luò)模型
我們這次基準(zhǔn)評(píng)測(cè)主要包含了兩種網(wǎng)絡(luò):更古老一點(diǎn)的眾所周知的 Resnet-50 和谷歌今年推出的全新的 EfficientNet 。
對(duì)于所有基準(zhǔn),我們都使用了公開(kāi)可用的預(yù)訓(xùn)練模型,并且使用了不同的框架運(yùn)行它們。對(duì)于英偉達(dá) Jetson,我們嘗試了 TensorRT 優(yōu)化;對(duì)于樹(shù)莓派,我們使用了TensorFlow和 PyTorch 變體;對(duì)于 Coral 設(shè)備,我們實(shí)現(xiàn)了 S、M 和 L 型 EfficientNet 模型的 Edge TPU 引擎版本;至于英特爾神經(jīng)計(jì)算棒,我們使用的是用 OpenVINO 工具包編譯的 Resnet-50。
數(shù)據(jù)集
由于所有模型都是在 ImageNet 數(shù)據(jù)集上訓(xùn)練的,所以我們使用了 ImageNet V2 MatchedFrequency。其中包含 10000 張圖像,分為 1000 類(lèi)。
我們?cè)诿繌垐D像上運(yùn)行一次推理,保存推理時(shí)間,然后求平均。我們計(jì)算了所有測(cè)試的 top-1 準(zhǔn)確度以及特定模型的 top-5 準(zhǔn)確度。
top-1 準(zhǔn)確度:這是常規(guī)的準(zhǔn)確度,即模型的答案(概率最高的答案)必須等同于確切的期望答案。
top-5 準(zhǔn)確度:即模型的概率最高的前五個(gè)答案中任意一個(gè)與期望答案匹配。
要記住,在比較結(jié)果時(shí),對(duì)于更快速的設(shè)備-模型組合,我們運(yùn)行的測(cè)試囊括整個(gè)數(shù)據(jù)集,而對(duì)于速度更慢的組合我們僅使用了部分?jǐn)?shù)據(jù)集。
結(jié)果與分析
下圖展示了實(shí)驗(yàn)獲得的指標(biāo)。由于不同模型和設(shè)備在推理時(shí)間上有較大的差異,所以平均推理時(shí)間以對(duì)數(shù)形式展示。
推理時(shí)間第一名: Jetson Nano
在推理時(shí)間方面,組合使用 ResNet-50、TensorRT 和 PyTorch 的 Jetson Nano 獲勝。該組合用 2.67 毫秒處理一張圖像,即每秒處理 375 幀。
這個(gè)結(jié)果很讓人驚訝,因?yàn)槠涑^(guò)英偉達(dá)公布的推理速度十倍之多。結(jié)果差異的原因很可能是英偉達(dá)使用的是TensorFlow,而非 PyTorch。
推理時(shí)間第二名: Coral 開(kāi)發(fā)板
排在第二的是與 EfficientNet-S 搭檔的 Coral 開(kāi)發(fā)板。其 5.42 秒完成一張圖像處理,即每秒處理 185 幀。
這個(gè)結(jié)果與谷歌公布的速度差不多,即 5.5 毫秒完成一張,每秒處理 182 幀。
雖然這個(gè)組合速度挺高,但準(zhǔn)確度卻不好。我們沒(méi)法得知谷歌報(bào)告準(zhǔn)確度所使用的確切的驗(yàn)證集,但我們猜想他們使用的圖像預(yù)處理變換方法與我們用的不一樣。因?yàn)榱炕?8 位模型對(duì)圖像預(yù)處理非常敏感,這可能對(duì)結(jié)果產(chǎn)生很大影響。
準(zhǔn)確度第一名: Jetson Nano
準(zhǔn)確度方面,最佳結(jié)果來(lái)自 Jetson Nano 與 TF-TRT 和 EfficentNet-B3 的組合,其實(shí)現(xiàn)了 85% 的準(zhǔn)確度。但是,這些結(jié)果是相對(duì)的,因?yàn)槲覀冇?xùn)練模型時(shí),有的模型使用的數(shù)據(jù)集比其它模型更大一些。
可以看到,當(dāng)我們向模型輸入更小的數(shù)據(jù)集時(shí),準(zhǔn)確率會(huì)更高;而當(dāng)使用完整數(shù)據(jù)集時(shí),準(zhǔn)確度更低。這個(gè)結(jié)果的原因是我們沒(méi)有對(duì)更小的數(shù)據(jù)集進(jìn)行隨機(jī)排序,因此其中的圖像沒(méi)有實(shí)現(xiàn)合理的平衡。
硬件加速器的可用性
關(guān)于這些設(shè)備的可用性,開(kāi)發(fā)者注意到一些重要的差異。
當(dāng)涉及到選擇和部署預(yù)編譯的模型和框架時(shí)。Jetson 是最靈活的。英特爾神經(jīng)計(jì)算棒緊隨其后,因?yàn)槠涮峁┝撕芎玫膸?kù)、很多模型和很好的項(xiàng)目。此外,這款計(jì)算棒的第二代相比第一代有重大改進(jìn)。唯一的缺點(diǎn)是他們那龐大的軟件庫(kù) OpenVINO 僅支持在 Ubuntu 16.04,不支持更新的 Linux操作系統(tǒng)版本。
相比于 Jetson 和英特爾計(jì)算棒,Coral 設(shè)備存在一些局限性。如果你想在上面運(yùn)行非官方的模型,你必須將其轉(zhuǎn)換到TensorFlowLite,然后再針對(duì) Edge TPU 進(jìn)行量化和編譯。取決于模型的不同,這種轉(zhuǎn)換有可能無(wú)法實(shí)現(xiàn)。盡管如此,我們預(yù)計(jì)谷歌今后會(huì)改進(jìn)這款設(shè)備的未來(lái)版本。
總結(jié)
這里的研究基于我們對(duì)為深度學(xué)習(xí)算法設(shè)計(jì)的當(dāng)前最佳邊緣計(jì)算設(shè)備的探索。
我們發(fā)現(xiàn) Jetson Nano 和 Coral 開(kāi)發(fā)板在推理時(shí)間方面表現(xiàn)非常好。
而在準(zhǔn)確度方面,Jetson Nano 表現(xiàn)也很出色,盡管這個(gè)結(jié)果是相對(duì)的。
從總體表現(xiàn)看,Jetson Nano 是當(dāng)之無(wú)愧的贏家。
但是,必須指出,由于 Jetson Nano 和 Coral 的設(shè)計(jì)不同,我們沒(méi)法在兩者之上測(cè)試同樣的模型。我們相信每種設(shè)備都有最適合自己的場(chǎng)景,這取決于所要完成的具體任務(wù)。