結果だけでなく過程も見てください

日々の奮闘を綴る日記です。

噂の画像生成AIソフト「Stable Diffusion」のインストール方法と使用例

デモサイトもある

セットアップが面倒な方、そもそもNVidiaVGAを持っていない!等の方はこちらのデモサイトを利用すると良いでしょう。ただ混み具合によっては時間がかかることがあります。
Stable Diffusion - a Hugging Face Space by stabilityai

筆者の環境

OS Windows 10(64-bit)
VGA Geforce 1060 (6GB)
Python 3.10.6
CUDA Toolkit 11.7
cuDNN 8.5.0

インストール

前提条件としてNVidiaのグラフィクスカードが必要なようです

ドキュメントURL

Stable Diffusion with 🧨 Diffusers

hugging faceのアカウントでのログイン(持っていない場合は作成)

「Usage」のセクションにある、以下の文章の中の「its card」というリンクをクリックする。

In this post we'll use model version v1-4, so you'll need to visit its card, read the license and tick the checkbox if you agree. 

もしくは以下のページに直接飛ぶ。
CompVis/stable-diffusion-v1-4 · Hugging Face

飛んだ先にあるページの「Access repository」ボタンを押下する。

飛んだ先にあるページhugging faceにログインする。
(アカウントがなければここで作成してください)

アクセストークンの作成

このページに飛ぶ。
CompVis/stable-diffusion-v1-4 · Hugging Face

右上のアイコンから→Settingsを選択する。

左のメニューからAccess Token→New Tokenを選択。

Nameには適当な名前をつけ、Roleはreadのままトークンを作成する。

Pythonのインストール

最新版Python(現時点では3.10.6)をインストールする。
Download Python | Python.org

以下のページを参考にインストールする。
Windows版Pythonのインストール: Python環境構築ガイド - python.jp

Anacondaもインストールする必要があるかも?
Windows版Anacondaのインストール: Python環境構築ガイド - python.jp

CUDA Toolkit, cuDNN, pytorchのインストール

以下のページを参考にインストールする。
CUDA+cuDNNをインストールしPyTorchでGPUを認識させるまでの手順(Window11)

CUDA Toolkit(2022/8/24時点で最新11.7)はこちら。

CUDA Toolkit 11.7 Update 1 Downloads | NVIDIA Developer

cuDNNのインストール(CUDAと同様のバージョンを選択してインストールする)

ここはNVIDIAのアカウントが必要になるので、必要に応じて作成する。
https://developer.nvidia.com/rdp/cudnn-download

こちらも参考にしてください。
【NVIDIA】CUDAとcuDNNの導入手順(インストールとダウンロード) : ひまチュンの機械ブログ

CUDAが11.7なのでcuDNNも11.xを選択します。

上記ページの通りC:\tool\cuda配下に「bin」などのフォルダが来るように配置したら、環境変数Pathにパスを通します。

以下をコマンドプロンプトで実行して正しい結果が返るか(エラーにならないか)を確認しましょう。

where cudnn64_8.dll

PyTorchはCUDA 11.6を選んだんですが、なんかうまくいかないので11.3を選択。
以下のコマンドを実行する。

conda install pytorch torchvision torchaudio cudatoolkit=11.3 -c pytorch

PyTorchがGPUを認識しているかどうかを確認するため、コマンドプロンプトで以下を順番に入力する。

conda activate pytorch
import torch
torch.cuda.is_available()

結果がTrueとなれば成功。

#True

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

以降、管理者権限のコマンドプロンプトでconda activate pytorchした上で、以下を実行する。

pip install diffusers==0.2.4 transformers scipy ftfy

Pythonのコード入力

import torch
from diffusers import StableDiffusionPipeline

pipe = StableDiffusionPipeline.from_pretrained("CompVis/stable-diffusion-v1-4", revision="fp16", torch_dtype=torch.float16, use_auth_token="上記で作成したアクセストークン")

初回はダウンロードでしばらく時間がかかる。

続いて

pipe = pipe.to("cuda")

prompt = "a photograph of an astronaut riding a horse"

from torch import autocast

with autocast("cuda"):
  image = pipe(prompt)["sample"][0]

「a photograph of an astronaut riding a horse」の部分が生成したい画像の説明を入れる箇所。
imageの行は行頭にスペースが必要なので注意(pythonの文法上)
imageの行を入力してEnterを押した後、さらにEnterを押すと画像の生成が始まる。
当方Geforce 1060 (6GB)のため、かなり時間がかかった・・・。(2分くらい?)

画像の保存は以下のコマンドで行う。カレントディレクトリの画像が保存されます。

image.save(f"ファイル名")

再度画像を生成するときには

prompt="a beautiful mountain landscape"
pipe = pipe.to("cuda")
with autocast("cuda"):
  image = pipe(prompt)["sample"][0]

生成された画像

ただの宇宙飛行士が生成されてしまった。馬はどこへ?w

もう一つ、「a beautiful mountain landscape」で出力されたものがこちら。

プライバシーポリシー お問い合わせ