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

Copilot+ PCで実現されるローカル推論で「対クラウド企業」を指向するMicrosoft

ASCII.jp / 2024年7月28日 10時0分

 秋に公開が予定されているWindows 11 Ver.24H2では、高性能なNPUを搭載しているPCにおいて、ローカル推論が使えるようになる予定だ。今回はこのローカル推論について解説する。

Phi-3-mini
Microsoftが開発したPhi-3-miniは、Azure AI Studioで試すことができる。このPhi-3-miniがCopilot+ PCのPhi-Silicaのベースになるらしい。CopilotやChatGPTに比べるとコンパクトな言語モデルだが、百科事典的な知識は持っていて、日本語にも対応しているようだ

そもそもローカル推論とは?

 ローカル推論とは、ローカルメモリにモデル(学習済みのニューラルネットワーク)を置き、入力データに対して推論処理をするものだ。これ自体は特に珍しいものではないが、生成AI、大規模言語モデルのような巨大なモデルでは、推論をするにも高性能なコンピュータシステムが必要になるため、クラウドサービスとして提供されることが多かった。

 実行にいくらでも時間がかかって構わないというのであれば、クラウドで実行されているようなAIサービスを一般消費者が使うPCで実行することは可能だ。これを実用的な時間で実現するには、モデルを格納できるような大きなメモリ、推論処理を高速で処理できる推論エンジンが必要になる。

 ローカル実行を想定するなら、モデルを小さくして、高速に推論できるよう作り替えることが一般的だ。一般に学習済みのモデルに対して、「プルーニング」(剪定)と呼ばれる処理がある。これは結果に影響しないニューロンや入力を削除し、ニューラルネットワークのパラメーター数を減らすもの。このことで推論に必要な計算量やモデルのサイズを削減できる。

 また「量子化」と呼ばれる処理では、ニューラルネットワークの出力やパラメーターを小さなデータ形式で表現する。一般にニューラルネットワークでは、出力やパラメーターに32bitの浮動小数点(FP32、単精度浮動小数点)を使う。これを8bitの整数(INT8)や16bitの浮動小数点で表せば、計算量を削減できる。あるいは、並列計算が可能な推論エンジンで、より多くのパラメーターを同時に計算させることができる。

 NPU(ニューラル プロセッシング ユニット)とも呼ばれる推論エンジンは、複数のパラメーターを同時に処理することで実行効率を上げている。このとき、1つのパラメーターを表現するビット数が小さい方が、より多くのパラメーターを一度に処理できる。また、計算処理は浮動小数点よりも整数の方が高速で、NPUを構成する回路も簡単になる。

 このほか、「知識蒸留」(Knowledge Distillation)と呼ばれる手法もある。これは学習済みのモデルを使って、より小規模なニューラルネットワークを学習させる手法だ。この方法を使うことで、元のモデルとほぼ同等のコンパクトなモデルを作ることができる。モデルがコンパクトになると、計算量が減り、メモリ占有量も小さくなる。

 似たような方法に、モデルを使って品質の高い学習データを作成し、コンパクトなニューラルネットワークを学習させるという方法もあるようだ。

 Microsoftの「Phi-3 mini」は、高度にフィルタリングしたインターネット上のデータと合成したデータを使うことで、コンパクトなモデルを作成したという。Microsoftの解説によれば、たとえば、スポーツの試合の結果は、大規模モデルには適切な学習データとなる可能性があるものの、コンパクトなモデルのためには、削除すべき学習データだとする。

 こうした事実は、学習させなくとも、推論時にインターネット検索を併用することで、具体的な回答が可能になるとした。

 このようにしてローカル推論に“最適化”したモデルができるなら、あとは、ハードウェアでどれだけ高速化できるかという問題になる。

 なお、Phi-Silicaを試すには、Copilot+ PCが必要だが、そのベースとなった、Phi-3 miniをAzure AI Studioで試すことができた(記事冒頭画面)。

 ローカル推論での速度感はわからないが、辞書にあるような単語に対する質問に答えることができ、「お詫びの手紙」の書き方を提示するくらいはできた。日本語にも対応していたが、回答によっては少し文章がおかしいものがあった。とりあえず、ローカル推論用のPhi-SilicaでもCopilot的な利用は可能なようである。

