1. トップ
  2. 新着ニュース
  3. IT
  4. IT総合

Meteor LakeのNPU性能はGPUの7割程度だが消費電力が圧倒的に少ない インテル CPUロードマップ

ASCII.jp / 2023年10月9日 12時0分

 今回はMeteor LakeのAI周りについて解説しよう。といっても、これまでも何回か紹介している。連載686回で説明したようにMeteor Lakeに搭載されるものは、2022年まではIntel VPUと称しており、Meteor Lakeに先立ちRaptor LakeにはAI M.2モジュールとして提供されてここでアプリケーションの先行開発が行なわれることになっていた。

Meteor LakeのNPU性能はGPUの7割程度だが消費電力が圧倒的に少ない インテル CPUロードマップ
Meteor LakeとRaptor LakeではAI M.2モジュールを提供してアプリケーションの先行開発が行なわれる

映像処理時のCPU/GPU負荷を下げる Intel VPU

 そのNPUというかVPU、元になったのはインテルが2016年に買収したMovidiusのMyriadシリーズVPUである。もともとMyriadシリーズはVision Processor Unit、つまり映像処理用プロセッサーとして発表されており、2011年には最初のMyriad 1が発表される。

 2014年には後継となるMyriad 2がやはり映像処理用のプロセッサーとして発表。ところがその2年後の2016年にはMyriad 2がそのままAIプロセッサーとして再発表され、その直後にインテルに買収された格好だ。このMyriad 2の内部構造は連載566回で紹介している。

 さて、インテルの買収後に第3世代製品であるMyriad Xが投入されている。変更点は以下のとおりで、SHAVEエンジンとNeural Compute Engineの組み合わせで1TOPSの推論処理性能を持つとされている。

  • SHAVEコアを12基→16基に増量
  • CXM Memory Fabricを2MB・400GB/秒→4MB・450GB/秒に大容量化/高速化
  • 製造プロセスをTSMC 28nm HPM→TSMC 16nm FFCに微細化
  • 外部メモリーI/FをLPDDR2/3→LPDDR4に
  • 新たにLEON4(SPARC V8互換プロセッサー)×2を管理用に搭載
  • 新たにNeural Compute Engineを搭載

 このMyriad XはNeural Compute Stick 2に搭載された他、M.2モジュールの形でも提供されている(いた)。

 さらにインテルはこのMyriad Xをベースに、Keem Bayと呼ばれるSoCも開発していた。2019年のIntel AI Summitで発表されたこのKeem Bayは、Myriad X単体の最大10倍の処理性能を実現する(ただし内部構造を変更というよりは、単純にVPUを10個積載する格好である)もので、またArmのCortex-A53を4コア(1.5GHz)搭載し、単体でLinuxが起動するものだった。

 今回Meteor Lakeに搭載されたNPUは、Myriad Xのコアをさらに改良したうえで、デュアルで搭載した格好になる。

Meteor LakeのNPU性能はGPUの7割程度だが消費電力が圧倒的に少ない インテル CPUロードマップ
はっきりとは明示されていないが、2つのNeural Compute Engineにそれぞれ別のネットワークを動かすことも、1つのネットワークを2つに分割して動かすことも可能な模様

 まずこの中のMACアレイは畳み込み処理や行列演算などを最大2048 Ops/サイクルで処理可能とされる。MAC処理の場合は2 Ops/サイクル相当になるから、演算性能は4096 OPS/サイクル。仮にこのNPUが1GHzで駆動されたとすると、それだけで8TOPSの処理性能になる勘定だ(MACアレイは2つあるため)。

Meteor LakeのNPU性能はGPUの7割程度だが消費電力が圧倒的に少ない インテル CPUロードマップ
Myriad XではこのMACアレイのことをNeural Compute Engineと称していたわけだが、Meteor LakeではこのMACアレイにSHAVEコアまで含めた全体をNeural Compute Engineと称するようになった

 またアクティベーションに関しては、従来はSHAVEコア側で行なっていたが、Meteor Lakeでは専用のユニットが実装されたことで、より高効率化が図られている。

Meteor LakeのNPU性能はGPUの7割程度だが消費電力が圧倒的に少ない インテル CPUロードマップ
特にFPに関しては複数のアクティベーション関数が提供されるとしている。ただ実際になにが提供されるのかはまだ定かではない

 またData Conversion Unitが新たに追加されている。これも従来はSHAVEコアを使って行なっていた処理で、こうしたものをすべて専用ユニットにしたことで通常の畳み込みニューラルネットワークであればSHAVEコアをほぼ利用せずに処理が可能になったと見られる。

Meteor LakeのNPU性能はGPUの7割程度だが消費電力が圧倒的に少ない インテル CPUロードマップ
畳み込みの前段階で、データを扱える範囲にとどめるための処理となる

 ではSHAVEは省かれたか? というとそんなことはなく、むしろ強化されている。VLIWエンジンそのものはデュアルとなり、されにINT 4などのデータ型にも対応、さらにFP32での演算機能を強化したとしている。

