SDWebUIA1111

【Stable Diffusion】モデルデータを別のディレクトリから読み込む方法!シンボリックリンクやコマンドライン引数の使い方

使用モデル:https://huggingface.co/dreamlike-art/dreamlike-anime-1.0

Stable Diffusionのモデルデータはどれも数GBの容量を必要とするため、ストレージがすぐいっぱいになってしまいます。

「モデルデータを移して別のディレクトリから取り込めたら…」と思ったことはないでしょうか?

シンボリックリンクやコマンドライン引数を使えば、モデルデータを別のディレクトリから取り込むことができます。

今回は別のディレクトリからモデルデータを取り込む方法について、詳しく解説します。

ストレージを分けて余裕を持たせたいという方は、ぜひ参考にしてみてください。

こんな方におすすめ
  • モデルデータを別のディレクトリに移したい
  • 移したディレクトリからモデルデータを取り込みたい
  • ストレージに余裕を持たせたい

なお、まだStable Diffusionをインストールしていない方は、以下の記事を参考にしてみてください。

今回シンボリックリンクの作成については、こちらの記事を参考にさせていただきました。

https://yuuyuublog.org/sd_symboliclink/

Stable Diffusionのモデルデータを別のディレクトリから取り込む方法は?

モデルデータを別のディレクトリに移してから取り込むには以下の方法があります。

  • シンボリックリンク
  • コマンドライン引数で指定

シンボリックリンクとは?

シンボリックリンクはファイルやディレクトリを参照するための仮想リンクです。

通常Stable Diffusionではモデルを"stable-diffusion-webui\models\Stable-diffusion"に入れて使用します。

ただストレージの容量によって、モデルデータを別のストレージに移したい場合もあります。

そんなときに便利なのがこの「シンボリックリンク」です。

モデルデータを別のディレクトリに移動しても仮想リンクから読み込むことができ、ストレージに余裕を持たせることが可能です。

コマンドライン引数とは?

コマンドライン引数はStable Diffusionを起動するときに、動作を制御するパラメータを設定できるものです。

例えばStable Diffusionの外観を変えたり、VRAMのパフォーマンスを調整したりするパラメータがあります。

その中にディレクトリを指定できるものもあり、コマンドライン引数を使えば別のディレクトリからモデルデータが読み込めます。

Stable Diffusionのモデルをシンボリックリンクで読み込む方法

まずモデルデータを別のディレクトリに移動させます。

今回はDドライブ直下に「modeldata」というディレクトリを作成して、その中に全てのモデルデータを入れました。

次に元々モデルデータがあったmodelsの中にある「Stable-diffusion」のディレクトリを削除します。

これは同じ名前のディレクトリがあると、シンボリックリンクが作成できないためです。

何らかの理由で失敗しても、modelsの中にStable-diffusionというディレクトリを作り、その中にモデルデータを入れれば元に戻せます。心配な方はバックアップを取って進めてください。

Windowsの検索から「cmd」と入力して、管理者権限でコマンドプロンプトを開きます。

コマンドプロンプトに以下のコマンドを入力します。

mklink /D "元々モデルデータがあったディレクトリのパス" "モデルデータを移した新しいディレクトリのパス"

赤文字が元のディレクトリのパス、青文字が新しいディレクトリのパスです。

私の場合だと以下のようになります。

mklink /D "C:\Users\ユーザー名\デスクトップ\stable-diffusion-webui\models\Stable-diffusion" "D:\modeldata"

保存している場所によって異なるため、お使いの環境に合わせてそれぞれ書き換えてください。

これで実行すると"D:\modeldata"へのシンボリックリンクが作成され、modeldataからモデルを読み込むことができます。

作成されたシンボリックリンクのプロパティを見て、リンク先がモデルデータを入れたディレクトリになっていれば正しく設定できています。

この状態でStable Diffusionを起動し、モデルデータが読み込めていれば完了です。

Stable Diffusionのコマンドライン引数でモデルのディレクトリを指定する方法

まず\stable-diffusion-webui\models\Stable-diffusion"の中のモデルデータを別のディレクトリに移動させます。

こちらではEドライブにmodeldataというディレクトリを作成して、その中にモデルデータを入れました。

次にバッチファイルを右クリックして編集を開き、コマンドライン引数でディレクトリを指定します。

指定方法は簡単で、以下のように入力するだけです。

set COMMANDLINE_ARGS=--ckpt-dir="E:\modeldata"

青字がディレクトリを指定するコマンドライン引数、赤字がモデルデータを入れた新しいディレクトリのパスです。

お使いの環境に合わせて書き換えてください。

実際に入力するとこんな感じです。

この状態でバッチファイルを起動して、モデルデータが読み込めていれば正しく指定できています。

実際にモデルデータを移動した状態でも、画像生成ができました。

Stable Diffusionのモデルデータを保存するならSSDがおすすめ

シンボリックリンクの方はDドライブ(HDD)に移して試したのですが、Stable Diffusionの起動時にモデルデータを読み込むのが若干遅く感じられました。

正確に速度を測ったわけではないので体感ではありますが、可能な限り快適な環境で動かしたい方はSSDがおすすめです。

現在は内臓SSDなら1TBで1万円切っているものもあり、外付けSSDでも1万円ちょっとで買えるものがあります。

内臓SSD

[amazon asin="B09NQJMW28" kw="SanDisk サンディスク 内蔵 SSD PLUS 1TB 2.5インチ SATA (読み出し最大 535MB/s 書込み最大 350MB/s) PC メーカー保証3年 SDSSDA-1T00-G27"]

[amazon asin="B077PSMJZS" kw="Crucial SSD 1000GB MX500 内蔵2.5インチ 7mm MX500 (9.5mmスペーサー付属) 5年保証 【PlayStation4 動作確認済】 正規代理店保証品 CT1000MX500SSD1/JP"]

外付けSSD

[amazon asin="B08N4JHGJL" kw="【Amazon.co.jp限定】バッファロー SSD 外付け 1.0TB 超小型 コンパクト ポータブル PS5/PS4対応(メーカー動作確認済) USB3.2Gen1 ブラック SSD-PUT1.0U3-B/N"]

[amazon asin="B0BM3QLD9M" kw="【Amazon.co.jp限定】バッファロー SSD 外付け 1TB USB3.2 Gen2 Type‐C 最大読出速度1050MB/秒 防塵防滴 IP55 耐衝撃 MIL‐STD ポータブル【Windows MacOS ChromeOS PS4 PS5 メーカー動作確認済み】SSD-PHP1.0U3BA/N"]

Stable Diffusionのモデルデータを別のディレクトリから読み込む方法まとめ

今回はモデルデータを別のディレクトリから読み込む方法について、解説しました。

まとめ
  • シンボリックリンクとは?
  • コマンドライン引数とは?
  • シンボリックリンクでモデルデータを読み込む方法
  • コマンドライン引数でディレクトリを指定する方法
  • モデルデータはSSDに保存がおすすめ

モデルデータを別のディレクトリから読み込ませれば、ストレージに余裕を持たせることができます。

余裕があるストレージにモデル専用のディレクトリを作成しておけば、より多くのモデルを使用して画像生成が楽しめるかもしれません。

お使いの環境でストレージに不安がある場合は、シンボリックリンクやコマンドライン引数でディレクトリを指定してみてください。

-SDWebUIA1111
-,