楊凈 整理自 MEET2023
算力的需求,遠比以往來得更為猛烈。甚至有人直呼:得算力者得未來。
元宇宙、AIGC、AI for Science的涌現(xiàn),又給高性能計算(HPC)平添了好幾把火。
在諸多挑戰(zhàn)與機遇共存交織的當下,這一領域泰斗中國工程院院士、清華大學計算機科學與技術系鄭緯民,在MEET2023智能未來大會上,分享了自己的見解和思考。
估計未來兩年到四年,HPC(高性能計算)+AI+BigData融合的服務器就會出現(xiàn)。
AI for Science的出現(xiàn),讓HPC+AI的融合成為剛性需求;而數(shù)據(jù)處理又是AI的基礎,數(shù)據(jù)和AI的融合也很自然。
甚至他還開玩笑說,現(xiàn)在要獲HPC領域的戈登貝爾獎,必須要有AI的算法。你沒有AI的算法,否則獎都得不了。
雖然這是玩笑說法,但實際上也是一種趨勢。
除此之外,他還談到人工智能計算機設計的三大平衡性原則、AI基準設計四大目標以及如何通過并行方法加速大規(guī)模預訓練模型。
為了完整體現(xiàn)鄭緯民院士的分享及思考,在不改變原意的基礎上,量子位對他的演講內(nèi)容進行了編輯整理。
關于MEET 智能未來大會:MEET大會是由量子位主辦的智能科技領域頂級商業(yè)峰會,致力于探討前沿科技技術的落地與行業(yè)應用。今年共有數(shù)十家主流媒體及直播平臺報道直播了MEET2023大會,吸引了超過300萬行業(yè)用戶線上參會,全網(wǎng)總曝光量累積超過2000萬。
演講要點
估計未來兩年到四年,HPC(高性能計算)+AI+BigData融合的服務器就會出現(xiàn)。過去HPC是一臺機器、AI是一臺機器,大數(shù)據(jù)處理是第三臺機器,這三個機器自己管自己,但現(xiàn)在這三臺機器正在融合之中;
AI基準設計要達到四個目標:統(tǒng)一的一個分數(shù)、可變的問題規(guī)模、具有實際的人工智能意義、評測程序包含必要的多機通信;
現(xiàn)在要獲HPC領域的戈登貝爾獎,必須要有AI的算法,你沒有AI的算法,否則獎都得不了。這是開玩笑的說法,但實際上也是一個趨勢;
AI for Science的出現(xiàn),讓HPC+AI的融合成為剛性需求;
探索更大參數(shù)量模型的效果,是具有重要科學意義的;
我們希望人工智能計算機跟HPC有TOP 500一樣,也有一個AIPerf 500。
(以下是鄭緯民院士演講全文)
人工智能計算機設計的三大平衡性原則
今天給大家講講我們團隊為人工智能做的三件事,就是AI與算力基礎設施的設計、評測和優(yōu)化。
第一件事,HPC(高性能計算)和AI的應用是不一樣的。
HPC的應用領域主要有科學和工程計算、天氣預報、核聚變模擬、飛行器設計。它的運算精度是雙精度浮點運算,64位甚至128位的,所以加減乘除做得很快,主要是這點不同。
人工智能計算機就是半精度的,甚至是定點的,8位的、16位的、32位的。
因此這兩臺機器應該是不一樣的,而人工智能計算機最近兩年才開始有。因此我們團隊設計了一臺能比較好地處理人工智能問題的計算機,究竟長什么樣子?
我們團隊第一個貢獻,是人工智能計算機設計的平衡性原則。
第一個,計算平衡設計。人工智能是處理單精度的或者定點的,你這臺機器是不是只要把定點的、單精度的做好就行了?但實際上也不是。雖然我們主要考慮半精度運算,但是也要考慮到雙精度運算的能力。
這兩年下來有一個經(jīng)驗:
1)雙精度與半精度的運算性能之比1:100比較好。
2)人工智能計算機不能只做CNN的,還要做大模型訓練。
因此,提出來叫變精度平衡設計思想,總體來說還要增加通用計算。
第二,網(wǎng)絡平衡設計,既然這臺機器很大,由上千個、上萬個小機器連在一起,那么這個網(wǎng)絡也要做得好。如果只做CNN那就好辦,但還要考慮訓練。這樣一來,網(wǎng)絡怎么做平衡設計也非常重要。
第三,存儲,即IO子系統(tǒng)設計。我們知道現(xiàn)在每臺機器都有SSD,怎么把每臺SSD聯(lián)合起來開成一個大的分布式文件系統(tǒng)?這也是很要緊的。
因此,我們提出來這三個平衡設計原則,已被很多公司采用?,F(xiàn)在國內(nèi)20多個城市陸續(xù)啟動人工智能超算中心,讓算力無處不在、觸手可及,這其中大多數(shù)都用上了平衡設計這個想法。
目前行業(yè)有個趨勢是HPC+AI+BigData融合在一塊。過去HPC是一臺機器、AI是一臺機器,大數(shù)據(jù)處理是第三臺機器,這三個機器自己管自己,但現(xiàn)在這三臺機器正在融合之中。
為何這么說呢?
一方面,AI for Science的出現(xiàn),讓HPC程序中包含了AI算法。因此HPC+AI的融合,成為剛性需求。
我曾經(jīng)開玩笑說,你現(xiàn)在要獲HPC的領域戈登貝爾獎,必須要有AI的算法,你沒有AI的算法,否則獎都得不了。這是開玩笑的說法,但實際上也是一個趨勢。
另一方面,數(shù)據(jù)處理是AI的基礎,數(shù)據(jù)和AI的融合也很自然。因此,我估計兩年到四年,HPC、AI和BigData融合的服務器就會出現(xiàn)。
這是我們小組第一個貢獻,即人工智能計算機應該長成什么樣子。
AI基準設計要達四個目標
第二個貢獻,大規(guī)模人工智能算力基準評測程序AIPerf。
什么意思呢?傳統(tǒng)HPC有個評測程序Linpack,TOP500就是它評出來的,但它不能用于AI計算機評測。Linpack是用來測64位,甚至128位加減乘除做的快慢?,F(xiàn)在人工智能計算機是16位、32位,甚至8位,這是完全不一樣。
因此,我們需要做一個能回答這個問題的人工智能算力基準測試程序。我們希望有個簡單的評價指標,來判斷哪家系統(tǒng)的人工智能算力更強。
那現(xiàn)在有沒有相應的評測程序呢?其實也有,但沒有太合適的。
比如,DeepBench針對單個芯片,不適用于整機評測。Mobile AI Bench針對的是移動端硬件上的模型訓練評測,不是整個系統(tǒng)的。MLPerf可擴展性不好。因此,我們決定要自己做一個。
做個AI基準設計一定要達到這四個目標:
1、統(tǒng)一的分數(shù)。我們希望運行Benchmark出來一個值,就一個值就行了。而不是結果出來一個報告,這樣看起來很費勁。
2、可變的問題規(guī)模。Benchmark可以測4個節(jié)點組成的機器,也可以測1000個、20000個,要規(guī)??勺?,大規(guī)模的做起來也挺費勁。
3、具有實際的人工智能意義。不能隨便說加減乘除,那就不能反映人工智能的問題。特別是要反映人工智能問題中的神經(jīng)網(wǎng)絡運算、自然語言處理能力。
4、評測程序包含必要的多機通信,因為是一個大的系統(tǒng),由多機連起來的,需要有通信。
最后,以清華大學為主的團隊做了一個AIPerf來測試,于2020年11月15日首次發(fā)布。我們希望人工智能計算機跟HPC有TOP 500一樣,也有一個AIPerf 500。
現(xiàn)在它已經(jīng)連續(xù)三年每年都發(fā)布排行榜,得到了很多單位、企業(yè)的認可。
大規(guī)模預訓練模型的三種并行加速方法
第三個貢獻,百萬億參數(shù)超大規(guī)模訓練模型的加速方法。
簡單舉個例子,學界至今已形成一個共識:模型規(guī)模和模型效果呈正相關關系。GPT有1.1億參數(shù),GPT-3有1750億參數(shù),悟道2.0有1.75萬億參數(shù),我們做的BaGuaLu卻有174萬億參數(shù),應該說參數(shù)越多,效果越好,越接近人的智慧,但有個問題就是,訓練數(shù)據(jù)越多,要求的算力也就越大。
再來看左邊這張圖SAT(美國高考)任務的情況,如果模型參數(shù)達到100B(相當于1000億個參數(shù)),那么模型完成SAT,就有70%的準確度。
因此,探索更大參數(shù)量模型的效果,是具有重要科學意義的。
但模型越做越大,問題隨之而來?,F(xiàn)在國內(nèi)很多單位模型都做得很好,但怎么把模型安裝到一臺機器上去,這有講究。
舉個例子,我們就將BaGuaLu模型安裝到了新一代神威體系結構芯片上。
圖上可以看到,核組共有64個核,再加上黑色主核,共有65個核。一個CPU共有6個這樣的組成:CG0、CG1、CG2、CG3、CG4、CG5,這6個通過環(huán)形網(wǎng)連在一起。我們稱之為一個節(jié)點,將它集成到一塊,一個節(jié)點大概有390個核。一共有256個節(jié)點組成超節(jié)點,超節(jié)點內(nèi)部通信一步直聯(lián),超節(jié)點跟超節(jié)點之間要經(jīng)過上層的網(wǎng)絡。
因此,256個節(jié)點內(nèi)部通信很快,一步就到。但超節(jié)點之間的通信就比較慢了。
而要將大模型在這臺機器上運行,問題就來了。現(xiàn)在預訓練模型都是Transfomer,而Transfomer結構是嵌入層、注意力層、前反饋網(wǎng)絡層,中間注意力層跟前反饋層都會經(jīng)過N次迭代,整個運算又基本上是矩陣乘法。
如果一個模型能在單個CPU上運算,那最省事了,但CPU的計算能力有限,內(nèi)存也有限,模型也就大不到哪里去。因此大模型訓練一定是多機的、分布的,這就涉及到了多種并行方法。
第一種,數(shù)據(jù)并行。假如整個模型設兩個節(jié)點,一個模型節(jié)點0、另一個模型做的節(jié)點1,整個模型都做了數(shù)據(jù)并行,數(shù)據(jù)各一半要拿去訓練學習,但是要注意訓練完了以后不是最終的結果,因為只輸入了一半的數(shù)據(jù)。因此這中間要AII-Reduce,AII-Reduce就做好多通信,整件事情就會很復雜。
第二種,模型并行。將整個模型切成一半,一半模型節(jié)點0,一半模型節(jié)點1,數(shù)據(jù)是整個拿去訓練。訓練完了以后出來的結果也不是最終結果,因為只訓練了一半的模型,出來還有AII-Gather,也是做通信的。
第三種,專家并行,跟數(shù)據(jù)并行、模型并行一樣,同樣要求通信。
現(xiàn)在如果你只有一種方法,究竟用哪種并行方法呢?實際上這跟計算機結構有關。如果每臺計算機之間通信都非???,那么用數(shù)據(jù)并行就可以;如果你的通信比較慢,就要考慮模型并行或者專家并行。
因此,這些模型如何跟數(shù)據(jù)、機器實際情況匹配?這就涉及到軟硬件協(xié)同這件事。
我們在新一代神威機器上采用了“拓撲感知的混合并行模式”。
具體而言,剛才提到,該體系架構節(jié)點內(nèi)部通信很快,但超節(jié)點之間通信比較慢。因此在混合并行模式下,一個通信超節(jié)點內(nèi)部,采用數(shù)據(jù)并行;超節(jié)點之間則采用專家并行或模型并行。
除此之外,還有內(nèi)存大小、訪問內(nèi)存等問題:怎么樣讓內(nèi)存訪問的比較快,負載比較均衡?
做大規(guī)模模型訓練時,平均每小時都會發(fā)生一次硬件軟件出錯,不要以為這個機器不可靠。目前這個水平已經(jīng)很好了。因此,一般都要做檢查點,如果寫的不好,這件事情就有做三個小時,怎么能讓它加速呢?最后我們做到了10分鐘就完成了。
現(xiàn)在,我們把模型開源了,尤其是并行訓練模型,將他們放在了開源系統(tǒng)FastMOE里,現(xiàn)在得到了工業(yè)界很多認可,像阿里巴巴的淘寶、天貓,騰訊的端到端語言模型,都用上了我們的并行系統(tǒng)。百度飛槳的MOE模塊,也使用了我們的FastMOE。
最后總結一下,一是人工智能算力是當前人工智能領域發(fā)展的關鍵。
二是團隊對人工智能的三點小貢獻:
1)提出了一種AI算力基礎設施的架構和平衡設計原則,現(xiàn)在全國20多個城市的20多個人工智能超算中心基本上都采納了我們的設計思想。
2)做了評測,即人工智能基準測試程序AIPerf,現(xiàn)在每年都會發(fā)布500名榜單,在國內(nèi)外產(chǎn)生了一定影響。
3)大模型怎么訓練得快?特別是關于數(shù)據(jù)并行、模型并行,還是專家并行。我們做了一個庫放在Open Source上?,F(xiàn)在工業(yè)界都來用我們的東西,使得大訓練模型訓練能夠加快。
因此,我們團隊對人工智能做了這三點小貢獻,希望能夠推動人工智能的發(fā)展。
講的不對的地方請大家批評指正。謝謝大家!