Meteor LakeのNPU性能はGPUの7割程度だが消費電力が圧倒的に少ない インテル CPUロードマップ
アクティベーション関数はやはり一般的なものに限られるので、特殊なものに関しては引き続きSHAVEコアを使って処理する形になるのだろう

 少し意外だったのはMACアレイそのものはINT 1/2/4やFP8/BF16などには未対応なことで、こうしたものはSHAVEコアを利用して処理する形なのは変わらない。つまりMAC アレイはすでにネットワークの構成などが決まっているものを高速に処理することに特化しており、新しく出てくるネトワークはSHAVEコア側で処理する形になる。

 これそのものはごく一般的な手法であるが、INT 1/2やFP8はともかくINT 4/BF16あたりまではMACアレイ側でもサポートしていると思ったのだが、このあたりは設計開始時期にも絡んでくるのかもしれない。この第4世代、投入されるのは2023年末であるが、設計開始そのものはMyriad Xが完成した2017年あたりと想像されるためだ。

スクラッチパッドRAMとDMAエンジンが追加

 そしてもう1つ、新たに2つのNeural Compute Engineで共有する形でスクラッチパッドRAMとDMAエンジンが追加された。Myriad Xまでと異なり、Meteor LakeのNPUは専用の外部メモリーを持たず、システムで共用となる。帯域そのものはむしろ増えているとは言え、他の処理でもやはりメモリーアクセスが発生するわけで、利用できる帯域は間違いなく減っているだろうし、レイテンシーそのものも大きくなっていると考えられる。おそらくはこれを補う目的でスクラッチパッドが用意されたのだろう。

 おもしろいのはこれがキャッシュではなくスクラッチパッドで、しかもDMAエンジンが外部から制御されることだ。キャッシュでないのは、SHAVEコアを含むNeural Compute Engineが自発的にプログラムを処理するというよりは、外部のコントローラーから渡された通りに処理をする形になっているので、以下の方式では無駄が多い。

処理をする→オンメモリーにデータがない→リクエストを出す→キャッシュに入る

 なによりキャッシュにしたところでそのデータをすぐに再利用するかどうかは怪しい。それよりは外部のコントローラが先行して必要となるデータを用意し、DMAを使ってスクラッチパッドに転送、そのデータを使ってNeural Compute Engineが処理する方が待ちが少ないためだろう。

 ただ普通スクラッチパッド用のDMAは、それが利用するプロセッサー(この場合で言うならNeural Compute Engine)が制御するのが一般的なので、少しおもしろい感はある。

 ちなみにその外部のコントローラーにあたるのが下の画像である。ホストとのドライバーとの制御や2つのNeural Compute Engineへの処理の振り分けや結果の転送、電源管理、セキュリティなどの処理をまとめて行う格好だ。

Meteor LakeのNPU性能はGPUの7割程度だが消費電力が圧倒的に少ない インテル CPUロードマップ
スクラッチパッドの容量そのものはまだ未公開。サイズを考えると、大きくても1MB程度で実際はもう少し小さい気がする

VPUからNPUに名前が変わったのは AIと機械学習に特化したから

 ところでMyriad Xの世代まではVPUと呼ばれていたのが、なぜMeteor LakeではNPUに名前が変わったのか? であるが、連載566回でも説明したようにもともとMyriadシリーズは映像処理用のプロセッサーであり、映像処理用のフロントエンドや簡単なフィルタリングなどの機能も搭載されていた。機能的にはISPに近い。

 これはMyriad Xでも同じであるのだが、Meteor Lakeの場合はそもそも独立してISPが搭載されているから、改めてもう一個ISPを搭載する必要がない。このためNeural Compute Engineは元よりその周辺から映像ハンドリング用の機能は完全に省かれ、純粋にAI/機械学習処理のみが行なえる構成になった模様だ。これに合わせて名前がVPUからNPUに変更になったものと考えられる。

Meteor LakeのNPU性能はGPUの7割程度だが消費電力が圧倒的に少ない インテル CPUロードマップ
このコントローラーがなにかは不明である。さすがにもうLEON4ではないとは思う。Keem Bay同様にArmコアな気はするが、他のもの(例えばRISC-V)でも不思議ではない