CPUに当たり前に載るようになってきたNPUとは?

 モデルがローカル推論に最適化されたとしても、高速に推論をするためには、そのためのエンジンが必要となる。一般的にニューラルネットワークでは、複数の入力それぞれに「重み」をかけ算し、これを使って「活性化関数」を計算する。基本となる演算は、全ての入力と入力ごとに定義されている重みをかけ算して合算する処理である。

 一般にこうした演算を「積和演算」という。積和演算は、行列を扱う場合によく使われる演算で、以前からDSP(Digital Signal Processor)などでもハードウェア化されていた。

 NPUにはさまざまなアーキテクチャがあるが、基本的には、並列計算により高速に積和演算を行う機能がある。一般に、NPUの性能として示される単位であるTOPS(Tera Operation Per Second)は、8bit整数の積和計算を一秒間に何回できるかを示すもの。接頭辞がテラなので「1兆、10の12乗」が単位になる。

 NPUでは、複数の入力をまとめて計算することで、演算処理を効率的に処理する。コンパクトなモデルとはいえ、合計計算量に相当するパラメーター数は数十億個と言われている。前述したMicrosoftの小規模言語モデル、Phi-3 mini(Copilot+ PC向けに開発しているPhi-Silicaのベースになった)のパラメーター数は、38億(3.8×10の9乗)だと言われている。

 推論計算では、ニューロンごとに入力と重みを積和演算で計算する必要がある。一般にニューラルネットワークは、層構造になっており、各層に役目がある。このとき、前層のニューロンの計算を完了させないと出力が決定しないため、次層のニューロンの計算ができない。

 推論計算は層の順にニューロン単位でする必要があるため、常に最大性能で計算できるとは限らない。このため、NPUは、ニューラルネットワークのパラメーター数に対して大きな余裕が必要になる。

 Copilot+ PCの条件にある「40 TOPS」以上は、こうした数十億パラメーターのネットワークを実行するためには必要な条件なのである。

クラウドで強みを持つGoogleやAppleなどライバル Microsoftはローカル推論で攻勢を強めるか

 GoogleやMeta、Amazonなどのクラウドサービスを基本とした企業は、ユーザーの撮影した写真や作成した文書などをクラウドで扱っており、クラウドベースのAIサービスの方がなにかと都合が良い。画像のようなかさばるデータや、1つ1つはそれほど大きくなくても大量になるメールなどを、インターネットで転送することなく処理できるからだ。

 これに対して、ローカル推論は、プライバシーやセキュリティについてクラウド推論に対するメリットがあるとMicrosoftは主張する。

 また、コストに関しても、「デバイスへの初期投資以外に追加コストは発生しない」と主張する。現状ではクラウド側AIの本格的な利用には、サブスクリプションなどの契約が必要になる。現在のクラウド側AIの多くは従量制であり、大量の推論によるコストが今後さらにかさむ可能性がある。一方でローカル推論では、システムのメンテナンスや更新作業はユーザーが負担するのであって、現状では、メモリやNPU、CPUなどのリソースを平均以上に用意する必要がある。

 推論処理全体でのレイテンシ(遅延)では、ローカル推論は有利になる。クラウドでは、必ずしもユーザー近隣のデータセンターを利用するとは限らず、場合によって遠方で処理され、レイテンシが大きくなる可能性がある。

 推論処理だけを見ると、潤沢なハードウェアのあるクラウド推論がスループット的には有利だが、クラウド側のシステム負荷にはユーザーが関与できない。これに対して、ローカル推論はユーザーが実行するAI処理を管理でき、負荷状態の制御が可能だ。そうなるとスループット的にも有利になることがありえる。

 Microsoftがローカル推論に大きく舵を切ったのは、こうした「対クラウド企業」的な要素も多分にあると考えられる。PCでローカル推論が可能なれば、データをクラウドに保存し、クラウド推論を使う頻度は減るだろう。

 Microsoftの論文によれば、前述のPhi-3 miniはコンパクトであるため、iPhoneでの実行も可能だという。なので、ローカル推論を組み込んだスマートフォン・アプリケーションをMicrosoftが提供する可能性もある。GoogleやAppleなどの対応次第ではあるが、アプリケーションの1つにしか過ぎないのであれば、あからさまな拒否もしにくいはずだ。

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

トピックスRSS

ランキング

記事ミッション中・・・

10秒滞在

記事にリアクションする

記事ミッション中・・・

10秒滞在

記事にリアクションする

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

記事にリアクションする

次の記事を探す

エラーが発生しました

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