本篇文章將重點(diǎn)講述存內(nèi)計(jì)算技術(shù)工具鏈之“量化”,我們將從面向存內(nèi)計(jì)算芯片的深度學(xué)習(xí)編譯工具鏈、神經(jīng)網(wǎng)絡(luò)中的量化(包括訓(xùn)練后量化與量化感知訓(xùn)練)、基于存內(nèi)計(jì)算芯片硬件特性的量化工具這三個(gè)方面來(lái)對(duì)存內(nèi)計(jì)算技術(shù)工具鏈的量化進(jìn)行闡述。
一.深度學(xué)習(xí)編譯工具鏈
工具鏈,英文名稱toolchain,通常是指在軟件開(kāi)發(fā)或硬件設(shè)計(jì)中使用的一系列工具和軟件,用于完成特定任務(wù)或流程。這些工具一般接連地使用,從而完成一個(gè)個(gè)任務(wù),這也是“工具鏈”名稱的由來(lái)。一般工具鏈的研發(fā),大致與通用應(yīng)用程序生命周期一致,分為五個(gè)階段,如圖1所示,圖中包括每個(gè)階段對(duì)應(yīng)的工具等[1]。

而在AI芯片領(lǐng)域,工具鏈特指連接模型算法到芯片部署的端到端系列工具。面向存算一體芯片的深度學(xué)習(xí)編譯工具鏈包括深度學(xué)習(xí)的算法設(shè)計(jì)、前端網(wǎng)絡(luò)的模型轉(zhuǎn)換、后端配置空間映射、存算一體的電路設(shè)計(jì)及各步驟的中間優(yōu)化等模塊;如今,面向傳統(tǒng)芯片的深度學(xué)習(xí)編譯工具鏈發(fā)展健全,而面向存算一體芯片的深度學(xué)習(xí)編譯工具鏈在前端優(yōu)化策略、后端空間映射等方面都仍有欠缺,這使得深度學(xué)習(xí)部署在存算一體芯片上移植性低、成本高,因此需要我們?cè)O(shè)計(jì)出能實(shí)現(xiàn)端到端的存算一體工具鏈及軟硬件系統(tǒng),而本文所述的“量化”,便是工具鏈中的重要工具之一。

