核心概念
本文提出了一種新的神經網路核心架構搜尋方法 KAS,並開發了一個名為 Canvas 的端到端框架,用於自動搜尋高效能且高準確度的 CNN 核心。Canvas 使用細粒度原語庫隨機生成候選核心,並透過形狀匹配和約束求解器來確保合法性,最後透過實驗評估核心在運行時間和準確度方面的表現。實驗結果顯示,Canvas 能夠在保持可接受準確度的同時,顯著提升模型的運行速度和壓縮模型大小。
本研究旨在解決神經網路高效能和高準確度的需求,提出了一種新的核心架構搜尋方法 KAS,並開發了一個名為 Canvas 的端到端框架,用於自動搜尋高效能且高準確度的 CNN 核心。
Canvas 使用細粒度原語庫作為構建塊,並採用隨機採樣的方式生成候選核心。為了確保生成的核心的合法性,Canvas 使用了形狀匹配求解器和約束求解器來處理動態變數。此外,Canvas 還採用了多種剪枝技術來提高搜尋效率。
細粒度原語庫
Canvas 的原語庫包含三種類型的原語:
**重排原語:**用於在張量的不同通道和空間維度之間進行靈活的數據重排,例如 Group、Shift 和 Unfold。
**算術原語:**包括神經網路中常用的算術運算符,例如全連接層(FC)、元素級函數(ReLU、abs 等)、摺疊(在特定維度上進行平均池化)和 Softmax。
**混合原語:**用於合併多個分支,例如廣播原語,它可以將一個張量的數據廣播到另一個張量上。
動態變數求解器
為了在搜尋過程中提供更大的靈活性,Canvas 使用動態變數來表示張量維度的大小。Canvas 使用兩種求解器來處理動態變數:
**形狀匹配求解器:**在採樣過程中,確保廣播原語的輸入張量具有匹配的維度大小。
**約束求解器:**在採樣完成後,根據分析約束(例如 FLOPs 和參數數量)為剩餘的動態變數分配具體的值。
核心評估
Canvas 使用 PyTorch 和 TVM 生成候選核心的代碼實現,並在真實硬體平台上測量其運行時間和準確度。