
使い始めたころ、ちょくちょくトラブルに悩まされましたが、最近はトラブルらしいトラブルもなく安定している…ように思えた Stability Matrix ですが、久々にトラブルに見舞われました。
昨今は、AUTOMATIC1111 版の Stable Diffusion WebUI の他に、Comfy UI 、Stable Diffusion WebUI Forge に加えて、Stable Diffusion WebUI reForge もインストールして、主には reForge と Comfy UI をメインに使っています。
ほぼメインのデスクトップ上で使っていて、予備機の方には Stability Matrix をインストールだけして、パッケージのアップデートは、気が向いたときにしか行っていなかったのですが…
Forge/reForge のアップデートに失敗
ある日、久々に予備機の方の Forge や reForge でアップデートをかけてみると失敗しました。
使うたびにとは言いませんが、定期的にアップデートをかけてるメインのデスクトップは、普通にアップデート出来ているのにもかかわらずです。
詳しくそのエラーの内容を見てみると…
error: unable to create file embeddings/Place Textual Inversion embeddings here.txt: No such file or directory
などというエラーが出ていました。
トラブルの元となっていたことは単純で、すぐ判明しました。 reForge がインストールされているディレクトリを、エクスプローラで開いてみると、その直下に embeddings というディレクトリがあって、これはどこかへのリンクで、クリックしてみると、リンク先がなくなっていたようです。
シンボリックリンクではなくジャンクション
今回はパッケージファイルのあるディレクトリ直下の embeddings ディレクトリと、models ディレクトリ配下の text_encoder ディレクトリのジャンクションが壊れていたので、これを修復すれば良いというめどは付きました。
しかし、修復前によく調べてみると Stability Matrix では各パッケージで、モデルデータなどを共有することができ、これを実現するために「モデルの共有」で symlink をチェックするのですが、これで作成されるリンクは、「シンボリックリンク」ではなく「ジャンクション」なんです。
その違いについては下記の記事をご一読ください。
Windowsのシンボリックリンクとジャンクションとハードリンクの違い困ったことに、エクスプローラなど GUI からは、ジャンクションであることを判別できない上に、削除は出来ても作成は出来ません。
コマンドプロンプトを開いて dir コマンドではじめて <JUNCTION> と表示されます。作成もコマンドプロンプトから、例えば embeddings を作成するなら
mklink /j embeddings 【リンク先のディレクトリ(フルパス)】
上記のように、ジャンクションの作成には /j オプションが必要です。
ちなみに embeddings ディレクトリのリンク先は、作成できずにエラーとなっているファイル「Place Textual Inversion embeddings here.txt」を探すと、Stability Matrix をインストールしたディレクトリ直下の Data ディレクトリの下、Model/Embeddings にあります。同様に text_encoder ディレクトリのリンク先を探してみると、Model/TextEncoders で良いようです。
※注:いずれもポータブルモードで Stability Matrix をインストールした場合です。
これで手動解決!
このようにリンクを作り直すと、無事、Forge も reForge も、何事もないようにアップデート出来るようになりました。
そもそもどのタイミングで、何がトリガーで、このトラブルが発生したのかはわかりませんし、もっとスマートな解決方法があるかも知れません。
…が、力業も覚えておけば、今後何らかの役にたつ…かも w