見出し画像

WD14 Taggerインストール後、reForge更新で起動不能になった

2026/4/7更新:この記事の問題に対策した拙作のforkについて追記
2026/3/26更新:tensorflow 2.21.0ではprotobuf 3.20.0でも動作することを追記
2026/3/4更新:Forge Neoでも発生することを追記
2026/3/2更新:Stability Matrixと--skip-installの影響、およびエラー発生条件を追記
2026/3/2更新:タイトルを変更(旧タイトル:A1111系WebUIとWD14 Tagger間のprotobufバージョン矛盾、起動不能エラーと対策)


約1週間前にメイン環境のreForgeをStability Matrixで再構築したのですが、昨日reForgeを更新したところ起動しなくなってしまいました。調べてみるとA1111系WebUIとWD14 Tagger間のprotobufバージョン矛盾が根本にあることが分かったので詳細と対策をメモとして記しておきます。

2026/3/2追記:
発生には細かい条件があり、A1111系WebUIでWD14 Taggerを利用するすべてのユーザーでエラーが発生するわけではありません。Stability MatrixでreForgeを利用しており2025/8/14以降にWD14 Taggerをインストールした人は遭遇確率が高いと思います。


エラーの内容

エラーメッセージは以下のとおりです。
メッセージ全体だと長いため最後の直接原因だけ貼っています。

The above exception was the direct cause of the following exception:

