某些應用場景要求低延時,高安全性及考慮長期成本效益,此時將模型托管在雲端就不再是最好的解決方案。
邊緣計算相比雲計算的優勢
- 帶寬和時延
顯然調用雲端服務會有一個信息往返的時間花費。
比如自動駕駛,大的延時可能會引發事故,因為一個突然出現的目標可能僅僅在幾幀的時間內。
因此英偉達提供定制化的板載計算設備來進行邊緣端的推理。
當多個設備連接在同一個網絡中時,由於天然的信道競爭導致有效帶寬降低。邊緣計算則可顯著減少此問題。
eg:
- 視頻會議需要2M帶寬
- 兩路視頻監控需要5-25M帶寬
- 360°全景視頻需要10-50帶寬
以多路設備的視頻數據處理為例,雲計算需要上傳到雲端推理計算,帶寬需要很大,邊緣計算優勢顯著。
- 安全性及去中心化
雲服務器易受黑客攻擊,且數據上傳雲端有安全性問題。
多個邊緣設備的部署相比雲服務,擁有去中心化的優勢,更難被攻擊。
- 特定作業情況(定制化)
如工業場景需要多個不同模型的情況,如果采用雲計算則需要托管多個模型,會帶來費用的明顯增加。
- 邊緣端並行訓練
多邊緣端的數據可以在線學習並行訓練
- 冗余性
邊緣部署 保證了功能的健壯性。一個節點(邊緣設備)故障不影響其他設備
- 長遠的經濟效益
邊緣端更小,尤其可批量定制的邊緣設備。
邊緣設備的特點
內存及算力不足
DL網絡的顯著特點:大模型,高算力需求
解決方案
推理方面
-
關閉訓練時產生的Graph
深度學習框架如TF,在訓練時會大量建圖來加速訓練,但是對於推理卻無用,推理時關閉圖可以減小模型。 -
剪枝和截斷
- 訓練后的模型中有大部分沒用的神經元(接近0),通過對這類節點的剪枝可以節省內存。 谷歌的Learn2Compress發現可以在保持97%准確率的前提下,將模型壓縮一倍。
- 大部分框架采用32位精度訓練,邊緣端進行精度截取比如采用8位就可以壓縮4倍空間。
通常,精度截斷如果是完全隨機的,誤差很有可能互相抵消。但是,零廣泛用於填充、輟學和 ReLU。在低精度浮點格式中無法精確表示零,因此可能會在性能中引入整體偏差。
- 模型蒸餾
本質上就是用訓練出的大模型(真值)去訓練出小模型(預測模型)
Learn2Compress也用到了這個手段做模型壓縮,結合遷移學習,可以在不損失太多精度的情況下壓縮模型
- 采用優化的芯片設計
- Vision Processing Units (VPUs):例如google的kits及intel的Neural Compute Stick,號稱低功耗 高性能
- FPGA: 比GPU功耗低,可接受<32位的精度,但是性能比GPU差
- ASIC:對於大規模部署來說,最好的解決方案---特定場景定制的專用芯片(CPU是通用計算芯片)一般是AI芯片,如阿里的含光800,地平線征程系列。設計類似Nvidia V100微處理器架構來加速矩陣乘法。----高研發時間成本
- 權值共享
首先對權重量化,然后采用2位的索引查詢一個共享數據來降低模型占用
-
編碼
在模型剪枝和量化后,還可以再用霍夫曼編碼以低bit位的方式表示權重中的高頻權值,因為霍夫曼編碼后的字符串占用比普通字符串小。
現在有一些有損壓縮和無損壓縮的深度壓縮研究,但是編碼增加了額外的解碼時間。 -
實現了上述方法的推理工具
Tensor-RT:
訓練方面
- 神經網絡架構設計
高效的參數網絡:
- 深度卷積:如1*1卷積減少輸入下層的通道數
- NxN 卷積因子化為 Nx1 和 1xN 卷積的組合。節省大量空間,同時提高計算速度
如MobileNet, SqueezeNet
Neural Architecture Search-----神經網絡架構搜索
如NAS-Net
搜索目標:高精確率,高速,低內存占用
如Google的AUto-ML項目:
- 保存部分 梯度檢查節點---checkpoint
通常訓練時,前向傳播過程中會保存全部值,占用大量內存;可以考慮不保存正向傳播的中間值,只在反向傳播時根據需要重計算。
缺點:隨着網絡加深及復雜化,需要的再計算算力劇增
折中的方法:保存部分中間值---checkpoints,大大減小網絡的內存占用。
- 空間換時間
典型的如DenseNet中的拼接及BN的高效實現。GPU卷積的高效計算 需要數據的連續存儲,因此:
- 對於不是時間密集型操作的拼接操作及BN操作,可以用再計算來代替直接存儲,節省內存
- 采用索引共享內存空間的形式連續存儲