GPUの無いPCでStableDiffusionのインストールと実行時間の比較(AMDでもOpenvinoは動作しました)

2022-09-03

CPUの写真(裏側)

開発環境の整っていない状態でインストールするのは手間がかかるので、ちょっと使うだけならwebサービスやアプリの方がいいと思っていますが、興味を満たすためだけにStableDiffusionをインストールしました。

現在の実行環境

その際に、Cudaを使わずCPUでの実行やOpenvinoのインストールを試した内容を備忘録として公開します。

GPUの無い環境の場合、Google Colaboratorを使うかOpenvino版を使うのが現実的です。

GPU無しでの環境構築

必要なアクセストークンの取得は事前に済ませて下さい。

Google Colaboratorを使った実行環境の構築

GIGAZINEに書かれている通りで何の問題も無く構築できます。

pip install diffusers==0.2.4 transformers scipy ftfy

YOUR_TOKEN="アクセストークン"

from diffusers import StableDiffusionPipeline

pipe = StableDiffusionPipeline.from_pretrained("CompVis/stable-diffusion-v1-4", use_auth_token=YOUR_TOKEN)

pipe.to("cuda")

prompt = "呪文"
image = pipe(prompt)["sample"][0]
image.save(f"ファイル名.png")

繰り返して作成(5回)

prompt = "呪文"
i = 0
while i < 5:
  image = pipe(prompt)["sample"][0]
  image.save(f"ファイル名" + str(i) + ".png")
  i = i + 1

ローカルと違って、一度切断すると毎回モジュールのインストールが必要なので、頻繁に使う場合は少し手間がかかります。

cudaを使わずCPUにpipeして実行

「Google Colaboratorを使った実行環境の構築」と同様ですが、pipe.to(“cuda")をpipe.to(“cpu")に変更します。

pip install diffusers==0.2.4 transformers scipy ftfy

YOUR_TOKEN="アクセストークン"

from diffusers import StableDiffusionPipeline

pipe = StableDiffusionPipeline.from_pretrained("CompVis/stable-diffusion-v1-4", use_auth_token=YOUR_TOKEN)

pipe.to("cpu")

prompt = "呪文"
image = pipe(prompt)["sample"][0]
image.save(f"ファイル名.png")

ただし、実行時間がものすごく長くなります

Openvino版のインストール方法(2022.9月時点)

Openvino版はアクセストークンが不要のため手軽に使えます。後、CPUはIntelでなくても使えます(うちはRyzen7 4800Hで問題なく動きました)。

GitはインストールしていないのとDockerを使うのも手間だったので、ここではそのままインストールしています。

Python 3.8のインストール

Openvinoが使えるPythonは3.8が最新のため、まずはMicrosoft StoreからPython 3.8をインストールします。

ファイルダウンロード

Gitを入れていないので、Zipファイルでダウンロードします。

Python 3.8で仮想環境構築・インストール

PowerShellで入力

#ワーキングディレクトリに移動
cd ワーキングディレクトリ

#pipのアップデート
python3.8 -m pip install --upgrade pip setupstools

#仮想環境構築
python3.8 -m venv .openvino

ダウンロードしたファイルの中身を仮想環境フォルダに移動

エクスプローラーで移動するだけです。

再びPowerShellで作業

#powershellの実行ポリシー変更(一時的・管理者権限不要)
Set-ExecutionPolicy RemoteSigned -Scope Process

#仮想環境に入る
.\Scripts\Activate.ps1
#*プロンプトが変わる
#PS C:\Users\○○○○\python\env\.openvino>
#↓
#(.openvino) PS C:\Users\○○○○\python\env\sd.openvino>

#モジュールインストール
python3.8 -m pip install -r .\requirements.txt

#実行(最初は時間かかる)
python3.8 demo.py --prompt "呪文" --output "出力ファイル名"

疑問点としては、モジュールが何故か仮想環境内にインストールされません…。なんででしょうか?

とりあえず使えるので気にせずこのままにしています。

注意点

NSFWフィルタを無効化できるかどうかは不明です。

おおよその実行時間(1枚あたり)

Google Colaborator:30秒

GPUはあってもメモリが少ない場合(単精度モデルを使用):15秒

cudaを使わずCPUにpipeして実行:50分!(CHUWI CoreBox)、35分(Ryzen7 4800H)

stable_diffusion.openvino:5分(CHUWI CoreBox)、3分(Ryzen7 4800H)

結論

cudaを使わずCPUで実行は、とんでもなく時間がかかるので実用性としては…?です。

Openvinoを使うと10倍高速になるので、GPUが無い場合はこちらが現実的だと思います。ただ、注意点に書いたようにNSFWフィルタを無効化できるかどうかは不明です。

その場合はGoogle Colaboratorを使っても一緒かな?とは思います。

IT-TipsAI,stablediffusion

Posted by ううら