Traceback (most recent call last):
  File "C:\reForge\launch.py", line 51, in <module>
    main()
  File "C:\reForge\launch.py", line 47, in main
    start()
  File "C:\reForge\modules\launch_utils.py", line 549, in start
    import webui
  File "C:\reForge\webui.py", line 19, in <module>
    initialize.imports()
  File "C:\reForge\modules\initialize.py", line 39, in imports
    from modules import paths, timer, import_hook, errors  # noqa: F401
  File "C:\reForge\modules\paths.py", line 60, in <module>
    import sgm  # noqa: F401
  File "C:\reForge\repositories\generative-models\sgm\__init__.py", line 1, in <module>
    from .models import AutoencodingEngine, DiffusionEngine
  File "C:\reForge\repositories\generative-models\sgm\models\__init__.py", line 1, in <module>
    from .autoencoder import AutoencodingEngine
  File "C:\reForge\repositories\generative-models\sgm\models\autoencoder.py", line 12, in <module>
    from ..modules.diffusionmodules.model import Decoder, Encoder
  File "C:\reForge\repositories\generative-models\sgm\modules\__init__.py", line 1, in <module>
    from .encoders.modules import GeneralConditioner
  File "C:\reForge\repositories\generative-models\sgm\modules\encoders\modules.py", line 13, in <module>
    from transformers import (
  File "<frozen importlib._bootstrap>", line 1075, in _handle_fromlist
  File "C:\reForge\venv\lib\site-packages\transformers\utils\import_utils.py", line 1806, in __getattr__
    value = getattr(module, name)
  File "C:\reForge\venv\lib\site-packages\transformers\utils\import_utils.py", line 1805, in __getattr__
    module = self._get_module(self._class_to_module[name])
  File "C:\reForge\venv\lib\site-packages\transformers\utils\import_utils.py", line 1819, in _get_module
    raise RuntimeError(
RuntimeError: Failed to import transformers.models.clip.modeling_clip because of the following error (look up to see its traceback):
cannot import name 'runtime_version' from 'google.protobuf' (C:\reForge\venv\lib\site-packages\google\protobuf\__init__.py)

最終行からprotobufが原因であることが分かります。

エラーの直接原因

詳しく調べるとWD14 Taggerが必要とするtensorflowがさらにprotobufを必要としており、A1111系WebUIが前提としているprotobufのバージョンと矛盾していることが分かりました(Forge系でインストールされるonnxruntimeもprotobufを前提としていますがバージョン指定はありません)。

```mermaid

%%{init: { 
  'themeVariables': { 'commitLabelFontSize': '18px' }
} }%%

graph TD;
classDef class1 fill:#ffa23e,fill-opacity:0.5
classDef class2 fill:#7BCCAC,fill-opacity:0.5

A1111(A1111系WebUI):::class2 -->|前提| pb[protobuf<BR>※バージョン指定あり]:::class1;;
Tag(WD14 Tagger):::class2 -->|前提| tf[tensorflow<BR>※バージョン指定なし];
tf -->|前提| pb;
```

A1111系WebUIは起動時にmodules/launch_utils.pyにおいてpython環境がrequirements_fileに合致しているかチェックし、合致しない場合はpip install -r requirements_file --prefer-binaryを実行します。
それぞれが指定するrequirements_fileとprotobufのバージョンは以下のとおりです。ただしForge Classic / NeoではWD14 Taggerは動作しませんので、protobufのバージョン矛盾を気にする必要はありません。

$$
\begin{array}
{c|c|c}
\bf{ツール} & \bf{requirements\_file} & \bf{protobuf} \\
\hline
\text{A1111} & \text{requirements\_versions.txt} & \text{==3.20.0} \\
\text{Forge} \\
\text{reForge} \\
\hline
\text{Forge Classic} & \text{requirements.txt} & \text{==4.25.8} \\
\text{Forge Neo} \\
\end{array}
$$

一方、tensorflowが内部で要求するprotobufのバージョンは以下のとおりです("pip install tensorflow==バージョン --dry-run” で確認)。

$$
\begin{array}
{c|c}
\bf{tensorflow} & \bf{protobuf} \\
\hline
\text{2.20} & \text{>=5.28.0} \\
\hline
\text{2.18~2.19} & \text{!=4.21.0,!=4.21.1,!=4.21.2,!=4.21.3,!=4.21.4,!=4.21.5,<6.0.0dev,>=3.20.3} \\
\hline
\text{2.12~2.17} & \text{!=4.21.0,!=4.21.1,!=4.21.2,!=4.21.3,!=4.21.4,!=4.21.5,<5.0.0dev,>=3.20.3} \\
\hline
\text{2.11} & \text{<3.20,>=3.9.2} \\
\hline
\end{array}
$$

二つの表を見比べると、A1111, Forge, reForgeはprotobufのバージョンを3.20.0のみに限定していますが、tensorflowが要求するprotobufのバージョンに3.20.0はないため矛盾は避けられません。
実際にはtensorflow 2.19までprotobuf 3.20.0でもWD14 Taggerはエラー無く動作していたようですが、最新のtensorflow 2.20でついに動作しなくなってしまったようです。


2026/3/26追記:
2026/3/7にリリースされたtensorflow 2.21.0ではprotobuf 3.20.0でも動作するようなので、今後この問題は発生しないかもしれません。

エラー発生までの経緯

tensorflow 2.20.0がリリースされたのは2025/8/14なのでリリースされて半年以上経っていますが、私の環境では最近までtensorflow 2.19.0とprotobuf 3.20.0の組合せで問題なく動き続けていたようです。
約1週間前にreForgeの環境を再構築したため、その際のWD14 Taggerインストールでtensorflow 2.20.0とprotobuf 6.33.5(2026/1/30リリース)の組合せになり、昨日のreForge更新時に ”pip install -r requirements_versions.txt” したことでprotobufが3.20.0に戻されてエラーが発生したという流れのようです。

$$
\begin{array}
{c|c|c|c|c}
\bf{年月日} & \bf{イベント} & \bf{tensorflow} & \bf{protobuf} & \bf{動作} \\
\hline
\text{2025年4月頃} & \text{reForge} & \text{-} & \text{3.20.0} & \text{-} \\
& \text{インストール} \\
\hline
\text{2025年4月頃} & \text{WD14 Tagger} & \text{2.19.0} & \text{5.29.4} & \text{無問題?} \\
& \text{インストール} \\
\hline
\text{2025年4月頃} & \text{reForge更新} & \text{2.19.0} & \text{3.20.0} & \text{無問題} \\
\text{~2026/2/22} &\\
\hline
\text{2026/2/22} & \text{reForge} & \text{-} & \text{3.20.0} & \text{-} \\
& \text{インストール} \\
\hline
\text{2026/2/22} & \text{WD14 Tagger} & \text{2.20.0} & \text{6.33.5} & \text{無問題?} \\
\text{~2026/2/27} & \text{インストール} \\
\hline
\text{2026/2/27} & \text{reForge更新} & \text{2.20.0} & \text{3.20.0} & \text{起動不能} \\
\end{array}
$$

エラー発生条件(2026/3/2追記)

記事作成後に別のことを調べていて判明したのですが、実はエラー発生条件が限られていました。以下の条件①②③がすべて満足された場合にのみ起動不能になります。

  • 条件①:起動引数に--skip-installを設定している
    以下はStability Matrix v2.15.6における初期設定です。

    • A1111: --skip-install無効

    • Forge, reForge: --skip-install有効

    • Forge Classic / Neo: --skip-install項目なし

  • 条件②:webui-user.bat以外で "pip install -r requirements_file" を実行している
    以下は一例です。

    • コマンドプロンプトやターミナルを使って手動で実行

    • Stability Matrixを利用してパッケージを更新

  • 条件③:2025/8/14以降にWD14 Taggerをインストールした

条件①についてですが、A1111系WebUIはwebui-user.batで起動すると以下の順でrequirements_fileをチェックし、合致しない場合はそれぞれで "pip install -r requirements_file" によるインストールを実行します。
・インストールフォルダ直下のrequirements_file
・extensionsの各フォルダのrequirements_file

今回のケースでは毎回protobufを3.20.0にダウングレードし、その直後に6.33.5等へアップデートされる動作になります。
ただし起動引数に--skip-installを設定しているとチェックのみでインストールは実行されません。

条件②についてはComfyUI等ではユーザー自身が実行するものですが、A1111系WebUIは条件①に記載したとおりwebui-user.batでコントロールされるため本来は不要な手順です。

条件①②③をまとめると、Stability MatrixでreForgeを利用しており2025/8/14以降にWD14 Taggerをインストールした人が遭遇しやすいということになりますね。レアケースを引いてしまいました。


2026/3/4追記:詳細は調べていませんが、Forge Neoでも同じ原因で起動不能になることを確認しました。Forge NeoではWD14 Taggerは動作しませんので、余計なことはしないほうがよいです。

A1111系WebUIがprotobuf==3.20.0を前提にする理由

エラーの経緯で説明したとおり1年近くtensorflow 2.19.0とprotobuf 3.20.0の組合せで問題なく使っていたようなので、その環境に戻すのが最も確実だと思います。
しかしprotobuf 3.20.0がリリースされたのは2022/3/26なのでいくらなんでも古すぎます。なのでA1111系WebUIがrequirements_versions.txtでprotobufのバージョンを3.20.0に限定している理由を少し調べてみました。

A1111がprotobuf==3.20.0を前提にする理由

A1111がrequirements_versions.txtに ”protobuf==3.20.0” と追加したのはSD3対応のためのようです。もはやSD3を使うこともないので外しても構わないように思えます。

reForgeがprotobuf==3.20.0を前提にする理由

reForgeは ”protobuf==3.20.0” をいったん外したのですが、何らかの不具合があって戻した (Revert) ようです。
やはり "protobuf==3.20.0" にしておいたほうがよさそうです。

エラーの対策

結局tensorflowを2.20.0から2.19.1に戻して対策することにしました。
2.19.1にダウングレードする際にprotobuf 5.29.6がインストールされるため、protobufのダウングレード操作も必要です。

pip install tensorflow==2.19.1
pip install protobuf==3.20.0

pip checkで以下のようなメッセージが出力されますがとりあえず無視するしかありません。気になる人はprotobuf 3.20.3にするのもよいでしょう。ただしA1111やreForgeを更新してpip install -r requirements_versions.txtするたびにprotobuf 3.20.0に戻ってしまいますが。

> pip check
tensorflow 2.19.1 has requirement protobuf!=4.21.0,!=4.21.1,!=4.21.2,!=4.21.3,!=4.21.4,!=4.21.5,<6.0.0dev,>=3.20.3, but you have protobuf 3.20.0.

まとめ

reForgeを更新したら起動しなくなり、原因がWD14 Taggerとのprotobufバージョン矛盾によるものだったことについて記載しました。
A1111系WebUIが前提とするprotobuf 3.20.0が古すぎることが根本原因ですので、WD14 Tagger以外でもtensorflowやprotobufを必要とするExtensionがあれば同様の問題が発生するかもしれません。
今のところ問題として報告している人はほとんどいないようですがご参考まで。

このような感じで、あまり体系的に整理や理解されていない技術的な内容を分かりやすく無料で解説しています。「スキ」「フォロー」「チップ」で応援よろしくお願いします。

protobufバージョン競合の対策fork
(2026/4/7追記)

protobufのバージョン競合を起こさないよう、tensorflowを使わないWD14 Taggerのforkを作りました。起動不能になってこの記事に辿り着いた人はこのforkを試してみてください。

関連記事

いいなと思ったら応援しよう!