清華陳文光教授:AI 超算基準(zhǔn)測試的最新探索和實踐
2020 北京智源大會
本文屬于2020北京智源大會嘉賓演講的整理報道系列。北京智源大會是北京智源人工智能研究院主辦的年度國際性人工智能高端學(xué)術(shù)交流活動,以國際性、權(quán)威性、專業(yè)性和前瞻性的“內(nèi)行AI大會”為宗旨。2020年6月21日-24日,為期四天的2020北京智源大會在線上圓滿舉辦。來自20多個國家和地區(qū)的150多位演講嘉賓,和來自50多個國家、超過50萬名國內(nèi)外專業(yè)觀眾共襄盛會。
無規(guī)矩不成方圓。放在超級計算機(jī)的研發(fā)領(lǐng)域,沒有一個大家普遍接受的算力評測指標(biāo),便難以推動超算迅猛發(fā)展。
?
而現(xiàn)在伴隨著人工智能的發(fā)展,大量專門針對人工智能而研發(fā)的超算系統(tǒng)不斷涌現(xiàn)。原來的評測指標(biāo),由于種種原因,已經(jīng)不再適合來評測AI超算——“壞的指標(biāo)導(dǎo)致壞的結(jié)果”。
?
于是如何設(shè)計新的AI超算基準(zhǔn)測試,儼然已經(jīng)成為超算研究的當(dāng)務(wù)之急。誰能抓住時機(jī),制定出適用于AI系統(tǒng)的“好指標(biāo)”,并將之推廣成國際標(biāo)準(zhǔn),誰便能主導(dǎo)AI超算評測的核心工作。
?
2020年6月21日下午,在第二屆智源大會“智能體系架構(gòu)和芯片”專題論壇上,清華大學(xué)陳文光教授做了題為“人工智能超算的基準(zhǔn)測試初探”的專題報告,介紹了由鵬城實驗室和清華大學(xué)共同開展的AI超算算力基準(zhǔn)測試程序的研究進(jìn)展。
?

陳文光,國內(nèi)系統(tǒng)研究的領(lǐng)軍人物之一,擔(dān)任中國計算機(jī)學(xué)會副秘書長、曾任ACM中國理事會主席、ACM中國操作系統(tǒng)分會ChinaSys主席、ACM通訊中文版主編等。
?
陳文光的演講分為四部分,首先分析了為什么需要人工智能算力基準(zhǔn)測試程序,指出好的Benchmark對于領(lǐng)域發(fā)展具有引領(lǐng)作用;接著梳理了人工智能基準(zhǔn)測試的關(guān)鍵要素及程序特點(diǎn),并在對比了現(xiàn)有AI算力Benchmark的基礎(chǔ)上,陳文光詳細(xì)介紹了基于AutoML的測試方案以及在廣州超算中心、鵬城實驗室進(jìn)行測試的實驗結(jié)果;最后,他展望了這個領(lǐng)域,在未來的幾個工作重點(diǎn)方向。
?
整理:賈偉,王光華
一、為什么需要人工智能算力基準(zhǔn)測試程序?
?
我們先來看傳統(tǒng)的超算。

