“算力”(Computility,也被稱為計(jì)算能力或計(jì)算力)通常而言是指計(jì)算機(jī)、服務(wù)器、GPU或其他硬件設(shè)備執(zhí)行計(jì)算任務(wù)的速度和能力。算力的英文名是computility。其中的compu-是計(jì)算的詞根,表達(dá)“算”的含義,-utility是效用、實(shí)用的意思。computility用來表達(dá)計(jì)算的能力,即算力。近年來,“算力”被全社會高度關(guān)注,同時(shí)對于算力的準(zhǔn)確量化描述也非?;靵y,例如:
“每秒算力可達(dá)116億億次”
問題:執(zhí)行的啥計(jì)算任務(wù)呀?也沒有講數(shù)據(jù)類型(整型?浮點(diǎn)數(shù)?),也不提精度(整型多少位?雙精浮點(diǎn)?單精度浮點(diǎn)?),也不講是AI算力還是通用算力,等等。
由此,也出現(xiàn)了“已有算力不夠用,新建算力用不了”的怪事。本系列文章試圖澄清算力的各種信息,并提出算力分層定義的觀點(diǎn),總共分為三層:
- 初級算力:即硬件spec.描述的算力,應(yīng)該采用FLOPS、TOPS加“計(jì)算類型和精度”,加“算力類型”(CPU通用算力,GPU算力,DSA算力)準(zhǔn)確描述。該層最重要的是計(jì)算芯片架構(gòu)的設(shè)計(jì)能力和半導(dǎo)體制造工藝,當(dāng)下,多數(shù)情況描述的算力多么強(qiáng)大都只是指初級算力。(注釋:DSA(Domain Specific Architecture,特定領(lǐng)域架構(gòu))在本文泛指市面上講得NPU、TPU、XPU等等專用加速卡。)
- 中級算力:即計(jì)算硬件通過基礎(chǔ)計(jì)算軟件層,向算法和應(yīng)用層提供的實(shí)際計(jì)算的能力,在實(shí)踐中初級算力要轉(zhuǎn)換為中級算力面臨兩個(gè)問題:一是是否可行,二是轉(zhuǎn)換效率?;旧?,通用算力可以用Linpack等測試基準(zhǔn)進(jìn)行衡量(求解線性方程),AI算力的衡量可以使用AIPerf、MLPerf等衡量。該層最重要的是計(jì)算基礎(chǔ)軟件棧的軟件能力,具體指高性能計(jì)算庫、異構(gòu)計(jì)算框架、領(lǐng)域編譯器等。用戶只會為有效算力而付費(fèi)。
- 高級算力:各種算法和應(yīng)用被封裝成領(lǐng)域服務(wù),用戶可以直接獲得跨領(lǐng)域的具體能力,也許可以叫FAAS,用戶為具體服務(wù)而付費(fèi)。該層最重要的是對于領(lǐng)域和應(yīng)用場景核心算法的大規(guī)模并行化算法的構(gòu)建能力。
對算力分層描述的重要意義在于:
- 更為準(zhǔn)確描述一個(gè)計(jì)算中心執(zhí)行計(jì)算任務(wù)的能力。
- 急需提升我國對于計(jì)算基礎(chǔ)軟件層的重視程度。
- 使“算力”從低層次商品向高層次商品發(fā)展,促進(jìn)實(shí)現(xiàn)算力商業(yè)化。
“初級算力”如何準(zhǔn)確描述
關(guān)于“算力”的量詞介紹
浮點(diǎn)數(shù)運(yùn)算能力通常使用以下單位描述:
- FLOPS(Floating-Point Operations Per Second) - 這是衡量計(jì)算機(jī)或其他設(shè)備執(zhí)行浮點(diǎn)運(yùn)算速度的基本單位,表示每秒鐘可以執(zhí)行多少次浮點(diǎn)運(yùn)算(加、減、乘和除等運(yùn)算)。FLOPS 以前通常用于衡量大規(guī)??茖W(xué)計(jì)算和數(shù)值模擬等需要雙精度浮點(diǎn)數(shù)計(jì)算的應(yīng)用程序,現(xiàn)在也被用于描述AI高精度訓(xùn)練算力。
- 1 GFLOPS(Giga-FLOPS),表示每秒鐘執(zhí)行十億次浮點(diǎn)運(yùn)算(10^9)。
- 1 TFLOPS(Tera-FLOPS),表示每秒鐘執(zhí)行1萬億次浮點(diǎn)運(yùn)算(10^12)。
- 1 PFLOPS(Peta-FLOPS),表示每秒鐘執(zhí)行1千萬億次浮點(diǎn)運(yùn)算(10^15)。
- 1 EFLOPS(Exa-FLOPS),表示每秒鐘執(zhí)行1百億億次浮點(diǎn)運(yùn)算(10^18)。
- 1 ZFLOPS(Zetta-FLOPS),表示每秒鐘執(zhí)行十億億億次浮點(diǎn)運(yùn)算(10^21)。
- 1 YFLOPS(Yotta-FLOPS),表示每秒鐘執(zhí)行1萬億億億次浮點(diǎn)運(yùn)算(10^24)。
整型數(shù)據(jù)運(yùn)算能力通常使用TOPS(Tera Operations Per Second)來描述,即每秒多少萬億次(10^12)。對于64位CPU處理器,指的就是64位整型數(shù)據(jù)的處理能力。但在GPU和DSA的領(lǐng)域,描述多少TOPS,可能是INT32,也有可能是INT8,還有可能是INT4。(備注:對于CPU性能的強(qiáng)弱,還有DMIPS(Dhrystone Million Instructions executed Per Second)來描述,即每秒執(zhí)行多少百萬條指令)。
關(guān)于“算力”的計(jì)算精度
在科學(xué)計(jì)算領(lǐng)域,?FLOPS以前通常指雙精度浮點(diǎn)數(shù)(FP64)?,F(xiàn)在也被用于人工智能領(lǐng)域,但通常指的是其他精度(FP32/FP16/BF16/INT8等類型),同時(shí)還引入了一些新的浮點(diǎn)數(shù)格式。下面是一些常見的計(jì)算中使用的浮點(diǎn)數(shù)格式:
FP64:雙精度浮點(diǎn)數(shù),占用64位存儲空間,通常用于大規(guī)??茖W(xué)計(jì)算、工程計(jì)算等需要高精度計(jì)算的算法。
FP32:單精度浮點(diǎn)數(shù),占用32位存儲空間。與雙精度浮點(diǎn)數(shù)相比,存儲空間較小但精度較低,部分科學(xué)計(jì)算和工程計(jì)算也可以使用FP32,但通常也用于神經(jīng)網(wǎng)絡(luò)的前向推理和反向傳播計(jì)算。
FP16:半精度浮點(diǎn)數(shù),占用16位存儲空間。存儲空間更小但精度進(jìn)一步降低,通常用于模型訓(xùn)練過程中參數(shù)和梯度的計(jì)算。
BF16: 用于半精度矩陣乘法計(jì)算(GEMM)的浮點(diǎn)數(shù)格式,占用16位存儲空間。相對于FP16,在保持存儲空間相同的情況下能夠提高運(yùn)算精度和效率。
TF32:TensorFLoat-32,是NVIDIA定義的使用TensorCore的中間計(jì)算格式。
INT8:8位整數(shù),用于量化神經(jīng)網(wǎng)絡(luò)的計(jì)算,由于存儲和計(jì)算都相對于浮點(diǎn)數(shù)更加高效,在低功耗、嵌入式系統(tǒng)和邊緣設(shè)備等領(lǐng)域有著廣泛的應(yīng)用。用TOPS(Tera Operations Per Second,每秒處理的萬億級別的操作數(shù))作為計(jì)算性能的單位。
INT4:4位整數(shù),只能表示-8到7的16個(gè)整數(shù)。因?yàn)樾碌牧炕夹g(shù)出現(xiàn),追求更低的存儲空間,減少計(jì)算量和更高的算力密度,而產(chǎn)生的新格式。
其他標(biāo)準(zhǔn)的整數(shù)類型,16位整型INT16,32位整型INT32,deng64位整型等。
現(xiàn)在你看到這個(gè)計(jì)算中心,每秒可以計(jì)算多多多少次。就需要留意”計(jì)算格式/計(jì)算精度”了。另外,引入了POPS這個(gè)名詞,POPS是神經(jīng)網(wǎng)絡(luò)處理器(NNP)性能的單位,全稱為“Per Second Operations Per Second”,即每秒鐘的計(jì)算數(shù)量,這個(gè)單位似乎使用頻率不高。
A800的初級算力規(guī)格(圖1)
- A100的卡有7項(xiàng)算力規(guī)格描述。
- 這里面的計(jì)算格式描述就有6種。
intel CPU的初級算力規(guī)格(圖2)
另外,神經(jīng)網(wǎng)絡(luò)處理器(NNP)性能描述雖然引入了POPS作為單位,全稱為“Per Second Operations Per Second”,即每秒鐘的計(jì)算數(shù)量。也同樣存在類似的問題,也少人使用。
關(guān)于通用算力和專用算力有差異!
(圖1)NVIDIA A100,硬件算力是9.7TFLOPS
(圖2)Intel的i9-12900K,硬件算力才0.8192TFLOPS
硬件算力為啥差一個(gè)數(shù)量級呀,是intel不要臉了嗎?
當(dāng)然不是,這是因?yàn)镚PU和CPU的設(shè)計(jì)目標(biāo)不同,算力分為通用算里和專用算力(GPU算力、AI算力)。GPU在設(shè)計(jì)時(shí)專注于進(jìn)行大量并行計(jì)算,因此它們采用了更多的小計(jì)算單元(即ALU)和更多的流處理器,這使得它們能夠在單位時(shí)間內(nèi)完成更多的計(jì)算。而CPU則更加注重單線程處理能力和數(shù)據(jù)緩存,具有更多指令集條數(shù)、更高效的緩存和更快的時(shí)鐘速度,每個(gè)計(jì)算單元大,但數(shù)量相對較少。這就是為什么GPU的算力可以達(dá)到數(shù)以TFLOPS級別,而CPU通常只能達(dá)到數(shù)百GFLOPS的原因。這也是通用算力和AI算力的根本性差異。
CPU堆核心數(shù)和GPU堆核心數(shù)也不是一個(gè)概念。
A100有了6912個(gè)FP32 CUDA Core
i9-12900K有8個(gè)性能核加8個(gè)能效核
展開一點(diǎn)點(diǎn),GPU和CPU的核心雖然都是進(jìn)行運(yùn)算的單元(ALU)。CPU的設(shè)計(jì)目標(biāo)是滿足各種可能的應(yīng)用,強(qiáng)調(diào)通用性,例如各種辦公軟件,網(wǎng)絡(luò)服務(wù),用戶交互軟件等等。GPU和DSA強(qiáng)調(diào)某一些領(lǐng)域和算法的大規(guī)模并行計(jì)算,例如圖像渲染,深度學(xué)習(xí)等;
關(guān)于超算、智算、超腦等
超級計(jì)算機(jī)的TOP500排名的性能指標(biāo),包括Rmax(最大性能)和Rpeak(理論性能)。Rmax是指超級計(jì)算機(jī)在實(shí)際運(yùn)行中所能達(dá)到的最大計(jì)算性能,即每秒鐘所能計(jì)算的浮點(diǎn)數(shù)的數(shù)量(FLOPS)。而Rpeak是指超級計(jì)算機(jī)按照其設(shè)計(jì)時(shí)理論上所能達(dá)到的最大計(jì)算性能,實(shí)際上Rmax值往往會低于Rpeak值。排名靠前的超級計(jì)算機(jī)通常具備更高的計(jì)算性能、更強(qiáng)的可擴(kuò)展性和更高的能效比。盡管TOP500排行榜的排名主要依據(jù)性能指標(biāo),但也會考慮其他因素,如超級計(jì)算機(jī)應(yīng)用領(lǐng)域、處理器類型、計(jì)算節(jié)點(diǎn)數(shù)量等。相對比較嚴(yán)謹(jǐn)。
世界第一臺E級超算是美國橡樹嶺國家實(shí)驗(yàn)室(ORNL)的Frontier,在2022 年 6 月高性能計(jì)算的TOP500 榜單中,F(xiàn)rontier 位列第一名,速度為 1.685 EFLOPS。(題外話:有新聞?wù)f該超算出現(xiàn)大量故障,機(jī)器甚至于無法完整運(yùn)行一整天。不知現(xiàn)在怎樣了?)
世界TOP 500超級計(jì)算機(jī)排行榜
現(xiàn)在,您應(yīng)該知道“每秒算力可達(dá)116億億次”的算力中心,通常只是混淆描述算力規(guī)模,根本無法和TOP500的超算1.685 EFLOPS類比了吧!這些算力中心基本無法進(jìn)行科學(xué)計(jì)算,甚至于在運(yùn)行類似ChatGPT這種AI大模型實(shí)際能效比也不高。
所以,對于描述算力中心的描述,我國還出現(xiàn)的“智算”、“超級大腦”等名詞。如果基礎(chǔ)軟件不行,也就徒?!俺跫壦懔Α钡膕pec參數(shù)和猛力造詞,比氣勢!
智算出處:《后漢書·荀彧傳論》:“常以為中賢以下,道無求備,智筭有所研疎,原始未必要末,斯理之不可全詰者也?!?/p>
最后,以澎峰科技與西研院聯(lián)合研發(fā)的RISC-V高性能通用計(jì)算型服務(wù)器為例,HS-S1-2服務(wù)器描述的算力為4TFlops(FP64)的初級算力,已然擠進(jìn)來了國產(chǎn)處理器的第一梯隊(duì),但計(jì)算軟件棧仍有許多工作要展開。目前已經(jīng)開放預(yù)定。我們期待RISC-V高性能服務(wù)器不單能滿足國內(nèi)自主可控的需求,最終還能卷向全球!