【脱線】MacPro2006をメンテナンス2 生成AIへの道

【脱線】MacPro2006をメンテナンス2 生成AIへの道

最近流行りの画像生成AI『Stable Diffusion』を試したくて。
Googleさんのサービスを利用しようとしたが、Stable Diffusionを実行するには、Google colabの有料プランに加入せねばいかんらしい。

そこで、スタンドアローンで実行できるStable Diffusion webuiをiMac 27inchにインスコしてみた。しかぁし、このプログラムは強力なGPUが必要なのね・・・、iMacに入れてあるQuadoro K3000mでは役不足・・・・

そこで、iMacでCPUのみでの画像生成に挑戦してみたが、512×512の画像を生成するのに38分ぐらいかかる。こんなものなのか?

ネットで見ると、NvidiaのGeforce RTX3060であれば、あっという間に秒で生成できるらしい。やはり38分は遅い

色々調べると、iPadOS用のアプリでDraw Thingsというアプリがあって、こいつがStable Diffusion互換らしい

うちのM2 iPad Proだと512×512の画像が20秒で生成できた。
ただ、モデルデータやらLORAやらを本体にダウンロードすると、あっという間に128GByteのストレージが埋まってしまう。

やはり、パソコンでStable Diffusionが良さそうだ。

そうだ!、MacPro2006があった!こいつに高性能グラボを挿せば・・・
ちなみに、今挿さっているRadeon HD4870(1GB)では、Stable Diffusion動作はあまり期待できないらしい

予算がなかったのでとりあえず、Geforce GTX970(4GB)をヤフオクで4000円でゲティオン(写真上:7300GT、写真下:GTX970)



ん〜動作はするのだが、512×512生成に13分かかる。iMacでCPUのみの時の1/3の時間で生成できたが
まだ遅い!

【余談】
あとで判明した話だが、
MacPro2006のPCI Expressに関して、どうやらレーン数の切り替えは自動で行われないらしい。ネットで調べるとMacPro2,1(MacPro2007?)からは自動切換えとなっている。ファームを書き換えてMacPro2,1にしてあるが、元々MacPro2006の子なので、おそらくレーン数の切り替えは手動の子なのだろう。このとき、電源ハーネスの長さの関係上、GTX970がスロット2に挿入されていた、MacProのレーン数はデフォルトで
スロット4 x4
スロット3 x4
スロット2 x1
スロット1 x16
であるので、GTX970はx1で動いていた。GTX970はPCI Express3.0 x16(理論値128Gbps)の商品なので、こいつをPCI Express1.1 x1(理論値2.5Gbps)に挿して使っていたことになる。GTX970をスロット1(PCI Express1.1 x16 理論値40Gbps)に挿した場合、推測だが、13分が1分に短縮できる可能性があった・・・。残念なことに、このことに気が付いたのはRTX3050購入後であった・・・・
【余談終わり】

話を戻そう、どうしたものか悩んでいたら、本日、あぶく銭の第二弾ゲティオン!!ありがとうシンフォギア3黄金絶唱 Light Version、相性が良いのか一度もラッシュから落ちずに70連・・・・

そして、パソコン工房にて、Geforce RTX3050(8GB)を発見、即ゲット


MacPro2006の元々グラボが挿さっていた一番下のスロット(スロット1)にRTX3050を挿入。スロット1のみDouble Wide 16-laneだと思ったが、認識しない・・・・(この時点でRTX3050はPCIe x16の娘と勘違いしている)

ここで、MacOSの拡張スロットユーティリティーを使って、
スロット4 x8
スロット3 x1
スロット2 x8
スロット1 x8
に設定、上から3つ目のスロット(スロット2)レーン x8に挿入して起動、動いた!512×512生成に13秒!!!!やはり速し!この設定でスロット1もレーンx8になっているので、スロット1に移築、こちらも動いた!

(調べたら、RTX3050はPCI Express4.0 x8らしい、そりゃx16スロットに挿したら認識せんわなぁ~)

と喜んでいたら、会社PC(RTX4070搭載機)で512×512の生成を実行したところ、3秒で終わった。RTX4070とRTX3050のスペック違いがあったとしても、ウチの13秒は遅いのでは?

ここからは推測、MacPro2006はPCI Expressのバージョンが多分1.1(2008モデル以降は2.0に上がっている)、ボード自体はPCI Expressのバージョン4 x8対応なので、速度的には実力が出ていない。ここも推測だが、バージョン1.1のx8は20Gbps、バージョン4のx8は128Gbpsなので、理論上 MacPro2006のPCI Expressスロット2(x8)は約1/6.4倍速。よって、PCI Express4.0対応の健全なシステムにRTX3050を挿入していた場合、今回の13秒が理論上2秒になる計算だ、オソロシヤ

どうしてもMacPro上のWindows10でStable Diffusionを実行したい場合は、PCI Express2.0が使えるMacPro2008~2012をゲットしたほうがよさそうだ、こちらも速度が倍になるので、13秒 → 6.5秒が見込める。

まぁ、M2 iPad Proよりは速いので良しとしておこう。

あと、これをやるとWindows10は動作するが、MacOSが使えなくなる。MacPro上のEl CapitanがRTX3050に対応していないらしい・・・・

てな訳で、MacPro2006にGeforce RTX3050を導入してStable Diffusionを動かした記録