【最新版】StableDiffusionを無料のGoogle Colabで動かす方法【生成AI】
新規ノートブックの作成
Googlecolabにアクセスします。以下の「ノートブックを新規作成」ボタンをクリックします。

GPUに変更

以下の画像のように、「GPU」と書いてある項目を選択します。
選択できる項目は時間によって異なる場合があります。
今回は「T4 GPU」を選びました。

GPUに変更されたことの確認を行います。
以下のコマンドを打ち、「再生ボタン」か「Shift+Enter」で実行します。
「!nvidia-smi」はGPUのモニタリングを行うコマンドです。
!nvidia-smi
以下の画像のように「NVIDIA-SMI 数字」と表示されていれば大丈夫です。
「NVIDIA-SMI has failed」と表示される際は、再度GPUになっているか確認してください。

必要なライブラリのインストール
以下のコマンドでPythonのパッケージ管理ツールであるpipを使って必要なライブラリをインストールします。コマンドは「!nvidia-smi」の次の入力枠に入力します。
- diffusers: Diffusersは、主に自然言語処理に関連する様々なディープラーニングモデルの拡散プロセスを扱うためのライブラリです。拡散モデルは、生成モデルの一種であり、特にテキスト、画像、音声などの生成に使用されます。
- transformers: Transformersは、自然言語処理における最先端のモデルを簡単に利用できるようにするためのライブラリです。これらのモデルはテキストの分類、生成、翻訳、要約など様々なタスクに使用されます。
- ftfy: FTFY(Fix Text For You)は、壊れたテキストを修正するためのツールです。これは、文字エンコーディングの問題を自動的に修正し、テキストデータをよりクリーンで読みやすい形に変換します。
- accelerate: Accelerateは、ディープラーニングモデルのトレーニングや推論を簡単にかつ効率的にするためのライブラリです。特に、GPUやTPUなどのハードウェアアクセラレーションを活用する際に有用です。
!pip install diffusers transformers ftfy accelerate
今回は最新の以下のバージョンをインストールしました。
diffusers:0.25.0 transformers:4.35.2 ftfy:6.1.3 accelerate:0.26.1
バージョンを記事と合わせる場合は、以下のコマンドでバージョンを指定してください。
!pip install diffusers==0.25.0 transformers==4.35.2 ftfy==6.1.3 accelerate==0.26.1
以下のように画面に表示されているため、transformersはすでにインストール済みでした。
Requirement already satisfied: transformers in /usr/local/lib/python3.10/dist-packages (4.35.2)


以下のコードを入力して実行します。コードはStable Diffusionを使用して、特定のテキストプロンプトに基づいて画像を生成し、その画像を保存するためのものです。
import torch
from diffusers import StableDiffusionPipeline
model_id = "CompVis/stable-diffusion-v1-4"
prompt = "best quality,dog"
device = "cuda"
seed=30
pipeline = StableDiffusionPipeline.from_pretrained(model_id).to(device)
generator = torch.Generator(device).manual_seed(seed)
with torch.autocast(device):
image = pipeline(prompt, guidance_scale=7.5, generator=generator).images[0]
image.save("test1.png")コードの解説
import torch
from diffusers import StableDiffusionPipelinePyTorch(torch)と、DiffusersライブラリからStableDiffusionPipelineをインポートしています。PyTorchは機械学習モデルの構築と訓練に広く使用されるフレームワークで、Diffusersは主に深層学習に基づく画像生成のためのツールを提供します。
model_id = "CompVis/stable-diffusion-v1-4"
prompt = "best quality,dog"
device = "cuda"
seed=30model_idは使用するStable Diffusionモデルのバージョンを指定します。promptは画像生成のためのテキスト指示で、ここでは品質が良い犬の画像を要求しています。deviceは計算を行うデバイスを指定しており、"cuda"はNVIDIAのGPUを使うことを意味します。seedは乱数生成器のためのシード値で、画像生成の再現性を保証するために使用されます。
pipeline = StableDiffusionPipeline.from_pretrained(model_id).to(device)事前訓練済みのStable Diffusionモデルをロードし、指定されたデバイス(この場合はGPU)に移動しています。
generator = torch.Generator(device).manual_seed(seed)
with torch.autocast(device):
image = pipeline(prompt, guidance_scale=7.5, generator=generator).images[0]
image.save("test1.png")- 12行目は、画像生成の際に使用される乱数生成器を初期化し、指定されたシード値(この場合は30)を使って再現性を確保しています。
- 13行目は、デバイス(ここではGPU)上での計算を効率化するために自動的にデータ型のキャストを行っています。これは計算速度を向上させ、メモリ使用量を減らすのに役立ちます。
14行目は、指定されたプロンプトに基づいて画像を生成します。guidance_scaleパラメータは、生成される画像がプロンプトにどれだけ密接に従うかを制御します(数値が大きいほど、よりプロンプトに忠実な画像が生成されます)。生成された画像はリスト形式で返されるため、最初の要素([0])を取得しています。- 最後に、生成された画像を
"test1.png"という名前で保存します。

画像の確認
実行が終了したら、画像を確認します。画像は左側メニューのフォルダアイコンをクリックし、「test1.png」をクリックすると画面右に表示されます。
今回はプロンプトで”best quality,dog”を指定したため、犬の画像が生成されています。

