2
1

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 1 year has passed since last update.

ロースペックPCでStableDiffusionを実装し実行時間を計測

Posted at

挨拶

初めまして、日本システム開発株式会社の鈴木です。
技術者として更なる向上を目指すためQiitaアウトプットをする取り組みを行っています。
技術者としては経験が浅く発信内容はとにかく試したものの覚書になります。
本稿はロースペックPCでStableDiffusionを導入してみた際の手順です。

環境(マシンスペック)

OS: Windows 10
CPU: Ryzen 5 3500U
GPU: AMD Radeon Vega8 Graphics VRAM 2GB(オンボード)
メモリー: 8GB

Python : 3.9.13
diffusers : 0.2.4
torch : 1.12.1
transformers : 4.21.2

目的

StableDiffusionの資料を探しているとCUDAを使用した環境の構築が多いものの一応動作させること自体はCUDAなしでもできそうだったためその環境を構築してみます。

Python仮想環境設定

今回は実用的な速度にならないことが予想できていたため後から削除しやすいよう専用の仮想環境を用意します。

コマンドプロンプト
python -m venv (作業用フォルダのパス)\stbl_dffsn
(作業用フォルダのパス)\stbl_dffsn\Scripts\activate

環境構築

GitHubのCompVis/stable-diffusionページにて以下の様に紹介されている方法で導入を目指します。

simple way to download and sample Stable Diffusion is by using the diffusers library:

というわけでDiffuser経由でStableDiffusionを動作させること目指します。まず動作に必要なDiffuserに必要なPytorch、Transformersを導入します。

Pytorch

Pytorch公式ページのインストール補助ツールを用いてCPU版のPytorchをpipで導入します。
キャプチャ.PNG
ちなみに筆者は一度ここでPythonのバージョンによるエラーが発生していました(Python 3.8.1では導入不可)

Transformers

必須ではないかもしれませんが私の環境では導入したPytorchを動作させた際にTransformersを要求されたため追加で導入します。

コマンドプロンプト
pip install transformers

Diffusers

Diffusersもpipでインストールします。

コマンドプロンプト
pip install diffusers

モデルの入手

この段階で動作に必要な環境は整いましたがStableDiffusionのモデルを利用するためにはHugging Faceのアカウントを作成しトークンを取得する必要があります。トークンの取得はアカウントにログインした状態でモデルのページにアクセスし利用規約に同意することで取得できます。ここで取得したトークンはヘッダーの右上にあるアカウント情報>Setting>Access Tokensからも確認することができます。

実装

環境構築章で触れたサンプルコードを一部改変し以下の様に実装しました。

stable-diffusion.py
from torch import autocast
from diffusers import StableDiffusionPipeline

pipe = StableDiffusionPipeline.from_pretrained(
	"CompVis/stable-diffusion-v1-4", 
	use_auth_token="ここにアクセストークンを記載"
)

prompt = "a photo of an astronaut riding a horse on mars"
with autocast("cuda"):
    image = pipe(prompt)["sample"][0]  
    
image.save("astronaut_rides_horse.png")

生成する画像を指示しているのはpromptに代入しているa photo of an astronaut riding a horse on mars(火星で馬に乗っている宇宙飛行士の写真)になります。
実行中以下のようなエラーが出ますが動作自体には問題ありませんでした。

出力
warnings.warn('User provided device_type of \'cuda\', but CUDA is not available. Disabling')

最後に以下のようなメッセージと共にastronaut_rides_horse.pngが生成されました。

出力
51it [43:23, 51.04s/it]

astronaut_rides_horse.png
確かに火星で馬に乗っている宇宙飛行士の写真のようです。とはいえ出力からわかる通り43分23秒かかってしまいました。一応他のソフトウェアなどは起動せずCPU使用率も常時100%に近い状態を保っていましたがやはりかなり時間はかかってしまいます。
きちんとGPUを使用した方が実用的でしょう。

2
1
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
2
1

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?