画像生成AI「Stable Diffusion」を「Copilot+ PC」で動かしたらどうなる?/そもそもArmで動作するのか、NPUの実力は発揮できるのかを検証【特集・集中企画】

by 石田 賀津男

「Surface Laptop 13.8インチ(第7世代)」

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」で実行環境を探る

「Stability Matrix」。複数のUI環境を簡単に共存できる

「Stable Diffusion」の実行環境構築には、「Stability Matrix」を使用した。複数のWebUI実行環境がパッケージとしてまとめられており、使用したいパッケージを選ぶだけで、自動で実行環境を構築してくれる。Pythonの実行環境を構築する必要もなく、複数のパッケージの共存・管理も可能だ。

まずはWeb UIとして最も有名な「Stable Diffusion WebUI(Automatic1111)」を試してみた。パッケージをインストールし、Web UIを起動するまでは順調に進んだのだが、いざプロンプトを入力して画像を生成しようとすると、エラーで実行できない。

「Stability Matrix」では、実行時のオプションも設定できるので、あれこれ変更して再度実行してみたのだが、画像の生成には至らなかった。

「Stable Diffusion WebUI(Automatic1111)」。画像生成を実行するとエラーで止まる

これで終わりにするのはもったいないので、他のパッケージも試してみた。「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秒となった。

無事に猫の画像が生成された。かかった時間は約7分43秒
デスクトップPCのCPUのみを利用して実行すると、約1分27秒
デスクトップPCで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秒だった。

「ComfyUI」でも画像生成に成功。しかし1枚に10分以上かかってしまった

このほかにもいくつかのパッケージを試してみたが、うまく動作しなかった。これに関しては筆者所有の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」がより快適に動作するのもそう遠い時期ではないはずだ。

© 株式会社インプレス