?
上圖是每年通過基準(zhǔn)測試評選出來的高性能TOP500計算機(jī)系統(tǒng)的性能表現(xiàn)。三條線中,最下面的是TOP500?中最慢的性能,橙色線是第一名機(jī)器的性能,綠色線是前500名性能之和。
?
從這幅圖可以看出,任何一臺機(jī)器都對應(yīng)一個值。這個值是高性能計算領(lǐng)域常用的標(biāo)準(zhǔn),即Linpack測試值,通過用高斯消元法求解N元一次稠密線性代數(shù)方程組的測試,評價高性能計算機(jī)的(浮點(diǎn))性能指標(biāo)。
?
現(xiàn)在有很多人工智能應(yīng)用和系統(tǒng)在做人工智能計算,例如用寒武紀(jì)處理器、GPU等構(gòu)成的系統(tǒng)。
?
對于多樣的智能計算系統(tǒng),能不能像傳統(tǒng)的高性能計算機(jī)一樣,用一個簡單的指標(biāo)來回答哪一套系統(tǒng)的人工智能算力更強(qiáng)?我們能不能用一個數(shù)字來表示這個指標(biāo),給任意一個機(jī)器一個確定的數(shù)值,并在通過分析這些數(shù)值來預(yù)測未來一段時間內(nèi)的發(fā)展趨勢?
?
好的指標(biāo)可以引領(lǐng)一個領(lǐng)域的健康發(fā)展。比如Linpack指標(biāo)很大程度上就主導(dǎo)了對設(shè)計高性能計算機(jī)時的指標(biāo)要求,從而鼓勵更有針對性的設(shè)計。
?
但反過來說,一個不好的指標(biāo)會阻礙領(lǐng)域的發(fā)展。傳統(tǒng)的高性能計算主要在使用雙精度浮點(diǎn)運(yùn)算,而人工智能計算里面訓(xùn)練主要是單精度浮點(diǎn)數(shù)以及16位浮點(diǎn)數(shù),推理甚至可能只用8位,還可以通過網(wǎng)絡(luò)裁剪和量化做到更低的位寬。如果我們用雙精度浮點(diǎn)數(shù)的性能來評價一個人工智能機(jī)器的性能,顯然是不合適的。一個不好的指標(biāo)有可能引領(lǐng)這個領(lǐng)域往錯誤的方向發(fā)展。所以傳統(tǒng)的Linpack指標(biāo)本身并不能直接用來評測一個人工智能計算系統(tǒng)的算力。
?
二、人工智能算力基準(zhǔn)測試的主要考慮
?
設(shè)計人工智能算力的基準(zhǔn)測試,需要考慮以下幾個因素:
?
首先,怎樣實現(xiàn)具有人工智能意義的全機(jī)規(guī)模測試?現(xiàn)階段,全機(jī)規(guī)模指的是幾千塊甚至上萬塊的加速卡,未來的機(jī)器有可能要準(zhǔn)備10萬塊甚至更多的加速卡。目前,還沒有單個人工智能的訓(xùn)練任務(wù)能夠達(dá)到計算機(jī)的全機(jī)規(guī)模。即使可能勉強(qiáng)把一些人工智能應(yīng)用跑到這個規(guī)模,得到的結(jié)果可能是可能收斂計算速度并沒有變得更快,或者準(zhǔn)確率上并沒有改進(jìn),反而變得更差了。所以強(qiáng)行用全機(jī)做人工智能并沒有意義,并不會有訓(xùn)練時間和準(zhǔn)確率的改進(jìn),這也不是一個好的測試。
?
其次,如何做到大規(guī)??勺??如果要測規(guī)模變化巨大的人工智能系統(tǒng),從幾塊、幾十到幾千上萬塊加速卡,都能對它們進(jìn)行客觀測試并得出分?jǐn)?shù),這個測試就必須規(guī)模可變。Linpack的規(guī)模是方程組的階數(shù)N的規(guī)模,是N×N的變量,通過改變N便可以改變測試規(guī)模。如果要測試規(guī)模范圍變化巨大的人工智能集群計算機(jī),測試程序必須是規(guī)模可變的。
?
第三,如何考慮準(zhǔn)確率?這個點(diǎn)很重要!對于人工智能來說,準(zhǔn)確率受限的因素很多,包括訓(xùn)練方法、網(wǎng)絡(luò)結(jié)構(gòu)以及各種參數(shù)。如果很快就能算到給定的很低的準(zhǔn)確率,那么測試就沒有意義;另外有一種思路是把準(zhǔn)確度也計到分?jǐn)?shù)里面去。
?
基于以上考慮,以及現(xiàn)有超算算力Benchmark成功案例的分析,陳文光教授認(rèn)為,人工智能算力基準(zhǔn)測試程序應(yīng)該包含以下四個特性:
?
1. 一個分?jǐn)?shù)。從Linpack的成功,我們可以得出一個結(jié)論,即一個分?jǐn)?shù)非常重要。而且分?jǐn)?shù)應(yīng)該近似線性,當(dāng)機(jī)器規(guī)模增大一倍的時候,這個分?jǐn)?shù)最好提高一倍;當(dāng)然不可能正好是完整的增加一倍,達(dá)到百分之七八十,都算比較好的線性。不能機(jī)器增加,分?jǐn)?shù)反而下降。
?
2. 可變問題規(guī)模。這是設(shè)計人工智能基準(zhǔn)測試程序最重要的一個考慮。可變問題規(guī)模有兩點(diǎn):第一,它可以適應(yīng)單卡內(nèi)存規(guī)模的變化,一塊加速卡本身內(nèi)存大小存在很多變化,比如從8G到32G等,怎么能夠適應(yīng)這個內(nèi)存規(guī)模的變化;第二,怎么適應(yīng)從1塊卡到1萬塊卡的變化?。
?
3. 計算要有人工智能意義。以HPL-AI 來說,僅使用人工智能的運(yùn)算精度是不夠的,人們更希望計算本身是具有人工智能意義的?,F(xiàn)在最流行的AI運(yùn)算是神經(jīng)網(wǎng)絡(luò)運(yùn)算,可以認(rèn)為具有一定的人工智能意義。
?
4. 多機(jī)通信可以少,但不能沒有。比如,兩臺機(jī)器相隔一萬公里,各算各的,最后得出一個分?jǐn)?shù),這樣顯然可以達(dá)到線性加速比。但這個事情是不對的,因為這沒有對系統(tǒng)的通信(包括IO、存儲等各方面)的協(xié)同能力做出挑戰(zhàn),可能導(dǎo)致系統(tǒng)很多任務(wù)并不能完成。測試程序應(yīng)該相對來說在對緊耦合的機(jī)器上進(jìn)行測評才能得到一個比較好的性能,而不是完全各干各的。
?
三、人工智能基準(zhǔn)測試程序
?
目前,在人工智能性能基準(zhǔn)測試這個領(lǐng)域已經(jīng)有很多探索,比如MLPerf,小米的mobile AI bench,百度的Deepbench,中國人工智能產(chǎn)業(yè)發(fā)展聯(lián)盟的AIIA DNN Benchmark等。其中,MLPerf是國際上大家比較認(rèn)可的機(jī)器學(xué)習(xí)的標(biāo)準(zhǔn)。此外,混合精度的HPL-AI是在全雙精度的Linpack基礎(chǔ)上把它改成混合精度的算法,即先用半單精度/單精度計算得到一個近似解,再用雙精度計算得到一個更精確精度的解。但其實它除了用到一些半精度/單精度的運(yùn)算外,實際上和AI并沒有直接的關(guān)系,HPL-AI更多是用于混合精度算法的研究。
?

