Google Colaboratory で Stable Diffusion + Chillout Mix を用いていて、それまで問題なかったのに今日突然
RuntimeError: Detected that PyTorch and torchvision were compiled with different CUDA versions. PyTorch has CUDA Version=11.7 and torchvision has CUDA Version=11.8. Please reinstall the torchvision that matches your PyTorch install.
というエラーに遭遇して、自力でなんとかしようと思ったけどできず、ChatGPT で解決したという話です。
Before
【Stable Diffusion】ChilloutMixの使い方(Google Colab) を拝見して、そこにある通りに実行してました。そのコードは次の通りです。
!git clone https://github.com/AUTOMATIC1111/stable-diffusion-webui
%cd /content/stable-diffusion-webui
!wget https://civitai.com/api/download/models/11745 -O /content/stable-diffusion-webui/models/Stable-diffusion/Chilloutmix-Ni-pruned-fp32-fix.safetensors
!python launch.py --share --xformers --enable-insecure-extension-access
以上です。昨日まではそれだけで実行できていたのですが、今日試してみると、見たことのないエラー
RuntimeError: Detected that PyTorch and torchvision were compiled with different CUDA versions. PyTorch has CUDA Version=11.7 and torchvision has CUDA Version=11.8. Please reinstall the torchvision that matches your PyTorch install.
が出現してました。「何もしてないのに壊れた」と思ってそのエラーメッセージをググってみると、このページに行き当たりました。
今(日本時間4月4日23時)時点でもまだ議論中のようですね。新しく出現したエラーらしく、ここに書いてあることを試してみようかなと思っても、自分の環境(Google Colaboratory)とは異なるためか解決できませんでした。
After
そこで ChatGPT を使って解決できました、ってのが結論です。最終的に得られたコードは
!pip install --upgrade Pillow
!echo "Y" | pip uninstall torchvision
!echo "Y" | pip install torchvision==1.9.0
!git clone https://github.com/AUTOMATIC1111/stable-diffusion-webui
%cd /content/stable-diffusion-webui
!wget https://civitai.com/api/download/models/11745 -O /content/stable-diffusion-webui/models/Stable-diffusion/Chilloutmix-Ni-pruned-fp32-fix.safetensors
!python launch.py --share --xformers --enable-insecure-extension-access
これを使えば、上記のエラーを回避できました。
Before のコードとどこが違うかというと、最初の3行が追加されただけですね。まあ、結果だけ見れば簡単なんですが、自分のヘボプログラマ能力的には、ChatGPTの助けなしには正直無理っぽかったです。
ChatGPT との会話
結論としては以上なのですが、参考のため ChatGPT との会話履歴を貼っておきます。以下、引用フォーマットになっているのが自分、なってないのがChatGPTのセリフです。
Google colaboratory 上で RuntimeError: Detected that PyTorch and torchvision were compiled with different CUDA versions. PyTorch has CUDA Version=11.7 and torchvision has CUDA Version=11.8. Please reinstall the torchvision that matches your PyTorch install. というエラーが起こりましたが、どう対処すれば良いですか?
このエラーは、PyTorchとtorchvisionが異なるCUDAバージョンでコンパイルされたことを示しています。これは、PyTorchがCUDA 11.7でコンパイルされ、torchvisionがCUDA 11.8でコンパイルされた場合に発生する可能性があります。
対処法としては、以下の手順を試すことができます。
-
最初に、Google Colabのランタイムを再起動してみてください。場合によっては、これだけで問題が解決する場合があります。
-
PyTorchとtorchvisionのバージョンを確認してください。例えば、以下のコードを実行して、PyTorchとtorchvisionのバージョンを確認できます。
import torch
import torchvision
print(torch.__version__)
print(torchvision.__version__)
- PyTorchとtorchvisionのバージョンが異なる場合は、torchvisionの再インストールを試してみてください。以下のコマンドを実行して、現在のtorchvisionをアンインストールし、適切なバージョンをインストールできます。
!pip uninstall torchvision
!pip install torchvision==<PyTorchと同じバージョン>
たとえば、PyTorchが1.9.0である場合、適切なtorchvisionのバージョンは1.9.0となります。
以上の手順を試しても問題が解決しない場合は、Google Colabのランタイムを再起動し、必要に応じて環境をリセットすることもできます。
ありがとうございました。指示通りに実行すると。次のようなエラーになりました。対処法を教えてください。
---------------------------------------------------------------------------
ImportError Traceback (most recent call last)
<ipython-input-6-61f54cd92c2d> in <cell line: 2>()
1 import torch
----> 2 import torchvision
3 print(torch.__version__)
4 print(torchvision.__version__)
5 frames
/usr/local/lib/python3.9/dist-packages/torchvision/__init__.py in <module>
4
5 import torch
----> 6 from torchvision import datasets, io, models, ops, transforms, utils
7
8 from .extension import _HAS_OPS
/usr/local/lib/python3.9/dist-packages/torchvision/datasets/__init__.py in <module>
----> 1 from ._optical_flow import FlyingChairs, FlyingThings3D, HD1K, KittiFlow, Sintel
2 from ._stereo_matching import (
3 CarlaStereo,
4 CREStereo,
5 ETH3DStereo,
/usr/local/lib/python3.9/dist-packages/torchvision/datasets/_optical_flow.py in <module>
10 from PIL import Image
11
---> 12 from ..io.image import _read_png_16
13 from .utils import _read_pfm, verify_str_arg
14 from .vision import VisionDataset
/usr/local/lib/python3.9/dist-packages/torchvision/io/__init__.py in <module>
3 import torch
4
----> 5 from ..utils import _log_api_usage_once
6
7 try:
/usr/local/lib/python3.9/dist-packages/torchvision/utils.py in <module>
9 import numpy as np
10 import torch
---> 11 from PIL import Image, ImageColor, ImageDraw, ImageFont
12
13 __all__ = [
/usr/local/lib/python3.9/dist-packages/PIL/ImageFont.py in <module>
36 from . import Image
37 from ._deprecate import deprecate
---> 38 from ._util import is_directory, is_path
39
40
ImportError: cannot import name 'is_directory' from 'PIL._util' (/usr/local/lib/python3.9/dist-packages/PIL/_util.py)
---------------------------------------------------------------------------
NOTE: If your import is failing due to a missing package, you can
manually install dependencies using either !pip or !apt.
To view examples of installing some common dependencies, click the
"Open Examples" button below.
---------------------------------------------------------------------------
このエラーは、Pillow(Python Imaging Library)の一部であるPIL(Python Imaging Library)の依存関係に問題があることを示しています。以下の手順を試して、問題を解決できるかどうかを確認してください。
- Pillowを最新のバージョンにアップグレードしてみてください。以下のコマンドを実行して、Pillowをアップグレードできます。
!pip install --upgrade Pillow
- もう一度、torchvisionを再インストールしてみてください。以下のコマンドを実行して、現在のtorchvisionをアンインストールし、適切なバージョンをインストールできます。
!pip uninstall torchvision
!pip install torchvision==<PyTorchと同じバージョン>
もし、Pillowが完全にインストールされていない場合は、以下のコマンドを実行して、Pillowを再インストールしてください。
!pip uninstall Pillow
!pip install Pillow
上記の手順を試した後も、問題が解決しない場合は、Google Colabのランタイムを再起動してから、必要に応じて環境をリセットすることを検討してください。
Google colabで次のコマンドを実行すると、Proceed (Y/n)? と聞かれましたがそれに答える入力が実行できませんでした。対処法を教えてください。
Google Colab上での入力には、次のような方法があります。
!echo "Y" | command
具体的には、次のように入力してください。
!echo "Y" | pip uninstall torchvision
!echo "Y" | pip install torchvision==1.9.0
これにより、コマンドに対して "Y" という入力が自動的に行われるため、処理が続行されます。