面向存內(nèi)計(jì)算芯片的深度學(xué)習(xí)編譯工具鏈通常包括量化、圖優(yōu)化、編譯、調(diào)度、映射、模擬等工具:
(1)量化和優(yōu)化工具:
在涉及到機(jī)器學(xué)習(xí)和深度學(xué)習(xí)模型的存內(nèi)計(jì)算應(yīng)用中,量化和優(yōu)化工具變得尤為重要。這些工具可以幫助將模型減小到能夠在內(nèi)存中高效運(yùn)行的大小,同時(shí)盡量保持模型的準(zhǔn)確性。
TensorFlow Lite: 提供了一套工具,支持模型的量化,使其更適合在移動(dòng)設(shè)備和邊緣設(shè)備上運(yùn)行。
PyTorch Mobile: 類似地,PyTorch提供了工具來(lái)優(yōu)化和減小模型的大小,以便在資源受限的環(huán)境中運(yùn)行。
(2)編譯器與編程框架:
存內(nèi)計(jì)算通常需要定制化的編譯器,它能夠理解特定存內(nèi)計(jì)算硬件的特性,并將算法和程序轉(zhuǎn)換為能在存儲(chǔ)單元內(nèi)執(zhí)行的形式。
而編程??蚣鼙仨氝m應(yīng)存內(nèi)計(jì)算的特點(diǎn),比如提供API或DSL(領(lǐng)域特定語(yǔ)言),允許開(kāi)發(fā)者表達(dá)針對(duì)存內(nèi)計(jì)算架構(gòu)的并行性和數(shù)據(jù)局部性。
(3)映射與調(diào)度工具:
數(shù)據(jù)布局和計(jì)算任務(wù)在存儲(chǔ)陣列中的映射至關(guān)重要,相應(yīng)的工具應(yīng)能智能地分配和管理數(shù)據(jù)在內(nèi)存單元中的位置,優(yōu)化計(jì)算效率和帶寬使用。
調(diào)度工具則負(fù)責(zé)在不同時(shí)刻根據(jù)資源約束安排計(jì)算操作,確保有效利用存內(nèi)計(jì)算硬件的并行性和容量。
(4)模擬與驗(yàn)證工具:
設(shè)計(jì)階段需要用到高級(jí)和低級(jí)的模擬器來(lái)模擬存內(nèi)計(jì)算芯片的行為,驗(yàn)證功能正確性以及性能預(yù)期。
驗(yàn)證工具幫助確保邏輯功能、功耗分析、時(shí)序收斂以及與主處理器或其他組件之間的交互都符合設(shè)計(jì)需求。
(5)開(kāi)發(fā)和測(cè)試工具:
Jenkins, GitLab CI/CD: 這些持續(xù)集成和持續(xù)部署工具可以自動(dòng)化存內(nèi)計(jì)算應(yīng)用的構(gòu)建、測(cè)試和部署過(guò)程。
JUnit, PyTest: 提供了豐富的測(cè)試框架,幫助開(kāi)發(fā)者編寫和執(zhí)行單元測(cè)試和集成測(cè)試。
二.神經(jīng)網(wǎng)絡(luò)中的量化
量化工具鏈可以推動(dòng)工具鏈和存內(nèi)計(jì)算技術(shù)的進(jìn)一步發(fā)展,下面將介紹量化的基本知識(shí),重點(diǎn)圍繞神經(jīng)網(wǎng)絡(luò)量化進(jìn)行講解。
(1)量化的概念[3]
量化通常是指將連續(xù)值或較大范圍的值簡(jiǎn)化為較小范圍內(nèi)的值的過(guò)程。在數(shù)字信號(hào)處理中,這通常指的是將模擬信號(hào)轉(zhuǎn)換為數(shù)字信號(hào)的過(guò)程。在神經(jīng)網(wǎng)絡(luò)中,量化通常指的是將浮點(diǎn)數(shù)(如32位的Float)轉(zhuǎn)換為低位數(shù)的表示(如8位或16位的Int)。
(2)量化的意義
近年來(lái),深度學(xué)習(xí)技術(shù)在多個(gè)領(lǐng)域快速發(fā)展,特別是在計(jì)算機(jī)視覺(jué)領(lǐng)域,深度神經(jīng)網(wǎng)絡(luò)已在圖像分類、目標(biāo)檢測(cè)等各種計(jì)算機(jī)視覺(jué)學(xué)習(xí)任務(wù)上展示了突破性結(jié)果。然而,這些方案通常是通過(guò)擴(kuò)大神經(jīng)網(wǎng)絡(luò)規(guī)模來(lái)提高性能,需要花費(fèi)更高的計(jì)算資源和內(nèi)存需求。這導(dǎo)致大多數(shù)深度神經(jīng)網(wǎng)絡(luò)只能在圖形處理器等高算力設(shè)備上運(yùn)行推理,然而此類設(shè)備往往需要很大的功耗才能達(dá)到實(shí)時(shí)的推斷效果。因此,開(kāi)發(fā)輕量級(jí)的深度神經(jīng)網(wǎng)絡(luò)、進(jìn)行模型量化對(duì)于計(jì)算資源有限的邊緣設(shè)備來(lái)說(shuō)至關(guān)重要。此外,深度學(xué)習(xí)技術(shù)的發(fā)展也帶來(lái)了神經(jīng)網(wǎng)絡(luò)模型的快速發(fā)展,隨之而來(lái)的就是模型參數(shù)的大幅度提升[4]。如圖3所示,在Transformer架構(gòu)興起之后,模型規(guī)模呈指數(shù)級(jí)增長(zhǎng)。神經(jīng)網(wǎng)絡(luò)的參數(shù)數(shù)量已經(jīng)從Alexnet的6000萬(wàn)個(gè)增長(zhǎng)到OpenAI GPT-3的1750億個(gè)[5],對(duì)模型的存儲(chǔ)空間和計(jì)算資源等提出了更高的需求。