?
已有的人工智能基準(zhǔn)測試程序的存在兩個主要問題。首先,除HPL-AI外都它們是固定規(guī)模的,沒有解決可變規(guī)模的問題;其次,它們都采用多個應(yīng)用,這個思路有點(diǎn)像NAS等測八個應(yīng)用。它們都想完整的反映系統(tǒng)的特點(diǎn),但是最后公眾能夠理解和記住的還是HPL(High Performance Linpack)。一個系統(tǒng)一個分?jǐn)?shù),這是公眾最容易接受和理解的東西。
?
那么如何設(shè)計符合AI的算力Benchmark呢?
?
一種方案是利用AutoML來做基準(zhǔn)測試,通過算法自動搜索合適的神經(jīng)網(wǎng)絡(luò)模型結(jié)構(gòu)和超參數(shù),找到特定任務(wù)效果比較好的優(yōu)化的解。這個方案的原始思路是清華大學(xué)張悠慧老師提出來的。它是一個類似于搜索的問題,因此需要的計算資源很高,而且做每一次搜索,得到一個神經(jīng)網(wǎng)絡(luò),要對這個模型進(jìn)行訓(xùn)練,然后才能知道這個搜索出來的模型好不好。
?
AutoML包括兩方面,一個是網(wǎng)絡(luò)結(jié)構(gòu)搜索,一個是超參數(shù)搜索。網(wǎng)絡(luò)結(jié)構(gòu)搜索主要是改變當(dāng)前的網(wǎng)絡(luò)結(jié)構(gòu);超參數(shù)搜索更多是在每一層的連接參數(shù)上做一些變化。這兩個是正交的,也就是說搜出一個網(wǎng)絡(luò)結(jié)構(gòu)以后,再對它進(jìn)行超參數(shù)搜索。
AutoML具備足夠的并行度,通過多次測試或統(tǒng)計平均改善搜索的隨機(jī)性問題。實驗得出,整體上找到解的優(yōu)劣程度和搜索消耗的計算量基本呈正比,也就是說投入的計算量越多,搜索的空間越大,統(tǒng)計上可以獲得的解也越好。
?
AutoML做人工智能基準(zhǔn)測試程序有這樣的特點(diǎn):
1)任務(wù)自身是深度學(xué)習(xí)任務(wù)設(shè)計中的關(guān)鍵環(huán)節(jié),且任務(wù)能夠直接體現(xiàn)超算系統(tǒng)在 深度學(xué)習(xí)方面的綜合性能(包括訓(xùn)練、推斷) ;
2)找到的解的優(yōu)劣程度隨著搜索所消耗的計算量而逐漸提升;
3)可以換算成計算效率(%)
?

