cannot import name 'SAFE_WEIGHTS_NAME'
とかいうエラーが出ちゃった…AIに絵を描かせる画像生成システム StableDiffusion。
自宅のPCでも利用できて便利だが、GitHubに置かれているソースコードを設定して初回実行したときにうまく動かないことがある。
そのときに出るエラーがコレ。
cannot import name 'SAFE_WEIGHTS_NAME' from 'transformers.utils'
インポートエラーに見えるが、どこに原因があるかわからない。
一体何を修正すればよいのか。
そこで今回はStableDiffusionで「cannot import name 'SAFE_WEIGHTS_NAME'」が出る理由について解説する。
この記事を書いている人
記事を読むメリット
StableDiffusionで「cannot import name 'SAFE_WEIGHTS_NAME'」が出る理由がわかり、StableDiffusionの設定で困らなくなる。
StableDiffusionで「cannot import name 'SAFE_WEIGHTS_NAME'」が出る現象
まずStableDiffusionで「cannot import name 'SAFE_WEIGHTS_NAME'」が出のはどういう現象なのか。
エラーが出るのはStableDiffusionを実行するための
コードをダウンロードして以下のバッチファイルから実行するときだろう。
SD HighRam RunStableDiffusion.bat
SD LowRam RunStableDiffusion.bat
cannot import name 'SAFE_WEIGHTS_NAME'
ってエラーが出るんですよね…importエラーのようだが何が問題なのか。
StableDiffusionで「cannot import name 'SAFE_WEIGHTS_NAME'」が出る理由
StableDiffusionでcannot import name 'SAFE_WEIGHTS_NAME'が出る理由、それはモジュールのバージョンが合ってないから。
エラーメッセージが以下の通り
cannot import name 'SAFE_WEIGHTS_NAME' from 'transformers.utils'
transformers.utils
の中に SAFE_WEIGHTS_NAME
が居ないのが問題である。
なので transformers.utils
を更新する。
やり方としては以下のコマンドを実行する。
pip install --upgrade transformers
他にも方法がある。
environment.yaml
の
"diffusers"
を
"diffusers==0.12.1"
に変更してから以下コマンドを実行する。
conda env update -f environment.yaml
これでもエラーを解消できる。
まとめ
今回はStableDiffusionで「cannot import name 'SAFE_WEIGHTS_NAME'」が出る理由について解説した。
StableDiffusionで「cannot import name 'SAFE_WEIGHTS_NAME'」が出る理由としては、モジュールのバージョンが合っていないから。
transformers
または diffusers
のバージョンを変更するとエラーを回避できる。
他にもソフトウェア関連の記事もあるので、もし気になるものがあれば見てみて欲しい。