![]()
去年我在折騰家庭安防時(shí),算過(guò)一筆賬:4路攝像頭全開(kāi)AI檢測(cè),i5-10400的CPU占用直接飆到87%,風(fēng)扇吵得像臺(tái)吸塵器。當(dāng)時(shí)我以為只有兩條路——要么加錢換i7,要么關(guān)掉人臉識(shí)別。直到我在某個(gè)論壇看到有人把NVIDIA顯卡和Google Coral TPU(張量處理單元,專門跑AI模型的低功耗芯片)插在同一臺(tái)機(jī)器里,功耗反而降了40%。
這組合聽(tīng)起來(lái)像用跑車發(fā)動(dòng)機(jī)配自行車變速器,但實(shí)際跑起來(lái),GPU和TPU各自干自己擅長(zhǎng)的活,誰(shuí)也沒(méi)搶誰(shuí)的飯碗。
從"能錄就行"到"看懂畫(huà)面",硬件需求完全變了
最基礎(chǔ)的攝像頭方案確實(shí)省心。POE供電、NVR存儲(chǔ)、手機(jī)能看回放,這三件套對(duì)硬件幾乎沒(méi)要求。但問(wèn)題在于,這種方案產(chǎn)出的數(shù)據(jù)垃圾太多——我試過(guò)一周存滿2TB硬盤,回放找一段有人經(jīng)過(guò)的畫(huà)面,得拖動(dòng)進(jìn)度條四十分鐘。
轉(zhuǎn)折點(diǎn)是我開(kāi)始用Frigate(開(kāi)源安防平臺(tái),支持本地AI識(shí)別)。它能在本地跑目標(biāo)檢測(cè),把"畫(huà)面有變化"變成"畫(huà)面里有個(gè)人/車/包裹"。這個(gè)轉(zhuǎn)變直接砍掉了我80%的無(wú)用告警:以前風(fēng)吹樹(shù)枝、車燈掃過(guò)墻面都會(huì)彈通知,現(xiàn)在系統(tǒng)只在我關(guān)心的事情上說(shuō)話。
但本地AI有個(gè)隱性成本:解碼、推理、編碼三條流水線同時(shí)跑,CPU很快就成了瓶頸。
我的測(cè)試數(shù)據(jù)很直觀——單路1080p攝像頭開(kāi)YoloV8檢測(cè),CPU占用28%;四路全開(kāi),直接觸發(fā)降頻。更麻煩的是延遲,從畫(huà)面出現(xiàn)到手機(jī)收到告警,平均要等4-7秒。對(duì)安防來(lái)說(shuō),這夠一個(gè)人從門口走到客廳中央了。
為什么不是"換更強(qiáng)的CPU"這么簡(jiǎn)單
我最初也想過(guò)直接上i7-12700或者AMD的5800X。但算了筆賬:12代i7的TDP(熱設(shè)計(jì)功耗)65W起跳,滿載輕松破百瓦,一年電費(fèi)夠買兩塊Coral TPU。而且CPU做AI推理是通用計(jì)算,效率天生比專用芯片低一個(gè)數(shù)量級(jí)。
這里有個(gè)容易混淆的概念:視頻解碼和AI推理是兩回事。解碼是把H.264/H.265壓縮的畫(huà)面還原成原始幀,這塊NVIDIA的NVENC(視頻編碼引擎)比CPU快得多;推理是把畫(huà)面喂給神經(jīng)網(wǎng)絡(luò),問(wèn)"這是人還是貓",Coral TPU的INT8精度運(yùn)算比GPU的FP32更適合這種"認(rèn)個(gè)大概就行"的場(chǎng)景。
我的最終方案是:GTX 1650負(fù)責(zé)解碼和預(yù)處理,Coral USB Accelerator(USB接口的TPU加速棒)跑檢測(cè)模型,CPU幾乎被架空,只干調(diào)度的活。
實(shí)測(cè)結(jié)果:四路攝像頭同時(shí)檢測(cè),整機(jī)功耗從127W降到71W,告警延遲從平均5.2秒壓到1.8秒。最意外的是,GTX 1650的顯存只占用了1.2GB,TPU的溫度穩(wěn)定在43度,兩者都沒(méi)跑到性能上限。
Frigate的調(diào)度邏輯,比硬件本身更關(guān)鍵
很多人不知道的是,F(xiàn)rigate從0.12版本開(kāi)始支持檢測(cè)任務(wù)的硬件分流。你可以在配置里指定:哪些攝像頭用GPU解碼,哪些用CPU(備用),檢測(cè)模型固定走TPU。這個(gè)設(shè)計(jì)讓異構(gòu)硬件真正協(xié)作起來(lái),而不是互相搶資源。
我的配置大概長(zhǎng)這樣:主碼流4K給NVR存檔,子碼流720p送去做實(shí)時(shí)檢測(cè)。GPU同時(shí)處理四路720p的解碼,輸出幀直接進(jìn)TPU的推理隊(duì)列,全程不經(jīng)過(guò)系統(tǒng)內(nèi)存。這個(gè)路徑優(yōu)化把帶寬壓力也卸掉了——以前CPU方案里,解碼后的原始幀要在內(nèi)存里拷來(lái)拷去,現(xiàn)在顯存和TPU之間走PCIe直傳。
有個(gè)細(xì)節(jié)很有意思:Coral TPU的模型必須量化到INT8,精度確實(shí)比GPU的FP16低一點(diǎn)。但在安防場(chǎng)景里,"畫(huà)面左邊有個(gè)人"和"畫(huà)面左邊有個(gè)置信度97.3%的人"沒(méi)有本質(zhì)區(qū)別。TPU用1/4的功耗換來(lái)了90%的有效算力,這筆賬怎么算都值。
這套方案的邊界在哪
我必須承認(rèn),GPU+TPU的組合不是所有場(chǎng)景的最優(yōu)解。如果你只有1-2路攝像頭,或者不需要實(shí)時(shí)檢測(cè),CPU完全夠用,額外硬件是浪費(fèi)錢。反過(guò)來(lái),如果你要跑10路以上的4K檢測(cè),單塊TPU的算力也不夠,得上多TPU陣列或者干脆用Jetson AGX這種集成方案。
我的場(chǎng)景恰好卡在中間地帶:4-6路攝像頭,需要實(shí)時(shí)檢測(cè)但不需要高精度識(shí)別(比如區(qū)分"我家貓"和"鄰居貓"這種細(xì)粒度任務(wù))。這個(gè)區(qū)間里,異構(gòu)硬件的性價(jià)比最高。
另一個(gè)限制是軟件生態(tài)。Frigate對(duì)Coral的支持很成熟,但如果你想換用其他平臺(tái)——比如Home Assistant的圖像處理插件,或者自己寫的Python腳本——可能需要額外折騰驅(qū)動(dòng)和模型轉(zhuǎn)換。Google的Edge TPU編譯器(Edge TPU Compiler)能把TensorFlow Lite模型轉(zhuǎn)成TPU專用格式,但這個(gè)工具鏈去年更新頻率明顯變慢,長(zhǎng)期維護(hù)是個(gè)問(wèn)號(hào)。
功耗數(shù)字背后的真實(shí)成本
很多人問(wèn)我:省下的電費(fèi)多久能回本?按我的電價(jià)0.6元/度算,年省電費(fèi)大概294元。GTX 1650二手價(jià)400元,Coral USB Accelerator官方價(jià)60美元(約430元),合計(jì)投入830元,回本周期接近3年。
但這筆賬沒(méi)算體驗(yàn)價(jià)值。以前CPU滿載時(shí),NAS上的其他服務(wù)——Plex轉(zhuǎn)碼、Home Assistant自動(dòng)化、下載機(jī)——全部卡頓。現(xiàn)在整機(jī)負(fù)載壓在30%以下,這些服務(wù)終于能和平共處。對(duì)我來(lái)說(shuō),"不卡頓"比"省電"更值得花錢。
還有個(gè)意外收獲:TPU的被動(dòng)散熱設(shè)計(jì)讓它可以完全靜音。我把整個(gè)盒子塞進(jìn)鞋柜,深夜再也聽(tīng)不到風(fēng)扇突然起飛。這個(gè)改變對(duì)臥室附近的設(shè)備來(lái)說(shuō),可能比任何性能指標(biāo)都重要。
如果你也在折騰類似的方案,我想問(wèn)的是:你會(huì)為了降低那幾瓦功耗,犧牲掉實(shí)時(shí)檢測(cè)的響應(yīng)速度嗎?還是說(shuō),在你的場(chǎng)景里,延遲本身就不是優(yōu)先級(jí)?
特別聲明:以上內(nèi)容(如有圖片或視頻亦包括在內(nèi))為自媒體平臺(tái)“網(wǎng)易號(hào)”用戶上傳并發(fā)布,本平臺(tái)僅提供信息存儲(chǔ)服務(wù)。
Notice: The content above (including the pictures and videos if any) is uploaded and posted by a user of NetEase Hao, which is a social media platform and only provides information storage services.