Infoseek 楽天

Intelの「Gaudi 3」って何? AIアクセラレーターとGPUは何が違う? NVIDIAやAMDに勝てる? 徹底解説!

ITmedia PC USER 2024年7月5日 17時5分

 6月に開催された「COMPUTEX TAIPEI 2024」の基調講演において、Intelは新型のクライアント向けCPU「Lunar Lake」(開発コード名)と、サーバ/データセンター/HPC(ハイパフォーマンスコンピューティング)向けCPU「Xeon 6プロセッサ」の技術的な詳細を発表した。

 基調講演でもう1つ、同社はAI(人工知能)を運用するサーバ向けのAIアクセラレーター「Gaudi 3」についてもアナウンスしている。

 昨今のAIブームにおいて、AIアクセラレーターの役割は大きい。しかし、クライアント向けのCPUやGPUと異なり“表”に出てくることが少ないこともあり、「Gaudiって何? 3ってことはもう第3世代なの?」と、疑問符が多数浮かんでいる読者もいるだろう。

 そこで本稿ではGaudiが“ナニモノ”なのか、そしてその最新世代であるGaudi 3はどのような特徴を持っているのか、解説していく。

●そもそも「Gaudi」って何?

 IntelのAIアクセラレーター「Gaudiシリーズ」は元々、イスラエルのAI関連プロセッサ開発ベンチャー企業である「Habana Labs」が開発していたものだ。Intelは2019年にHabana Labsを買収し、同社が開発を進めていたAI学習アクセラレーター「Gaudi」を主力製品ブランドとして展開していく方針を固めた。

 この分野における競合であるNVIDIAやAMDは、自社開発GPUそのもの、あるいはそれを下地として開発したAIプロセッサを発売している。しかし、Intelは下地そのものがなかった。正直に言ってしまえば、Intelは汎用(はんよう)計算に対応するGPU(いわゆる「GPGPU」)の開発に乗り遅れていたのだ。

 元々が「CPU屋さん」であるIntelは、高密度な演算をGPUにやらせることに肯定的でなかった。同様に元がCPU屋さんで、2006年にGPUメーカーのATIを買収したAMDも、ほぼ同じ理由でGPGPU対応に乗り遅れている。

 ではCPU屋さんだったIntelは、どうしようとしていたのか――メニーコア型のCPUで対抗しようとしていた。

 同社はx86アーキテクチャのCPUコアを大量に載せた「Larrabee」(開発コード名)の開発に取り組み、GPGPUあるいはHPCで求められる「高密度演算」のニーズに応えようとした。その成果は2012年末、「Xeon Phiコプロセッサ」として結実した。

 IntelはXeon PhiコプロセッサをGPGPU/HPCユーザーに売り込もうとした。しかし、ユーザーからは演算性能面で失望されてしまい、2017年をもって展開を終了してしまった。

 この痛い経験から、同社はその後、“待ったなし”で市場に速攻投入できるAIアクセラレーターを切望したのであった。だからこそ、Gaudiの開発に取り組んでいたHabana Labsの買収に動き、自社のポートフォリオに統合したのである。

演算に特化している「Gaudi」

 Gaudiを巡る経緯はこのようなものだが、「AIアクセラレーター」という呼び方にまだピンと来ない人がいるかもしれない。

 分かりやすく説明すると、GaudiはGPUから、普通のGPUに求められるグラフィックス機能を省いたものだ。言うなれば「ガチのGPGPU専用GPU」なのだ。

 「NVIDIA Hシリーズ」や「AMD Instinctシリーズ」といった競合製品は“GPU”で、3Dグラフィックスのレンダリングにも対応している(実際に、クラウドゲーミングや超高度な3Dグラフィックスを扱うサーバでのレンダリング用途で採用されるケースもある)。そういう意味で、ある程度の汎用(はんよう)性も備えている。

 それに対して、Gaudiシリーズにはグラフィックス機能が一切搭載されていないため、HシリーズやInstinctシリーズのようにレンダリング用途には使えない。極端な言い方をすれば超高速な演算をすることにしか、役割を見いだせない。

 普通のGPUとしては利用できないので、「AIアクセラレーター」と呼んでいる――そう解釈してもいいかもしれない。

