StableDiffusionの出力先を別ドライブに変更したり、用途別にStableDiffusionを複数インストールした状態で、出力先やモデルを共通で使いたい場合の設定方法をメモメモ。
起動スクリプトの「set COMMANDLINE_ARGS」にパラメータとして指定してもいいのですが、シンボリックリンクを使う方法で。
出力先の共通化
例えば、
- StableDiffusionの本体はSSDで動かしたいけど、画像の保存先は大容量のHDDにしたい
- 用途別にStableDiffusionをいくつか使用しているけど、画像の保存先は一ヶ所にまとめたい
などの場合、保存先となるフォルダをシンボリックリンクに置き換えることで実現できます。
この作業では、管理者権限のあるコマンドプロンプトを使用します。
コマンドプロンプトを管理者権限で実行する方法は、
Windows10の場合、「スタートメニュー」→「Windowsシステムツール」→「コマンドプロンプト」を右クリック→「その他」→「管理者として実行」です。
Windows11の場合、「スタートメニュー」→「すべてのアプリ」→「Windowsツール」→「コマンドプロンプト」を右クリック→「管理者として実行」です。
Windows11のスタートメニューを右クリックして起動できる「ターミナル(管理者)」で作業する場合は、「PowerShellの場合」のコマンドを参考にしてください。
本体はSSD、出力先はHDD
StableDiffusionの本体「F:\stable-diffusion-webui」
画像保存先「D:\StableDiffusion-outputs」
であることと仮定して、1番の「本体はSSDで動かしたいけど、画像の保存先は大容量のHDD」にしたい場合。
まず、F:\stable-diffusion-webui\outputs フォルダを削除してから、コマンドプロンプトを管理者権限で起動し、以下のコマンドを実行します。
mklink /D F:\stable-diffusion-webui\outputs D:\StableDiffusion-outputs
PowerShellの場合は、以下のコマンドを実行します。
New-Item -Value 'D:\StableDiffusion-outputs' -Path 'F:\stable-diffusion-webui' -Name outputs -ItemType SymbolicLink
すると、F:\stable-diffusion-webui\outputs というフォルダがシンボリックリンクとして作成されます。
フォルダはFドライブにあるように見えますが、実体はDドライブにありますので、画像の出力先はDドライブの「StableDiffusion-outputs」を指定したことと同じ状態です。
本体は複数、出力先は一ヶ所
StableDiffusionの本体1「F:\stable-diffusion-webui-1」
StableDiffusionの本体2「F:\stable-diffusion-webui-2」
StableDiffusionの本体3「F:\stable-diffusion-webui-3」
画像保存先「D:\StableDiffusion-outputs」
であることと仮定して、2番の「用途別に本体は複数あり、画像の保存先は一ヶ所にまとめたい」場合。
まず、それぞれの出力先フォルダ
F:\stable-diffusion-webui-1\outputs
F:\stable-diffusion-webui-2\outputs
F:\stable-diffusion-webui-3\outputs
を削除してから、コマンドプロンプトを管理者権限で起動し、以下のコマンドを順番に実行します。
mklink /D F:\stable-diffusion-webui-1\outputs D:\StableDiffusion-outputs
mklink /D F:\stable-diffusion-webui-2\outputs D:\StableDiffusion-outputs
mklink /D F:\stable-diffusion-webui-3\outputs D:\StableDiffusion-outputs
PowerShellの場合は、以下のコマンドを実行します。
New-Item -Value 'D:\StableDiffusion-outputs' -Path 'F:\stable-diffusion-webui-1' -Name outputs -ItemType SymbolicLink
New-Item -Value 'D:\StableDiffusion-outputs' -Path 'F:\stable-diffusion-webui-2' -Name outputs -ItemType SymbolicLink
New-Item -Value 'D:\StableDiffusion-outputs' -Path 'F:\stable-diffusion-webui-3' -Name outputs -ItemType SymbolicLink
すると、Fドライブの各本体の置き場所に、outputs というフォルダがシンボリックリンクとして作成されます。
いずれのフォルダもFドライブにあるように見えますが、実体はDドライブにありますので、画像の出力先はDドライブの「StableDiffusion-outputs」を指定したことと同じ状態です。
モデルも共用できる
同様に、用途別にStableDiffusionをいくつか使用しているけれども、本体1のモデルを本体2と本体3で共用したい、という場合。
StableDiffusionの本体1「F:\stable-diffusion-webui-1」
StableDiffusionの本体2「F:\stable-diffusion-webui-2」
StableDiffusionの本体3「F:\stable-diffusion-webui-3」
であることと仮定して、まず、本体2と本体3のモデルデータのフォルダ
F:\stable-diffusion-webui-2\models\Stable-diffusion
F:\stable-diffusion-webui-3\models\Stable-diffusion
を削除してから、コマンドプロンプトを管理者権限で起動し、以下のコマンドを順番に実行します。
mklink /D F:\stable-diffusion-webui-2\models\Stable-diffusion F:\stable-diffusion-webui-1\models\Stable-diffusion
mklink /D F:\stable-diffusion-webui-3\models\Stable-diffusion F:\stable-diffusion-webui-1\models\Stable-diffusion
PowerShellの場合は、以下のコマンドを実行します。
New-Item -Value 'F:\stable-diffusion-webui-1\models\Stable-diffusion' -Path 'F:\stable-diffusion-webui-2\models' -Name Stable-diffusion -ItemType SymbolicLink
New-Item -Value 'F:\stable-diffusion-webui-1\models\Stable-diffusion' -Path 'F:\stable-diffusion-webui-3\models' -Name Stable-diffusion -ItemType SymbolicLink
すると、本体2と本体3のmodelsの下に、Stable-diffusion というフォルダがシンボリックリンクとして作成されます。
どちらも本体2、本体3のmodelsの下にあるように見えますが、実体は本体1のフォルダ配下にありますので、本体1にインストールしたモデルデータを本体2と本体3でも使用できるようになります。
VAEやLoRAなども含めて共用したい場合は、modelsフォルダをシンボリックリンクにしてしまっても良さそうです。
さいごに
StableDiffusionの本体をSSDに置いておくと、起動時やモデルデータ(Checkpoint)の読み込みが速くなって快適さが上がりますが、読み書き速度があまり関係ない画像データを大量生成する場合は、出力先をSSDよりHDDにしたい、という方が多いのではないかと思います。
また、モデルデータ(Checkpoint)、VAE、LoRAなどはいずれもファイルサイズが大きいものが多いため、用途別にStabeDiffusion本体を複数インストールしている場合は、共用してしまえば容量削減になりそうです。
StableDiffusionの起動スクリプトファイルでも各ファイルの置き場所などは指定できるので、スクリプトで指定するか、シンボリックリンクを使うかは、お好みに合わせてどうぞ。
ちなみに、シンボリックリンクを元のフォルダに戻したい場合は、作成したシンボリックリンクを右クリックして「削除」、またはシンボリックリンクを選択した状態でDelキー、もしくはゴミ箱へ放り込む等で削除し、新規にフォルダを作成し直せばOK。
シンボリックリンクのリンク先を間違えてしまった場合も、シンボリックリンクをいったん削除して、作り直せばOKです。
ということで、今日はシンボリックリンクを使って画像保存先を統一する方法と、モデルデータ等を共用する方法のメモメモでした。
お疲れ様でした!
コメント