清水理史の「イニシャルB」
「Copilot+ PC」登場でもう「AI PC」も時代遅れ!? “NPU”、“40TOPS”など要件の疑問に迫る
2024年6月24日 06:00
Microsoftが、新世代のAI PCの指標となる「Copilot+ PC」 の要件を発表した。
最大の注目は要件のひとつに「40TOPS以上のNPU搭載」が記載されている点だ。そもそもNPUとは何なのか? TOPSとはどのような指標なのか? そうしたCopilot+ PCの基本にある疑問に迫ってみた。
「223TOPS」を誇るも、わずか4カ月で色あせた筆者のAI PC
筆者が今年2月に購入したMSIのAI PC「Prestige-16-AI-Studio-B1VFG-8003JP」が、急に色あせて見えるようになってしまった。
5月20日、MicrosoftがWindows PCの新カテゴリとして「Copilot+ PC」というブランドを立ち上げ、それに伴って同社製のSurface Pro/Laptop、および各PCの新世代AI PCが一斉に発表された。
いずれもArmベースのQualcommのSnapdragon X Elite/Plusを搭載したモデルとなっており、新たに「リコール」(Recall)や「Cocreator」「Live Caption」などのAI機能が提供されることが明らかにされている。今後、ローカルで動作する言語モデルの登場も予想されており、これからはAI PCか、そうでないかで、PCでできることが変わる時代となりそうだ。
それにしても、この数カ月前に華々しくメディアで取り上げられた「AI PC」は何だったのか?
筆者も今年2月に前述した「AI PC」を購入したばかりだが、これはMicrosoftが掲げる「Copilot+ PC」の定義には合致しない。
Microsoftが掲げるCopilot+ PCの要件は以下の通りだ。
- 承認されたリストのプロセッサまたはシステムオンチップ (SoC)。 承認された一覧には、ニューラル処理ユニット(NPU)と40兆以上の1秒あたりの操作 (TOPS) が組み込まれているプロセッサまたはSOCのみが含まれます
- RAM:16GB DDR5/LPDDR5
- ストレージ:256GB SSD/UFS以上のストレージデバイス
もちろん、筆者の手元にある「AI PC」にもNPUは搭載されている。しかし、このNPUでは、前述した40TOPSという要件を満たせない。筆者のPCに搭載されているプロセッサーはIntel Core Ultra 155Hであり、14世代CoreプラットフォームとなるMeteor Lakeシリーズ。これに搭載されているNPUの性能は11TOPSほどと言われており、システム全体(CPU+CPU+NPU)でも、34TOPS程度に留まる。
実際には、GeForce RTX 4060 Laptop GPUも搭載しているので、このGPUだけで「233TOPS」のAI性能を持っているのだが、GPU性能が高くても「Copilot+ PC」の要件にはあてはまらず、「旧世代AI PC」の扱いになってしまった。
そもそもNPUとは何か?
突然名前が挙がりだした「NPU」とは、一体何者なのか? と疑問に思う人も少なくないだろう。
NPUは、「Nural Processing Unit」の略で、おもにAI関連の処理をするプロセッサだ。現状の14世代Core UltraやQualcomm Snapdragon X Elite/Plus(Hexagon NPU)では、冒頭で示した図のように、CPUに内蔵されるかたちで実装されている。
CPUやGPUと何が違うのかというと、AI機能、それも推論(Inference)に特化したプロセッサとなっている。そもそも、AIの計算は、CPUでも、GPUでも、NPUでも、どれでも実行できる。しかしながら、それぞれに得意な計算があり、汎用的なCPUではAIでよく使われる並列的な計算を効率的に実行できない。
そこで、GPUやNPUが使われることになる。GPUはもともとグラフィック処理のために開発されたプロセッサだが、大量の計算ユニットを活用した並列計算が可能となっている。現状は、AIの設計段階(学習)にも、実行段階(推論)にもオールマイティに使えるGPUが主流となっているが、GPUは高価かつ消費電力も大きい。
そこで、推論だけに特化させた小型のNPUが登場し、CPUに内蔵されるようになってきたわけだ。
AIの計算、それも推論といってもピンと来ないので、もう少し具体的に説明しよう。
実際にはもっと複雑だが、ざっくりAIで実施される計算を説明すると以下のようになる。AIの計算は画像や文字などの入力データに対して、「重み」を掛け合わせ、それらを足し合わせるという行列計算を大量に繰り返す。
AIの設計段階では、AIが入力(画像やプロンプト)に対して適切な回答を出せるようになるまで、ニューラルネットワークにおけるノード(脳神経にあたる「点」)を結ぶシナプスのそれぞれを、どの程度重視するかという「重み」のパラメーターを調整しながら、計算を繰り返し、最適な重みを探る。これを「学習」と呼び、この段階では精度が重要になるので、FP32(32ビット浮動小数点型)などのパラメーターを用いた、扱うデータ量の多い計算が行われる。
これに対して、NPUの用途として想定されている「推論」は、学習済み(重み調整済み)のニューラルネットワークにデータを入力して出力を得るための計算となる。
そして、重要なポイントとして、この推論の段階では、ニューラルネットワークで扱われるパラメーターの精度を下げても、出力結果の精度があまり低下しないということが知られている。具体的にはパラメーターをINT8(8ビット整数型)などに「量子化」(Quantization)して、扱いやすい値に近似させる。
下図は、かなり簡略化したものだが、要するに、何桁もある小数の値(FP32)をざっくりと整数(INT8)で表現してしまうということを表している。個々のマス目の相対的な値の価値(色)を変えずに、扱うデータをシンプルにすることで、扱うデータ量が減り(32ビット→8ビットなら1/4になる)、しかも高速に計算できるようになる(浮動小数点演算は、指数部や数部を別々に処理する必要がある)。
要するに、同じ「AIの処理」でも、NPUで行うことが想定される推論は、扱うデータ量も少なく、計算もシンプルになるので、小規模かつ低消費電力で済むことになる。
そして、画像認識、画像生成、翻訳、言語生成など、われわれ一般のユーザーがPCで利用するAI処理のほとんどは推論なので、NPUで処理した方が効率的というわけだ。
なお、NPUと言っても、内部には複数の用途向けの演算ユニットが存在しており、前述したAIの推論で主に利用されるのは、Tensorコアで、ここに大量に含まれる積和演算ユニット(MACユニット)となる。
Tensorコアは、GPUにも内蔵されているが、NPUのTensorコアは、主に整数計算に対応している。種類によっても異なるが、Snapdragonシリーズに内蔵されるHexagon NPUは、「INT4/INT8/INT16/FP16」の計算に対応する。このように、主に整数型(INT4/INT8/INT16)の計算に対応している点が「推論に特化している」と言われる理由のひとつとなる。
TOPSとは何か?
続いて、性能を表す指標について見ていこう。Copilot+ PCの要件でもある「40TOPS」という指標は、具体的には、整数演算を1秒間に何兆回実行できるかという値になる(TOPSのTは「テラ」を指す)。
前述したように、AIの処理は、学習段階では精度が重要なので浮動小数点演算を行うが、こちらの指標は「TFLOPS」となる。浮動小数点演算を表す「Float」の「FL」が含まれるのが違いだ。
TOPSは実際の処理性能を表すものではなく、あくまでもハードウェアの理論上の計算能力を表すものとなる。Qualcommが公表している計算式は下図の通りとなる。要するに、TOPSの値を上げるには、内部の積和演算ユニットの数を増やすか、周波数を上げればいいことになる。
具体的に現状のAI PC向けプロセッサの性能は下図のようになる。Snapdragon X Elite/PlusのHexagon NPUの値は45TOPSなので、1秒間に45兆回計算を実行できることを示している。Copilot+ PCの要件は40TOPSなので、これを満たしているわけだ。
もう少し、具体的な指標はないものかと探してみたところ、QualcommのドキュメントにMetaの大規模言語モデルである「Llama2 7B」を使った推論で、30トークン/秒という値が紹介されていた。詳細が記載されていないので量子化の有無が不明だが、仮にFP16でこの数字だったら優秀。INT8だったら決して速くはない。
30トークン/秒は、体感的には「そこそこ」という印象だ。身近な例として、ChatGPTをウェブインターフェースから利用した際の速度を手動で測定してみた結果、次のようになった。
- GPT-4:約23トークン/秒(450トークンを19.58秒で出力)
- GPT-3.5turbo:約58トークン/秒(369トークンを6.34秒で出力)
これは、ストップウォッチで手動計測した結果を公式のTokenizerを利用してトークン数を求めて計算している。
イメージとしては、Hexagon NPUのLlama2の出力結果となる30トークン/秒は、GPT-4よりも少し早く、GPT-3.5Turboよりは遅いといったところになる。印象としては、GPT-4oの出力速度に近いと考えられるが、現状、GPT-4oのトークナイザーの計算ツールがまだ公開されていないので、正確にはわからない。
おそらく、ローカルで実行した場合、入力から応答までの遅延が低くなるはずなので、インターネット経由で大規模言語モデルを使うよりは快適と考えられるが、30トークン/秒という値は、決して超高速というわけではない。
なお、実用シーンでのAIのパフォーマンスはNPUの論理的な処理性能(TOPS)だけでは決まらない。ハードウェア面ではメモリの帯域幅(DDR5よりもGPUのDDR6の方が速いし、HBMはさらに上)によって左右されるし、ソフトウェア面では前述した量子化方法によっても左右される。
言語モデルに関してはメモリの帯域も重要だが、少なくとも現状の40TOPSクラスのNPUでは、「単純にローカルで動くから速い」と断言するのは難しい印象だ。
GPUが本気を出せば、NPUとはケタ違いになる
なお、パフォーマンスに関しては、現状のNPUはGPUとはケタが違う勝負となる。
以下は、NVIDIAがウェブサイトで公開しているコンシューマー向けのGPUのAI性能(TOPS)だ。デスクトップ向けのRTX4090は1321TOPSと2桁も上回り、ノートPCのローエンドRTX4050でも194TOPSと4倍以上。1世代前のRTX3060でも102TOPSと、現状のNPUの2倍の性能を持っている。
言語モデルの実行速度も詳しく紹介されており、RTX4090ならばLlama2 7Bを素の状態(FP16)で30トークン/秒で実行でき、INT4量子化なら90トークン/秒近い速度で出力できている(この値を見る限りHexagon NPUの結果として公表されている30トークン/秒という値は、FP16では速すぎるのでINT8やINT4量子化の値ではないかと推測される)。
実際、筆者もLM Studio を利用して、Microsoftの小型言語モデル「Phi-3 mini 3B(GGUF)」を利用してFP16とQ4(4ビット量子化)の速度を比較してみた。その結果をまとめたものが下図となる。ビデオカードは1世代前のRTX3090 Desktop GPU(285TOPS)とRTX4060 Laptop GPU(233TOPS)だ。RTX4060は、ビデオメモリが8GBとなり、FP16をフルにGPUメモリにロードできなかったため、Q4の値のみを掲載している。
FP16はメモリ使用量が約8GBで、出力速度は67トークン/秒となかなか高速。4bit量子化されたモデルでは、メモリ使用量はわずか3GBで、出力速度はRTX4060 Laptop GPUが60トークン/秒前後、RTX3090 Desktop GPUが100トークン/秒を超えて超高速となる。
正直、60トークン/秒でもかなり快適な印象だが、100トークン/秒を超えるとテキストが目で追えないくらいになる。GPUの結果を見ると、NPUの指標として挙げられている30トークン/秒程度では、高速とは言えない印象だ。
ちなみに、LM Studioは現状NPUに対応していないので、CPU(Ryzan 9 3900X)とGPU(RTX3090)の速度を比べてみたが、4ビット量子化でもCPUでは11トークン/秒ほどとかなり遅い。
確かにNPUがあれば、言語モデルをローカルで動かすことは現実的で、初期応答の遅延も短くはなるが、出力そのものはAPI経由でクラウド上のモデルを利用するのと同等で、さらに言えば高性能なGPUとは比べ物にならないと言わざるを得ない。
ほかのチップベンダーの動向も観ながらじっくり検討すべき
というわけで、「Copilot+ PC」の登場に合わせて、「NPU」と「TOPS」という、新たに目にするようになった2つの言葉について解説した。
今回のCopilot+ PCについて言えば、もう少し、時間をかけて内容を詰めてもよかったのではないか? というのが筆者の正直な印象だ。確かにNPUの搭載によって、PCでできることは広がりそうだが、現状はNPU、それもQualcommのチップ以外ではAI処理ができないように見えてしまう。また、性能的には優位なGPUとの比較も、語られることがない。
もう少しほかのCPU、GPUベンダーと歩調を合わせ、より広いキャンペーンにできなかったのかと疑問に感じてしまう。また、実際に購入するユーザー視点では、AI PC? NPU? ARM? と疑問点が多すぎて、混乱しそうな印象もある。
今回、筆者は少ない予算を工面してCopilot+ PCであるLenovoの「Yoga Slim 7x Gen 9」を予約した。しかし、読者の皆さんには、慎重にCopilot+ PCの動向を見ながら、じっくり買うべきPCを選ぶことをおすすめしたいところだ。