天天看點

CANN5.0黑科技解密 | 别眨眼!縮小隧道,讓你的AI模型“身輕如燕”!

摘要:CANN作為釋放昇騰硬體算力的關鍵平台,通過深耕先進的模型壓縮技術,聚力打造AMCT模型壓縮工具,在保證模型精度前提下,不遺餘力地降低模型的存儲空間和計算量。

随着深度學習的發展,推理模型巨大的參數量和計算量,需要耗費越來越多的硬體資源,也給模型在移動端的部署帶來了新的挑戰。

能不能像哆啦A夢一樣,變出一條縮小隧道,不管再大的模型,塞進去後就能變小變輕,在寸土寸金的AI硬體資源上身輕如燕…

CANN5.0黑科技解密 | 别眨眼!縮小隧道,讓你的AI模型“身輕如燕”!

答案是:當然可以!

通常來說,想要建構深度學習領域的模型縮小隧道,加速模型推理部署,一般需要借助量化、剪枝、低秩分解、知識蒸餾等模型壓縮技術,降低模型參數量、計算量。

但是,模型壓縮通常不是無損壓縮,是犧牲一定精度為代價來擷取計算性能的提升。而作為衡量AI推理應用成效的雙重标準,精度和性能同等重要,模型壓縮算法的落地自然也需要同時兼顧精度損失和性能提升的均衡。

AMCT:模型縮小隧道

昇騰異構計算架構CANN,作為連接配接AI架構和AI硬體的橋梁,提升昇騰AI計算效率的關鍵平台,通過AMCT模型壓縮工具(Ascend Model Compression Toolkit),構築了一條現實版的模型縮小隧道。

AMCT是一個python工具包,有效适配Caffe/TensorFlow/ 昇思MindSpore/PyTorch/ONNX等主流深度學習架構,提供包含量化、張量分解、通道稀疏在内的多種模型壓縮功能。在保證模型精度前提下,可有效降低模型的存儲空間和計算量,提升模型推理性能。

CANN5.0黑科技解密 | 别眨眼!縮小隧道,讓你的AI模型“身輕如燕”!

相比于其他同類平台,AMCT支援的模型壓縮特性更加完備,通過多種壓縮算法以及硬體親和模型優化最大化使用者模型部署推理性能;AMCT支援的訓練架構也更加豐富,适配不同領域不同使用者人群開發使用;除此之外,AMCT還緻力于通過自動調優、自動補齊等高階特性來提升工具的易用性,讓使用者可以付出極低代價就可以擷取盡可能大的收益。

量化:低比特壓縮,減少資料bit位寬

顧名思義,模型量化是一種将浮點計算轉成低比特定點計算的技術(例如32bit的浮點模型轉換為8bit的定點模型),可有效降低模型的存儲開銷和計算複雜度,進而提升模型推理性能。

常見的量化算法有二值化、對數量化和線性量化。

CANN5.0黑科技解密 | 别眨眼!縮小隧道,讓你的AI模型“身輕如燕”!

二值化量化,,由于模型壓縮太過激進,對于模型性能提升較大但是相應的精度損失也較大,适用範圍較小;

對數量化,

CANN5.0黑科技解密 | 别眨眼!縮小隧道,讓你的AI模型“身輕如燕”!

由于依賴專用的硬體計算單元且性能提升有限,也未能獲得大規模應用;

AMCT采用線性量化方式,

CANN5.0黑科技解密 | 别眨眼!縮小隧道,讓你的AI模型“身輕如燕”!

支援8bit、4bit位寬量化。一般而言,網絡做8bit量化的精度風險小,可通過訓練後量化的方式實作;對于4bit量化的精度損失風險較大,目前AMCT僅支援通過量化感覺訓練的方式實作。

訓練後量化(Post-Training Quantization, 簡稱PTQ),是指将訓練後模型中的權重由浮點數量化到低比特整數,并通過少量校準資料基于推理過程進行校準量化。對于8bit量化,一般網絡通過訓練後量化即可達到較低的量化精度損失。

CANN5.0黑科技解密 | 别眨眼!縮小隧道,讓你的AI模型“身輕如燕”!

量化感覺訓練(Quantization-Aware Training, 簡稱QAT),是指借助使用者完整訓練資料集,在重訓練過程中引入量化操作,在訓練前向計算中對資料和權重進行僞量化(量化反量化),引入量化誤差損失,進而在訓練過程中提高模型對量化效應的适應能力,提高最終的量化模型精度。對于4bit以及更低bit位寬的量化,一般需要通過量化感覺訓練來降低量化精度損失。

CANN5.0黑科技解密 | 别眨眼!縮小隧道,讓你的AI模型“身輕如燕”!

我們在昇騰AI處理器上分别測試了ResNet-50和YOLOV3網絡在8bit PTQ和4bit QAT下的性能及精度表現。

精度方面,可以看到不同網絡對量化的敏感度不同,在經典CV網絡,8bit量化量化精度損失可保持在1%以内,4bit量化量化精度損失可保持2%以内。

CANN5.0黑科技解密 | 别眨眼!縮小隧道,讓你的AI模型“身輕如燕”!

性能方面,不同模型由于其模型結構及網絡規格的差異,量化所擷取的性能提升也各不相同,其中ResNet-50 INT8相較于FP16,INT4相較于INT8而言平均約有40%左右的性能提升;YOLOV3則都在30%左右。

CANN5.0黑科技解密 | 别眨眼!縮小隧道,讓你的AI模型“身輕如燕”!