?
圖3是結(jié)構(gòu)搜索的工作流程。在AutoML框架中,master節(jié)點(diǎn)將模型歷史及達(dá)到的精度發(fā)送至slave節(jié)點(diǎn),slave節(jié)點(diǎn)根據(jù)模型歷史及其精度搜索出一個新模型并進(jìn)行訓(xùn)練,slave節(jié)點(diǎn)將根據(jù)某種策略停止訓(xùn)練,并將此模型及其達(dá)到的精度發(fā)送至master節(jié)點(diǎn),master節(jié)點(diǎn)接收并更新模型歷史及精度(參見文獻(xiàn)1)。
?
1. 在廣東超算中心的初步實際測試
?
首先,在廣東超算中心對16塊卡、32塊卡做了測試。從圖4結(jié)果可以看出32塊卡訓(xùn)練精度達(dá)到78.9%,而16塊只達(dá)到76.87%??〝?shù)越多flops越高,從16塊到32塊,卡數(shù)增加1倍,但是flops是3倍多,這是傳統(tǒng)超性能計算里面很少見到線性加速比。原因在于網(wǎng)絡(luò)結(jié)構(gòu)搜索時開始的起點(diǎn)是比較小的,搜索到越來越大的網(wǎng)絡(luò)時候,隨著網(wǎng)絡(luò)越來越大運(yùn)算效率逐漸增高,就會得到這樣一個超線性的加速。從圖5可以看出32個GPU時當(dāng)遇到后面比較大的網(wǎng)絡(luò)的時候,它的平均flops比前面的高一些。
?


?
2. 在鵬城實驗室的初步實際測試
?
在鵬城實驗室做了最多到128卡的測試。
?

圖6表明,最優(yōu)精度32塊卡到81.56%,128塊卡時到了82.78%。Fflops是增加的,效率是下降的,這和HPC的經(jīng)驗比較相似。隨著規(guī)模增大,同步、負(fù)載等開銷不均衡,會帶來一些問題讓性能下降。另外測試的精度為82%還有很大提高的空間,而人類在這個上面已經(jīng)可以達(dá)到99%了,兩者之間的差距是非常大的。當(dāng)然,這和采用的搜索框架、搜索起點(diǎn)是有關(guān)。
?
任務(wù)的運(yùn)行的flops的情況、參數(shù)量如圖7、圖8所示。


