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