●アーキテクチャから見る「Gaudi 3」

 ここからは、Gaudiの最新世代となる「Gaudi 3」のアーキテクチャをザッと見ていくことにしたい。

 その名の通り、Gaudi 3は「Gaudi 2」の後継となる。基本的なアーキテクチャは引き継ぎつつ、演算コアとなる部分を中心に増強を図ったものだと理解するといい。製品はOAMモジュール、ユニバーサルベースボード(OAMモジュールを8台搭載)に加えて、PCI Express 5.0カードも投入される。

 上に示したOAMモジュール版の中央部には、Gaudi 3のチップが配置されている。上下に4つずつ、ほぼ正方形のダイが見えるが、これはHBM2E(広帯域メモリ)のチップだ。容量は1基当たり16GBなので、合わせて128GBのHBM2Eが搭載されることになる。

 チップの中央部がGaudi 3の中核的なダイで、よく見ると真ん中に細い縦線がある。実はGaudi 3は2つのコアダイを「EMIB(Embedded Multi-die Integrated Bridge)」と呼ばれるインターポーザーブリッジで連結して1つのチップを形成している。2基のコアダイは全く同一の構成で(※1)、接続先のホストシステムからは1基のコアとして認識される。

(※1)厳密には、片方のコアダイではPCI Express 5.0インタフェースを無効化している(詳細は後述)

 このコアダイは、TSMCの5nmプロセスで製造されている。Gaudi 2ではTSMCの7nmプロセスだったので、2nmほど微細化が進んでいる。

FP8/BF16の演算性能が同じ“からくり”

 ここでGaudi 2とGaudi 3のスペックを比べてみる。下表を見ると、FP8演算は2倍、BF16演算は4倍、別ノードとのネットワーク速度は2倍、メモリー帯域は1.5倍に高められているという。

 表をよく見てみると、MME(行列積算演算器)の理論性能がFP8とBF16で変わりないことが気になる(どちらも1835TFLOPS)。これは恐らく、FP8同士の積和算を、MMEの単位演算器のBF16演算モードを使い、精度重視の混合精度(Mixed Precision)で行っているからだと思われる。その証拠に、FP16の理論性能(459TFLOPS)が、BF16の理論性能値(1835TFLOPS)の4分の1しかない。

 Gaudi 3の単位演算器は、素性としてはFP32演算器の体裁を取っているが、Gaudi 2から進化するに当たり、BF16(とFP8)演算に最適化した拡張モードを新搭載した――そんなところなのだろう。

 なお、学習及び推論の精度を上げることを目的として、FP8において混合精度演算を活用するのは最近のトレンドなので、この改変の流れは自然なものだ。

 いずれにせよ、理論性能値ではFP8とBF16が同一であっても、実際にはそのデータ入出力時のバス帯域消費は半分にできているため、実効性能はFP8利用時の方が良くなるはずである。

理論性能値から動作クロックを逆算してみる

 上記の理論性能値から、Gadui 3の動作クロックが逆算できる。MMEの詳細は後述するが、MMEは「256byte×256byte」(2048bit×2048bit)の行列積算器であること、MMEはGaudi 3全体で8基搭載されていること、そしてBF16ではなく、普通のFP16演算時の理論性能値が459TFLOPSであることから、以下の計算が成り立つ。

459TFLOPS÷(128要素×128要素×2FLOPS×8基)≒1.75GHz(※1)

(※1)「256byte×256byte」は、FP16(16bit=2byte)を収納すると128要素×128要素となる

 一応、検算のためにFP8の理論性能値を使って計算すると、以下の通りとなる。

256要素×256要素×2FLOPS×8基×1.75GHz=1835TFLOPS

 スペック表と一致することが確認できた。

メモリ回りとインタフェース回りも増強

 Gadui 3の搭載メモリは、Gaudi 2と同じHBM2Eだが、動作クロックが3.2GHzから3.6GHzへと引き上げられている。メモリのバス幅も6144bit(1024bit×6チャンネル)から8192bit(1024bit×8チャンネル)に引き上げられている。そのため、メモリのアクセススピードは毎秒3.7TBと脅威的な値になっている。

 スペック表における「Networking」の項目は、別ノードのGaudi 3と連動動作をするためのインタフェース帯域のこと。先代では、200Gbpsイーサネットポートが12基搭載されていたが、Gaudi 3ではこれが24ポートになったので「200Gbps×24ポート÷8=毎秒600GB(片方向)」という通信速度だ。双方向なら倍の毎秒1200GBということになる。

 なお、ホストシステムとの接続に用いられるPCI Expressバスは、時代に合わせてPCI Express 3.0からPCI Express 5.0に変更されている。