?
用Network Morphism算法后續(xù)生成神經(jīng)網(wǎng)絡(luò)時,需要將之前所有的歷史都看一遍。所以它的生成開銷跟歷史個數(shù)N有關(guān)系,當(dāng)N不斷的增加,到后期開銷相當(dāng)大。這也是后續(xù)需要解決的問題。
?

?
怎么解決這個問題?如果生成網(wǎng)絡(luò)時間太長,我們可以增加一個并行度,即在當(dāng)前網(wǎng)絡(luò)結(jié)構(gòu)上進(jìn)行超參數(shù)搜索。超參數(shù)搜索的好處是搜索時網(wǎng)絡(luò)結(jié)構(gòu)相對比較穩(wěn)定,也就是說計算性能差別不大。另外,超參數(shù)搜索的生成時間也比較穩(wěn)定,生成新的超參數(shù)的時間和已經(jīng)評測的超參數(shù)個數(shù)是無關(guān)的,僅和搜索空間相關(guān)。超參數(shù)搜索的壞處是并行度并不高,所以需要把超參數(shù)搜索和結(jié)構(gòu)搜索結(jié)合起來,才能進(jìn)一步提高精度。
?

圖10是超參數(shù)搜索的測試結(jié)果,可以看到它的每個任務(wù)在網(wǎng)絡(luò)結(jié)構(gòu)上做超參數(shù)搜索的性能相對很穩(wěn)定,生成時間也很穩(wěn)定,這是很好的特點(diǎn)。
?
四、總結(jié)與未來工作
?
人工智能超算需要在計算精度上是符合人工智能特點(diǎn)的,計算內(nèi)容具有人工智能意義,而且規(guī)模是可變的,能夠適應(yīng)很大范圍的機(jī)器規(guī)模。
?
展望未來,陳文光指出后續(xù)要做的事情包括:
?
1. 進(jìn)一步提高模型生成與搜索的效率。
1)并行化模型生成算法。現(xiàn)在是在單線程上做的,但是CPU幾十個核,如果可以并行做會得到更好效果。
2)優(yōu)化模型生成算法。利用其他的模型生成的算法,比如遺傳算法,不用保留全部的歷史,只需要保留當(dāng)前一代即可。
3)選擇更好的優(yōu)化起點(diǎn)。當(dāng)前最后得到的accuarcy和人類相比是很低的,因為從60%多這個非常差的起點(diǎn)開始搜索,如果我們從相對比較好的起點(diǎn)上去開始搜索,就能夠獲得更好的最終效果。
4)使用更大規(guī)模的數(shù)據(jù)集?,F(xiàn)在使用的CIFAR-100數(shù)據(jù)規(guī)模比較小,希望用更大規(guī)模的數(shù)據(jù)集,這樣對整個系統(tǒng)的IO、網(wǎng)絡(luò)、通信也會有更好的測試。
?
2. 結(jié)合參數(shù)搜索。
?
3. 在多種和更大平臺上開展測試。
?
4. 做流程管理。借鑒TPC-C等都有相對完整的運(yùn)行規(guī)則、輔助工具、報告和審查機(jī)制,希望以后能夠真正的做一個相對公平和客觀的測試結(jié)果發(fā)布,能夠?qū)I超算的發(fā)展起到一定的支撐作用。
?
參考文獻(xiàn)
1. Haifeng Jin, Qingquan Song, and Xia Hu. 2019. Auto-Keras: An Efficient Neural Architecture Search System. In Proceedings of the 25th ACM SIGKDD International Conference on Knowledge Discovery & Data Mining (KDD ’19). Association for Computing Machinery, New York, NY, USA, 1946–1956.