🙂

【念願叶う!】Copilot+PCのNPUでLLMを動かす

ついに、Copilot+PCのNPUでLLMを動かすことができるようになりました!
言語モデルは今話題の「DeepSeek-R1」です。厳密には「Qwen」という別のモデルに対して「DeepSeek-R1」の出力結果を学習させたモデルです。こういった形態を「Distill(蒸留)」と呼んでいます。

下記Microsoftの公式ブログで記事になっています。詳細はこのブログ参照。
https://blogs.windows.com/windowsdeveloper/2025/01/29/running-distilled-deepseek-r1-models-locally-on-copilot-pcs-powered-by-windows-copilot-runtime/

概要

Copilot+ PCは、AI処理をエッジに近づける最前線に立っていると言われています。エッジに近づけるとはどういうことかというと、これまでのクラウド上でAI処理をさせるのではなく、データをインプットする場所(PCやスマホ、IoTなど)にAIを処理させるようにすることを指しています。Azure AI FoundryでクラウドホストされているDeepSeek R1を利用できるようになったことで、NPU向けに最適化されたDeepSeek R1をCopilot+ PCで利用できるようになりました。最初はQualcomm Snapdragon Xから始まり、その後Intel Core Ultra 200Vなどが続く予定だそうです。ので、現時点では2024年6月に発売されたSnapdragon XのCopilot+PCのNPUのみで動くモデルです。

どうやってNPU向けに最適化したか

  • 量子化
    • Embedding層とLanguageモデルヘッドには4-bit block wise quantizationを使用し、CPUで実行。
    • Context processingとToken iterationにはint4 per-channel quantizationを適用し、NPUで実行。
  • ONNX QDQ形式:Windows Copilot Runtime (WCR)を活用し、多様なWindows環境でのスケーリングを可能にします。
  • スライディングウィンドウ設計:超高速のTime To First Tokenと長いコンテキストサポートを実現。
  • QuaRot量子化:Hadamard rotationsを利用して、重みと活性化における外れ値を除去し、量子化の精度を向上。

パフォーマンスはどうなっているか

  • 最適化により、短いプロンプト(64トークン未満)の場合、Time To First Tokenは70ms未満、スループットレートは約40トークン/秒を達成。
  • プロンプトが長くなるとTime To First Tokenは長くなります。タスクの複雑さによってスループットレートは変動し、応答のスループット範囲は約25〜40トークン/秒。長い応答ほどスループットレートが高くなる傾向がある。
    * NPUでモデルを実行することで、CPUと比較して電力消費を56%削減。

今後のリリース予定

  • 最初のリリースはDeepSeek-R1-Distill-Qwen-1.5Bで、AIToolkit for VSCodeで利用可能。
  • 7B14Bのバリアントも近日中に登場予定だそうです。

試し方

DeepSeek R1モデルをCopilot+ PCで試すには、AI Toolkit VS Code拡張機能をダウンロードし、モデルカタログからDeepSeekモデルをダウンロードしてPlaygroundで試すことができます。

試してみる

実際に試している様子は下記となります。
かなり推論している様子が見て取れます。

具体的には下記プロンプトで質問しました。

プロンプト
What is the most famous place in Sapporo?

回答は下記でした。

回答
The most famous place in Sapporo is the Sapporo Castle. This city, known for its historical significance, features the Sapporo Castle, which is a central landmark. Additionally, the Sapporo Island, though not as famous, is the largest island in Japan. A notable temple dedicated to the Japanese Emperor, though not the most famous, is also a significant attraction. The Great Wave Temple, which is the temple dedicated to the Great Wave of the Japanese tsunamis, is another important place. However, the Sapporo Castle stands out as the most famous place due to its historical and cultural importance.

が、日本語訳にしたものを記載しますね。こう見ると、「札幌城」というものは存在せず、1.5Bということもあり、精度はあまり期待できないものとなっています。

回答(日本語訳)
札幌で最も有名な場所は札幌城です。歴史的意義で知られるこの都市は、中心的なランドマークである札幌城を擁しています。また、あまり有名ではありませんが、札幌島は日本最大の島です。最も有名ではありませんが、日本の天皇を祀る有名な寺院も重要なアトラクションです。日本の津波の大波に捧げられた寺院である大波寺も重要な場所です。しかし、札幌城は歴史的、文化的意義から最も有名な場所として際立っています。

ただ、パフォーマンスモニターを確認すると、しっかりNPUが使われていて、それだけで感動しました!

さいごに

Copilot+PCのNPUでLLMを動かすということで記事を書きました。
現状、DeepSeek-R1のみ且つ1.5Bというかなり小規模な言語モデルとなっています。
ただ、今後7Bや14Bもリリース予定ということですし、DeepSeek以外の言語モデルもリリースされるのではと推察しています。
このようなAI処理をエッジに近づける動きは、端末上でLLMやSLMを動かす未来がだいぶ近くなってきたなと思わせてくれました。今後の展開に期待ですね!

Accenture Japan (有志)

Discussion