見出し画像

Stable Diffusionが速いのはUbuntuではなくWindows(AMD APUの場合)

私が愛用するノートパソコンであるDell Inspiron 16 5625は、2年半ほど昔に発売された。このノートパソコンはAMDのAPU Ryzen 5 5625Uを搭載し、今月からは 高価なNVIDIA GPUを搭載したパソコンと同じ絵を生成できるAIパソコン となって働きまくっている。

WindowsでAmuseをインストールするだけでAIパソコンになる……とはいえ、AIパソコンを自称するにしても、遅い。とても、遅い。ので、「Stable Diffusionを動かすのならLinuxでしょ。速いし」や「Ubuntu+ROCm >>>> Windows+DirectML」といった記事に心を動かされ、Linux(Ubuntu)でも動かそうとチャレンジしてきた。

で、はじめに結論を書く。「AMD Ryzen 5 5625UでStable DiffusionまたはSDXLを動かすのであれば WindowsがUbuntuよりも速かった」。

なお、今回の対決で使ったDell Inspiron 16 5625は次の構成だ。

  • AMD Ryzen 5 5625U

  • 64GB メモリ(DDR4-3200)

  • 512GB NVMe M.2 SSD(Windows)

  • 128GB SATA M.2 SSD(Ubuntu)

ふつうのStable Diffusionで速さ対決

Stable Diffusionを使った画像生成の速さを測る方法はいろいろあるようだが、目についた Hello Asuka Benchmark を使ってみた。Hello Asuka Benchmark は、お高いGPUでプロがチューニングして測るとひと呼吸するくらいの時間で終わるようなベンチマークである。お安いRyzen 5 5625Uでどアマがなにもしないで測ると、ざっと16分ほどかかった。

Ryzen 5 5625Uは定格TDPが15Wと、省電力性能もウリだった。そして、十分な電源供給と冷却機構がある場合の最大TDPは25Wだ。Dell Inspiron 16 5625などでWindowsを使うときは、MyDell というアプリを導入すれば最大TDPで「継続的に」動かせるようになる。

WindowsにMyDell アプリを導入すると、見たところ「静音」設定が導入前と同じTDP 15Wで動き、「最適化」や「超高パフォーマンス」がTDP 25Wかそれ以上で動いているようだ。

一方、Ubuntuはというと、Windowsのように電力モードを標準で省電力、バランス、パフォーマンスから選んで設定できるものの、どれを選んでもTDP 15Wで動いているようだ。そして、MyDell アプリの提供はない。

同じプロセッサーであれば、原則としてTDPが高いほど性能も高くなる。そのため、TDPを上げられないUbuntuにはちょっと不利かもしれないわけだ。

デルの事情はともかく、計測の結果をグラフにしておく。

処理時間が短い方が性能がよい。静音や省エネモードにしなければWindowsがわずかながら速い。
UbuntuでHello Asuka Benchmarkの設定で画像生成してキャプチャ。
Windows Amuseでのキャプチャ。1枚多いのは試し生成の消し忘れ。

ベンチマークの内容は「日本のアニメーション作品『新世紀エヴァンゲリオン』やその派生作品に登場する架空の人物で、同作のヒロインの一人である惣流・アスカ・ラングレー」を10枚生成する時間を測るというもの。

書き忘れたが、期待値はどこかで見た気がする「UbuntuがWindowsよりも3倍ほど速い」だ。それに対して計測結果は、Windowsが基本的にはわずかに速く、静音や省電力モードではUbuntuがわずかに速い……にとどまった。あれれ?

SDXL計測の前にMyDellアプリの役割を想像する

Dell InspironやLatitude、XPSなどデルのノートパソコンは「サーマルスロットリングがいったん発生すると、それ以降は最大性能を出さない」仕様であるとされてきた。デルのユーザーコミュニティで荒れる話題の定番でもあった。

パソコンで高い負荷のかかる処理を続けて最大性能を発揮するとCPUも高熱になるので、規格内におさまるように冷却ファンをぶん回しつつCPUの周波数を落とすなどして熱冷ましをする。これがサーマルスロットリング。冷えたあとで最大性能を出してもよさそうな場面が来ると、たいていは元の性能に復帰してサーマルスロットリング発生までがんばるのだが、デルのパソコンは知らん顔だった。

