ジャコ Lab

プログラミング関連のメモ帳的ブログです

ModelIDじゃなくて .safetensors を指定する方法

zako-lab929.hatenablog.com

上記の記事で、
いつもの from_pretrained() ではなく from_single_file() を使いましたが、
追加で pip module が必要だったのでメモを残しておきます。

ModelID ではなく、.safetensors を指定するには?

通常、は以下のように ModelId を第一引数に指定していれば簡単に使えます。

from diffusers import StableDiffusionPipeline

modelId = "lykon/AnyLoRA"
pipe = StableDiffusionPipeline.from_pretrained(modelId)

今回は、リポジトリ直下にある AnyLoRA_bakedVae_ftmse_fp16_NOTpruned.safetensors のファイルを使いたかった感じです。使い方はそのまんまでリポジトリ上で該当のファイルにアクセスしたときの URL をコピペするだけ!diffusers 凄い!というよりも Hugging Face 同士で使いやすい!

from diffusers import StableDiffusionPipeline

modelUrl = "https://huggingface.co/Lykon/AnyLoRA/blob/main/AnyLoRA_bakedVae_ftmse_fp16_NOTpruned.safetensors"
pipe = StableDiffusionPipeline.from_single_file(modelUrl
これを実行すると恐らく以下のエラーが出ていると思います
ValueError: 
{0} requires the omegaconf library but it was not found in your environment. You can install it with pip: `pip install omegaconf`

ということで、omegaconf ってものが必要らしいです。

pip モジュール追加!

!pip install omegaconf
後から入れ直してもダメかもしれない?
上記の pip install を実行した後にもう一度実行してみましたが同じエラー...
しかし、ランタイムを再起動してイチから pip install したら動きました。

まとめ

!pip install -U diffusers["torch"] transformers accelerate omegaconf

と、使わないにしても、最初から入れてしまっておくのがよさそう