模型量化技術(shù)可以在一定程度上緩解上述問(wèn)題,即通過(guò)數(shù)據(jù)壓縮,來(lái)降低模型的存儲(chǔ)空間、內(nèi)存占用和計(jì)算資源需求,從而提高模型的推理速度,豐富應(yīng)用場(chǎng)景,量化已經(jīng)成為深度神經(jīng)網(wǎng)絡(luò)優(yōu)化的大方向之一。然而量化由于涉及到舍入或截?cái)嗖僮?,?huì)引入一定的誤差。因此,量化技術(shù)的一個(gè)重要的挑戰(zhàn)是在減少模型大小和保持模型精度之間進(jìn)行折衷。
(3)模型量化的實(shí)例
TensorFlow[6]提供了兩種量化方法,訓(xùn)練后量化(POT, Post Training Quantization)和量化感知訓(xùn)練(QAT, Quantization Aware Training)。
①訓(xùn)練后量化[7]
PTQ量化可以無(wú)需原始的訓(xùn)練過(guò)程就能將預(yù)訓(xùn)練的FP32網(wǎng)絡(luò)直接轉(zhuǎn)換為定點(diǎn)網(wǎng)絡(luò)。這個(gè)方法通常不需要數(shù)據(jù)或者只需要很少的校準(zhǔn)數(shù)據(jù)集,并且這部分?jǐn)?shù)據(jù)通??梢苑浅H菀椎墨@得。量化過(guò)程中無(wú)需對(duì)原始模型進(jìn)行任何訓(xùn)練,而只對(duì)幾個(gè)超參數(shù)調(diào)整,從而以高效的方式去對(duì)預(yù)訓(xùn)練的神經(jīng)網(wǎng)絡(luò)模型進(jìn)行量化。這使得神經(jīng)網(wǎng)絡(luò)的設(shè)計(jì)者不必成為量化方面的專家,從而讓神經(jīng)網(wǎng)絡(luò)量化的應(yīng)用變得更加廣泛。
如圖4所示,為標(biāo)準(zhǔn)的PTQ量化流程,包括跨層均衡(CLE)、添加量化器(Add Quantizers)、權(quán)重范圍設(shè)置(Weight Range Setting)、自適應(yīng)舍入(AdaRound)、偏差校正(Bias Correction)、激活范圍設(shè)置(Activation Range Setting)等步驟,這個(gè)流程為許多計(jì)算機(jī)視覺(jué)以及自然語(yǔ)言處理模型及任務(wù)實(shí)現(xiàn)了有競(jìng)爭(zhēng)力的PTQ結(jié)果。根據(jù)不同的模型,有些步驟可能是不需要的,或者其他的選擇可能會(huì)導(dǎo)致相同或更好的性能。

三.基于硬件特性的量化工具量化精度與硬件性能之間存在較強(qiáng)的耦合。當(dāng)前的神經(jīng)網(wǎng)絡(luò)開(kāi)發(fā)環(huán)境和深度學(xué)習(xí)算法已針對(duì)電腦端CPU、GPU、NPU、DSP等部分,以及傳統(tǒng)意義上執(zhí)行速度慢的浮點(diǎn)運(yùn)算進(jìn)行了廣泛的優(yōu)化,使得在電腦端設(shè)計(jì)神經(jīng)網(wǎng)絡(luò)變得更加簡(jiǎn)單,在電腦端訓(xùn)練、運(yùn)行神經(jīng)網(wǎng)絡(luò)變得高效。但需要注意的是,PyTorch、TensorFlow等常用開(kāi)發(fā)環(huán)境中默認(rèn)的權(quán)重參數(shù)通常是Tensor Float 32格式,由于開(kāi)發(fā)環(huán)境對(duì)該計(jì)算格式的優(yōu)化,使得如果在電腦端訓(xùn)練BNN網(wǎng)絡(luò)或整數(shù)類型網(wǎng)絡(luò),甚至需要額外編寫加速整數(shù)運(yùn)算的算法來(lái)加速整數(shù)運(yùn)算[9]。而現(xiàn)有的量產(chǎn)存內(nèi)計(jì)算芯片主要支持較低比特的整數(shù)形式數(shù)據(jù)計(jì)算和存儲(chǔ),因此為了保證網(wǎng)絡(luò)和訓(xùn)練的高效,需要通過(guò)軟件工具對(duì)訓(xùn)練得到的權(quán)重參數(shù)進(jìn)行精度轉(zhuǎn)換和調(diào)整,再部署到存內(nèi)計(jì)算芯片中。

