参考記事:
・「Meteor Lake」Deep Dive その4 – GPU、IO & SoC Detail
https://news.mynavi.jp/article/20231010-2789313/
・「Meteor Lake」Deep Dive その2 – Processor Detail
https://news.mynavi.jp/article/20230921-2776351/
・「Meteor Lake」Deep Dive その1 – Intel 4 Process Update
https://news.mynavi.jp/article/20230920-2774916/
Processor Coreそのものは前回ご紹介した通りだが、もう一つの大きなトピックはAI機能である。なにせIntel InnovationではAIPCなる言葉(これが単なるスローガンなのか、それともブランドとして定着させるつもりなのかはまだ不明)まで持ち出してアピールしており、それなりにAI性能が高い事を大きな売りにしている(Photo01)。
このAI機能は何か? という話は概ね判っている。もともとRaptor Lakeの世代ではAI M.2 Moduleなるものがオプションで利用できるようになっており、これを利用してまずISVが対応アプリケーションを開発。そして一般ユーザーはMeteor Lake世代でこれを利用できるようになるが、Meteor Lakeでは”Processor Integration”と書かれている様にこのVPUがCPUに統合されている(そして名前がNPUに変わった)。
このNPUの中身であるが、もう隠すまでもない事でIntelが2016年に買収したMovidiusが開発していたMyriadシリーズのVPUである。初期にはUSBメモリを一回り大きくした様なCompute Stickという形で提供されており、その後M.2モジュールの形で提供されており、チップそのものも初代のMyriadからMyriad 2、Myriad Xと最新のものは第3世代になっている(ちなみにIntel買収時に既にMyriad 2が存在しており、買収後2017年にMyriad Xが発表されている)。ただこのMyriad Xだが、4GBのメモリを搭載したモジュールは既にDisconで、現在はチップ単体のみ発売が継続されている状況である。要するにMeteor Lakeの投入に合わせてModuleでの販売は終了。今後はプロセッサに統合した形での提供のみとなる形だ。実はMyriad Xモジュールを搭載した組み込みソリューションは幾つか存在しており(例えばこれ)、こうしたものは今後Meteor Lakeベースに移行する必要があることになる。
話を戻すとそのMeteor LakeのNPUであるが、元々のMyriadシリーズはVPUという名前から判るように映像処理用のプロセッサだった。Hot Chips 26でそのMyriad 2の内部構造が説明されているが、内部的にはSHAVEと呼ばれる128bitのSIMD/VLIWプロセッサを12基搭載し、600MHz駆動で345.6GOPSの処理性能を持つとされていた。この時点ではまだAIプロセッサというよりも画像処理プロセッサという扱いだったのだが、Myriad Xでは
- プロセスをTSMC 28nm HPM→TSMC 16FFCに変更
- オンチップメモリを増量かつ高速化(2MB→2.5MB、400GB/sec→450GB/sec)
- SHAVEプロセッサを12基→16基に増量
- 外部メモリとしてLPDDR4 I/Fを追加
- LEON4(SPARC V8)プロセッサ×2を搭載
- 新たにNeural Compute Engineを搭載
などの大幅な高性能化が図られている。このNeural Compute Engineのみで1TOPS、チップ全体ではMyriad 2の8倍の処理性能を実現した、というのがMyriad Xの特徴であった。
ということで話をMeteor Lakeに移す。Meteor LakeではSoC TileにNPUが搭載される格好になっているが(Photo03)、ざっくり言えばMyriad XをDualで搭載している格好だ。VPUの内部構造は余り詳細には語られていないが(Photo04)、Activation用の専用ユニットを搭載した(Photo05)ほか、Neural Compute Engineの行列演算や畳み込み演算の効率化を図った(Photo06)とされている。またSHAVEエンジンそのものも変更され、INT 4がこちらではサポートされている(Photo07)。またこのスライドを見る限り、SHAVEエンジン自体もDualで搭載されているように見える。全体としてみると、Myriad X比で2倍以上の処理性能なのは確実で、全体では4倍では効かず、データ型次第では10倍以上の処理性能を発揮する事になりそうだ。
変わったところでは、Data Conversion Engineも新たに搭載されている(Photo08)ほか、新たにScratchPadが搭載された(Photo09)。逆にMyriad Xには、Myriad 2由来となるISP関連のハードウェアが搭載されていたが、Meteor Lakeに搭載されているものはこのあたりが省かれている可能性が高い。そもそもMeteor Lake自身がISPを搭載しているから、更にISPを載せる必要もないと判断されたと思われる。名前がVPUからNPUに変わったのは、画像処理機能をバッサリ落としたことで、純粋にAIのアクセラレータになったためだろう。
ところでここまではNPUの話をしてきたが、GPUを使ったAI処理の方が今のところはまだ一般的である。これに向けて、Meteor Lake世代ではDP4AのサポートがGPUに追加された(Photo10)。詳しい話はGPUのところでまた説明するが、本来Xe-HPGのRender SliceにはXMX(Matrix Engine)が搭載される筈だし、実際Intel ArcのXe-HPGコアにはXMXが実装されている。ただDiscrete GPUは兎も角Meteor Lakeに搭載されるのはXe-LPGコアで、ここにはXMXが入っていない。そこで、XVEコアにDP4Aの処理機能を追加することで、AI処理性能を高める(というか、下げない)工夫が実装された格好だ。
次にSoftware Stackについて。そんな訳でMeteor LakeではCPUとGPU、NPUとAI処理を行うためのユニットが3種類存在する事になる。これをどう使うかという話だが、これはApplicationからどのAPIを使うか、で決まることになる。具体的には
- WinML:基本はCPUだが、DirectML経由でGPUないしNPUも利用可能
- DirectML:基本はGPUだが、NPUも利用可能
- ONNX RT:内部ではDirectMLないしOpenVINOを呼び出すので、どちらを呼び出すかで変わる
- OpenVINO:基本はNPUだが、オプションでCPUないしGPUも利用可能
といった格好だ(Photo11)。なんというか複雑な格好ではある。ただONNX RT以外はデフォルト(WinML:CPU DirectML:GPU OpenVINO:NPU)が決まっているので、既存のアプリケーションはそのまま動作するのは間違いない。このあたりはアプリケーションで違いがあり、例えばMicrosoft Termsで利用するWindows Studio EffectsはOpenVINOをNPUのみ(Photo12)、AdobeのCreative CloudではDirectMLをGPUでのみ利用(Photo13)、ビデオ分析ではOpenVINOでGPUないしNPU(Photo14)といった具合だ。
ちなみに性能として、Stable Diffusionを
- 全処理をCPUで実施
- 全処理をGPUで実施
- Unet+/Unet-をNPU、その他をCPUで実施
- Unet+をGPU、Unet-をNPU、その他をCPUで実施
とした場合の処理時間と消費電力、効率を比較した結果が出ている(Photo15)が、 - 処理性能そのものはGPUを併用した方が高速
- 効率はNPUだけで行った方が高い
という結果になっており、あとは処理性能を取るか、消費電力を取るかといった結果になっているのは面白い(Photo15)。それでも一番性能が高いのはGPUとNPUを併用した場合であって、NPUの威力が判る。
ちなみにMeteor LakeではNPUの負荷もTask Managerで確認できる様になっているとの事だった(Photo16)。