が、MyDellアプリは、その動きをみるとAPUを定格を上回る最大TDPで「継続的に」動かせるようにするようだ。もちろんサーマルスロットリングも発生しているのだが、それとうまくお付き合いできるようになった。

「いや、アプリ入れないでも性能出るようにつくればいいだけなんじゃ?」は正論。

ただ、逆にBIOSレベルでは「サーマルスロットリングが発生すると、それ以降は最大性能を出さない」仕様で固まっているため、WindowsのMyDellのような対策アプリがないUbuntuでは、TDP 15Wを前提に使うことになるようだ。各種ツールでみると高負荷ではTDP 35Wくらいには一時的に達するが、それは長続きせず、15Wを上限に動くモードに切り替わっているように見える。ざっくり調べた限りでは、どうにかしてくれるような情報もなかった。

生成された画像を秒でデリートしまくるガチャ式AI画像生成によるムダ電力は、ちゃんと計算したら地球規模ではとんでもない損失になっていそう。

SDXLで速さ対決

さて、SDXLによる画像生成時間も、WindowsとUbuntuとで比べてみる。

なにしろ時間がかかるので、対決は1枚の画像生成にかかる時間にした。何度もベンチマークを繰り返していたので、ファンの音の変化でパソコンが何をしているかわかるようになった。『美味しんぼ』で山岡史郎と海原雄山が最初に対決するのが「天ぷら」勝負で、海原雄山勝利の決め手はスキルなどではなく「天ぷらをあげるときの音の変化」を鋭敏にキャッチする聴覚を持つ料理人を選んだことだったが、ええと、なんの話でしたっけ。

SDXLのモデルはiNiverse Mix XLを使い、生成する画像はそのお手本プロンプトである「本棚に囲まれた図書館で本を読む若い女性(Illustrate a young woman reading a book in a library, surrounded by shelves filled with books)」。SDXLではWindowsとUbuntuで同じ条件を設定できないのだが、できるだけ近づけてはみた。

で、結果は「SDXLもWindowsがUbuntuより速い」だ。

1024 x 1024、30 Stepsの画像を1枚生成するのにも10分(600秒)以上かかる。
出てくる絵は美しい。本の造形がどことなくおかしいが、SDを始めたこの数週間で、手の指の本数が違ったり足が3本くらい生えてても気にならなくなっているのでOK。

「Ubuntuの方がWindowsより3倍速いかも」といった期待は消え失せてはいたが、SDXLでも両者の差はわずかで、そしてWindowsが速かった。

まとめると

いろいろはしょると「AMD APUでは、WindowsはUbuntuよりもAI処理が速い」との結果になった。Ubuntuが苦手な私にはうれしい結果だ。

これが、AMD APUを使った生成AIではUbuntuが遅すぎるのか、逆にAmuseとAMDが最適化をがんばったWindowsが例外として速いのかは、判断が難しい。

同じTDPで比較すれば差はわずかながらUbuntuが速く、TDP制限解除のようなありがたいパッチがでたら逆転するかもしれない。が、大差にはならなそうだ。そして、Ubuntuでどれもが「AMD APUは未サポート」のライブラリやアプリを組み合わせて動かすのは、砂漠の中で1本の針を探すような任務だ。エラーをはいたり、クラッシュしたり、ハングしなければミッションコンプリートだが、実感として不安定だ。これからのアップデートで使えなくなるかもしれない。

それに、もはや「速さ」対決ではなく「遅さ」対決のほうがしっくりくるし、なんかもう、どうでもいいかも。

ちなみに、NVIDIA GPUを搭載したパソコンの消費電力は、なにもしないアイドル時で50W弱、全力発揮時では450Wを超えるそうな。

それに対し、Ryzen 5 5625Uのノートパソコンはどうがんばっても45W。もっと消費電力が少なくちょっとお安いIntel N100のパソコンは、AIパソコンにはならない。AMD APUなら地球の未来に影響を与えないレベルでAIもいくらでも働ける。WindowsにちゃちゃっとAmuseを入れてちょっとファイルを置き換えれば、おおっぴらにはできない画像生成AIも楽しめる。今から買ってもいいんじゃないかと思う。

「雰囲気ある照明のリビングルームのソファに寝そべっている若い女性」に少し追加したプロンプトで。NSFWに強い iNiverse Mix XL。