●Gaudi 3のアーキテクチャをもうちょっと深掘り

 先述の通り、Gaudi 3には全く同一機能を備えた2つの中核的なダイ「ダイ0」と「ダイ1」をつなぎ合わせて、1つのプロセッサとして仕上げている。

 それぞれのダイは、「MME×2基」「TPC(Tensor Processor Cores)×16基」「24MBのキャッシュメモリ」の塊を2セット備えている。Intelではこの塊を「DCORE(Deep Learning Core)」と呼んでおり、Gaudi 3では4セットのDCOREが備わることになる。

 DCOREは、NVIDIAのGPUでいうところの「GPC(Graphics Processing Cluster)」に相当するものだと考えればよい。

 左右外辺にあるHBM2Eの16GBのメモリクラスターは、Gaudi 3からは16GB×8=128GBのまとまったメモリ空間として扱える。それぞれDCOREから見て「近い」「遠い」といった概念もない。

 それぞれのDCOREにある24MBのキャッシュメモリは「当該DCOREが独占的に利用する24MBのL2キャッシュ」として、または「全DCOREで共有する24MB×4=96MBのL3キャッシュ(事実上のラストレベルキャッシュ)」として運用可能だ。ただし、そのスループットはモードによって異なり、DCORE専用のL2キャッシュとして運用する場合は毎秒19.2TBと超高速だが、DCORE共通のL3キャッシュとして運用する場合が毎秒6.4TBまで速度が低下する(毎秒6.4TBでも相当に高速だが)。

 キャッシュモードの切り替えは、ユーザーが意図的に行える。「Intel Gaudiソフトウェアプラットフォーム」ベースで動作させている場合は、状況に応じてキャッシュモードを動的に切り替えることも可能だ。

 Gaudi 3には各ダイに12基の200Gbpsイーサネットポートを備えており、合わせて24基のイーサネットポートを利用できる。競合のNVIDIAではスケーリングを独自規格で行うのに対し、Gaudi 3は汎用性が高く、スイッチ/ハブも比較的手頃なイーサネットでスケーリングできることを強みとしている。

 同様に、各ダイには1基ずつ「メディアエンジン」も搭載されている。合わせて2基を同時に利用することも可能だ。

 逆に、各ダイに搭載されているにもかかわらず、同時利用できないのがPCI Express 5.0 x16インタフェースだ。「もったいないなぁ」と思うかもしれないが、現状のPCI Express規格では、最大バス幅は16レーン(x16)で、その2倍の32レーン(x32)で接続する手段が実用化されていない。そのため、意図的に片方を無効化しているようだ。

●TPCとMMEに焦点を当てて、一層深掘り

 Gaudi3のDCOREには、16基のTPCと2基のMMEが搭載されている。つまり、TPCは合計64基、MMEは合計8基利用できることになる。

TPCについて

 先述の通り、TPCは「Tensor Processor Core」の略だ。これを聞くとNVIDIAのGPUにおける「Tensor Core」を想起してしまうが、Tensor Coreが事実上の行列演算器なのに対して、TPCはベクトル演算器である。モノとして全然違う。

 Gaudi 3のTPCは、2048bit(256byte)のSIMD演算器となっており、FP32/BF16/FP16/FP8/INT32/INT16/INT8のデータ形式に対応する。FP8は指数項4bit/仮数項3bitの「E4M3形式」と、指数項5bit/仮数項2bitの「E5M2形式」の両方に対応し、どちらを使うかは演算器側で自動選択される。この仕組みはNVIDIA GPUと同様だ。

 2048bitのレジスタに対しFP16ならば128要素、FP32ならば64要素をセットして同一演算をこれらの全要素に適用できる。

 MMEでは、BF16演算の理論性能値(1835TFLOPS)が、FP16演算の理論性能値(459TFLOPS)の4倍となっていた。それに対して、TPCでの演算はBF16もFP16も同じ28.7TFLOPとなる。一方で、TPCのFP8演算の理論性能値(57.3TFLOPS)は、FP16/BF16の理論性能値(28.7TFLOPS)の2倍となっている。

 これは、TPCにおいて、MMEで行われたような「単位演算器に対するBF16(とFP8)の演算最適化モード」の搭載が見送られたからに違いない。試しに、先で算出した「1.75GHz」という動作クロックをもとにTPCにおけるFP32の理論性能値を検算してみると、以下の通り表に示した公称値と一致する。

64要素×2FLOPS×64基×1.75GHz≒14.3TFLOPS(※2)

