Stable Diffusionの学習のためにiGPUとdGPUを併用する話
マザーボードとCPUを換装して、iGPU(統合GPU)が使えるようになったので記念にiGPUとdGPU(専用GPU)の共存させてみたら上手く行ったのでメモ
環境
CPU: i9 13900K
GPU: RTX4090
やる理由
Stable Diffusion自体にメリットはほとんど無い。あるかもしれないが自分には無さそうだった。何に効果があるかと言うとLoRA等の学習
学習はGPUをほぼフルに使うため、学習中に動画を再生したりするとGPUがそっちに回されて大きく速度が落ちることがよくあった。仕方なくブラウザはハードウェア支援を使わないようにしたりするが、そうするとCPUが無駄に使われるしブラウザ自体も気持ち重くなる
学習のバッチサイズを下げたりすればいいのかもしれないが、せっかくなのでフルに使いたい。というわけで普段のブラウザなどの軽い処理はCPUのiGPUに回して、重いものだけdGPUに回すようにした
やり方
・使っているディスプレイの数だけ映像出力のあるマザーボードとiGPUのあるCPUを購入し、映像出力をマザーボード側の出力に繋ぐ。dGPU側の端子に繋いでも映像は出るが、iGPUで描画したものをdGPUに送って出力することになるので常にdGPUに無駄な負荷が掛かる。あと映像が微妙にカクついたりした
・マザーボードでiGPUを有効化する(iGPU Multi monitorなどの設定があるマザーもある)
・Windows10でディスプレイ設定→グラフィックの設定で省電力にしたいアプリを追加して、オプションから省電力を選ぶ。同様にdGPUで処理したいアプリは高パフォーマンスを選ぶ。正しく設定されていれば省電力の方にはiGPUが表示されている
注意点
・マザーボードは映像の規格に注意する。よく調べずに買ったら、格安でもないのに4kで30Hzしか出ないHDMI1.4が採用されているマザーに当たって泣いた
・同様の理由だが、4kで144Hzのモニターを使ったりしていると恐らく大半のマザーでは対応していないので60Hz以下になる
以上で終わり。処理がどちらに回っているかはHWMonitorをインストールしてiGPUとdGPUの使用率や消費電力を見れば分かる。dGPU側の映像端子に接続していた時は動画を再生している時にdGPUに負荷が少し掛かっていたが、マザーボード側に接続し直したら完全にアイドルになった
ゲームは最近PCでしていないのでどれくらい快適に動作するか不明。dGPUからマザーボードに映像を送らないといけないのでカクついたりする可能性もあるかもしれない?