神經(jīng)網(wǎng)絡(luò)依賴大量數(shù)據(jù)來(lái)發(fā)現(xiàn)規(guī)律,原則上可以容忍一定的計(jì)算誤差。但是,由于神經(jīng)網(wǎng)絡(luò)的復(fù)雜性(例如深度網(wǎng)絡(luò)),將權(quán)重參數(shù)量化為整數(shù)形式可能會(huì)導(dǎo)致推理結(jié)果與訓(xùn)練習(xí)到的規(guī)律顯著不同。因此,在量化過(guò)程之后,通常需要對(duì)網(wǎng)絡(luò)進(jìn)行重新訓(xùn)練和權(quán)重參數(shù)的微調(diào),以確保量化后網(wǎng)絡(luò)的效果。
算法與硬件需要協(xié)同設(shè)計(jì)才能在不損失精度的情況下,充分發(fā)揮存內(nèi)計(jì)算芯片的優(yōu)勢(shì)。存內(nèi)計(jì)算芯片旨在突破計(jì)算和存儲(chǔ)間的數(shù)據(jù)搬移瓶頸,加速神經(jīng)網(wǎng)絡(luò)中常見(jiàn)的乘累加運(yùn)算,但神經(jīng)網(wǎng)絡(luò)中地其他運(yùn)算則需要依靠外部電路進(jìn)行處理?;谠撎匦裕窠?jīng)網(wǎng)絡(luò)的設(shè)計(jì)需要在傳統(tǒng)算法的基礎(chǔ)上進(jìn)行改進(jìn),例如通過(guò)重新設(shè)計(jì)數(shù)據(jù)結(jié)構(gòu)和訪問(wèn)模式來(lái)減少不必要的數(shù)據(jù)移動(dòng),或者調(diào)整計(jì)算過(guò)程以適應(yīng)芯片的特定能耗模式,最終實(shí)現(xiàn)量化感知的應(yīng)用算法結(jié)構(gòu)與訓(xùn)練框架,這一過(guò)程離不開(kāi)量化工具鏈的支持。已有存內(nèi)計(jì)算芯片廠商,如知存科技和后摩智能,建立了自己的開(kāi)發(fā)者網(wǎng)站,并推出了開(kāi)發(fā)者工具、量化工具鏈和開(kāi)發(fā)板。例如知存科技的神經(jīng)網(wǎng)絡(luò)映射編譯軟件棧witin_mapper,后摩智能的后摩大道軟件平臺(tái)。這些工具的推出不僅為開(kāi)發(fā)者提供便利,而且進(jìn)一步促進(jìn)了存內(nèi)計(jì)算技術(shù)的發(fā)展。
參考資料
[1] A glimpse into the exploding number of DevOps tools, which are filling the gap created by the waterfall model’s displacement.(Source:GrowthPoint Technology Partners)
[2] Li M, Liu Y, Liu X, et al. The deep learning compiler: A comprehensive survey[J]. IEEE Transactions on Parallel and Distributed Systems, 2020, 32(3): 708-727.
[3] 神經(jīng)網(wǎng)絡(luò)中的量化-簡(jiǎn)介 - 知乎 (zhihu.com).
[4] P. -Y. Chen, H. -C. Lin and J. -I. Guo, “Multi-Scale Dynamic Fixed-Point Quantization and Training for Deep Neural Networks,” 2023 IEEE International Symposium on Circuits and Systems (ISCAS), Monterey, CA, USA, 2023, pp. 1-5.
[5] B. -S. Liang, “AI Computing in Large-Scale Era: Pre-trillion-scale Neural Network Models and Exa-scale Supercomputing,” 2023 International VLSI Symposium on Technology, Systems and Applications (VLSI-TSA/VLSI-DAT), HsinChu, Taiwan, 2023, pp. 1-3.
[6] B. Jacob, S. Kligys, B. Chen, et al, “Quantization and training of neural networks for efficient integer-arithmetic-only inference,” in Proceedings of the IEEE conference on computer vision and pattern recognition, 2018, pp. 2704-2713.
[7] 再讀《神經(jīng)網(wǎng)絡(luò)量化白皮書》- 0x03 訓(xùn)練后量化(PTQ) - 知乎 (zhihu.com).
[8] 再讀《神經(jīng)網(wǎng)絡(luò)量化白皮書》- 0x04 訓(xùn)練時(shí)量化(QAT) - 知乎 (zhihu.com).
[9] Hubara I, Courbariaux M, Soudry D, et al. Binarized neural networks[J]. Advances in neural information processing systems, 2016, 29.
審核編輯 黃宇
-
神經(jīng)網(wǎng)絡(luò)
+關(guān)注
關(guān)注
42文章
4812瀏覽量
103283 -
機(jī)器學(xué)習(xí)
+關(guān)注
關(guān)注
66文章
8499瀏覽量
134394 -
深度學(xué)習(xí)
+關(guān)注
關(guān)注
73文章
5557瀏覽量
122685 -
量化
+關(guān)注
關(guān)注
0文章
35瀏覽量
2421 -
存內(nèi)計(jì)算
+關(guān)注
關(guān)注
0文章
32瀏覽量
1500
發(fā)布評(píng)論請(qǐng)先 登錄
存內(nèi)計(jì)算并不滿足于現(xiàn)有的算力
探索存內(nèi)計(jì)算—基于 SRAM 的存內(nèi)計(jì)算與基于 MRAM 的存算一體的探究

論基于電壓域的SRAM存內(nèi)計(jì)算技術(shù)的嶄新前景

存內(nèi)計(jì)算原理分類——數(shù)字存內(nèi)計(jì)算與模擬存內(nèi)計(jì)算

存內(nèi)計(jì)算WTM2101編譯工具鏈 資料
淺談存內(nèi)計(jì)算生態(tài)環(huán)境搭建以及軟件開(kāi)發(fā)
可重構(gòu)計(jì)算技術(shù)在汽車電子領(lǐng)域面臨哪些問(wèn)題?
Vector向量計(jì)算技術(shù)與SIMD技術(shù)的對(duì)比
三星基于HMB的存內(nèi)計(jì)算芯片有何亮點(diǎn)?
淺談存內(nèi)計(jì)算生態(tài)環(huán)境搭建以及軟件開(kāi)發(fā)

評(píng)論