使用方面,開發者調用AMCT提供的API即可輕松完成模型量化。AMCT預設會對整網所有可量化算子(主要為卷積類和矩陣乘類算子)進行量化,開發者也可自行指定具體量化哪些層、每一層的量化bit位寬。如果量化後精度損失大于預期,可以通過跳過一些關鍵層的量化來恢複精度。例如,我們通常認為網絡的首尾層對網絡的業務精度影響較大,則需要優先進行量化回退。

稀疏:權重剪枝,縮減模型參數量

許多實驗證明,神經網絡模型都是過參數化的(over-parameterized),許多參數都是備援的,恰當剔除這些相對“不重要”的參數對模型最終的結果幾乎沒有影響。

模型稀疏就是對模型的參數進行删減,進而降低模型的存儲和計算開銷。而模型稀疏按照稀疏顆粒度,從最小的element-wise到channel-wise甚至更大,稀疏顆粒度從小到大,對模型的精度影響越大,但是相應能夠擷取到的性能收益也越大。

CANN5.0黑科技解密 | 别眨眼!縮小隧道,讓你的AI模型“身輕如燕”!

以上稀疏顆粒度示意圖,從左到右顆粒度依次增加。但是對于單個權重、權重向量、單個卷積核kernel的稀疏都需要硬體特殊适配才能夠拿到對應的性能或者存儲收益。

而通道稀疏(filter-level sparsity)由于裁剪了輸出資料通道,等價于縮小了模型的規格,不需要特定的硬體支援就可以拿到對應的性能收益,是一個比較理想的選擇。但是如前所述,通道稀疏的顆粒度較大,對于網絡的精度風險也較大,一般需要進行Fine-tune。

AMCT目前主要支援基于重訓練的通道稀疏模型壓縮特性。

通道稀疏主要是通過裁剪網絡通道數,在保持網絡功能的前提下縮減模型參數量。通道稀疏的實作通常包括兩個步驟:首先是通道選擇,需要選擇合适的通道組合以保留豐富的資訊;然後是重建,需要使用選擇的通道對下一層的輸出進行重建。

CANN5.0黑科技解密 | 别眨眼!縮小隧道,讓你的AI模型“身輕如燕”!

在昇騰AI處理器上分别測試了ResNet-50網絡進行30%稀疏的精度和性能表現。

精度方面,可以看到不同網絡對通道稀疏的敏感度不同,ResNet50做30%比例的通道稀疏後精度損失仍能保持在1%以内。

CANN5.0黑科技解密 | 别眨眼!縮小隧道,讓你的AI模型“身輕如燕”!

性能方面,主要測試了ResNet-50在不同batch-size情況下的性能情況,在batch-size=32場景下通道稀疏約提升了40%的推理速度。

CANN5.0黑科技解密 | 别眨眼!縮小隧道,讓你的AI模型“身輕如燕”!

使用方面,開發者同樣隻需要調用AMCT提供的API,配置你期望的全局稀疏率或者每一層的稀疏率即可,工具能自動判定可稀疏通道,輕松完成稀疏工作。

張量分解:低秩近似,降低模型計算量

對于卷積神經網絡來說,卷積層的運算量是占網絡總運算量的大頭,并且卷積核越大,參數量和計算量越龐大。

而張量分解,正是采用數學方法,将一個大卷積核通過低秩近似分解為多個小卷積核,構造計算量更小的卷積算子,進而達到壓縮模型與計算量的目的。

以1個64*64*3*3的卷積分解為32*64*3*1和64*32*1*3的級聯卷積為例,可以減少1 - (32*64*3*1 + 64*32*1*3) / 64*64*3*3 = 66.7%的計算量,在計算結果近似的情況下帶來更具成本效益的性能收益。

AMCT中的張量分解則充分考慮昇騰AI處理器硬體特性,選擇能夠充分發揮硬體算力的卷積形式,盡可能減小搬運開銷對算子性能的影響。

CANN5.0黑科技解密 | 别眨眼!縮小隧道,讓你的AI模型“身輕如燕”!

實驗表明,張量分解在昇騰AI處理器的推理速度以及模型大小的優化上都起到了非常顯著的效果。

經測試,13張經典CV網絡經過張量分解後,推理時間平均減少24.4%,模型大小平均減少38.8%,而finetune後的精度幾乎與分解前相當(最大損失不超過0.5%)。

CANN5.0黑科技解密 | 别眨眼!縮小隧道,讓你的AI模型“身輕如燕”!
CANN5.0黑科技解密 | 别眨眼!縮小隧道,讓你的AI模型“身輕如燕”!

使用方面,通過AMCT提供的API,開發者僅需調用1或2個接口(取決于架構),即可完成對原始模型的分解,并對分解後的模型進行finetune。

寫在最後

CANN作為釋放昇騰硬體算力的關鍵平台,面對既要保精度又要提性能的尴尬問題,堅持“精度和性能兩手抓,兩手都要硬”,始終站在開發者視角,想開發者所想,及開發者所及。通過深耕先進的模型壓縮技術,聚力打造AMCT模型壓縮工具,在保證模型精度前提下,不遺餘力地降低模型的存儲空間和計算量。

輕裝前行,放得遠方!面對人工智能的蓬勃發展,相信通過CANN構築的模型縮小隧道,定将給大參數量、大計算量的AI模型帶來更加廣闊的應用場景,和更加巨大的想象空間!

歡迎登陸昇騰社群網站https://www.hiascend.com/了解更多資訊。

點選關注,第一時間了解華為雲新鮮技術~

繼續閱讀