芯東西(公眾號:aichip001)
編輯 |? GACS
9月14日~15日,2023全球AI芯片峰會(GACS 2023)在深圳南山圓滿舉行。在次日高效能AI芯片芯片專場上,邁特芯創始人兼首席執行官黃瀚韜,分享了主題為《面向大模型的高能效并行存算大算力芯片》的主題演講。
在算法方面,黃瀚韜認為,通過用更低的bit來表示GPT-3的主要數據,可以將大模型參數規模變小,從而實現在較低功耗的邊緣和端側運行。邁特芯可在ChatGLM2-6B大模型上用INT4和INT2算力,達到跟ChatGLM2-6B FP16相當的推理水平。
在架構方面,邁特芯從算法角度來探索硬件設計,針對大模型算法搭建立方單元架構,通過立方脈動陣列實現高強度并行計算,其解決方案能兼顧高通量和低功耗。
以下為黃瀚韜的演講實錄:
各位領導,各位嘉賓,很榮幸站在這里跟大家介紹我們公司新做的面向大模型的高能效存算算力芯片。我是邁特芯的創始人兼CEO。
一、算力需求迅速增長,需要高算力硬件支持
首先是從AI算力超摩爾進程的背景開始思考。基于AI、ChatGPT的大模型的用戶數量增長是顯著的,算法是基于大模型算法,參數是每兩年增加240倍,算力也是增加了750倍。因為復雜的計算和參數量,導致它算力的需求是非常大的。每兩年750倍算力需求的增長,其實是遠超原本摩爾定律的增長,在大算力市場上是有一個非常大的算力需求。
從另一個角度看到,現在國內沒有辦法買到英偉達的A100。從全球市場來看,全球市場云服務商像CoreWeave,這是英偉達投資的云服務商,也是沒有辦法獲得足夠的GPU提供云服務。所以,算力市場還是很值得大家去探索的。

另外一個角度,現有的方案比如基于GPU的方案,它是一個高碳的硬件算力方案。以A100為例,它的功耗達到了400W的水平,這樣的功耗對建立一個AI數據中心是很有挑戰的。比如說,我們想建一個千張GPU卡的數據中心面臨一個問題,要給它提供1兆瓦功率的供電,意味著每天的運營成本是很顯著的。
另一個例子,以Meta Llama模型來做訓練為例,訓練一個Llama模型是需要2000多張A100的卡,同時也要調參做訓練搞5個月。在這個過程中已經消耗2600MWh電量,換算成碳,已經花了1000噸的碳。邁特芯的初衷是希望做一個低功耗的芯片,把功耗降下來,把碳降下來,讓社會更加環保、低功耗、可持續。
從另一個角度以現有GPU Google來看。在2016年谷歌提出TPU,TPU工作主要是用來做CNN、做推薦系統。隨著2016年、2019、2020年、2022年TPU的V3、V4這幾代迭代,我們看到了基于Transformer的算子不只有大模型,Transformer架構計算的比例是逐步增加的。
到2022年為止,已經有57%TPU算力都是用在Transformer的模型。大模型應用Transformer逐漸成為數據中心的核心計算。如果做一個專用的模型AI加速器,在做好Transformer的基礎上,再把CNN做好,那是一個非常值得的放在數據中心主要的計算硬件。
二、大模型參數來源與應對量化技術挑戰的兩大方向
既然聊到大模型,我們就追根溯源,從大模型的第一步開始,就是這篇論文谷歌的Attention?Is All You Need。這篇論文提出來的時候還沒有什么大模型,主要是解決了當時翻譯不準的問題,所以它這里提出了一個Encoder架構和一個Decoder架構。
Encoder架構是做語義理解,現在的Bert模型也是用Encoder架構做語義理解。Decoder模型是做文本生成,逐漸擴展到回答各種各樣的問題。在Decoder方案上,OpenAI進行了擴展,提出了GPT-1、GPT-2、GPT-3,逐漸到現在看到的GPT-3的1750億參數的規模。仔細看GPT-3模型,其實它還是在Transformer Decoder框架里進行擴展的,無非是深度更深一些,模型更寬一些、更大一些。

