換個(gè)角度思考,深入研究嵌入式世界以及迄今為止機(jī)器學(xué)習(xí)行業(yè)無法解決的問題
Photo by Daniel Wiadro on Unsplash
如今,機(jī)器學(xué)習(xí)達(dá)到了頂峰,并最終在各個(gè)地方得到了應(yīng)用。 您可以在機(jī)場看到人臉識(shí)別系統(tǒng),并在Facebook中看到個(gè)性化廣告。
雖然,當(dāng)我們談?wù)搶L與嵌入式設(shè)備結(jié)合時(shí),仍然存在很大差距。
1.我們不了解什么是嵌入式世界
使用ML,我們曾經(jīng)擁有巨大的計(jì)算能力。
AlexNet需要727 MegaFlops和235Mb的內(nèi)存來處理小的227x227px圖像。 例如,Google Nexus S上的ARM Cortex-A8每秒可產(chǎn)生66個(gè)MegaFlops。 因此,您必須等待?11秒才能進(jìn)行推斷。 好慢啊!
· FLOP —浮點(diǎn)運(yùn)算
查看更多信息:各種CNN的內(nèi)存消耗和FLOP計(jì)數(shù)以及ARM內(nèi)核的浮點(diǎn)性能及其效率的估計(jì)。
我在大學(xué)里有幾門與ML相關(guān)的課程。 我們在功課上做了很多很酷的事情。 但是即使在那里我的4GB GTX1050也不足以訓(xùn)練所有模型。
Problem understanding is essential to build the right product
一般的ML工程師很少考慮計(jì)算資源。 此外,他/她很少關(guān)心內(nèi)存使用情況。 為什么? 因?yàn)閮r(jià)格便宜,甚至您的手機(jī)都具有不錯(cuò)的CPU和大量內(nèi)存。
上次聚會(huì)中的照片時(shí),手機(jī)上是否仍然缺少內(nèi)存? 想象一下,您使用的是具有256KB閃存的TrueTouch感應(yīng)控制器。 是的,256KB。 而且由于現(xiàn)有固件,您無法使用所有這些功能。 因此,大約100KB。 查看您上一次的模型的尺寸。 可能更大。
變得有趣了嗎? 讓我們繼續(xù):)
當(dāng)您聽到"嵌入式設(shè)備"時(shí)您怎么看? 想象一下圖片并牢記在心。
1.它是任何電器,甚至我的微波爐和洗衣機(jī)
Photo by Marcos Ramírez on Unsplash
嗯你是對的!
如今,幾乎所有的電氣設(shè)備都是嵌入式設(shè)備。 它內(nèi)部可能具有一個(gè)或幾個(gè)控制器來負(fù)責(zé)每個(gè)確切的功能:觸摸感應(yīng),發(fā)動(dòng)機(jī)狀態(tài)監(jiān)控等。
Photos by Harrison Broadbent on Unsplash
MAKEBLOCK Arduino MegaPi 編程學(xué)習(xí)主控板 10050
¥209
購買
恭喜,您再次正確!
它們是用于DIY項(xiàng)目的最受歡迎和使用最廣泛的工具包之一。 是的,它們是嵌入式設(shè)備。
3. Jetson Nano和類似產(chǎn)品
Photo by NVIDIA
moft 英偉達(dá)NVIDIA Jetson Nano TX2嵌入式開發(fā)套件nvidia AGX開發(fā)板 Jetson Nano【開13%增票】
¥846
購買
再次正確。
這是一個(gè)特殊的開發(fā)套件" aka mini-computer",專門為在其上運(yùn)行ML模型而開發(fā)。 它非常強(qiáng)大,說實(shí)話,超級(jí)性感。
但是這里有些遺漏
我有很多朋友正在做很棒的硬件寵物項(xiàng)目。 他們通常在那里使用Arduino或STM32(又名Hardcore
Arduino)。
Smart helmet, Robotic car and ALU
我認(rèn)識(shí)幾個(gè)對Jetson Nano和類似設(shè)備感到興奮的AI工程師。 他們被認(rèn)為是嵌入式AI的未來。
Photo by Nvidia
現(xiàn)在。 請考慮"在生產(chǎn)級(jí)別使用了多少這種設(shè)備?"
答案-小
考慮一下您家中有多少個(gè)電氣設(shè)備。 然后在您的汽車中添加大量的控制器。 您工作中的安全系統(tǒng)。 我可以繼續(xù)很長的清單。
每個(gè)設(shè)備都有一個(gè)控制器。 通常,它是微型且超級(jí)便宜。 它無法與Jetson或Raspberry的資源和功能相提并論。
假設(shè)您有一個(gè)微控制器。 它的主要任務(wù)是處理您的手指觸摸屏幕。 它具有ARM Cortex-M0處理器,256KB內(nèi)存(其中只有80–120可用)。 這是一個(gè)實(shí)時(shí)系統(tǒng),因此您可以花很少的時(shí)間來推斷模型,例如100微秒。 您的目標(biāo)是在那里改善或替換某些算法。
祝您好運(yùn),歡迎來到"嵌入式AI"世界。
嵌入式世界"由資源有限的1-2美元成本的芯片組成。 這就是在生產(chǎn)水平上使用的東西。
2.純基礎(chǔ)設(shè)施
我一直在從事上述項(xiàng)目。 一切都很棒。 我開發(fā)了一個(gè)可能必須適合該微控制器的小型網(wǎng)絡(luò)。
Photo by Matty Lynn Barnes on Unsplash
是時(shí)候開始將模型從我的電腦轉(zhuǎn)移到設(shè)備了!
1.量化。
該處理器無法執(zhí)行浮點(diǎn)數(shù)運(yùn)算。 即使可以,我們也不會(huì)使用它,因?yàn)檫@是一個(gè)非常復(fù)雜的操作,需要很多時(shí)間。
因此,我對權(quán)重量化進(jìn)行了模型化-將值的連續(xù)范圍轉(zhuǎn)換為離散值的有限范圍。
你猜怎么著? PyTorch和TensorflowLite都不完全支持它。 它們不支持所有激活函數(shù)(盡管我使用了非常簡單的HardTanh)。 PyTorch甚至無法將量化模型保存到文件中。
所以,我不得不手工做。
2.推理代碼生成
您想在該控制器上運(yùn)行模型。 對? 因此,您需要使用C代碼進(jìn)行模型推理。
很難過,但您必須手動(dòng)完成。 為什么? PyTorch沒有推理代碼生成的功能。 相比之下,TFLite具有功能,但功能相當(dāng)有限,并且不支持常見的激活函數(shù)。
因此,我再次手動(dòng)完成。
我在工作中遇到了很多這樣的情況。 這不是PyTorch或TF方面的重拳,而是"呼救聲"。
*** ML社區(qū)的另一面是,正在尋找"嵌入式AI"的專業(yè)工具,但還找不到它。 ***
有什么好處嗎
我看到大型半導(dǎo)體公司對AI產(chǎn)生了極大的興趣,它們正在做非常有價(jià)值和重要的事情。 它們值得另一篇文章,因此我列出其中一些,以免使本文太長。
CMSIS-NN —用于Arm Cortex-M CPU的高效神經(jīng)網(wǎng)絡(luò)內(nèi)核
產(chǎn)生高效推理代碼的編譯器,這些推理代碼根據(jù)您擁有的硬件進(jìn)行了優(yōu)化
還有很多其他很酷的東西
-
嵌入式系統(tǒng)
+關(guān)注
關(guān)注
41文章
3594瀏覽量
129537 -
機(jī)器學(xué)習(xí)
+關(guān)注
關(guān)注
66文章
8422瀏覽量
132742 -
cnn
+關(guān)注
關(guān)注
3文章
352瀏覽量
22238
發(fā)布評(píng)論請先 登錄
相關(guān)推薦
評(píng)論