OpenVINO以外のソフトウェアが使える

 さてハードウェアに関してはおおむねこの程度しか情報が開示されていないが、ソフトウェアについても説明しておきたい。

 もともとMyriad 2/Xの場合、ソフトウェアフレームワークとしてはOpenVINOを使うことを強く推奨していた(事実上他に選択肢がなかった)わけだが、Meteor Lakeでは広範なアプリケーションに対応する必要があり、そこでOpenVINOだけ、という選択肢はさすがに存在しないと判断したためか、ずいぶん複雑なソフトウェアフレームワークが提供されることになった。

 Meteor Lakeでは基本的に以下の4種類のAPIが提供される。

 一番柔軟性が高いのがWinMLを使った場合で、CPU/GPU/NPUのどれを使うことも可能である。DirectML/ONNX RT/OpenVINOではGPUないしNPUを選択できる。おそらくONNX以外はデフォルトがDirectML→GPU、OpenVINO→NPUになっており、オプションを追加しないとこのデフォルトが使われるのだろう。

 この場合、GPUがDirectMLに対応できる機能が必要になる。具体的にはDirectX 12のShader Model 6.4で提供されるDot-Products 2/4をハードウェアで実行できる必要がある。この詳細は次回説明するが、Meteor LakeのGPUはXMX(Matrix Engine)を持たない代わりに、Xe CoreにDP4Aの機能を追加してこれをカバーしている。

Meteor LakeのNPU性能はGPUの7割程度だが消費電力が圧倒的に少ない インテル CPUロードマップ
気になるのはMeteor LakeにディスクリートGPU(ビデオカード)を装着した場合にOpenVINOがGPUを呼び出せるかどうかである。なんとなく厳しそうな気もする

 アプリケーション例としては、例えばMicrosoft Teamsで利用しているWindows Studio EffectsはOpenVINOをNPUのみで利用、Adobe Creative CloudはDirectMLをGPUで利用、ビデオ分析系はOpenVINOをNPUないしGPUで利用と、アプリケーションごとに使うパスが異なっている。

Meteor LakeのNPU性能はGPUの7割程度だが消費電力が圧倒的に少ない インテル CPUロードマップ
Microsoft TeamsのWindows Studio EffectsはOpenVINOをNPUのみで利用。将来はGPUでも使えるのかもしれないが、少なくとも現状ではNPUのみが利用されるらしい
Meteor LakeのNPU性能はGPUの7割程度だが消費電力が圧倒的に少ない インテル CPUロードマップ
Adobe Creative CloudはDirectMLをGPUで利用。これも将来はNPUで使えるのかもしれないが、後述するベンチマークの結果で見る限りはGPUの方が性能が出そうである
ビデオ分析系はOpenVINOをNPUないしGPUで利用。こちらは具体的なアプリケーション名が示されていないが、おそらく複数のビデオ分析ソフトウェアの構成をまとめたものと思われる

 WinMLが全然ないのは、デフォルトCPUでの処理だから遅くて使い物にならないし、GPUなどを使うならDirectMLで十分、というあたりが理由であろう。

 そのNPUの性能であるが、Stable Diffusion v1.5を使っての結果が示された。

Meteor LakeのNPU性能はGPUの7割程度だが消費電力が圧倒的に少ない インテル CPUロードマップ
効率は性能/消費電力比=(1÷所要時間)÷消費電力=1÷(所要時間×消費電力)と思われるのだが、この数字をそのまま使うと1:3.23:8.37:5.11となり、傾向は正しいものの微妙にずれがある。おそらくTime/Powerの数字はある程度丸めてあるのだろう

 比較は以下の4パターンで、処理性能(というか所要時間)と消費電力、効率を示したものだ。

  • すべてCPUで処理
  • すべてGPUで処理
  • Unet+とUnet-をNPUで処理(その他はCPU)
  • Unet+をGPUで、Unet-をNPUで処理(その他はCPU)

 おもしろいのは、絶対性能という意味ではGPUとNPUの併用が最高速で、次いでGPUのみとなり、NPUを使った場合はCPUの半分程度の所要時間でしかない。つまりピーク性能そのものはStable Diffusionの結果だけで言えば、NPUの性能はGPUの7割程度に過ぎない計算で、それほど高いものではない。

 ただし消費電力はNPUのみの場合が圧倒的に少なく、GPUを使うと相応に増える。要するにNPUは性能/消費電力比を高く取るような構成になっているわけだ。この理由の1つは、NPUがSoCタイルに搭載されていることもあるだろう。

 SoCタイルはなるべく省電力になるように構成されており、ピーク性能を追求するような実装にはできない。そうした構成はGPUタイル(TSMC N5)の方が得意である。なので「(ACアダプターをつないだ環境での)性能優先ならGPU、(バッテリー駆動での)性能/消費電力比優先ならNPU」といった使い分けになるものと考えられる。

この記事に関連するニュース

トピックスRSS

ランキング

記事ミッション中・・・

10秒滞在

記事にリアクションする

記事ミッション中・・・

10秒滞在

記事にリアクションする

デイリー: 参加する
ウィークリー: 参加する
マンスリー: 参加する
10秒滞在

記事にリアクションする

次の記事を探す

エラーが発生しました

ページを再読み込みして
ください