Gunosyデータ分析ブログ

Gunosyで働くデータエンジニアが知見を共有するブログです。

Stable Diffusion の画像生成を Windows 10 でじっくり試す

Stable Diffusion を Windows 10 で動かすイメージ画像 (作: Stable Diffusion) *1

こんにちは。初めまして、Gunosy Tech Lab R&D の 森田 (pnnc205j)です。最近好きな牛肉の部位はカメノコです。

今回は、テキストから画像を生成する Stable Diffusion を Windows 10 で動かしてみましたのでご紹介します。 Stable Diffusion はルートヴィヒ・マクシミリアン大学ミュンヘンと Stable.AI の発表した、一般的なPCで動かせるほど軽量でかつ高品質な画像を生成できる画像生成モデルです。

とりあえず試したい人向け

本記事ではローカル環境でじっくり動かしたい方向けの手順を紹介しますが、気軽に試してみたい方は公開されているサービスの利用がおすすめです。

  • Stable Diffusion - a Hugging Face Space by stabilityai

    • ちょっと生成に時間はかかりますが、アカウント登録も不要ですぐに試せます
  • Google Colab

    • 手元で気軽に使える GPU 環境がない場合は Colab が便利です
    • Google/Hugging Face のアカウントが必要
    • 計算精度を float16 に落とすことで、Colab の無料枠の範囲内で動くようになっています

必要環境

  • CUDA に対応している GPU、メモリ 10GB 以上を推奨 *2(5〜6GB 程度あればトラブルシューティングにある方法で動作可能)
  • PC 本体のメモリが最低で 16GB 以上(16GB だと動かしている間他に何もできないくらい)

まずは Stable Diffusion の Weight(学習済みモデル)をダウンロード

公式モデルを CompVis/stable-diffusion-v1-4 · Hugging Face からダウンロード

  • Hugging Face のアカウント登録後、チェックボックスにチェックをいれて、Access repository をクリック
  • 参考までにライセンスは大体このようなことが書いてありますが、正しくは原文を確認してください
    • 連絡先が開発者に共有されます
    • 違法・有害なコンテンツの作成・配布をしてはいけません
    • 生成した画像は自分の責任で自由に使用できます
  • https://huggingface.co/CompVis/stable-diffusion-v-1-4-original/resolve/main/sd-v1-4.ckpt をダウンロード(4GB)
    • ちょっと時間がかかるので、ダウンロードの間に次へすすみましょう

CUDA 環境の構築

CUDA環境の構築 (作: Stable Diffusion) *3

  1. Windows Update で最新版に更新されていることを確認

    • Windows 10 Version 21H2 となっていれば大丈夫です (2022/8/23時点)
  2. Official Drivers | NVIDIA から最新のWindows 用 GPU ドライバーをダウンロード & インストール

WSL2(Ubuntu)のインストール  (Windows での作業)

Windows 10 で linux を動かすための仕組みである WSL2 を WSL のインストール | Microsoft Docs に従って行います。

  1. コマンドプロンプトを管理者権限で開く
    • スタートメニュー からコマンドプロンプトを探して右クリック→管理者として実行
  2. コマンドプロンプトに wsl --install と入力して、実行
  3. 続けて念のため wsl --update も実行しておきます
  4. wsl --install -d Ubuntu-20.04 で Ubuntu をインストール
    • 別ウインドウが開くので、Ubuntu 上でのユーザ名とパスワードを登録
    • 閉じてしまった時はコマンドプロンプトで wsl -d Ubuntu-20.04とするか、スタートメニューに追加されている Ubuntu-20.04 on windows をクリック
  5. wsl cat /proc/version でカーネルのバージョンを確認
    • Linux version 5.10.43.3 ...-microsoft-standard-WSL2 以上となっていることを確認します
    • もし version 4... となっている場合は WSL1 から WSL2 への アップデート が必要です

CUDA のインストール(Ubuntu での作業)

Enable NVIDIA CUDA on WSL 2 | Microsoft Docs に従って Ubuntu 内で cuda-tool-kit をインストールします

Ubuntu のパッケージは古いので、nVIDIA で提供されているパッケージを使えるようにします

  1. 古い GPG キーを削除します

     sudo apt-key del 7fa2af80
    
  2. nVIDIA のリポジトリを登録

     wget https://developer.download.nvidia.com/compute/cuda/repos/wsl-ubuntu/x86_64/cuda-wsl-ubuntu.pin
     sudo mv cuda-wsl-ubuntu.pin /etc/apt/preferences.d/cuda-repository-pin-600
     wget https://developer.download.nvidia.com/compute/cuda/11.7.0/local_installers/cuda-repo-wsl-ubuntu-11-7-local_11.7.0-1_amd64.deb  
     sudo dpkg -i cuda-repo-wsl-ubuntu-11-7-local_11.7.0-1_amd64.deb
    
    • GPG キー がインストールされていないとメッセージがでるので、指示に従ってコピーしておきます

        sudo cp /var/cuda-repo-wsl-ubuntu-11-7-local/cuda-B81839D3-keyring.gpg /usr/share/keyrings/
      
  3. CUDA のインストール

     sudo apt update
     sudo apt install cuda
    
    • Ubuntu 側では GPU のドライバーをインストールしてはいけないので注意

