生成AI

【最新版】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」の次の入力枠に入力します。

  1. diffusers: Diffusersは、主に自然言語処理に関連する様々なディープラーニングモデルの拡散プロセスを扱うためのライブラリです。拡散モデルは、生成モデルの一種であり、特にテキスト、画像、音声などの生成に使用されます。
  2. transformers: Transformersは、自然言語処理における最先端のモデルを簡単に利用できるようにするためのライブラリです。これらのモデルはテキストの分類、生成、翻訳、要約など様々なタスクに使用されます。
  3. ftfy: FTFY(Fix Text For You)は、壊れたテキストを修正するためのツールです。これは、文字エンコーディングの問題を自動的に修正し、テキストデータをよりクリーンで読みやすい形に変換します。
  4. 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 StableDiffusionPipeline

PyTorch(torch)と、DiffusersライブラリからStableDiffusionPipelineをインポートしています。PyTorchは機械学習モデルの構築と訓練に広く使用されるフレームワークで、Diffusersは主に深層学習に基づく画像生成のためのツールを提供します。

model_id = "CompVis/stable-diffusion-v1-4"
prompt = "best quality,dog"
device = "cuda"
seed=30
  • model_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"という名前で保存します。

以下のような「No module named ‘diffusers’」のエラーがでたら、必要なライブラリのインストールコマンドを再度入力してください。

画像の確認

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

ABOUT ME
きたたく
きたたく
学習工学博士
自由に生きる人を増やしたい大学教員・経営者。
生成AIで経済的自由を達成するための知識を発信中。
元不登校から飛び級で博士号(工学)を取得した連続起業家。
プログラミングを通じて「U-22 プログラミングコンテスト CSAJ 会長賞」「IoT Challenge Award 総務大臣賞」「人工知能学会研究会 優秀賞」など40件を超える賞を受賞。
スマホアプリ会社を創業(売却)し、プログラミングスクールの会社を創業(20店舗経営)

著書:知識ゼロからのプログラミング学習術(秀和システム) 他多数
記事URLをコピーしました