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

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

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

管理 ML 模型部署中的權(quán)衡

茶壺茶茶 ? 2022-07-21 09:19 ? 次閱讀

機(jī)器學(xué)習(xí)代碼放在哪里——在云中、邊緣設(shè)備上或前提上——總是需要權(quán)衡。這里有一些提示。

工程師經(jīng)常需要就代碼的放置位置做出重要決定:在云中、邊緣設(shè)備上或本地。這個決定總是涉及權(quán)衡——考慮到適用于每組情況的軟件、固件、開發(fā)工具和硬件的正確組合。在 Samsara 的機(jī)器學(xué)習(xí)和計(jì)算機(jī)視覺 (ML/CV) 團(tuán)隊(duì)中,我們構(gòu)建模型并開發(fā)算法,幫助我們的客戶提高其運(yùn)營的安全性、效率和可持續(xù)性。例如,構(gòu)建應(yīng)用程序以實(shí)時檢測和警告有風(fēng)險的駕駛行為,并最終降低道路事故的頻率。

在尋求構(gòu)建 ML 解決方案時,運(yùn)輸、倉儲或制造等行業(yè)的運(yùn)營環(huán)境構(gòu)成了獨(dú)特的限制。例如,遠(yuǎn)程位置可能會因連接受限而出現(xiàn)瓶頸,或者擁有無法運(yùn)行最新最好的模型的過時技術(shù)系統(tǒng)。這些限制,再加上這些應(yīng)用程序的安全關(guān)鍵方面,需要低延遲、計(jì)算效率高的 ML 推理,因?yàn)橥?a href="http://ttokpm.com/v/tag/1722/" target="_blank">網(wǎng)絡(luò)延遲和參差不齊的蜂窩覆蓋將消除在云中完全實(shí)現(xiàn)這些功能的可能性。因此,除了保證模型的準(zhǔn)確性之外,模型還必須在與邊緣硬件平臺相關(guān)的更嚴(yán)格的計(jì)算、內(nèi)存和延遲范圍內(nèi)運(yùn)行。

可以想象,在為此類邊緣部署選擇模型時,需要分析和考慮許多權(quán)衡。以下是您可能會遇到的一些常見問題,以及如何處理它們。

首先,您必須考慮 ML 引擎的計(jì)算吞吐量和準(zhǔn)確性之間的權(quán)衡。同樣,由于蜂窩網(wǎng)絡(luò)覆蓋范圍參差不齊,您無法在云中實(shí)現(xiàn)所有內(nèi)容并相信數(shù)據(jù)可以可靠地交付。在車載高級駕駛員輔助系統(tǒng) (ADAS) 的情況下,您也不能讓笨重的攝像頭或處理器擋住車輛的儀表板。您需要權(quán)衡這種權(quán)衡:一個更緊湊的平臺(例如,類似于智能手機(jī)中使用的處理器),具有專門的片上系統(tǒng)硬件,可以處理圖像和信號處理,同時仍然保留大量處理ML 模型有效運(yùn)行的空間。

使用這個更緊湊的平臺,您必須考慮您的功率預(yù)算,尤其是任何基于移動的應(yīng)用程序。運(yùn)行程序所消耗的功率越多,您必須消散的熱能就越多,電池消耗的電量就越多。某些硬件協(xié)處理器支持某些指令集,并且每個計(jì)算單元的功率效率非常高。但是,并非所有數(shù)學(xué)運(yùn)算都可以在這些指令集中準(zhǔn)確地構(gòu)建。在這些情況下,您必須回退到更通用的計(jì)算平臺(如 GPUCPU),這些平臺支持更多的數(shù)學(xué)運(yùn)算,但更耗電。

移動友好型架構(gòu)旨在利用硬件加速(例如 DSP),可以減少整體模型大小和內(nèi)存消耗,但仍為您使用它的產(chǎn)品應(yīng)用程序提供足夠好的精度。在這些架構(gòu)中,您再次面臨一系列決策,包括模型準(zhǔn)確性/延遲權(quán)衡以及是構(gòu)建自己的 AI 解決方案還是利用外部 AI 服務(wù)提供商來訓(xùn)練和測試您的 ML 模型。

接下來,重要的是要考慮您的模型如何集成到所選硬件中。因?yàn)樗刑幚砥鞫加胁煌闹噶罴瘉碇С痔囟ǖ牟僮?,所以查看每個硬件平臺的文檔以了解這些優(yōu)勢如何影響您的特定代碼會有所幫助。每個部署環(huán)境都有自己的一組內(nèi)置特性。例如,tflite、TensorRT、SNPE 等有不同的支持操作集,所有這些都略有不同。無論您最終使用哪種芯片組,您仍然必須將所有數(shù)學(xué)計(jì)算硬塞到將執(zhí)行這些計(jì)算的最終硬件中。

