画像生成AI「Stable Diffusion」を「Copilot+ PC」で動かしたらどうなる?

AI要約

AIを活用したPC「Copilot+ PC」と「Stable Diffusion」を比較検証した結果を紹介。

「Stable Diffusion」を「Copilot+ PC」で動かすために試行錯誤し、CPU処理での実行は可能だがパフォーマンスに課題があることが判明。

将来的にはDirectMLを活用して処理速度を向上させる可能性があるが、現時点ではNPUに未対応という課題も抱えている。

画像生成AI「Stable Diffusion」を「Copilot+ PC」で動かしたらどうなる?

■ 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 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の実行環境を構築する必要もなく、複数のパッケージの共存・管理も可能だ。

 まずは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に関しては、現時点では未対応と見てよさそうだ。

 その辺りも含めて、今のところは「Snapdragon X」で「Stable Diffusion」を使うのは難しい。とはいえ「Copilot+ PC」の機能としては既に画像生成も動作しているので、「Stable Diffusion」がより快適に動作するのもそう遠い時期ではないはずだ。