こんにちは。カルークです。今日はStable DiffusionのWeb UIを立ち上げようとした時にエラーが発生したので、その解決策について備忘録を残します。
実行環境
サービス:Paperspace
※ Paperspaceは、クラウドベースのコンピューティングサービスを提供するプラットフォームです。
マシンスペック: Free-P5000 (有料8ドル/月のプラン以上が必要)
Web UI立ち上げ用のスクリプトテンプレート
javacommonsさんの、こちらのテンプレートを使わせて頂きました。(2024.05.22時点でのスクリプトを利用)
エラー内容
エラーは(3)のWeb UI起動(以下のスクリプト)の実行時に起こりました。
#(3) WebUI起動
!apt update
!apt -y install python3.10
!apt -y install libpython3.10-dev
!apt -y install build-essential
!apt -y install ffmpeg
!curl -sS https://bootstrap.pypa.io/get-pip.py | python3.10
!python3.10 -m pip install setuptools==69.5.1 -U
!python3.10 -m pip install torch==2.1.2 torchvision==0.16.2 torchaudio==2.1.2 torchdata==0.7.1 torchtext==0.16.2+cpu xformers==0.0.23.post1 --index-url https://download.pytorch.org/whl/cu121 -U
!python3.10 -m pip install httpx==0.24.1
#!python3.10 -m pip install insightface -U
!python3.10 -m pip install matplotlib -U
!python3.10 -m pip install ipython -U
from IPython import get_ipython
get_ipython().run_line_magic('matplotlib', 'inline')
%cd /notebooks/stable-diffusion-webui
!python3.10 launch.py --xformers --enable-insecure-extension-access --share --gradio-queue
エラーは以下の通り。(エラー箇所を抜粋)
WARNING: Running pip as the 'root' user can result in broken permissions and conflicting behaviour with the system package manager. It is recommended to use a virtual environment instead: https://pip.pypa.io/warnings/venv
/notebooks/stable-diffusion-webui
Python 3.10.12 (main, Nov 20 2023, 15:14:05) [GCC 11.4.0]
Version: v1.9.3
Commit hash: 2c1a0c4c26a78c12195edc7f8ak02f5c03fca8c0
Launching Web UI with arguments: --xformers --enable-insecure-extension-access --share --gradio-queue
reading metadata for /notebooks/stable-diffusion-webui/models/Stable-diffusion/anything-v3-fp16-pruned.safetensors: AssertionError
Traceback (most recent call last):
File "/notebooks/stable-diffusion-webui/modules/sd_models.py", line 75, in __init__
self.metadata = cache.cached_data_for_file('safetensors-metadata', "checkpoint/" + name, filename, read_metadata)
File "/notebooks/stable-diffusion-webui/modules/cache.py", line 114, in cached_data_for_file
value = func()
File "/notebooks/stable-diffusion-webui/modules/sd_models.py", line 67, in read_metadata
metadata = read_metadata_from_safetensors(filename)
File "/notebooks/stable-diffusion-webui/modules/sd_models.py", line 282, in read_metadata_from_safetensors
assert metadata_len > 2 and json_start in (b'{"', b"{'"), f"{filename} is not a safetensors file"
AssertionError: /notebooks/stable-diffusion-webui/models/Stable-diffusion/anything-v3-fp16-pruned.safetensors is not a safetensors file
Loading weights [e3b0c44298] from /notebooks/stable-diffusion-webui/models/Stable-diffusion/anything-v3-fp16-pruned.safetensors
loading stable diffusion model: SafetensorError
Traceback (most recent call last):
File "/usr/lib/python3.10/threading.py", line 973, in _bootstrap
self._bootstrap_inner()
File "/usr/lib/python3.10/threading.py", line 1016, in _bootstrap_inner
self.run()
File "/usr/lib/python3.10/threading.py", line 953, in run
self._target(*self._args, **self._kwargs)
File "/notebooks/stable-diffusion-webui/modules/initialize.py", line 149, in load_model
shared.sd_model # noqa: B018
File "/notebooks/stable-diffusion-webui/modules/shared_items.py", line 175, in sd_model
return modules.sd_models.model_data.get_sd_model()
File "/notebooks/stable-diffusion-webui/modules/sd_models.py", line 620, in get_sd_model
load_model()
File "/notebooks/stable-diffusion-webui/modules/sd_models.py", line 705, in load_model
state_dict = get_checkpoint_state_dict(checkpoint_info, timer)
File "/notebooks/stable-diffusion-webui/modules/sd_models.py", line 330, in get_checkpoint_state_dict
res = read_state_dict(checkpoint_info.filename)
File "/notebooks/stable-diffusion-webui/modules/sd_models.py", line 304, in read_state_dict
pl_sd = safetensors.torch.load_file(checkpoint_file, device=device)
File "/usr/local/lib/python3.10/dist-packages/safetensors/torch.py", line 308, in load_file
with safe_open(filename, framework="pt", device=device) as f:
safetensors_rust.SafetensorError: Error while deserializing header: HeaderTooSmall
原因と解決策
Launching Web UIの直後、
reading metadata for /notebooks/stable-diffusion-webui/models/Stable-diffusion/anything-v3-fp16-pruned.safetensors: AssertionError
のAssertion Errorが起きています。つまり、”anything-v3-fp16-pruned.safetensors”がちゃんと読み込めていないように思いました。(通信エラーに起因?)
ということで、一旦、このファイルを削除してからもう一度実行してみます。
画面左にある”Terminals”をクリックすると画面下部にターミナルが出現するので、コマンド入力できるようになります。
ターミナルに以下のコマンドコピペし、エンターキーで実行します。
rm /notebooks/stable-diffusion-webui/models/Stable-diffusion/anything-v3-fp16-pruned.safetensors
もう一度、「(3) WebUI起動」のスクリプトをRUNします。
出力結果は以下です。
(以上、省略)
Requirement already satisfied: pure-eval in /usr/local/lib/python3.10/dist-packages (from stack-data->ipython) (0.2.2)
Requirement already satisfied: six>=1.12.0 in /usr/lib/python3/dist-packages (from asttokens>=2.1.0->stack-data->ipython) (1.16.0)
WARNING: Running pip as the 'root' user can result in broken permissions and conflicting behaviour with the system package manager. It is recommended to use a virtual environment instead: https://pip.pypa.io/warnings/venv
/notebooks/stable-diffusion-webui
Python 3.10.12 (main, Nov 20 2023, 15:14:05) [GCC 11.4.0]
Version: v1.9.3
Commit hash: 4d0aac4c2tf7ac42095abc7f8af82f5c04faa8c0
Launching Web UI with arguments: --xformers --enable-insecure-extension-access --share --gradio-queue
Calculating sha256 for /notebooks/stable-diffusion-webui/models/Stable-diffusion/braBeautifulRealistic_brav5.safetensors: Running on local URL: http://127.0.0.1:7860
Running on public URL: https://xxxxxxxxxxxxx.gradio.live # URLリンクは伏せ字にしました
(以下、省略)
Running on public URLが表示されました。解決!
まとめ
今回は、Stable DiffusionのWeb UIを立ち上げる時に発生したエラーとその解決策についてまとめました。原因は、”anything-v3-fp16-pruned.safetensors”が読み込めていないことに起因しするように思いました。一旦、関連するディレクトリを削除してから再実行したら解決しました。