您可能會遇到的一個問題是部署環(huán)境可能不支持網(wǎng)絡(luò)訓(xùn)練時使用的所有網(wǎng)絡(luò)操作和層。此外,某些操作沒有硬件加速實(shí)現(xiàn),迫使您在 CPU 上運(yùn)行這些元素,這可能會造成內(nèi)存和性能瓶頸。其中一些不兼容性需要在訓(xùn)練過程中通過修改模型架構(gòu)本身來解決,而另一些則需要在將模型轉(zhuǎn)換為硬件兼容格式時加以解決。

最后一步是對最終模型版本進(jìn)行基準(zhǔn)測試,并將性能特征與原始規(guī)格進(jìn)行比較。你必須要有創(chuàng)意并精簡你的模型,這樣它才能以低延遲運(yùn)行。這包括刪除模型操作并將不兼容操作的子圖替換為硬件支持的操作以更快地運(yùn)行。其他策略包括通道修剪、層折疊和權(quán)重量化。

歸根結(jié)底,有時您可以讓您的模型同時在設(shè)備和云中運(yùn)行。但是,當(dāng)您受到底層硬件性能特征、網(wǎng)絡(luò)延遲和準(zhǔn)確性要求的限制時,我們應(yīng)該考慮在哪里以及如何運(yùn)行模型。分割模型執(zhí)行以在邊緣設(shè)備或云上的后端服務(wù)中運(yùn)行仍然是一門藝術(shù),而不是科學(xué)。一個好的產(chǎn)品將整合對解決方案功能和客戶需求、硬件限制以及平衡行為的深刻理解,以制定滿足這些需求同時尊重物理約束的模型。

— Sharan Srinivasan 和 Brian Tuan 是 Samsara 機(jī)器學(xué)習(xí)和計(jì)算機(jī)視覺工程團(tuán)隊(duì)的軟件工程師,Samsara是一家位于舊金山的全球互聯(lián)運(yùn)營云公司。在 Samsara,Srinivasan 和 Tuan 負(fù)責(zé)使用 Tensorflow、OpenCV、Pyspark 和 Go 解決各種機(jī)器學(xué)習(xí)以應(yīng)對計(jì)算機(jī)視覺挑戰(zhàn),以構(gòu)建在邊緣運(yùn)行的模型。


審核編輯 黃昊宇

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

    關(guān)注

    1

    文章

    3033

    瀏覽量

    48379
  • ML
    ML
    +關(guān)注

    關(guān)注

    0

    文章

    143

    瀏覽量

    34447