Stable Diffusion を git clone(Ubuntu 内で実行)

git clone のイメージ画像(作: Stable Diffusion) *4

GitHub - CompVis/stable-diffusion からソースコードをコピーします

  • 以下のコマンドを実行(説明の都合上 home ディレクトリに置いておきます。他の所に置く場合は適宜読み替えてください。)

      cd ~/
      git clone https://github.com/CompVis/stable-diffusion.git
    

conda 環境の構築

conda 環境構築(作: Stable Diffusion) *5

  • conda のインストール

      wget https://repo.anaconda.com/miniconda/Miniconda3-py38_4.12.0-Linux-x86_64.sh
      bash Miniconda3-py38_4.12.0-Linux-x86_64.sh
    
    • インストールは画面の指示に従う。yes/no はすべて yes でOK
  • 設定を有効にするため、シェルを再起動

      bash
    
  • 必要パッケージのインストール

      cd ~/stable-diffusion
      conda env create -f environment.yaml
      conda activate ldm
    

Stable Diffusion を動かすための設定

  • ダウンロードしておいた Weight をコピーします

      cd ~/stable-diffusion/models/ldm/
      mkdir stable-diffusion-v1
      cd stable-diffusion-v1
      explorer.exe .
    

    explorer.exe .コマンドでエクスプローラが開くので、先程ダウンロードした sd-v1-4.ckpt をこのディレクトリにコピーした後で、以下のようにリネームします。

      mv sd-v1-4.ckpt model.ckpt
    

実行

cd ~/stable-diffusion/
python scripts/txt2img.py --prompt "a photograph of an astronaut riding a horse" --plms --outdir outputs
  • prompt に渡したテキストをもとに画像が生成されます
  • outputs ディレクトリに生成された画像が保存されます
  • その他のオプション
    • --n_samples N_SAMPLES 一度に N_SAMPLES 個の画像を生成するようになります(その分使用メモリも増加します)
    • --H H 生成する画像の縦のピクセル数。8の倍数を指定する必要があります
    • --W W 生成する画像の横のピクセル数。8の倍数を指定する必要があります
    • --seed SEED 画像を生成する乱数のシードを指定します

まとめ

Congratulations!!(作: Stable Diffusion)*6

うまく画像の生成までたどり着くことができたでしょうか。私は昔WSLを使っていたせいで、古い設定が残っていたのでどっぷりと沼りました。 思ったような画像を作るのはなかなか難しいですが、今回の挿絵のようなどんな画像が出てくるか想像がつかないテキストでも綺麗な画像がでてきたりするので、 ついつい延々といろいろなテキストで画像生成を試したくなります。

今、画像生成の分野は非常に熱が高まっていて、これからも新しいモデルやサービスがどんどん出てきます。今後も新しいモデルや中身の深い技術の話などしていけたらと思いますので、ぜひ今後ともご覧いただけると幸いです。

トラブルシューティング

  • CUDA がないと言われる

    • WSL のバージョンが古いことが原因の可能性が高いです
    • Windows 側の確認項目
      • /Windows/System32/lxss/lib/libcuda.so があるか?
        • なければ GPU のドライバをもう一度最新版をインストールしなおしてみてください
      • タスクマネージャーから、パフォーマンス> CPU のタブを開き、仮想化が有効になっているか?
        • 有効でない場合は、BIOS/UEFI で仮想化を有効にして、「Windows の機能の有効化または無効化」から仮想マシンプラットフォームにチェックをいれる
    • Ubuntu 側の確認項目
      • /usr/lib/wsl/lib/libcuda.so があるか?
        • WSL のバージョンが 2 であることを確認する
        • WSL のカーネルバージョンが Linux version 5.10.43.3 ...-microsoft-standard-WSL2 以上であることを確認
        • CUDA 有効化前に conda env create をした場合は念の為に、一度環境を削除 conda env remove -n ldm してから conda env create の所からやり直しましょう
  • GPUのメモリが足りない

  • とにかく重すぎる

    • メモリ不足なので、他のアプリケーションを閉じるなどしてメモリを空けてください

参考

*1:プロンプト: Screenshot of running Stable Diffusion on Windows 10, cinematic lighting, 4k

*2:8/25 現在 GeForce RTX 2060 12GB が4万円〜の価格で購入可能

*3:プロンプト: building CUDA environment, cinematic lighting, 4k

*4:プロンプト: git clone, cinematic lighting, unreal engine 5, 4k

*5:プロンプト: building conda environment, cinematic lighting, 4k

*6:プロンプト: Congratulations!! party popper, cinematic lighting, 4k