特集・集中企画
画像生成AI「Stable Diffusion」を「Copilot+ PC」で動かしたらどうなる?
そもそもArmで動作するのか、NPUの実力は発揮できるのかを検証
2024年6月28日 15:18
AIに強い「Copilot+PC」なら「Stable Diffusion」も快適?
PCのAI機能を拡充する「Copilot+ PC」。弊誌でもAI機能を試す記事を掲載している。画像生成AIなどいくつかの機能が使えて、PCの未来を体感できる内容になっている。
とはいえAIは「Copilot+ PC」の専売特許ではない。今回は画像生成AIが広く知られるのに大きな役割を果たした「Stable Diffusion」を、6月に発売されたばかりの「Copilot+ PC」で動かしたらどうなるのかを試してみることにした。
使用するのはMicrosoftからお借りした「Surface Laptop 13.8インチ(第7世代)」だ。スペックは下記のとおり。
CPU | Snapdragon X Elite(12コア)/Snapdragon X Plus(10コア) |
GPU | Qualcomm Adreno GPU(CPU内蔵) |
NPU | Qualcomm Hexagon NPU(45TOPs) |
メモリ | 16GB/32GB LPDDR5 |
SSD | 256GB/512GB/1TB(PCIe Gen4) |
ディスプレイ | 13.8型PixelSense Flow ディスプレイ(2,304×1,536ドット、120Hz、タッチ対応) |
OS | Windows 11 Home |
汎用ポート | USB4×2、USB 3.1×1 |
無線機能 | Wi-Fi 7、Bluetooth 5.4 |
有線LAN | なし |
その他 | 1080pカメラ(Windows Hello 顔認証対応)、Surface Connect ポート、ヘッドフォン端子 |
本体サイズ | 301mm×220mm×17.5mm |
重量 | 1.34kg |
価格 | 207,680円~ |
今回お借りした機材は、CPUがSnapdragon X Elite (12 Core)、メインメモリが16GB、SSDが512GBの構成で、価格は279,180円となる。
ポイントは2点で、Windows 11がArm版であること。そしてCPUがQualcommの「Snapdragon X Elite」であることだ。そもそも「Stable Diffusion」が動作するのかどうか、からのスタートである。
「Stability Matrix」で実行環境を探る
「Stable Diffusion」の実行環境構築には、「Stability Matrix」を使用した。複数のWebUI実行環境がパッケージとしてまとめられており、使用したいパッケージを選ぶだけで、自動で実行環境を構築してくれる。Pythonの実行環境を構築する必要もなく、複数のパッケージの共存・管理も可能だ。
- ⇨「Stability Matrix」画像生成AIの各種WebUIを統合管理できるツール - 窓の杜
- https://forest.watch.impress.co.jp/library/software/stmatrix/
まずはWeb UIとして最も有名な「Stable Diffusion WebUI(Automatic1111)」を試してみた。パッケージをインストールし、Web UIを起動するまでは順調に進んだのだが、いざプロンプトを入力して画像を生成しようとすると、エラーで実行できない。
「Stability Matrix」では、実行時のオプションも設定できるので、あれこれ変更して再度実行してみたのだが、画像の生成には至らなかった。
これで終わりにするのはもったいないので、他のパッケージも試してみた。「Stable Diffusion WebUI Forge」は、インストールして実行しようとすると、エラーを出して中断。しかしエラー内容に「Skip Torch CUDA Test」を追加せよというメッセージがあった。実行オプションで「Skip Torch CUDA Test」および「Always CPU」にチェックを入れたところ、無事に起動した。
続けて画像生成も実行でき、プロンプトに「cat」とだけ指定したところ、無事に512×512ドットの猫の画像が1枚生成された。かかった時間は約7分43秒。
ちなみに同じオプション設定で、筆者所有のデスクトップPC(Core i5-13600K、GeForce RTX 4080)で実行したところ、約1分27秒で生成された。また「Always CPU」のオプションを外す(GPUで実行される)と約3秒となった。
続いて「ComfyUI」。こちらも「Use CPU only」のオプションをチェックすることで動作する。標準で「beautiful scenery nature glass bottle landscape, , purple galaxy bottle,」というプロンプトが入力されているので、これを実行したところ、約10分39秒で画像が生成された。
こちらも筆者のPCで同じオプション設定にして試すと、生成時間は約1分52秒。「Use CPU only」のオプションを外してGPU処理させた場合は約3秒だった。
このほかにもいくつかのパッケージを試してみたが、うまく動作しなかった。これに関しては筆者所有のPCでもうまく動作しないパッケージは時々あるので、設定を詰めたり、パッケージのアップデートによって動作したりするものはあるかもしれない。とりあえずは「CPUのみの動作で設定すれば、動かせるものもある」ということはわかった。
現時点では不向きだが、いずれ改善していくはず
ここまでの結果を見ると、CPU処理で実行はできるものの、エミュレーションの影響もあってかパフォーマンスはあまり良くない。内蔵GPUや、あるいは自慢のNPUが使えれば、もっと高速に処理できるはずなのだが。
そこで、DirectX 12互換GPUで使えるはずの機械学習向けの低レベルAPI「DirectML」を使えば、もっと高速に処理できるのではないかと考えた。「SnapDragon X」に内蔵されるAdreno GPUはDirectX 12に対応している。
「Stable Diffusion WebUI Forge」と「ComfyUI」には、どちらにもDirectMLを使用するオプションが用意されている。こちらを有効化してみると、パッケージの起動段階でエラーを出して止まってしまう。他のオプションを調整したり、他のDirectMLに対応するパッケージを試してたりもしてみたものの、1つも動作しなかった。
DirectMLオプションに関しては、筆者のPCでも試してみたものの、やはり起動に失敗してしまう。筆者の勉強不足で何か方法があるのかもしれないが、少なくとも「Stability Matrix」でパッケージを入れれば動くという状態ではなかった。「Stability Matrix」を使わず環境構築する手もあるが、時間的都合もあり今回はここまでとさせていただく。
DirectMLに関して調べてみたところ、Microsoftで情報が見つかった。それによると、「Qualcomm Snapdragon X Elite NPU の DirectMLは、まもなく利用可能になる予定」とされている。NPUに関しては、現時点では未対応と見てよさそうだ。
- ⇨Copilot+ PC 開発者ガイド | Microsoft Learn
- https://learn.microsoft.com/ja-jp/windows/ai/npu-devices/
その辺りも含めて、今のところは「Snapdragon X」で「Stable Diffusion」を使うのは難しい。とはいえ「Copilot+ PC」の機能としては既に画像生成も動作しているので、「Stable Diffusion」がより快適に動作するのもそう遠い時期ではないはずだ。