Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

tensorflow 2.16.1 環境でのエラー #21

Closed
Zuntan03 opened this issue Mar 16, 2024 · 6 comments · Fixed by #22
Closed

tensorflow 2.16.1 環境でのエラー #21

Zuntan03 opened this issue Mar 16, 2024 · 6 comments · Fixed by #22

Comments

@Zuntan03
Copy link

先週リリースされた tensorflow 2.16.1 環境で、WebUI の起動時に以下のエラーが発生します。

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

    Traceback (most recent call last):
      File "C:\SdxlWebUi\stable-diffusion-webui-forge\modules\scripts.py", line 544, in load_scripts
        script_module = script_loading.load_module(scriptfile.path)
      File "C:\SdxlWebUi\stable-diffusion-webui-forge\modules\script_loading.py", line 10, in load_module
        module_spec.loader.exec_module(module)
      File "<frozen importlib._bootstrap_external>", line 883, in exec_module
      File "<frozen importlib._bootstrap>", line 241, in _call_with_frames_removed
      File "C:\SdxlWebUi\stable-diffusion-webui-forge\extensions\sd-danbooru-tags-upsampler\scripts\dart_upsampler.py", line 16, in <module>
        from dart.generator import DartGenerator
      File "C:\SdxlWebUi\stable-diffusion-webui-forge\extensions\sd-danbooru-tags-upsampler\dart\generator.py", line 15, in <module>
        from optimum.onnxruntime import ORTModelForCausalLM
      File "<frozen importlib._bootstrap>", line 1075, in _handle_fromlist
      File "C:\SdxlWebUi\venv-forge\lib\site-packages\transformers\utils\import_utils.py", line 1076, in __getattr__
        module = self._get_module(self._class_to_module[name])
      File "C:\SdxlWebUi\venv-forge\lib\site-packages\transformers\utils\import_utils.py", line 1088, in _get_module
        raise RuntimeError(
    RuntimeError: Failed to import optimum.onnxruntime.modeling_decoder because of the following error (look up to see its traceback):
    Failed to import transformers.modeling_tf_utils because of the following error (look up to see its traceback):
    No module named 'keras.__internal__'

WebUI(forge) の venv で
pip install tensorflow==2.16.1
と tensorflow を更新するとエラーが発生します。

pip install tensorflow==2.15.1
としたり、拡張機能を無効にするとエラーは発生しません。

現在forgeを新規インストールすると、デフォルトでは tensorflow 2.16.1 になるようです。

@p1atdev
Copy link
Owner

p1atdev commented Mar 17, 2024

報告ありがとうございます。

どうやら webui でインストールされる transformers 4.30.2 では、tensorflow が入っている際に keras.__internal__ を読み込むのですが、tensorflow 2.16.1 では keras 3 以上 を要求しており、この keras 3 では keras.__itnernal__ がなくなってしまっているためにエラーになっているようです。

Transformers 4.30.2 が keras.__internal__ を呼び出している部分:
https://github.com/huggingface/transformers/blob/66fd3a8d626a32989f4569260db32785c6cbf42a/src/transformers/modeling_tf_utils.py#L74-L77

関連:

transformers バージョンが 4.31.0 (4.30.2 の次のバージョン) 以上にすることで解消されると思われますが、webui 側が 4.30.2 を要求しているため、それを上書きしてしまうのはどんな影響が出るかわからないため少し避けたいところです。

tensorflow がインストールされている場合に自動で 2.15.1 にダウングレードするように対応することでエラーを回避できそうです。tensorflow については forge, AUTOMATIC1111 の両方手元で確認した限りでは自動でインストールされることはなかったため、他の拡張機能の要求の可能性があります。ただ、今まで 2.15.1 で動いていたものが多いと思うため、このように対処しても大きな問題が出ることはないように思われます。

webui の要求 transformers バージョンが上がるまでの一時的な対処にはなりますが、このように対応してみたいと思います。

p1atdev added a commit that referenced this issue Mar 17, 2024
@p1atdev
Copy link
Owner

p1atdev commented Mar 17, 2024

dev ブランチで対応してみたので、試していただけると幸いです。

@Zuntan03
Copy link
Author

Zuntan03 commented Mar 17, 2024

tensorflow 2.16.1 の forge 環境に対して sd-danbooru-tags-upsampler を dev ブランチにしてみたところ、以下のエラーメッセージが表示され、tensorflow が 2.16.1 のままになりました。
WebUIの起動前に set VENV_DIR=C:\test\SdxlWebUi\venv-forge を指定しています。

*** Error running install.py for extension C:\test\SdxlWebUi\stable-diffusion-webui-forge\extensions\sd-danbooru-tags-upsampler.
*** Command: "C:\test\SdxlWebUi\venv-forge\Scripts\python.exe" "C:\test\SdxlWebUi\stable-diffusion-webui-forge\extensions\sd-danbooru-tags-upsampler\install.py"
*** Error code: 1
*** stderr: Traceback (most recent call last):
***   File "C:\test\SdxlWebUi\stable-diffusion-webui-forge\extensions\sd-danbooru-tags-upsampler\install.py", line 16, in <module>
***     show_result = launch.run("pip show tensorflow")
***   File "C:\test\SdxlWebUi\stable-diffusion-webui-forge\modules\launch_utils.py", line 124, in run
***     raise RuntimeError("\n".join(error_bits))
*** RuntimeError: Error running command.
*** Command: pip show tensorflow
*** Error code: 1
*** stderr: WARNING: Package(s) not found: tensorflow
***

コマンドプロンプトで C:\test\SdxlWebUi\venv-forge\Scripts\activate した状態で、pip show tensorflow を実行すると以下のように正常に実行されていました。

(venv-forge) C:\test\SdxlWebUi>pip show tensorflow
Name: tensorflow
Version: 2.16.1
Summary: TensorFlow is an open source machine learning framework for everyone.
Home-page: https://www.tensorflow.org/
Author: Google Inc.
Author-email: [email protected]
License: Apache 2.0
Location: w:\zzz\sdxlwebui\venv-forge\lib\site-packages
Requires: tensorflow-intel
Required-by:

コマンドプロンプトで C:\test\SdxlWebUi\venv-forge\Scripts\activate していない状態で pip show tensorflow を実行すると stderr が一致しました。
venv 外の素の python には tensorflow をインストールしていない状態です。

C:\test>pip show tensorflow
WARNING: Package(s) not found: tensorflow

@p1atdev
Copy link
Owner

p1atdev commented Mar 17, 2024

ダウングレード処理が間違った環境で実行されていたみたいです...

webui 環境と同じ環境で処理されるように修正してみたので、再度お試しください。

@Zuntan03
Copy link
Author

devブランチで正常に tensorflow 2.15.1 にダウングレードされるのを確認いたしました。
対応、ありがとうございます。

@RubTalha
Copy link

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

Successfully merging a pull request may close this issue.

3 participants