StableDiffusionの快適性を損なわず、HDDにファイル移行する方法

AI/Stable Diffusion

近年は大容量のSSDも安価になり、増設するのも簡単になりました。

しかしStableDiffusionの容量は大きく、モデルや出力した絵が増えていくとストレージを圧迫してしまいます。

「StableDiffusion」ではグラフィックボードのVRAMを使用するから、速度の遅いHDDに移動しても問題ないのでは?と考える人もいると思います。

内臓HDDなら、1TB以上の大容量でも安く購入することが出来ますからね。

ですが実際に購入してから、遅くて使い物にならないのは嫌ですよね?

そこで今回は、実際にHDDに移動すると、起動速度や絵の出力速度がどうなるかの検証と、遅くなる場合はどのファイルならば移動しても速度に影響でないかを確認していきます。

また実際の検証には2.5インチのSSDも比較対象としています。

結果

・使用モデルだけSSDに移すだけで、他はHDDで十分な速度と快適性が得ることが可能

・出力はControlnetやHires.flxの影響はほぼなく、ストレージによる差が生じないためHDDで十分

この記事を読むと

StableDiffusionのどのファイルなら、HDDに移動しても問題ないか理解できます。

※記事内に広告が含まれています。

結果

使用モデルだけSSDに移すだけで、他はHDDで十分な速度と快適性が得られる。

出力はControlnetやHires.flxの影響はほぼなく、ストレージによる差が生じないためHDDで十分。

筆者のPC環境

まず初めに私のPCのスペックと現在StableDiffusionでインストールされている場所です。

元々ここまでがっつりStable Diffusionを使う予定ではなかったので、StableDiffusionをそれなりに快適に動かせるスペックのPCになります。

現在はCドライブを分割してSドライブ(100GB)を作成し、StableDiffusionWebUIはSドライブにインストールしてあります。

ただしPythonやGitなどは別でも使用するためCドライブに保存してあり、今回の検証の対象外としてしています。

2.5インチのSSDはWドライブ3.5インチのHDDはDドライブの名前になっています。

DドライブのHDDが古いのは、10年ぐらい前に使ってたPCから持ってきたからです。

あの時はSSDなんて高い&容量USB並みで買えなかったからなぁ…

対象スペック
OSWindows10 64bit
CPUCore i7-11700
RAM16GB
グラフィックボード GeForce RTX 3060 12GB
ストレージNVMe M.2 SSD 512GB
SSD Transcend 512GB
HDD 東芝 DT01ACA050
対象インストール/保存先
PythonCドライブ
GitCドライブ
StableDiffusion
 ┗OutputsSドライブ
 ┗ModelSドライブ
 ┗VAESドライブ
 ┗Control.netSドライブ

確認内容

目的、手順、方法についてそれぞれを下記に示します。

確認目的

速度の速い「NVMe M.2 SSD」から速度の遅い2.5インチの「SSD」と3.5インチの「HDD」にStableDiffusionを移動させて、速度を確認します。

最終的に起動速度、出力速度、モデル変更速度など通常の動作速度が変わらない状態を見つける

確認手順

1.StableDiffusionWebUIをフォルダ事コピーしてSSD&HDDに移動して、起動確認&各速度の確認

2.1で速度の低下が著しいものに対して、関連する項目を「NVMe M.2 SSD」から読み込むようにして起動確認&各速度の確認

ドライブ事の比較

単純に各ドライブにStableDiffusionのフォルダ中身をコピーして起動、出力した時の結果です。

起動、モデル変更

初めは基本的な確認として、各ドライブに移動したStableDiffusionを単純に起動させます。

初回の起動を含めて3回行っています。

また計測は画面を録画して、時間の差から算出しています。

起動時間

初めは単純に「webui-user.bat」で起動した場合の時間を確認します。

結果:初回起動の時間を見るとHDDが圧倒的に遅いです。

2回目以降の起動時間も5秒程度ですが、HDDが遅いです。

ただし一回消して起動しなおすことは稀なため、この初回起動の差はフラストレーションに直結しそうです。