接下來看一下1750億參數的來源。首先就是Embedding的操作,Embedding操作就是一個lookup table的過程,找矩陣lookup的過程。這個事情很簡單,沒有太多的計算。Attention的部分也沒有什么變化,有4個全連接的層,每一層都有12288的維度,它就是一個很大維度的矩陣層,它有4個。Feed Forward又是一個矩陣層,是一個12288×4×12288的很大矩陣層,Feed Forward連接層是有2層。這個模塊是重復了96次,一疊加就得到了一個接近1750億參數的大模型。
我們看到1750億參數大模型主要的數據都是權重,而且權重已經是獲得的,在我們做推理的時候。如果能把權重用更低的bit來表示,我們就能獲得一個比較好的、比較高效的存儲,實現我們大模型在端側、在邊緣進行計算的方案。
說到量化,上面先給大家舉了一個例子,量化的技術就是把本來的浮點映射到需要的定點的個數。這里的定點是4bit,假設它是0~15,就可以把這樣的浮點直接映射到0~15的數字范圍內。

做量化技術最大的挑戰,就是如何在保證大模型準確率的前提下盡量量化。因為這樣的問題提出了兩個方向:第一個方向,用更細顆粒度的量化技術。在AI部署的過程中看到在量化技術上,從每一層per-layer的量化技術整個權重是一個min max,是一個scale parameter量化的參數,變成是以per-channel矩陣每一列是一個量化參數。直到現在,變成的是基于組的量化參數,顆粒度更小,因為量化帶來的誤差就會更小。
第二個技術方向,看的是層間多精度量化。可以看到右邊的圖,這個圖的表達意思是說在大模型,一個96層多層間的模型結構之間,不是每一個層都是同樣重要的。在不同的層之間,還是可以做一些取舍的。這里舉例,有些層可以用2bit做,有些層可以用4bit做,有些層如果為了保持精度的極限一點也不丟失是可以用8bit來做的。在不同層間,做了一個精度混合,通過這種方式來保證精度沒有丟失。
我們公司做了一個實驗驗證,在ChatGLM2-6B清華開源的大模型上,用88%的INT4和12%的INT12,可以達到跟ChatGLM2-6B?FP16相當的一個推理水平。這個推理水平也不是我說得,是用ChatGPT打分打到的。
三、創新立方脈動架構,以此開發X-Edge三款芯片
聊過了算法方向的東西,再回來看架構。硬件的設計是為算法服務的,所以總是要從算法角度來探索怎樣設計這樣的硬件,會為算法提供更準確、更快速的服務。在這個角度上,首先借鑒了行業的老大GPU。GPU的架構,就是以標量單元、矢量單元、立方單元三種單元構成的一個既有靈活性又有高吞吐量的計算方案。
從我們的角度來說,針對大模型、大算力,標量單元、矢量單元可以不要,專心把立方單元做好。立方單元就是一個面的矩陣和另一個面矩陣進行快速的乘加。

在立方并行計算層面,首先是推出自己立方脈動架構。這個立方脈動架構是以3×3矩陣層為例,當3×3如果排列的序列夠多的時候就可以看到是兩個面和兩個面進行乘法,構成了一個高能效的架構,立方脈動架構。
右邊是我們自己設計的存算單元,由9個transistor(晶體管)+1個capacitor(電容器)構成的。我們的思路是先實現一個立方脈動基于傳統數字的架構,再通過一個存算的SRAM計算單元進行替代,實現一個既有高通量又有低功耗的解決方案。
在此基礎上邁特芯開發了三款芯片,分別是X-Edge多精度芯片、多稀疏芯片、存算芯片。今天專注的是在存算芯片,不過前兩個我也會稍微介紹一下。