(※2)2048bit長のレジスタにFP32(32bit=4byte)を収納すると、64要素となる

 TPCの1基あたりの構造は下図のようになっており、それぞれのTPCが「スカラ演算器」と「ベクトル演算器」を1基ずつ内包していることが分かる。つまり、1命令の中でスカラ演算とベクトル演算を同時に利用できることになる。

 2048bitというSIMDレーンの長さはさておいて、この構成自体はクラシックなGPUのプログラマブルシェーダーユニットとよく似ている。

MMEについて

 次にMMEの方に目を向けてみよう。

 Gauid 3のMMEは、1基当たり「256byte×256byte」、すなわち「2048bit×2048bit」の二次元行列の演算を1サイクルで行える。FP16であれば128要素×128要素の行列演算を1サイクルで完結できる計算だ。Gaudi 3は、この大規模かつ超強力な行列演算器を全体で8基搭載している。

 ちなみに、競合であるNVIDIA H100などに搭載されている「第4世代Tensor Core」の1基当たりの演算能力は、FP16であれば16要素×16要素の行列積算を1サイクルで行える程度だ。行列演算器として考えるとGaudi 3よりだいぶ弱いように見えるが、NVIDIAはTensor Coreを多数搭載して対応している。例えばNVIDIA H100(SXM5)ではTensor Coreを528基も搭載している。

 せっかくなので、FP16演算のポテンシャルを比べてみよう。

Gaudi3(1.75GHz) 128要素×128要素×2FLOPS×8基×1.75GHz≒459TFLOPS

NVIDIA H100(SXM5/1.98GHz) 16要素×16要素×2FLOPS×528基×1.98GHz≒535TFLOPS

 このように、処理性能は拮抗(きっこう)する。厳密には、理論性能ではNVIDIA N100の方が少し上なのだが、Intelは「Gaudi 3のような大型の行列演算器を使うと、大規模な行列演算における演算器同士のデータのやりとりを省けるため、実効性能面では圧倒的に有利だ」とする。加えて、NVIDIAのアーキテクチャについて「複数の小型行列演算器を連動させて演算を行うと、演算器間のデータのやりとりに遅延とバス消費が発生し、実効性能面で不利となる」とも指摘した。

 この主張を図示したものが以下の図だ。

 言いたいことをくみ取りつつ、この主張をもうちょっと詳しくすると以下のようになる。

 Gaudi 3のMMEでは、MMEに入力されるデータは256byteの行列データ2つ分、すなわち512byteだけで済む。それに対して、NVIDIA H100では、各Tensor Coreに入力するデータは16byteの行列データ2つ分、すなわち32byteだが、これが256基相互接続されているので、データアクセスは32byte×256基=8192byteも生じてしまう。つまり、NVIDIA H100は同じ演算をするのにメモリ帯域を16倍も多く消費する。 Gaudi 3のMMEなら、データの受け渡し的なものはMMEコア内部で完結可能で、共有メモリへのアクセスは不要となる。ゆえに絶対的な速度は高いし、それぞれのバス帯域の消費も少なくて済み、遅延もほぼ皆無。実効性能は、Gaudi 3の方が明らかに高い。

 この主張にあえてツッコミを入れよう。

 もしもMMEに入力する行列データ形式が「1種類のみ」で、そのデータが大規模な場合は、全く主張の通りとなるだろう。しかし、行列データ形式が「多様」で、それぞれがそれほど大きくないケース場合は、処理粒度の低いNVIDIAのアーキテクチャの方が並列度が高まり、実効性能も良くなるはずだ。

 Gaudi 3のMMEは、大規模データを一括処理することに重きを置いている。データ形式が多様でそれぞれがそれほど大きくない場合、データの充填(じゅうてん)率が低い状態、つまり効率の悪い状態での稼働を強いられることになってしまうのだ。

 まあ、本件は「どちらの方が優れている」というよりは「アーキテクチャによって『得手』『不得手』がある」と考えた方がよい。AIサーバーを構築する際は、その用途や目的に合わせたAIアクセラレーター(あるいはGPGPU)を選ぶべきということになる。