NVMe M.2 SSDSSDHDD
1回目1分3秒1分9秒3分12秒
2回目45秒46秒51秒
3回目46秒47秒50秒

モデル変更

下記のようにモデルを変更した時の時間を計測してみます。

今回は「Anything-v5(2GB)」「Anything-v3(7GB)」の2つのモデルを選択した場合の比較を行っていきます。

結果:HDDは初回変更時は起動同様に、時間が顕著にかかっています。

しかし2回目以降も明らかにHDDが遅いです。

また2.5インチのSSDに関してもNVMe M.2 SSDに対して1~2秒程度遅くなっています

頻繁に切り替えるものではありませんが、外側からStableDiffusionを操作しようとした場合は、待機時間に注意が必要かもしれません。

Anything-v5 ⇒ Anything-v3

NVMe M.2 SSDSSDHDD
1回目12.8秒14秒2分59秒
2回目6.2秒7.5秒21.3秒
3回目6.1秒8.3秒21.9秒

Anything-v3 ⇒ Anything-v5

NVMe M.2 SSDSSDHDD
1回目5.8秒9秒46.7秒
2回目6秒8.6秒33.1秒
3回目5.8秒7.3秒35.2秒

出力

「起動、モデル変更」同様の方法で行い、出力も初回の起動を含めて3回行っています。

また計測は画面を録画して、時間の差から算出しています。

今回は各パラメータは起動状態のまま、出力枚数を4枚にして計測を行います。

ただし出力サイズはHires.flxでのアップスケールを考えて768×768として行いました。

また使用したモデルは「Anything-v5」を使用しています。

プロンプトは「A girl」、ネガティブプロンプトはなしで出力しています。

パラメータ
モデルAnything-v5
Sampling methodDPM++ 2M Karras
Sampling steps20
Width768
Height768
Batch count2
Batch size2
CFG Scale7

txt2img

基本的な出力結果の確認です。

結果:実際に出力された絵には若干の違いがありますが時間に差はほとんどありませんでした。

HDDでは1~2秒程度遅いので、枚数やサイズを上げるとより遅くなりそうですが、1024×1024を20枚程度であれば20~30秒の誤差の範囲で済むため、個人で使用する分にはあまり影響はないでしょう。

NVMe M.2 SSDSSDHDD
1回目27秒28秒29秒
2回目27秒27秒27秒
3回目27秒27秒28秒

txt2img (Hires.flx Upscale 1.5)

次にHires.flxでUpscale 1.5にした場合の出力結果の確認です。

パラメータ
Width512
Height512
Upscale by1.5
Hires steps0
Denoising strength0.7

結果:実際に出力された絵には若干の違いがありますが時間に差はほとんどありませんでした。

NVMe M.2 SSDSSDHDD
1回目40秒40秒41秒
2回目40秒40秒41秒
3回目41秒40秒40秒

img2img

img2imgで出力した出力結果の確認です。

元となる画像は、先ほどのtxt2imgで作成した画像を使用しています。

パラメータ
Denoising strength0.75

結果:txt2img同様に、出力された絵には若干の違いがありますが時間に差はほとんどありませんでした。

NVMe M.2 SSDSSDHDD
1回目23秒23秒23秒
2回目23秒23秒23秒
3回目23秒23秒24秒

Controlnetを使用した時

Controlnetを使用するときはControlnetのモデルをダウンロードします。

つまりControlnet用のモデルを使用する場合も、描画時間が遅くなる可能性があるので、確認してみます。

txt2imgを使用して、「Lineart」と「Openpose」を使用した場合について確認していきます。

使用する絵はimg2imgでも使用した下記画像を読み込ませています。

Lineart

元絵を一度線画に変換して、その後彩色を行う機能です。

結果:通常の出力と同じで時間に差はほとんどありませんでした。

NVMe M.2 SSDSSDHDD
1回目36秒37秒36秒
2回目36秒36秒37秒
3回目37秒36秒36秒

Openpose

元絵から人の骨格情報を推定して、その骨格情報に合うように画像を描く機能です。

