見出し画像

暫定版 How to fix Pytorch 2.6.0+cu126 to Adetailer on A1111(Compatible with Forge&reForge)&ComfyUI

2025年3月10日、遂にAdetailer拡張機能の更新が行われ、A1111系WebUIに関しては以下の問題は解決しました。只、本記事も、経過記録の観点から残しておきます。また現時点では、未だCpomfyUIのReactorでは継続して発生します。本記事を最後までよく読んでください。

下記事で触れていますが、Pytorch2.6.0+cu126を適用すると、A1111系WebUIでAdetailerがエラーを起こす問題ですが、

実は、上にも記載している通りDev版で既にエラーが出ていましたし、かつ、予告されていた事でもあるんですね。

気づいていた人もいると思いますが、既に2.5.1+cu124当時に将来のセキュリティ関係の仕様変更は予告されていたのです。

例えば、A1111では下記の警告が表示されていました。

C:\Users\ussoe\A1111\stable-diffusion-webui\modules\safe.py:156: FutureWarning: You are using `torch.load` with `weights_only=False` (the current default value), which uses the default pickle module implicitly. It is possible to construct malicious pickle data which will execute arbitrary code during unpickling (See https://github.com/pytorch/pytorch/blob/main/SECURITY.md#untrusted-models for more details). In a future release, the default value for `weights_only` will be flipped to `True`. This limits the functions that could be executed during unpickling. Arbitrary objects will no longer be allowed to be loaded via this mode unless they are explicitly allowlisted by the user via `torch.serialization.add_safe_globals`. We recommend you start setting `weights_only=True` for any use case where you don't have full control of the loaded file. Please open an issue on GitHub for any issues related to this experimental feature.
  return unsafe_torch_load(filename, *args, **kwargs)

この仕様変更によって、モデルロードに関して既存の機能において支障が出る事は予測出来て、かつ2.6.0Dev版で既に、Adetailerが正常にモデルロードが出来ずにエラーを起こす事はわかっていたのですが、残念ながら正式版でもこの問題は解決されなかったという事です。

で、昨日から一生懸命cursor先生と共に、Adetailer拡張機能をPytorch2.6.0に対応させるべく頑張っていたのですが…

結論から言うと、この視点からのアプローチは私のスキルでは無理でした。

Adetailer側のコードは、何をどう弄っても、Pytorch2.6.0におけるセキュリティチェックを突破することが出来なかったのです。

この問題の本質は、要するに2.6.0で強化された各種モデルに対するセキュリティチェックを、Adetailer拡張機能がクリア出来ない、という点です。

そこで、視点を変えました。

Adetailer側をPytorch2.6.0に合わせるのが無理ならば、pytorch側のセキュリティチェックを2.5.1と同レベルに戻してやれば良いのです。

で、実際に下図のように、Pytorch2.6.0+cu126環境下でAdetailerを完走させました。図はreForgeですが、A1111系全て共通です。

言うまでもなく、このアプローチは言うなれば邪道です。

しかし現時点では、こうする以外にありません。少なくとも、私のスキルでは。正道は、あくまでもAdetailer側を修正すべきなのです。

ともあれ、変更すべきファイルは、\venv\Lib\site-packages\torch\serialization.pyです。下は、2.5.1+cu124から抽出したファイですが、そのまま、2.6.0+cu126内の同ファイルに置き換えるだけです。
(但し、以下はPython 3.11.xと3.12.x用です。3.10.xに使用できるかは不明です。3.10.x用が別途必要になる場合は、各自で入手してください)

ある意味、2.6.0における変更点(しかも結構重要な)を全否定した訳ですから、当然下図のように2.5.1と同様の警告が出ます。

冒頭記述した通り、A1111系WebUIにおいては上の問題は公式の更新によって解決しましたが、2025年3月15日現在、ComfyUIにおいてはReactorでは同種のエラーを起こす障害は、未だ修正されていません。

以下記事に対策を記載しているので、その通りに実行してください。

A1111系と同様に、上で公開しているserialization.pyに置き換える事でも対処できますが、前述した通りこの方法は"邪道"であり、推奨はしません。また、上のファイルは、Python3.11.xと3.12.xの双方に対して使用できます。
(3.10.xに対してはテストしていないので不明)

これで一応、A1111系WebUIでもComfyUIでも、当記事を前提にすればPytorch2.6.0+cu126(&xformers)を使用できる前提が整ったので、そちらの導入記事も順次更新していきます。

前述したように、私のNoteで最もアクセス数が多いのはそれら各種WebUIの各種導入記事ですし、アクセス数が多いからには放置もしません。

今後それらを有料化する気もありませんし、またこのように常に最新技術に伴う変更は反映させていくので、どんどん使ってください。特に、今から画像生成AIを始めようという各位。

私は文章也イラスト也動画也、作成したAI作品を販売する...という点に関しては完全肯定積極派で、皆で競い合って切磋琢磨し、各位どんどん稼げばいい.…と思っていますが、
(自分自身も、現在進行中の資治通鑑日本語訳を後日、電子書籍化して販売する事を検討してます。尤も中国史では大して稼げないでしょうけど、それは良いのですよ。宋紀部分とか、既に先行して刊行してる人がいますが、しっかり読ませてもらってますよ)

インフラ構築の初歩的な部分でお金取ってどうする
(海外では、そもそもそんな手法自体が成立しない。英語か中国語を読む前提ならば、情報自体が秘匿されてないから意味がない)
…とも思っているので、今後もスタート段階の技術やノウハウは、自分がテストしたものに関しては、どんどん公開していきます。

日本の生成AI開発分野の第一人者、国立東京大学松尾研究室の松尾先生はかつてこう言っていました。
「日本でAI普及を阻害する要因はいくつかあるが、日本人は技術や情報を囲い込みたがるという点が一つある」、全く同意見ですね。

最後に余談ながら…私の得意技「力づく」という視点では以下のような技もあります。私はA1111、Forge、reForgeを全てPython3.11.9で動作させていますが、いちいちコマンド操作でPythonライブラリーを出し入れするのではなく、一度構築した環境をコヒペで移植する…短縮技もよく使います。

この場合、下図のようにA1111で構築したPytorch2.6.0+cu126環境を構成する6つのフォルダをそのままForgeにコヒペしても、きちんと動作するという事です。コマンドを立ち上げて、仮想環境をActivateして、いちいちpip installだのpip uninstallだの打ち込んで実行するのも大変ですからね。

A1111の\venv\Lib\site-packages\フォルダから、Pytorchを構成する以下の6フォルダをコピーして、

下図のようにForgeの同フォルダに張り付けます。勿論、旧バージョンの同フォルダ類は削除が前提です。

これで、しっかり動作します。この場合、Pythonライブラリーを構成するのはどのフォルダか…を理解していれば、全てのライブラリーに応用できる技です。一部、更なる応用が必要な場合もありますが。

当たり前ですが、この技は現在のPortable環境におけるComfyUIには通用しません。私のグローバルPython環境は3.11.9ですが、ComfyUIは独立した仮想環境下で3.12.7で動作しているからです。

それにしても、当初ベータ版からスタートしたCursor Composer機能ですが…相当使える機能になってきました。

プロジェクトごとフォルダ指定してやると、内部のファイルを全て読み取って解析し、コードを生成してくれるし、様々な提案を行ってくれるので、本当に色々使い道があります。

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