Stable Diffusion 3.5 の参照実装を git clone して Google Colab PRO で動かす

1. 概要

2025年12月21日(日)に開催予定の第10回 岐阜AI勉強会の準備のため、Stability AI の Stable Diffusion 3.5 の参照実装を git clone して Google Colab PRO で動かしました。

参照実装はそのままでは無料の Google Colab で動作させられそうになかったため、今回も有料の Google Colab PRO で L4 GPU を使用して動かしました。

参照実装は学習済みの model を使用して画像生成を実現します。

ソースコードに print 文等を入れて動作確認しながら Stable Diffusion 3 及び 3.5 の Multimodal Diffusion Transformer (MM-DiT) 及び MM-DiT-X 等の内容を調べることを目的としています。

このブログに記載したのは動作確認のみになります。

2. Stability AI の参照実装のファイル構成

Stability AI の参照実装のファイル構成は下記のようになっています。

sd3_infer.py
エントリポイントスクリプト (コマンドラインから画像生成を行う際、このスクリプトの main 関数が最初に呼ばれます)
sd3_impls.py
MM-DiT-X, VAE 等を呼び出すラッパー等
mmditx.py
MM-DiT-X の実装部
other_impls.py
テキストエンコーダー(CLIP, T5 など)に関する処理やその他のユーティリティ処理
3. スクリプトの実行

こちらのリンク先に Stability AI の参照実装を動かす Google Colab のページを用意しました。

下記のコードセルを順に実行していきます。

3.1. Stability AI の Stable Diffusion 3.5 の参照実装を Google Drive に git clone

書き換えた Stable Diffusion 3.5 のコードを残すことができるよう、git clone したスクリプトは Google Drive 側に置きます。

from google.colab import drive
drive.mount('/content/drive')
%cd /content/drive/MyDrive/
!git clone https://github.com/Stability-AI/sd3.5.git
3.2. Hugging Face から参照実装のコードを動かす学習済みモデルを取得する準備

Hugging Face から学習済みモデルを取得できるようにするため、Google Colab の左端の鍵マークをクリックし、下の画像のように HF_TOKEN という名前で Hugging Face の Token をセットしておきます。Hugging Face の Token は、Hugging Face のサイトでアカウントを作成し、無料で作成することができます。

下記のスクリプトを実行し、どのようなファイル名で学習済みモデルが保存されているかを確認します。

from huggingface_hub import list_repo_files

repo_id = "stabilityai/stable-diffusion-3.5-medium"
files = list_repo_files(repo_id)

for f in files:
    print(f)
3.3. Hugging Face から参照実装のコードを動かす学習済みモデルを取得

学習済みモデルを予め Google Drive に保存し、Google Colab 利用時に Google Colab 側にコピーする方式も試しましたが、Hugging Face から取得するよりもコピーに長い時間を要しました。

そのため、Hugging Face から毎回取得するようにしました。モデルのコピー先は /content/models にしました。

T5-XXL の学習済みモデルは、参照実装のスクリプト内では t5xxl.safetensors と記載されています。t5xxl_fp16.safetensors を t5xxl.safetensors にリネームして使用しても問題なく動作したため、下記のように t5xxl_fp16.safetensors を t5xxl.safetensors として使用しました。

!mkdir -p /content/models

import os
from getpass import getpass
from huggingface_hub import hf_hub_download

# Stablde Diffusiton 3.5 Medium の学習済みモデルの取得
hf_hub_download(
    repo_id="stabilityai/stable-diffusion-3.5-medium",
    filename="sd3.5_medium.safetensors",
    local_dir="/content/models"
)

# Stablde Diffusiton 3.5 で使用する CLIP-L, CLIP bigG, T5-XXL の学習済みモデルの取得
hf_hub_download(repo_id="stabilityai/stable-diffusion-3.5-medium",
                filename="text_encoders/clip_l.safetensors", local_dir="/content/models")
hf_hub_download(repo_id="stabilityai/stable-diffusion-3.5-medium",
                filename="text_encoders/clip_g.safetensors", local_dir="/content/models")
hf_hub_download(repo_id="stabilityai/stable-diffusion-3.5-medium",
                filename="text_encoders/t5xxl_fp16.safetensors", local_dir="/content/models")

!mv /content/models/text_encoders/clip_g.safetensors /content/models/clip_g.safetensors
!mv /content/models/text_encoders/clip_l.safetensors /content/models/clip_l.safetensors
!mv /content/models/text_encoders/t5xxl_fp16.safetensors /content/models/t5xxl.safetensors
3.4. 必要な python package をインストール

下記のスクリプトを実行し、参照実装が必要とする python package をインストールします。

%%bash

cd /content/drive/MyDrive/sd3.5
python3 -s -m pip install -r requirements.txt
3.5. Stable Diffusion 3.5 Medium を使用して画像を生成

下記のスクリプトを実行し、prompt で指定した画像を生成します。
下記のスクリプトでは引数 –prompt “$prompt” –model /content/models/sd3.5_medium.safetensors –model_folder /content/models –steps 28 を指定してプロンプト、学習済みモデルのファイル名、学習済みモデルの保存先ディレクトリ、ステップ数等を指定しています。(sd3_infer.py を編集して指定することもできます。)

%%bash

cd /content/drive/MyDrive/sd3.5

prompt=$(cat << 'EOF'
The phrase "Gifu AI Study Group" formed from small colorful geometric shapes.
EOF
)

python3 sd3_infer.py --prompt "$prompt" --model /content/models/sd3.5_medium.safetensors --model_folder /content/models --steps 28

生成された画像は Google Drive 内の下記の例のようなパスに出力されます。

/content/drive/MyDrive/sd3.5/outputs/sd3.5_medium/The_phrase__Gifu_AI_Study_Group__formed_from_small_2025-12-04T12-11-40/000000.png

こちらは出力された画像の例になります。

返信を残す

メールアドレスが公開されることはありません。 が付いている欄は必須項目です

CAPTCHA