本篇文章重點(diǎn)講述存內(nèi)計(jì)算相關(guān)工具鏈,我們將從工具鏈定義出發(fā),依次講述工具鏈研究背景及現(xiàn)有工具鏈、存內(nèi)計(jì)算相關(guān)工具鏈發(fā)展現(xiàn)狀、存內(nèi)計(jì)算工具鏈未來(lái)展望等內(nèi)容。
一.工具鏈研究背景及現(xiàn)有工具鏈
工具鏈,英文名稱(chēng)toolchain,通常是指在軟件開(kāi)發(fā)或硬件設(shè)計(jì)中使用的一系列工具和軟件,用于完成特定任務(wù)或流程。這些工具一般接連地使用,從而完成一個(gè)個(gè)任務(wù),這也是“工具鏈”名稱(chēng)的由來(lái)。一般工具鏈的研發(fā),大致與通用應(yīng)用程序生命周期一致,分為五個(gè)階段,如下圖1所示,圖中包括每個(gè)階段對(duì)應(yīng)的工具等[1]。
圖1 工具鏈研發(fā)模型(1)EDA工具鏈[2]:
EDA 是 Electronic Design Automation 的簡(jiǎn)稱(chēng),即電子設(shè)計(jì)自動(dòng)化,是指利用計(jì)算機(jī)輔助設(shè)計(jì)軟件,完成超大規(guī)模集成電路芯片的功能設(shè)計(jì)、綜合、驗(yàn)證、物理設(shè)計(jì)等流程的設(shè)計(jì)方式。在集成電路應(yīng)用的早期階段,集成電路集成度較低,設(shè)計(jì)、布線(xiàn)等工作由設(shè)計(jì)人員手工完成。1970 年代中期開(kāi)始,隨芯片集成度的提高,設(shè)計(jì)人員開(kāi)始嘗試將整個(gè)設(shè)計(jì)工程自動(dòng)化。
1980 年發(fā)表的論文《超大規(guī)模集成電路系統(tǒng)導(dǎo)論》提出通過(guò)編程語(yǔ)言來(lái)進(jìn)行芯片設(shè)計(jì),是電子設(shè)計(jì)自動(dòng)化發(fā)展的重要標(biāo)志,EDA 工具也在這個(gè)時(shí)期開(kāi)始走向商業(yè)化。21 世紀(jì)以來(lái),EDA 工具快速發(fā)展,并已貫穿集成電路設(shè)計(jì)、制造、封測(cè)的全部環(huán)節(jié),從而加速集成電路產(chǎn)業(yè)的技術(shù)革新。
EDA行業(yè)市場(chǎng)集成度較高,如下圖2所示,全球 EDA 行業(yè)主要由楷登電子、新思科技和西門(mén)子EDA 壟斷,上述三家公司屬于具有顯著領(lǐng)先優(yōu)勢(shì)的第一梯隊(duì)。國(guó)內(nèi)起步較晚,雖然發(fā)展迅速,但最高只能做到第二梯隊(duì),有很大發(fā)展空間。
圖2 全球EDA簡(jiǎn)要格局(2)人工智能編譯工具鏈[3]:
由于人工智能算法的不斷突破,其模型尺寸和算力需求飛速增長(zhǎng),從而導(dǎo)致算法與芯片之間存在巨大的算力“鴻溝”。首先每個(gè)模型的算力利用率低,甚至小于10%,其次算子庫(kù)沒(méi)有統(tǒng)一的標(biāo)準(zhǔn),每個(gè)芯片的制作流程中都要耗費(fèi)巨大的人力物力來(lái)維護(hù)龐大算子庫(kù)。而人工智能編譯器是發(fā)揮硬件算力的保障,可以解決以上問(wèn)題,如下圖3為人工智能編譯器常用設(shè)計(jì)架構(gòu)概述。
圖3 深度學(xué)習(xí)編譯器常用設(shè)計(jì)架構(gòu)概述人工智能編譯器在早期只是一個(gè)從計(jì)算圖(數(shù)據(jù)流圖)到算子庫(kù)的映射器。許多深度學(xué)習(xí)編程框架(TensorFlow和PyTorch等)將模型表示成計(jì)算圖,而計(jì)算圖的執(zhí)行通過(guò)調(diào)用第三方算子庫(kù)完成。編譯器將計(jì)算圖映射到算子庫(kù),是人工智能框架和算子庫(kù)中間的橋梁。此后,為了優(yōu)化模型性能,各框架都引入了計(jì)算圖編譯器,進(jìn)行計(jì)算圖級(jí)優(yōu)化。然而人工智能編譯器的研究是我們的短板,例如谷歌的XLA編譯器可以將性能最高提升十倍以上,而國(guó)產(chǎn)人工智能芯片的峰值算力高,但實(shí)際代碼的利用率低,因此研究人工智能芯片的配套軟件工具鏈刻不容緩。
人工智能編譯工具鏈和存內(nèi)計(jì)算芯片聯(lián)系密切,在存內(nèi)計(jì)算芯片從設(shè)計(jì)到生產(chǎn)的全流程中,工具鏈的設(shè)計(jì)是非常重要的環(huán)節(jié),其能夠?qū)?a href="http://www.brongaenegriffin.com/v/tag/448/" target="_blank">深度學(xué)習(xí)框架中的不同模型作為輸入,根據(jù)硬件設(shè)計(jì)產(chǎn)生高效的輸出代碼,實(shí)現(xiàn)深度學(xué)習(xí)模型到硬件設(shè)備的部署。然而,當(dāng)前神經(jīng)網(wǎng)絡(luò)模型在存內(nèi)計(jì)算芯片上可移植性低,部署成本高,大大阻礙了存內(nèi)計(jì)算技術(shù)在深度學(xué)習(xí)領(lǐng)域的大規(guī)模應(yīng)用。因此,面向存內(nèi)計(jì)算芯片的人工智能編譯工具鏈也是亟待研發(fā)的。
綜上所述,當(dāng)前芯片設(shè)計(jì)、人工智能等工具鏈發(fā)展較為成熟,但存內(nèi)計(jì)算相關(guān)工具鏈還有很大的發(fā)展空間。目前,存內(nèi)計(jì)算相關(guān)工具鏈還存在著缺乏成熟的標(biāo)準(zhǔn)單元庫(kù)與快速組裝工具、缺乏成熟的功能與性能仿真驗(yàn)證工具、缺乏建模和誤差評(píng)估工具等問(wèn)題,都等待著從業(yè)人員去攻克解決。
二.存內(nèi)計(jì)算相關(guān)工具鏈發(fā)展現(xiàn)狀
存內(nèi)計(jì)算工具鏈可以認(rèn)為是輔助開(kāi)發(fā)人員將軟件設(shè)計(jì)部署到存內(nèi)計(jì)算硬件上的工具。存內(nèi)計(jì)算從原理上對(duì)神經(jīng)網(wǎng)絡(luò)中常見(jiàn)的乘累加運(yùn)算具有良好的支持,使得存內(nèi)計(jì)算在人工智能領(lǐng)域具有巨大潛力。因此,存內(nèi)計(jì)算工具鏈可以在狹義上認(rèn)為是將神經(jīng)網(wǎng)絡(luò)部署到存內(nèi)計(jì)算芯片中,使其在片上運(yùn)行的工具。
為了更方便地使用神經(jīng)網(wǎng)絡(luò)模型,許多通用神經(jīng)網(wǎng)絡(luò)框架已經(jīng)被提出,如TensorFlow、PyTorch、Caffe、MXNet、CNTK等,它們提供了一系列打包好的網(wǎng)絡(luò)層等工具,方便用戶(hù)編寫(xiě)自己的神經(jīng)網(wǎng)絡(luò)模型。神經(jīng)網(wǎng)絡(luò)模型在硬件上的運(yùn)行依賴(lài)于神經(jīng)網(wǎng)絡(luò)編譯工具鏈,如TVM、MLIR、nGraph、XLA等。[5]然而,存內(nèi)計(jì)算作為一種新型計(jì)算范式,將存儲(chǔ)單元和計(jì)算單元融合,其存儲(chǔ)和計(jì)算特性不同于傳統(tǒng)硬件,使得現(xiàn)有神經(jīng)網(wǎng)絡(luò)工具鏈并不適用于存內(nèi)計(jì)算。[6]
學(xué)術(shù)研究中,由于研究的重點(diǎn)往往是存內(nèi)計(jì)算硬件設(shè)計(jì),并且工具鏈需要對(duì)軟件算法模型、編譯工具、電路等多個(gè)相關(guān)的特定領(lǐng)域知識(shí)有著深入理解,受限于高校的科研資源,該部分的研究往往作為存內(nèi)計(jì)算硬件研究的附屬工作,實(shí)際使用中神經(jīng)網(wǎng)絡(luò)的部署工作大多由研究者手動(dòng)完成。同時(shí),當(dāng)前國(guó)內(nèi)神經(jīng)網(wǎng)絡(luò)工具鏈存在峰值算力高,但是實(shí)際代碼利用率低的問(wèn)題。[7]
部分科研人員針對(duì)存內(nèi)計(jì)算編譯器相關(guān)問(wèn)題開(kāi)展研究,并已經(jīng)取得了一定的研究成果。例如,PUMA是一種基于憶阻器的機(jī)器學(xué)習(xí)推理加速器,它支持ISA指令集,并且具有轉(zhuǎn)換將高級(jí)語(yǔ)言為ISA代碼的編譯器,編譯器對(duì)計(jì)算圖進(jìn)行分區(qū),并優(yōu)化指令調(diào)度和寄存器分配,以便為在數(shù)千個(gè)空間內(nèi)核上運(yùn)行的大型復(fù)雜工作負(fù)載生成代碼。[8]但是,該編譯器采用的啟發(fā)式權(quán)重復(fù)制和核心映射方法(heuristic weight replicating and core mapping method)難以保證高性能;此外,PUMA的層間流水線(xiàn)是以推理為粒度的,即不同層處理不同的推理數(shù)據(jù),這種處理方式在低延遲場(chǎng)景下對(duì)性能同樣產(chǎn)生較大影響。[6]
然而,工具鏈?zhǔn)沁B接開(kāi)發(fā)者與硬件的橋梁,是吸引開(kāi)發(fā)者,豐富硬件平臺(tái)算法環(huán)境的重要一環(huán),是企業(yè)節(jié)省開(kāi)發(fā)成本的重要手段。因此,在商業(yè)領(lǐng)域中,工具鏈的作用不容忽視,如國(guó)內(nèi)存內(nèi)計(jì)算企業(yè)知存科技和后摩智能,已經(jīng)提出了適配自身硬件的工具鏈。
根據(jù)后摩智能官網(wǎng)信息,后摩大道?軟件平臺(tái)是服務(wù)后摩鴻途?H30芯片硬件的自研軟件開(kāi)發(fā)平臺(tái),主要由模型開(kāi)發(fā)SDK、算子開(kāi)發(fā)SDK、系統(tǒng)及中間件等組件構(gòu)成,可以兼容不同硬件平臺(tái)的底層異構(gòu)計(jì)算框架,易于跨平臺(tái)遷移;自帶預(yù)編譯參考模型,方便用戶(hù)直接使用;使用適配存算一體架構(gòu)的并行數(shù)據(jù)開(kāi)發(fā)語(yǔ)言,同時(shí)支持C/C++編程;推理引擎支持自動(dòng)融合流水、自動(dòng)內(nèi)存分配等編譯優(yōu)化技術(shù)。[9]
圖4 后摩智能存算一體平臺(tái)
根據(jù)知存科技官網(wǎng)信息,WITIN_MAPPER是知存科技自研的用于神經(jīng)網(wǎng)絡(luò)映射的編譯軟件棧,可以將量化后的神經(jīng)網(wǎng)絡(luò)模型映射到WTM2101 MPU加速器上,是一種包括RISC-V和MPU的完整解決方案,可以完成算子和圖級(jí)別的轉(zhuǎn)換和優(yōu)化,將預(yù)訓(xùn)練權(quán)重編排到存算陣列中,極大地縮短模型移植的開(kāi)發(fā)周期并提高算法開(kāi)發(fā)的效率[10]。工具鏈配備五種可選的優(yōu)化策略:參數(shù)放大、權(quán)重復(fù)制、高比特稀疏、多點(diǎn)卷積優(yōu)化、正負(fù)(PN)優(yōu)化,實(shí)際應(yīng)用中,用戶(hù)可根據(jù)權(quán)重大小、輸入數(shù)據(jù)類(lèi)型、精度要求、速度要求等多方面自行選擇,一般來(lái)講,權(quán)重復(fù)制+正負(fù)(PN)優(yōu)化+多點(diǎn)卷積優(yōu)化就可以滿(mǎn)足大部分要求。[11]
圖 5 WTM2101軟件棧-witin_mapper[10]同時(shí),知存科技提供WITMEM STUDIO集成開(kāi)發(fā)環(huán)境、SPI Moniter工具、開(kāi)發(fā)板等開(kāi)發(fā)工具。其中,集成開(kāi)發(fā)環(huán)境包含客戶(hù)識(shí)別的SDK推送功能,SDK包自動(dòng)更新下載安裝功能,內(nèi)核自動(dòng)識(shí)別語(yǔ)法高亮編輯器,面向不同功能的個(gè)性化工程創(chuàng)建功能,以及常規(guī)IDE所具有的項(xiàng)目工程管理,文件編輯、編譯、調(diào)試等功能。[10]
圖6 WTM2101-ZT1開(kāi)發(fā)板
以上知存科技相關(guān)資料來(lái)自于知存科技打造的“存內(nèi)計(jì)算芯片開(kāi)發(fā)者中心”(開(kāi)發(fā)者社區(qū) 知存科技 全球領(lǐng)先的存內(nèi)計(jì)算芯片企業(yè):http://www.witintech.com/),其中有知存科技打造的一套完整的芯片開(kāi)發(fā)工具和IDE環(huán)境,在此中心中,知存科技將持續(xù)分享和更新針對(duì)存內(nèi)計(jì)算芯片的軟件、編譯工具鏈、算法資源、開(kāi)發(fā)教程等等,為工程師、研究人員和技術(shù)愛(ài)好者提供工具和靈感。
三.存內(nèi)計(jì)算工具鏈未來(lái)展望
在上文中,我們介紹了當(dāng)前存內(nèi)計(jì)算工具鏈遇到的困難、存內(nèi)計(jì)算工具鏈發(fā)展現(xiàn)狀等等,對(duì)于未來(lái)存內(nèi)計(jì)算工具鏈的發(fā)展,我們有如下幾點(diǎn)展望。
由于存內(nèi)計(jì)算芯片的設(shè)計(jì)與常規(guī)芯片有較大差異,我們需要適配于存內(nèi)計(jì)算芯片設(shè)計(jì)的相關(guān)EDA軟件,他們需要包含以下必需工具:
1.標(biāo)準(zhǔn)單元庫(kù)與快速組裝工具。由于存內(nèi)計(jì)算芯片設(shè)計(jì)的單元結(jié)構(gòu)不唯一,采用不同存儲(chǔ)介質(zhì)的存內(nèi)芯片核設(shè)計(jì)起來(lái)缺少標(biāo)準(zhǔn)單元庫(kù),且較大的存算陣列也缺少快速組裝工具,目前這兩點(diǎn)往往是靠設(shè)計(jì)者手動(dòng)繪制完成,效率較低。
2.功能驗(yàn)證與仿真驗(yàn)證工具。當(dāng)前EDA軟件沒(méi)有面向存內(nèi)計(jì)算場(chǎng)景進(jìn)行優(yōu)化的功能仿真驗(yàn)證工具,仿真時(shí)大規(guī)模的存算陣列會(huì)增加仿真難度與時(shí)間。
3.建模與誤差評(píng)估工具。當(dāng)前軟件缺少面向存內(nèi)計(jì)算芯片的電路噪聲建模與誤差評(píng)估工具,這些可以幫助開(kāi)發(fā)者在設(shè)計(jì)階段對(duì)方案進(jìn)行評(píng)估并及時(shí)調(diào)整。[12]
此外,由于存內(nèi)計(jì)算在人工智能、深度學(xué)習(xí)層面運(yùn)用廣泛,設(shè)計(jì)面向存算一體芯片的深度學(xué)習(xí)編譯工具鏈也是未來(lái)存內(nèi)計(jì)算工具鏈發(fā)展的重要一環(huán),針對(duì)人工智能與深度學(xué)習(xí),我們希望工具鏈能達(dá)成:
1,由于深度學(xué)習(xí)算法與存算一體電路間可移植性低,部署成本高,我們需要設(shè)計(jì)一套工具鏈實(shí)現(xiàn)前端網(wǎng)絡(luò)模型轉(zhuǎn)換及優(yōu)化的策略、后端硬件映射及優(yōu)化的方法,從而構(gòu)建一套高性能的存算一體軟硬件結(jié)合系統(tǒng)。
圖 7?神經(jīng)網(wǎng)絡(luò)模型部署至WTM2101的一套編譯工具鏈[13]
2,由于存內(nèi)計(jì)算芯片中有眾多存算核,未來(lái)若要在存內(nèi)計(jì)算芯片上部署大模型,那么多核之間的資源調(diào)度便十分重要;權(quán)重在核中怎么存、計(jì)算資源如何調(diào)度、多核之間如何協(xié)同等等問(wèn)題,都需要我們?cè)O(shè)計(jì)出一套工具鏈來(lái)解決。
總而言之,為推動(dòng)存內(nèi)計(jì)算規(guī)模應(yīng)用,相關(guān)EDA軟件、配套的開(kāi)發(fā)環(huán)境、編譯平臺(tái)的建立將成為存內(nèi)計(jì)算芯片設(shè)計(jì)中的必然訴求,它們需要業(yè)界共同發(fā)力,共同搭建面向存內(nèi)計(jì)算的編程框架,健全仿真和編譯工具,完善算法設(shè)計(jì)與開(kāi)發(fā)生態(tài)。相信在不久的將來(lái),存內(nèi)計(jì)算芯片相關(guān)工具鏈將迎來(lái)井噴式發(fā)展,讓我們一同分享、一同創(chuàng)造,一起見(jiàn)證存內(nèi)計(jì)算芯片的生態(tài)繁榮時(shí)代。
參考資料
[1]持續(xù)交付工具前景 ·詹姆斯·鮑曼 (jamesbowman.me).
[2]北京華大九天科技股份有限公司招股說(shuō)明書(shū).
[3]第二十屆全國(guó)容錯(cuò)計(jì)算學(xué)術(shù)會(huì)議-過(guò)敏意-面向人工智能芯片的編譯新技術(shù).
[4] 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.
[5] 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.
[6] Sun X, Wang X, Li W, et al. PIMCOMP: A Universal Compilation Framework for Crossbar-based PIM DNN Accelerators[C]//2023 60th ACM/IEEE Design Automation Conference (DAC). IEEE, 2023: 1-6.
[7] 第二十屆全國(guó)容錯(cuò)計(jì)算學(xué)術(shù)會(huì)議-過(guò)敏意教授報(bào)告-面向人工智能芯片的編譯新技術(shù)
[8] Ankit A, Hajj I E, Chalamalasetti S R, et al. PUMA: A programmable ultra-efficient memristor-based accelerator for machine learning inference[C]//Proceedings of the Twenty-Fourth International Conference on Architectural Support for Programming Languages and Operating Systems. 2019: 715-731.
[9] 后摩智能官網(wǎng)(houmoai.com)
[10] 知存科技開(kāi)發(fā)文檔(開(kāi)發(fā)者社區(qū) 知存科技 全球領(lǐng)先的存內(nèi)計(jì)算芯片企業(yè):http://www.witintech.com/)
[11] Bai T, Mao W, Wang G, et al. An End-to-End In Memory Computing System Based On A 40nm eFlash-Based IMC SoC: Circuits, Toolchains, and Systems Co-Design Framework[J]. IEEE Transactions on Computer-Aided Design of Integrated Circuits and Systems, 2024.
[12] 詳細(xì)解讀存算一體技術(shù)路線(xiàn) - 電子發(fā)燒友(elecfans.com)
[13] 存內(nèi)計(jì)算芯片開(kāi)發(fā)者中心 - (開(kāi)發(fā)者社區(qū) 知存科技 全球領(lǐng)先的存內(nèi)計(jì)算芯片企業(yè):http://www.witintech.com/)
-
eda
+關(guān)注
關(guān)注
72文章
3047瀏覽量
181429 -
開(kāi)發(fā)工具鏈
+關(guān)注
關(guān)注
0文章
25瀏覽量
1794 -
IC芯片設(shè)計(jì)
+關(guān)注
關(guān)注
0文章
7瀏覽量
1270 -
知存科技
+關(guān)注
關(guān)注
0文章
69瀏覽量
5016 -
存內(nèi)計(jì)算
+關(guān)注
關(guān)注
0文章
33瀏覽量
1622
發(fā)布評(píng)論請(qǐng)先 登錄
存內(nèi)計(jì)算并不滿(mǎn)足于現(xiàn)有的算力
存內(nèi)計(jì)算芯片研究進(jìn)展及應(yīng)用
探索存內(nèi)計(jì)算—基于 SRAM 的存內(nèi)計(jì)算與基于 MRAM 的存算一體的探究
從MRAM的演進(jìn)看存內(nèi)計(jì)算的發(fā)展
存內(nèi)計(jì)算原理分類(lèi)——數(shù)字存內(nèi)計(jì)算與模擬存內(nèi)計(jì)算
存內(nèi)計(jì)算——助力實(shí)現(xiàn)28nm等效7nm功效
存內(nèi)計(jì)算WTM2101編譯工具鏈 資料
淺談存內(nèi)計(jì)算生態(tài)環(huán)境搭建以及軟件開(kāi)發(fā)
論“土肥水項(xiàng)目”是怎么成為產(chǎn)業(yè)扶貧重要一環(huán)的
三星基于HMB的存內(nèi)計(jì)算芯片有何亮點(diǎn)?
?什么是存內(nèi)計(jì)算
淺談存內(nèi)計(jì)算生態(tài)環(huán)境搭建以及軟件開(kāi)發(fā)

存內(nèi)生態(tài)構(gòu)建重要一環(huán)- 存內(nèi)計(jì)算工具鏈
評(píng)論