結果:通常の出力と同じで時間に差はほとんどありませんでした。

NVMe M.2 SSDSSDHDD
1回目37秒37秒37秒
2回目38秒37秒37秒
3回目37秒37秒38秒

ここまでの結果

起動、モデル変更…ともに差有り、NVMe M.2 SSD⇒SSD⇒HDDの順番で遅くなっている。

出力…Controlnetの使用有無にかかわらず、差無し

モデルのみ「NVMe M.2 SSD」から読み込み

起動時の遅延もモデル読み込みによる影響が大きい可能性があるため、モデルのみ「NVMe M.2 SSD」から読み込んだ場合の確認を行います。

期待値は、起動、モデル変更ともにドライブ事移した時よりも時間が短くなっていることです。

出力に関しては、Controlnetに関わらず時間がほぼ変わらなかったため、txt2img(Hires.flx Upscale 1.5)のみ確認しています。

期待値は出力時間は変わらないことです。

起動時間

結果:SSD、HDDともに初回起動時間が短くなりました。

特にHDDの初回起動はSSDと遜色ないレベルの速さなので、モデルをSSDにするだけでも起動時のフラストレーションが緩和されそうです。

NVMe M.2 SSDSSDSSD(Model移動)HDDHDD(Model移動)
1回目1分3秒1分9秒46秒3分12秒53秒
2回目45秒46秒49秒51秒54秒
3回目46秒47秒47秒50秒46秒

Model変更

結果:SSD、HDDともにモデルの変更時間が短くなりました。

SSD同士では若干の差ですがHDDでは時間が半分近くなっているので、快適性は間違いなく上がっています。

Anything-v5 ⇒ Anything-v3

NVMe M.2 SSDSSDSSD(Model移動)HDDHDD(Model移動)
1回目12.8秒14.0秒13.6秒2分59秒22.3秒
2回目6.2秒7.5秒7.2秒21.3秒11.4秒
3回目6.1秒8.3秒6.8秒21.9秒10.6秒

Anything-v3 ⇒ Anything-v5

NVMe M.2 SSDSSDSSD(Model移動)HDDHDD(Model移動)
1回目5.8秒9.0秒7.4秒46.7秒12.4秒
2回目6.0秒8.6秒7.0秒33.1秒10.8秒
3回目5.8秒7.3秒6.7秒35.2秒10.3秒

txt2img (Hires.flx Upscale 1.5)

結果:SSD、HDDともに出力結果に差はありませんでした。

NVMe M.2 SSDSSDSSD(Model移動)HDDHDD(Model移動)
1回目40秒40秒40秒41秒43秒
2回目40秒40秒40秒41秒41秒
3回目41秒40秒40秒40秒40秒

ここまでの結果

起動、モデル変更…ともに改善有り、特にHDDの起動速度は約72%短縮を確認

出力…Controlnetの使用有無にかかわらず、差無し

蛇足

アイキャッチ用の画像を作るために思いつきでStable Diffusionのプロンプトに「HDD」とだけ入力した結果がこちらです。

HDDだけでなんでこうなるんでしょうね~、次は身の回りの物の名前だけ入れてどうなるかとか検証してみようかな。。。

まとめ

StableDiffusionの快適性を損なわず、HDDにファイル移行する方法について紹介しました。

改めて2行でまとめると…

・使用モデルだけSSDに移すだけで、他はHDDで十分な速度と快適性が得ることが可能

・出力はControlnetやHires.flxの影響はほぼなく、ストレージによる差が生じないためHDDで十分

Stable Diffusionを使用していると、どんどん絵を作成するためにストレージの容量がいっぱいになってしまいます。

ですが今回のモデルだけをSSDに残しておくことで、HDDに本体や出力先を移動しても快適に作業することが可能であるとわかりました。

また万が一物理破損してしまった時も、復旧難易度はSSDの方が高いためHDDと並列で活用すると良いです。

安いHDDでも快適に使えることが分かったので、是非容量を気にせずたくさんの画像を作ってみてください!

コメント

タイトルとURLをコピーしました