將機(jī)器學(xué)習(xí)代碼放在哪里——在云中、邊緣設(shè)備上或前提上——總是需要權(quán)衡。這里有一些提示。
工程師經(jīng)常需要就代碼的放置位置做出重要決定:在云中、邊緣設(shè)備上或本地。這個(gè)決定總是涉及權(quán)衡——考慮到適用于每組情況的軟件、固件、開(kāi)發(fā)工具和硬件的正確組合。在 Samsara 的機(jī)器學(xué)習(xí)和計(jì)算機(jī)視覺(jué) (ML/CV) 團(tuán)隊(duì)中,我們構(gòu)建模型并開(kāi)發(fā)算法,幫助我們的客戶提高其運(yùn)營(yíng)的安全性、效率和可持續(xù)性。例如,構(gòu)建應(yīng)用程序以實(shí)時(shí)檢測(cè)和警告有風(fēng)險(xiǎn)的駕駛行為,并最終降低道路事故的頻率。
在尋求構(gòu)建 ML 解決方案時(shí),運(yùn)輸、倉(cāng)儲(chǔ)或制造等行業(yè)的運(yùn)營(yíng)環(huán)境構(gòu)成了獨(dú)特的限制。例如,遠(yuǎn)程位置可能會(huì)因連接受限而出現(xiàn)瓶頸,或者擁有無(wú)法運(yùn)行最新最好的模型的過(guò)時(shí)技術(shù)系統(tǒng)。這些限制,再加上這些應(yīng)用程序的安全關(guān)鍵方面,需要低延遲、計(jì)算效率高的 ML 推理,因?yàn)橥稻W(wǎng)絡(luò)延遲和參差不齊的蜂窩覆蓋將消除在云中完全實(shí)現(xiàn)這些功能的可能性。因此,除了保證模型的準(zhǔn)確性之外,模型還必須在與邊緣硬件平臺(tái)相關(guān)的更嚴(yán)格的計(jì)算、內(nèi)存和延遲范圍內(nèi)運(yùn)行。
可以想象,在為此類邊緣部署選擇模型時(shí),需要分析和考慮許多權(quán)衡。以下是您可能會(huì)遇到的一些常見(jiàn)問(wèn)題,以及如何處理它們。
首先,您必須考慮 ML 引擎的計(jì)算吞吐量和準(zhǔn)確性之間的權(quán)衡。同樣,由于蜂窩網(wǎng)絡(luò)覆蓋范圍參差不齊,您無(wú)法在云中實(shí)現(xiàn)所有內(nèi)容并相信數(shù)據(jù)可以可靠地交付。在車載高級(jí)駕駛員輔助系統(tǒng) (ADAS) 的情況下,您也不能讓笨重的攝像頭或處理器擋住車輛的儀表板。您需要權(quán)衡這種權(quán)衡:一個(gè)更緊湊的平臺(tái)(例如,類似于智能手機(jī)中使用的處理器),具有專門(mén)的片上系統(tǒng)硬件,可以處理圖像和信號(hào)處理,同時(shí)仍然保留大量處理ML 模型有效運(yùn)行的空間。
使用這個(gè)更緊湊的平臺(tái),您必須考慮您的功率預(yù)算,尤其是任何基于移動(dòng)的應(yīng)用程序。運(yùn)行程序所消耗的功率越多,您必須消散的熱能就越多,電池消耗的電量就越多。某些硬件協(xié)處理器支持某些指令集,并且每個(gè)計(jì)算單元的功率效率非常高。但是,并非所有數(shù)學(xué)運(yùn)算都可以在這些指令集中準(zhǔn)確地構(gòu)建。在這些情況下,您必須回退到更通用的計(jì)算平臺(tái)(如 GPU 和 CPU),這些平臺(tái)支持更多的數(shù)學(xué)運(yùn)算,但更耗電。
移動(dòng)友好型架構(gòu)旨在利用硬件加速(例如 DSP),可以減少整體模型大小和內(nèi)存消耗,但仍為您使用它的產(chǎn)品應(yīng)用程序提供足夠好的精度。在這些架構(gòu)中,您再次面臨一系列決策,包括模型準(zhǔn)確性/延遲權(quán)衡以及是構(gòu)建自己的 AI 解決方案還是利用外部 AI 服務(wù)提供商來(lái)訓(xùn)練和測(cè)試您的 ML 模型。
接下來(lái),重要的是要考慮您的模型如何集成到所選硬件中。因?yàn)樗刑幚砥鞫加胁煌闹噶罴瘉?lái)支持特定的操作,所以查看每個(gè)硬件平臺(tái)的文檔以了解這些優(yōu)勢(shì)如何影響您的特定代碼會(huì)有所幫助。每個(gè)部署環(huán)境都有自己的一組內(nèi)置特性。例如,tflite、TensorRT、SNPE 等有不同的支持操作集,所有這些都略有不同。無(wú)論您最終使用哪種芯片組,您仍然必須將所有數(shù)學(xué)計(jì)算硬塞到將執(zhí)行這些計(jì)算的最終硬件中。
您可能會(huì)遇到的一個(gè)問(wèn)題是部署環(huán)境可能不支持網(wǎng)絡(luò)訓(xùn)練時(shí)使用的所有網(wǎng)絡(luò)操作和層。此外,某些操作沒(méi)有硬件加速實(shí)現(xiàn),迫使您在 CPU 上運(yùn)行這些元素,這可能會(huì)造成內(nèi)存和性能瓶頸。其中一些不兼容性需要在訓(xùn)練過(guò)程中通過(guò)修改模型架構(gòu)本身來(lái)解決,而另一些則需要在將模型轉(zhuǎn)換為硬件兼容格式時(shí)加以解決。
最后一步是對(duì)最終模型版本進(jìn)行基準(zhǔn)測(cè)試,并將性能特征與原始規(guī)格進(jìn)行比較。你必須要有創(chuàng)意并精簡(jiǎn)你的模型,這樣它才能以低延遲運(yùn)行。這包括刪除模型操作并將不兼容操作的子圖替換為硬件支持的操作以更快地運(yùn)行。其他策略包括通道修剪、層折疊和權(quán)重量化。
歸根結(jié)底,有時(shí)您可以讓您的模型同時(shí)在設(shè)備和云中運(yùn)行。但是,當(dāng)您受到底層硬件性能特征、網(wǎng)絡(luò)延遲和準(zhǔn)確性要求的限制時(shí),我們應(yīng)該考慮在哪里以及如何運(yùn)行模型。分割模型執(zhí)行以在邊緣設(shè)備或云上的后端服務(wù)中運(yùn)行仍然是一門(mén)藝術(shù),而不是科學(xué)。一個(gè)好的產(chǎn)品將整合對(duì)解決方案功能和客戶需求、硬件限制以及平衡行為的深刻理解,以制定滿足這些需求同時(shí)尊重物理約束的模型。
— Sharan Srinivasan 和 Brian Tuan 是 Samsara 機(jī)器學(xué)習(xí)和計(jì)算機(jī)視覺(jué)工程團(tuán)隊(duì)的軟件工程師,Samsara是一家位于舊金山的全球互聯(lián)運(yùn)營(yíng)云公司。在 Samsara,Srinivasan 和 Tuan 負(fù)責(zé)使用 Tensorflow、OpenCV、Pyspark 和 Go 解決各種機(jī)器學(xué)習(xí)以應(yīng)對(duì)計(jì)算機(jī)視覺(jué)挑戰(zhàn),以構(gòu)建在邊緣運(yùn)行的模型。
審核編輯 黃昊宇
-
模型
+關(guān)注
關(guān)注
1文章
3486瀏覽量
49990 -
ML
+關(guān)注
關(guān)注
0文章
150瀏覽量
34972
發(fā)布評(píng)論請(qǐng)先 登錄
評(píng)論