收藏 人收藏

    評論

    相關(guān)推薦

    使用TVM量化部署模型報錯NameError: name \'GenerateESPConstants\' is not defined如何解決?

    各位好,我在使用TVM部署模型時,遇到一下錯誤,請問如何解決?我進(jìn)esp.py文件看,有如下兩個函數(shù)是找不到定義的: GenerateESPConstants(), ExtractConstantsFromPartitionedFunction(),
    發(fā)表于 06-28 10:50

    模型端側(cè)部署加速,都有哪些芯片可支持?

    電子發(fā)燒友網(wǎng)報道(文/李彎彎)大模型在端側(cè)部署是指將大型神經(jīng)網(wǎng)絡(luò)模型部署在移動終端設(shè)備上,使這些設(shè)備能夠直接運(yùn)行這些模型,從而執(zhí)行各種人工智
    的頭像 發(fā)表于 05-24 00:14 ?3535次閱讀

    基于stm32h743IIK在cubeai上部署keras模型模型輸出結(jié)果都是同一組概率數(shù)組,為什么?

    基于stm32h743IIK,在cubeai上部署keras模型,模型輸出結(jié)果都是同一組概率數(shù)組,一點(diǎn)也搞不明白,看社區(qū)也有相同的問題,但沒有解決方案
    發(fā)表于 05-20 08:18

    基于 Renesas 的 RA8M1 實(shí)現(xiàn) AI 和 ML 部署

    新的工作負(fù)載會增加功耗,盡管要求設(shè)計(jì)人員盡量降低功耗并加快產(chǎn)品上市時間。 設(shè)計(jì)人員需要一個計(jì)算選項(xiàng),既能保持 MCU 的效率,又能增加專為低功耗應(yīng)用定制的高性能功能。這一選項(xiàng)還應(yīng)保留與傳統(tǒng) MCU 相關(guān)的簡單部署模式,同時增加足夠的功能,以支持 AI 和 ML 帶來的復(fù)雜
    的頭像 發(fā)表于 04-23 15:04 ?965次閱讀
    基于 Renesas 的 RA8M1 實(shí)現(xiàn) AI 和 <b class='flag-5'>ML</b> <b class='flag-5'>部署</b>

    使用CUBEAI部署tflite模型到STM32F0,模型創(chuàng)建失敗怎么解決?

    CRC IP,用MX生成工程時已經(jīng)啟用了CRC,代碼也有。 但是依舊無法生成模型。 想問問該如何解決,還是說F0還是無法部署AI模型
    發(fā)表于 03-15 08:10

    使用ml configurator進(jìn)行tflite網(wǎng)絡(luò)模型的轉(zhuǎn)換不成功怎么解決?

    使用ml configurator進(jìn)行tflite網(wǎng)絡(luò)模型的轉(zhuǎn)換不成功,提示錯誤,請幫忙協(xié)助謝謝 [ERROR] Failed to run QEMU
    發(fā)表于 01-31 06:56

    邊緣側(cè)部署模型優(yōu)勢多!模型量化解決邊緣設(shè)備資源限制問題

    電子發(fā)燒友網(wǎng)報道(文/李彎彎)大模型的邊緣部署是將大模型部署在邊緣設(shè)備上,以實(shí)現(xiàn)更快速、更低延遲的計(jì)算和推理。邊緣設(shè)備可以是各種終端設(shè)備,如智能手機(jī)、平板電腦、智能家居設(shè)備等。通過將大
    的頭像 發(fā)表于 01-05 00:06 ?2961次閱讀

    【愛芯派 Pro 開發(fā)板試用體驗(yàn)】模型部署(以mobilenetV2為例)

    啊抱歉,上周得了一周的流感,人才活過來。。本來還想研究下sam它是怎么部署的,但是時間好像有點(diǎn)來不急,就講個最簡單的efficientNet吧。但是會仔細(xì)講下使用模型部署,實(shí)際也就是推理引擎的全過程
    發(fā)表于 12-10 16:34

    如何使用OpenVINO C++ API部署FastSAM模型

    FastSAM 模型 | 開發(fā)者實(shí)戰(zhàn)》,在該文章我們向大家展示了基于 OpenVINO Python API 的基本部署流程。在實(shí)際部署過程中會考慮到由效率問題,使得我們可能更傾向
    的頭像 發(fā)表于 11-17 09:53 ?737次閱讀
    如何使用OpenVINO C++ API<b class='flag-5'>部署</b>FastSAM<b class='flag-5'>模型</b>

    人工智能大模型、應(yīng)用場景、應(yīng)用部署教程超詳細(xì)資料

    部署過程的難度。教程中所使用的模型均為開源模型,同步提供了相應(yīng)的下載鏈接,為客戶節(jié)省寶貴的時間。 Adain風(fēng)格遷移模型 這是一種風(fēng)格遷
    發(fā)表于 11-13 14:49

    基于OpenVINO C# API部署RT-DETR模型

    Python API 部署 RT-DETR 模型 | 開發(fā)者實(shí)戰(zhàn)》和《基于 OpenVINO C++ API 部署 RT-DETR 模型 | 開發(fā)者實(shí)戰(zhàn)》,在該文章
    的頭像 發(fā)表于 11-10 16:59 ?614次閱讀
    基于OpenVINO C# API<b class='flag-5'>部署</b>RT-DETR<b class='flag-5'>模型</b>

    PODsys:大模型AI算力平臺部署的開源“神器”

    的大模型研發(fā)工具和框架。在算力平臺的部署過程,大模型研發(fā)機(jī)構(gòu)常常需要面對一系列的問題:大模型算力平臺是什么樣的?如何快速構(gòu)建大
    的頭像 發(fā)表于 11-08 09:17 ?711次閱讀
    PODsys:大<b class='flag-5'>模型</b>AI算力平臺<b class='flag-5'>部署</b>的開源“神器”

    基于OpenVINO C++ API部署RT-DETR模型

    Python API 部署 RT-DETR 模型 | 開發(fā)者實(shí)戰(zhàn)》,在該文章,我們基于 OpenVINO Python API 向大家展示了包含后處理的 RT-DETR 模型
    的頭像 發(fā)表于 11-03 14:30 ?654次閱讀
    基于OpenVINO C++ API<b class='flag-5'>部署</b>RT-DETR<b class='flag-5'>模型</b>

    如何本地部署模型

    近期,openEuler A-Tune SIG在openEuler 23.09版本引入llama.cpp&chatglm-cpp兩款應(yīng)用,以支持用戶在本地部署和使用免費(fèi)的開源大語言模型,無需聯(lián)網(wǎng)也能使用!
    的頭像 發(fā)表于 10-18 11:48 ?2300次閱讀
    如何本地<b class='flag-5'>部署</b>大<b class='flag-5'>模型</b>

    盤古大模型 for HR,軟國際打造全鏈路人才管理模型

    , 軟國際 解放號受邀參加本次分論壇。軟國際副總裁、AIGC研究院院長,解放號總裁萬如意博士發(fā)表《盤古大模型 for HR,軟國際打造全鏈路人才
    的頭像 發(fā)表于 09-25 19:55 ?581次閱讀