【グラボなしで1秒画像生成】Stable Diffusionの高速版FastSD CPUを試してみた

グラフィックボードなしでAIによる画像生成を試しているので、その備忘録です。一般的には画像生成に高価なグラフィックボードが必要になりますが、今回使用しているのはグラフィックボードなし（CPU内蔵）のモバイルPCです。

そうすると、Google Colabやその他のGPUレンタルなどの外部サービスを利用するのか？と思われますが、ローカルのみです。

これまでローカルのCPUのみで画像生成は、グラフィックボードを使用する時に比べ大幅に時間がかかっていましたが、FastSD CPUではLCM（Latent Consistency Model）やIntel社のOpenVINOを採用する事で高速生成を実現しています。

LCMとOpenVINOの詳しい説明については今回省略します。

**検証に使用したマシンスペック**
CPU:Core Ultra 7 155H
メモリ:32GB
GPU:Intel Arc Graphics（CPU内蔵）
OS:Windows11 23H2

:::note
OpenVINOを利用するにはIntel社製の対応したCPUが必要です
詳しくはIntel社のシステム要件をご覧ください
https://docs.openvino.ai/2024/about-openvino/release-notes-openvino/system-requirements.html
:::

## FastSD CPUとは？
FastSD CPUはCPU版のStable Diffusionの高速版です。2024年8月7日現在のバージョンはv1.0.0-beta.35です。CPU版といってもOpenVINOに対応しているのでCPU+GPUで生成出来ます。

ライセンスはMITとなっています。

FastSD CPUのページ
https://github.com/rupeshs/fastsdcpu

## FastSD CPUでの画像生成時間
CPUの性能によりますが、性能が高ければ1秒未満でも生成できるようです。
1回目は時間がかかりますが、２回目以降は早くなります。
私の場合は1枚あたりの画像生成時間は1.2秒〜1.3秒程度でしたが、FastSD CPUのGithubによると0.82秒で生成できたようです。

FastSD CPUの画面

![C__windows_system32_cmd.exe 2024_08_05 0_30_21.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/1356595/72e7d8fa-e48a-cd52-9890-7a66a6b7f7a6.png)

「a small cute cat」でGenerate

![C__windows_system32_cmd.exe 2024_08_05 0_15_22.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/1356595/3d5efb37-c64e-aa6a-36f0-e8af15a2222e.png)

生成時間は1.36秒でした。
生成された画像がこちら。

![9e0aae8a-1419-492f-9475-ab1a76de27b0-1.jpg](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/1356595/c153aebf-d57f-eaf0-d8de-805b902d3460.jpeg)

## 複数枚の画像生成
続いて4枚の画像を生成してみました。

![FastSD CPU - Google Chrome 2024_08_14 7_05_31.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/1356595/24119ad5-ff90-454b-9e05-be839d286ec8.png)


生成時間は4枚で5.01秒
1枚あたりの生成時間は約1.25秒

![C__windows_system32_cmd.exe 2024_08_14 7_08_50.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/1356595/0999a6f9-3df7-4f40-90cc-e1b08c3c3027.png)


生成された画像がこちら

![83d62cd9-9eba-471e-9189-ab610970a675-2.jpg](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/1356595/adc727ee-44d8-5b34-ec9c-5e0efd49bbe0.jpeg)


## FastSD CPUのインストール方法

・Python3.10か3.11が推奨
・Git

PythonとGitの詳しいインストール方法は省略します。

インストールを行うディレクトリに移動してfastSD CPUをCloneします。
```
git clone https://github.com/rupeshs/fastsdcpu.git
```
Cloneが完了したら、fastsdcpuのフォルダの中に移動して、**install.bat**を実行します。インストールは結構時間がかかります。

インストールが完了したら、**start-webui.bat**を実行して、**http://127.0.0.1:7860** にアクセスします。

:::note
start-webui.batを実行してもすぐにバッチの画面が閉じる（落ちる）場合はVisual Studio CommunityのC++デスクトップ開発をインストールしてみてください。個人利用なら無償で利用できます。
:::

![Visual Studio Installer 2024_08_09 3_48_16.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/1356595/aa60f9f6-947f-a216-64d9-08e94d535e26.png)

:::note warn
エラーのメモ
OSError: [WinError 126]指定されたモジュールが見つかりません。
Pytorch側の問題？fbgemm.dllが読み込めずコケている。
:::

現状としてはVisual Studio Communityの**C++デスクトップ開発**をインストールすることで上記の問題は回避できるようですが、将来的には改善する可能性があります。またVisual Studio CommunityのC++デスクトップ開発をインストールするより簡単に回避する方法をご存じの方おられましたら、ご教授いただけると嬉しいです。

## FastSD CPUの使い方

基本的な使い方の紹介です。

Modeは当初LCMになっていますが、 OpenVINO対応の環境でしたら、LCM-OpenVINOの方が高速に生成できるかもしれません。ただしメモリはたくさん使います。

![FastSD CPU - Google Chrome 2024_08_05 1_32_26.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/1356595/e4915b4e-b9ff-df92-2815-43a15ba4ce95.png)

fantasy land scapeと書かれた場所がプロンプト入力エリアです。

練習なのでなんでもいいんですが、プロンプトエリアに「a small cute cat」と入力してGenerateを押してみてください。

![C__windows_system32_cmd.exe 2024_08_05 0_30_21.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/1356595/72e7d8fa-e48a-cd52-9890-7a66a6b7f7a6.png)

1回目の生成は時間がかかりますが、２回目以降は早くなります。

ちなみに1秒台での画像生成に使ったモードは**LCM-OpenVINO**
使用したモデルが **/rupeshs/sdxs-512-09-openvino**
Generation Settingsタブの設定で**Use tiny auto encoder for SD**にチェックを入れて生成を行いました

プロンプトについては詳しく解説しているサイトを調べるか、ChatGPTなどのAIを使って生成してもらってください。

お疲れ様でした。

## おまけ

FastSD CPUで他のモデルを試してみました。
LCM-dreamshaper V7 OpenVINOを利用しました。

ステップ数：４
画像サイズ：512x768

![C__windows_system32_cmd.exe 2024_08_15 4_34_20.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/1356595/7a126123-cc62-97f4-4246-1fa4b2292cda.png)

生成時間は13.53秒でした。

![FastSD CPU - Google Chrome 2024_08_15 4_34_58.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/1356595/2d23adf1-6191-db52-bfeb-f88975e26447.png)

生成した画像

![4106f7d1-a4bc-4b15-a6e5-979f8abbb73d-1.jpg](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/1356595/94b488fd-e029-b8c1-7d3e-88f4f6dee206.jpeg)


画像生成を本格的に使いたいという方には、グラフィックボード搭載のPCをお勧めしますが、趣味やお試し程度で生成AIを使う分には十分遊べる気がします。

最後までお読みいただきありがとうございます！