●Gaudiシリーズと他社製品(GPGPU)との具体的な違い

 AMDやNVIDIAのデータセンター/HPC向けGPU製品は、単位演算器としてSIMD演算器(ベクトル演算器:NVIDIA GPUなら「CUDA Core」)を備える。これ自体が3Dグラフィックス描画のためのプログラマブルシェーダーユニットとして動作する上、GPGPUとしてベクトル演算を行ったり、行列演算をベクトル演算に分解して実践させたりもできる。

 そのため、両社の製品は「仮想GPU」として使われたり、ベクトル演算や任意サイズの行列演算を実行させることで、AIの学習フェーズにおけるHPCサーバとして使ったりと、活用できる幅が広い。さらに近年のGPUは内部に独立した「推論アクセラレーター」を搭載していることもあるので、AIの推論フェーズにも活用しやすくなった。

 「ではGaudiはどうか?」というと、先述の通り3Dグラフィックスの描画に必要な機能を一切搭載していない。ゆえに「ベクトル演算はTPCで、行列演算はMMEで」という、演算内容に合わせて演算器を使い分けるアーキテクチャを実現できたわけである。

 「用途に合わせて演算器を変える」ということは、演算の実効速度面では間違いなくプラスになる。しかし、TPCとMMEの両方で高い稼働率をキープするのは難しいかもしれない。稼働率を重視するなら、状況に応じてベクトル演算器をほぼ全て動員できるGPGPUの方が無駄が少ない。

 ただし、GPGPUはその分だけ、データの移動や集約により多くの時間を割かなければならない。特定の条件下では、Gaudi 3を始めとするGaudiシリーズのアーキテクチャの方が有利になるだろう。

●あまり注目されていない「メディアエンジン」

 繰り返しだが、GaudiシリーズはGPUとしてのグラフィックス機能を備えない。しかし、Gaudi 3には動画のデコードを行う「メディアエンジン」は搭載されている。これは、AIの学習/推論フェーズにおいて、さまざまなメディアを扱う必要があることに備えた配慮だ。

 平たくいえば、メディアエンジンは「映像プロセッサ」「映像DSP」に相当する。Gaudi 3では、中核ダイ1基当たり7基(合計14基)が搭載されている。対応コーデックはVP9(8K解像度まで)/H.265(8K解像度まで)/H.264(4K解像度まで)となり、8K解像度までのJPEG画像デコードも対応している。詳細は不明だが、基本的なオーディオフォーマットのデコードも可能と思われる。

 なお、動画や音声の圧縮を行う「エンコード」機能は備えていない。

 ちなみに、NVIDIA H100もメディアエンジンを搭載している。性能的にはGaudi 3のものとほぼ同等で、デコーダーのみでエンコーダーは備えないことも同様だ。

 Gaudi 3のメディアエンジンには「ポストプロセス機能」も搭載されている。映像/画像に対する「解像度変換」の他、「パースペクティブ加工対応の回転/拡大/縮小」などをハードウェアベースで行える。これもAI処理に必要という判断で搭載された機能のようだ。

 一方、NVIDIA H100は“GPU”なので、これらの処理をGPU的なアプローチで実装できる。そのため、Gaudi 3のようなポストプロセス機能は“あえて”搭載していない。

●Gaudiシリーズの成功の可否のポイントはどこにある?

 近年、IntelはAIにとても注力している。しかし、圧倒的なリーダーシップを誇るCPU事業と比較すると、正直いってブランド力は弱い。

 昨今のAIは、GPGPU的なアプローチで進化してきた。Intelは「GPGPU製品の投入」という“初手”でつまずいたため、このブームに何としても応えられる製品(プロセッサ)の投入が急務かつ不可欠だった。

 そこで同社は、自社でのGPGPU製品の開発は諦め、“一点突破”型のAIアクセラレーターとしてのGaudiシリーズを会社(Habana Labs)ごと手に入れ、それを強化していく方針を立てた。

 繰り返しの説明となるが、GaudiシリーズはAI開発における「学習」、そしてAI活用時の「推論」の各フェーズにおいて強力な性能を発揮する一方、GPGPUサーバとしてのポテンシャルは持たない。この“一点突破”な特質が、市場やユーザーにどう受け止められるか――ここにGaudiシリーズの成否がかかっている。

 今後Gaudiシリーズが成功を収めるには、速やかに大口の顧客を確保し、それを逃さぬようより性能強化された新型を継続的に市場投入し続けることが重要となるだろう。Xeon Phiコプロセッサのように「5年で終了」では、たまったものじゃない。

 AIの性能は「高ければ高いほどよし」の風潮は弱まることを知らない。だからこそ、ユーザーの期待に応えるべく、NVIDIAやAMDが送り出してくるGPGPU製品群に性能面でひけを取ることは許されない。なにしろGPGPUではなく、“特化型”のAIアクセラレーターなのだから。

 Gaudiシリーズは、今後もライバルのGPGPU製品と性能面でデッドヒートを続けられるのか。今後の進化にはさらなる注目を集めることだろう。

この記事の関連ニュース