多精度芯片就是探索在模型之間可以有不同的精度,比如有1bit精度、2bit精度、4bit精度、8bit精度。不同的精度,可以探索不同層間分配不同的精度。在分配不同精度的同時通過神經網絡搜索的算法、后續的量化算法,實現精度沒有丟失。搭配我們硬件的支持,可以做到比較好的接近8TOPS/平方毫米的面效比,也是可以做到24TOPS/W能效比。
第二個角度,做的事情就是稀疏。稀疏的角度看到的權重就像人的大腦一樣,不是每個神經元都同等重要,有些神經元從未被激活過,所以對神經網絡來說,有些神經元也是可以通過算法把它稀疏掉。在這個角度上,充分利用神經網絡連接的冗余度,實現更高的峰值面效比。對于存算來說,就是充分利用計算單元架構創新提高它的能效。在這個能效上,我們達到了100TOPS/W的效果。
這一頁是我們整體架構。從架構來說,在實踐層面上沒有過多的創新。我們的核心創新點就是立方脈動陣列方向,就是中間這塊有一個立方脈動陣列,能快速做好矩陣乘法。與此同時,我們也有做矩陣Transformation的操作,比如進行轉制、變換、拼接、短連接的工作。對于這些非線性的操作,像LayerNorm、Softmax、Gelu,是使用FP16精度高一些的方式實現的。其中靈活存儲管理的方向是通過片上的儲存,盡量提高數值的復用,降低對帶寬的需求。這是整體的架構設計。

這一頁是我們現在存算芯片的指標。目前這一版芯片能達到15TOPS峰值結果,平均的準確率是69.9%。下面是有跟英偉達A100表格進行對比,它的準確率是70.43%,我們是69%,準確率的差別在大部分應用場景上是可以接受的,這也是可以通過進行多層間量化技術進行彌補,實現精度是沒有丟失的。
其它的,我們的峰值面效可以達到900TOPS/W。在這個神經網絡上的平均能效是107.58TOPS/W。我們也進行了臺積電28納米SRAM的流片。右上角是我們版圖和芯片圖。
四、大算力芯片在大模型、3D重建、X+端邊緣平臺三方面應用
聊到大模型,就聊到了應用。從應用角度看,我們認為做大模型的應用,最后要做到100~1000TOPS。因為我們還是一個初創公司,走在這個路上還正在努力走下去。在這個方向上,現在做到努力支持的就是支持清華ChatGLM2-6B的模型。

這個模型里面有自己的矢量數據集支持。矢量數據集這點,就是用來支持不同專業領域的知識可以保存在移動端的設備上,通過這個支持來提供一些專有化能力的回答。第二,通過使用自研的量化工具,可以極大地降低ChatGLM2-6B模型大小,使它可以在芯片上跑得起來。還有對大模型算子的支持,大模型這些主流的算子我們也有支持,也有對像動態量化或者不定長緯度的支持。下面是我們一個簡單的量化工具。
另一個角度來說,我們正在主打50~100TOPS的方向。作為一個存算一體,直接走向大算力、走向100~1000TOPS的跨度太大了,應該先從一個50TOPS中等算力的規格開始做起,從這個算力做起主要針對的是兩種情況。
一種情況是無人機的情況,就是對CNN、基于Transformer ViT模型的支持,這樣的模型可以讓我們實現3D點云的重建,尤其是在端側3D點云的重建,還有在端側人物識別、人物檢測、目標檢測等視覺的應用,這些應用的主要亮點是可以在同等算力情況下用的功耗會更小。當芯片驗證做得更充分一些,也會向比較簡單的小車級,就是功能性小車級層面進行開拓市場,進行降成本替代的工作。

最后是X+端邊緣平臺的應用。在這個方向上提供更多的算力,希望能提供20~50TOPS算力,主要應用在端邊緣算力卡,還有一些機器人平臺、監控攝像頭平臺、地鐵巡檢平臺等等在端邊緣對算力是有一定需求的,但是現有端邊緣的算力支持,比如1~5T的算力支持還不足夠,希望我們的芯片是可以支持的,會主打這個方向的端平臺的應用。

在X+端邊緣平臺上跟剛剛分享的一樣,這是一個非常瑣碎的市場,所以要建設好這個市場,需要有一個集中式的工具鏈,才能做好這個服務。我們有做好編譯器上面的優化,將不同層面的網絡進行編譯,也做好量化模型優化的工具,比如神經網絡搜索、量化、裁減工具,也有做好對這些平臺的基礎適配,這樣的話可以跟廠家把端邊緣的場景用好。謝謝各位的聆聽。
以上是黃瀚韜演講內容的完整整理。