隨著機器學習越來越多地進入社會的每一個角落,相應的訓練任務也成為雲端數據中心最關鍵的運算負載之一,同時這也推動半導體相關芯片市場的蓬勃發展。在雲端訓練芯片領域,雖然一直有不同的挑戰者,但是NVIDIA一直保持著龍頭的位置。
從2012年深度學習復興,依靠NVIDIA GPU的CUDA生態成功克服訓練效率難題並成功掀起這一代人工智能潮流之後,NVIDIA的GPU一直是訓練市場的首選芯片。
上周MLperf公佈的最新訓練榜單也再次印證NVIDIA的穩固地位。MLPerf是由機器學習業界的行業組織ML Commons牽頭做的標準榜單,其中訓練榜單的具體測評方法是ML Commons提供一些業界最流行的機器學習模型的訓練任務,而不同的機構會自行去使用不同的處理器和AI加速芯片配合相應的軟件框架去搭建系統執行這些訓練任務,並且將結果提交到MLPerf來匯總和公佈。每過一段時間,該榜單都會更新一次以包括新的芯片以及新的訓練任務。在最新的6月29日公佈的MLPerf訓練2.0版本的結果中,NVIDIA的領先地位可以從榜單中的兩個地方看出:
首先是使用NVIDIA GPU提交結果的數量。在這次MLPerf的最新訓練榜單中,絕大多數(90%以上)機構提交的訓練結果都是基於NVIDIA的GPU做訓練加速,而如果再仔細看結果,會發現NVIDIA的GPU是和不同的機器學習訓練框架兼容性最好的。例如,Google、Intel和GraphCore都上傳使用非NVIDIA GPU的結果(Google使用TPU v4,Intel使用Habana Gaudi芯片,而Graphcore使用Bow IPU),但是這些競爭芯片對於深度學習框架支持的廣度都不及NVIDIA——基本上所有深度學習框架都會支持NVIDIA的GPU,但是支持其他芯片的深度學習框架種類則有限。這也從一個角度說明NVIDIA在生態上的領先。
其次是性能上的比較。值得註意的是,本次絕大多數機構提交的基於NVIDIA GPU的結果都是基於NVIDIA A100 GPU,換句話說這已經是兩年前的芯片的結果(NVIDIA官方宣佈基於下一代GPU H100的結果將會在下一次MLPerf榜單更新時提交),但是其結果仍然很有競爭力,相較於其他更新的芯片的結果並不遑多讓。例如,相比最新的Google TPUv4,在大規模語言模型預訓練(BERT)任務上,同樣使用4096張加速卡TPU v4需要的時間是0.179分鐘,而NVIDIA A100需要的時間是0.206分鐘,相差並不大。相比Intel Habana Gaudi2,同樣使用8張加速卡NVIDIA A100 的BERT訓練結果是17.624分鐘,而Habana Gaudi2需要的時間是17.209分鐘。相比Graphcore Bow IPU,在BERT任務上128張A100的訓練時間是2.655分鐘,而Bow IPU需要4.415分鐘。在一些物體識別任務中,Habana Gaudi2的性能確實強於A100,但是這樣的優勢在NVIDIA H100發佈後是否還能保持還有很大的不確定性。
NVIDIA的軟硬件生態是關鍵護城河
如前所述,NVIDIA目前仍然在機器學習訓練市場可以說是獨孤求敗,並沒有受到強大的挑戰。我們認為,這得益於NVIDIA在芯片和軟件方面的全面能力,而這從另一個角度又與人工智能芯片發展的規律相得益彰。
首先,人工智能的發展規律中,人工智能模型始終和相關的加速硬件一起發展,也正因為這個原因,有能力掌握軟硬件協同設計的公司將會有巨大的優勢。即使單從芯片設計的角度來看,人工智能加速芯片中的架構設計也是極其重要,從性能提升角度比芯片的半導體工藝要更重要。
縱觀MLPerf公佈的榜單,從第一個榜單公佈到現在的時間周期內,摩爾定律主導的芯片性能(時鐘頻率)提升約為四倍,但是芯片對機器學習任務的處理能力卻增強四十倍,由此可見芯片架構以及軟硬件協同設計恰恰是人工智能加速芯片的核心要素,而半導體工藝提升隻是一個輔助因素。在這個領域,NVIDIA確實具有巨大的優勢,因為NVIDIA在擁有強大的芯片架構設計團隊來為人工智能模型設計芯片架構的同時,也擁有很強的軟件團隊來優化在芯片上的人工智能模型運行效率,兩者相結合確實威力無窮。
縱觀NVIDIA針對機器學習的GPU設計,其軟硬件協同設計的思路可以說是一以貫之;在深度學習還未成為主流的時候,NVIDIA就相當具有前瞻性地大力投入CUDA通用計算(包括軟件架構以及相應的芯片架構支持)讓GPU在曾經CPU一統天下高性能計算領域的打出一片天,而在深度學習成為主流之後,NVIDIA的做法並非一味暴力增強算力,而是通過有針對性地優化來以最佳的效率提升性能,其中的例子包括支持混合精度訓練和推理,對於INT8的大力支持,在GPU中加入Tensor Core來提升卷積計算能力,以及最新的在H100 GPU中加入Transformer Engine來提升相關模型的性能。這些投入都包括軟件和芯片架構上的協同設計,而同時也收到很好的回報,使得NVIDIA能使用最小的代價(芯片面積,功耗)來保持性能的領先。
時至今日,NVIDIA的GPU架構已經能在通用性(即對於各種模型算子的支持)和效率(即對於重要模型算子的運行效率)上獲得很好的平衡,因此即使在“GPU架構並不是最適合機器學習模型加速”的觀點盛行多年後,NVIDIA的GPU仍然是機器學習訓練市場的最優選擇——因為其他的加速芯片對於某些算子做專用優化之後往往通用性無法顧及,而通用型的加速芯片則很難與擁有巨大系統團隊支持的NVIDIA設計的GPU性能相抗衡。
在性能領先之外,NVIDIA在軟件生態上也擁有很高的護城河。如前所述,NVIDIA的芯片架構能夠在通用性和效率之間實現一個很好的平衡,而在這個基礎上,一套易用且能充分調動芯片架構潛力的軟件生態則會讓NVIDIA在機器學習模型社區擁有巨大的影響力——這使得模型設計者在設計模型時將會自發針對NVIDIA的GPU做模型優化,從而更進一步提高NVIDIA的競爭力。NVIDIA擁有CUDA這樣成熟而性能良好的底層軟件架構,因此目前幾乎所有的深度學習訓練和推理框架都把對於NVIDIA GPU的支持和優化作為必備的目標,相比較而言對於其他競爭芯片來說,軟件生態方面的支持就少得多(例如對於Google TPU的主要生態支持來自Google自己的TensorFlow,然而TensorFlow目前在人工智能社區使用人數正在慢慢落後於Pytorch,這也成為TPU在生態上的一個瓶頸),這也成為NVIDIA GPU的一大護城河。
未來的市場格局會如何發生變化?
目前NVIDIA在人工智能訓練市場的領先地位仍然非常穩固,但是隨著挑戰者的出現,在未來市場格局有可能會出現變化。我們認為,可以把競品分成幾類,而不同的競品也將會有不同的市場格局影響。
第一類是科技公司自研芯片:他們走和NVIDIA相似的路線(即軟硬件結合設計),通過調動自身對於人工智能模型的深入理解,來實現有競爭力的芯片。另一方面,這類芯片通常不需要在生態方面與NVIDIA競爭,因為其主要的客戶就是這些科技公司自己,因此從市場格局上來說會部分減少這些公司對於NVIDIA的依賴度,但是總體來說並不會對NVIDIA直接競爭。典型的例子是Google的TPU系列,Google本身對於人工智能的研發能力甚至比NVIDIA更強,那麼通過這樣的積累結合軟硬件協同設計就能實現性能很強的自研芯片,但是這樣的芯片並不會對外出售也不會在市場上和NVIDIA正面競爭,因此對市場格局影響不大。
第二類是在芯片架構設計上做出和NVIDIA不同的取舍,從而在某些模型中實現超過NVIDIA的性能(包括運行速度,功耗,能效比等),從而和NVIDIA實現差異化競爭。Intel Habana和Graphcore都是屬於這類思路,他們的芯片在一些重要模型類型中有相對NVIDIA更高的性能或效率,從而隨著這些模型相關算力需求增大,也有更多理由來使用這些芯片。這些芯片將會在模型運行效率的維度(而非通用平均性能)和NVIDIA有競爭,但是也不太可能顛覆NVIDIA。
第三類是直接復制NVIDIA的整個技術鏈條,和NVIDIA打白刃戰,並通過實打實的全方位性能和性價比等因素來獲得市場。這樣做的公司主要是AMD,目前AMD的MI系列高性能計算GPU雖然還沒有獲得廣泛應用,在這次MLPerf上也沒有相關的結果,但是事實上整體高性能計算和雲端計算市場對於這類NVIDIA的替代性產品有很強的需求,因為NVIDIA成為該領域的單一供應商將會對供應鏈造成風險,同時也降低系統公司的議價能力。AMD在該領域的努力正在慢慢獲得業界的支持,在主流深度學習框架(例如PyTorch)已經加入對於AMD系列GPU後端的支持,而相信雲端計算廠商也在逐漸增加基於AMD GPU機器學習系統的投入。我們認為,AMD可能會是該領域對於NVIDIA的最有力競爭對手,也最有可能獲得較大的市場份額。