Google ColaboratryでStable Diffusion実行時にランタイムエラーが発生したときの対処法

「Stable Diffusionを使っているときにランタイムエラーに直面した…」「エラーを解消方法がわからない…」 そう思う方も少なくないでしょう。

Google ColabでStable Diffusionで画像生成を行う際に、様々な原因でエラーが発生してしまう場合があります。

今回PROMPTYでは、Google ColabでStable Diffusion実行時に発生するランタイムエラーの対処法をご紹介します。

Google ColabでStable Diffusionを使用する

Google Colaboratory、通称「Colab」はPythonを簡単にコーディング・実行でき、ブラウザから直接操作することが可能なGoogle提供のサービスです。

画像生成AIの運用も可能であり、特にStable DiffusionといったPythonベースのツールはColab上での動作が可能です。AIの動作には高スペックのPCが求められますが、全ての人が高スペックのPCを所有することは難しいため、その代わりとしてColabの活用が考えられます。

Stable Diffusion Web UIには、Google Colabのノートブックがいくつか公開されているため、これらのノートブックを使うことで、高スペックPCを持っていなくても、Stable Diffusionで画像生成をすることができます。

Google ColabでStable Diffusionを始める手順については、こちらの記事で詳しく解説しています。

関連記事

「Stable Diffusionを使用したいが、どのように始めれば良いのだろう...」「低スペックPCでもStable Diffusionを使用できるの?...」 そう思う方もいるのではないでしょうか。 実は、高性能なPCを持っ[…]

Google Colabでランタイムエラーが出たときの対処法

①Pytorchとtorchvisionのバージョンが異なる

エラー内容:

RuntimeError: Detected that PyTorch and torchvision were compiled with different CUDA versions. PyTorch has CUDA Version={バージョン名} and torchvision has CUDA Version={バージョン名}Please reinstall the torchvision that matches your PyTorch install.

このランタイムエラーの原因は、PyTorchとtorchvisionが異なるCUDAバージョンでコンパイルされているためです。

CUDAは、NVIDIAのGPUにより高速計算を行うためのプラットフォームです。PyTorch及びtorchvisionは、CUDAを利用して迅速な計算を行います。

ただし、PyTorchとtorchvisionが異なるCUDAバージョンでコンパイルされる場合、互換性のないCUDAライブラリを使うこととなり、ランタイムエラーが発生します。

このエラーを対処するためには、torchvisionは一度アンインストールして、PyTorchに適したバージョンのtorchvisionをインストールしましょう。

以下のコードを実行します。

%pip install torch==2.0.0+cu118 torchvision==0.15.1+cu118 torchtext torchaudio torchdata==0.6.0 --index-url https://download.pytorch.org/whl/cu118

②GPUを設定していない

エラー内容:

RuntimeError                              Traceback (most recent call last)
<ipython-input-1-81cabaee10da> in <module>
      8 from diffusers import StableDiffusionPipeline
      9 pipe = StableDiffusionPipeline.from_pretrained("CompVis/stable-diffusion-v1-4", use_auth_token=Access_Token)
---> 10 pipe.to("cuda")

/usr/local/lib/python3.7/dist-packages/torch/cuda/__init__.py in _lazy_init()
    215         # This function throws if there's a driver initialization error, no GPUs
    216         # are found or any other error occurs
--> 217         torch._C._cuda_init()
    218         # Some of the queued calls may reentrantly call _lazy_init();
    219         # we need to just return without initializing in that case.

RuntimeError: No CUDA GPUs are available

このランタイムエラーの原因は、Google Colab上で使用するGPUが設定されていないためです。

このエラーを対処するためには、次の手順でGPUを設定しましょう。

メニューのランタイムから”ランタイムのタイプを変更”をクリックします。

ハードウェアアクセラレータで、いずれかのGPUを選択します。

現在、Google Colabでは3種類のGPUを選択できます。用途や使用できるコンピューティングユニットに応じて選びましょう。

  • A100:NVIDIAの最新GPUです。Tensor Coreが組み込まれており、これまでのモデルよりも高速に計算を行います。メモリ容量も充実しており、大量のデータを扱うのに適しています。
  • V100:A100の前のモデルです。A100と比べると少し性能は落ちますが、迅速な計算は実現できます。メモリ容量は大きく、A100よりも手頃な価格になっています。
  • T4:V100よりも下のランクのモデルです。V100との比較すると、性能やメモリの面で少し劣りますが、コストが抑えられるので、費用を抑えたい時には適しています。

ローカル環境でStable Diffusion Web UIのエラーの対処法は、こちらの記事でまとめています。

関連記事

Stable Diffusion Web UIは生成系AIであるStable Difusionをローカルで動かすことのできるユーザーインターフェイスで、直感的な操作で簡単に画像を生成することができます。今回はStable Diffusio[…]

その他のエラーの対処法

Stable Diffusionを無料のGoogle Colabで動かそうとすると、サーバーが過負荷になってしまい、下の画像のように突如使用できなくなってしまいます。

この場合、以下のような対処法が挙げられます。

  • 対処法①:プロンプトをなるべく簡単なものにする
    複雑なプロンプトを入力すると、エラーが発生しやすい傾向にあります。そのため、複雑なポーズやネガティブプロンプトなどの指定はなるべく避けるようにしましょう。
  • 対処法②:Google Colabの有料版を購入する
    有料版であれば、突如画像が生成できなくなることもありません。また、使用できるGPUの種類も増えるので、画像生成のスピードも上がります。
関連記事

Stable diffusionで画像生成を行う際に、様々な原因でエラーが発生してしまう場合があります。今回PROMPTYでは、使用している環境などからよく発生してしまうエラーとその対処法を紹介します。 (function(b,[…]

まとめ

今回PROMPTYでは、Stable DiffusionでGoogle Colab上でのランタイムエラー発生時の対処法を紹介しました。

今回の例を参考に、皆さまもエラー解消の一助として活用してみてはいかがでしょうか。

PROMPTYでは、他のStable Diffusionについての記事も多く扱っているので、是非ご覧ください。

~Stable Diffusionで素早く画像生成するには~

Stable Diffusionの画像生成スピードや画像サイズは、グラフィックボード(GPU)の性能によって大きく変わります。

このため、より効率的かつ快適な画像生成を望むユーザーにとって、最適なグラフィックボードの選択が重要となります。

推論処理やLoRAなどの追加学習処理といった大量の計算を効率よく行うためには、12GB以上のVRAMを持つグラフィックボードを選ぶことを強くおすすめします。

2GBや4GBのVRAMを持つグラフィックボードでは、学習プロセスや高解像度の画像生成に支障が出る可能性が高いです。

コスパを重視する方は、RTX 3060を選ぶと良いでしょう。

このグラフィックボードを使えば、Stable Diffusionの画像生成機能を最大限に活用することが可能となります。