見出し画像

CPUだけで画像を生成する

以前、ハードオフで1000円のPCを買った。

DELL Optiplex3022 SFF

第四世代のCPUを搭載したビジネス向けのPCだ。Intelの第四世代Coreシリーズは、Ryzen前夜で選択肢がなかったためたくさん売れて数が多く、Windows11がサポートされていないため現在では中古市場で安く売っている。たぶんWindows10のサポートが切れる来年になったら7世代以前はみんなゴミみたいな値段になると思う。それかマイクロソフトが折れてサポートを延長するかかなあ。
前回は同じように安く売っていたXeon(と言ってももともとついていたi5より多少クロックが高いくらい)に載せ替え、メモリももともと4GBだったのを余っていた8GBに置き換えた。CPUは最近のものと比べると当然早くはないが遅くもない。ただメモリは16GBはほしいと思う。というわけで、

アリエクで8GBx2のメモリが2400円で売っていたので買ってみた。1833MHzとDDR3にしてはかなり高クロックなものだ。この手のメモリは、昔はノンブランド品のものは大抵壊れていた。たぶん大手のテストで落ちたメモリを捨て値で買って売っていたんじゃないかと思う。それが今ではどこのメモリを買ってもまともに動いてしまう。一体なにがかわったのだろう。まあ当時でもアキバで買ったその日に家でmemtest86を動かしてだめだったらすぐに返品していたから、小売店がやってられなかったんじゃないかと思う。

CPU-Zで確認してみたら、会社こそ中国の読めないメーカのものだが、メモリチップはSK Hynixのものだった。

ここまでで総コストはストレージを除けば、3830円(税込み)。メモリも増えてある程度まともになったので、このPCでいろいろ遊んでいこうと思う。前回の「ジャンクを買う」でも書いたがWindows10がサポートされなくなったときを見越してLinuxからEQをインストールして遊ぶというのをやろうと思っているが、その前にGPUなしで、画像生成がどこまでできるのかいい機会なので試してみようと思う。

一番セットアップがカンタンなのはStability Matrixをいれることだ。これはそもそもCUDA用に作られているが、一応CPUだけでも動く。ただし、めちゃくちゃ遅い。ためしに512x768の画像を生成させてみたら、515秒かかった。8分半くらいだ。同じものを3090で生成させると2秒かからないので、250倍以上速度差がある。できないことはないがかなり厳しい。こんなに遅いとさすがにやってられないので、違う方法を紹介しようと思う。

OpenVINOなるAI用のライブラリがある。Intel製品だとGPUに限らずCPUも、これを使うとだいぶ高速化されるとのことなので、それを使うfastsdcpuをためしてみようと思う。ただ、Stablility Matrixと違い、インストールが手間なので備忘録を兼ねてインストール方法を書いていこうと思う。

  1. Pythonのインストール
    これはまあ詳細を書く必要はないと思う。入れたバージョンは最新ではなく、3.11.9にした。インストール時には環境設定をやってくれるようにチェックボックスを入れておくこと

  2. OpenVINOのインストール
    これが結構手間がかかる。まずは、IntelのOpenVINOのwebサイトへ行き、以下の選択を行ったものをダウンロードする。

ダウンロードしたファイルは、適当なディレクトリに解凍する。私の場合は、ドキュメント通りにC:\Program Files (x86)\intelというディレクトリを掘り、その下にopenvinoというフォルダを作ってそこに解凍したものをおいた。
解凍したら、コマンドプロンプトを管理者として実行し、C:\Program Files (x86)\intel\openvino\pythonへ移動し、以下のコマンドを実行

python -m pip install -r .\requirements.txt

これでopenvinoに関するファイルがpythonで使えるように設定される。次に、C:\Program Files (x86)\intel\openvinoへ移動し、以下のコマンドを実行する。

powershell -ExecutionPolicy RemoteSigned .\setupvars.ps1

これで権限を与えてよいかと聞かれるのでAと押して権限をあたえる。もしかしたらもう一回実行しないといけないかもしれない。これでOpenVINOの環境設定が実行される。

私はPowershell上でやった。たぶん普通のコマンドプロンプトでもいけると思う

3.fastcpuSDのインストール

githubの上のサイトへ行き、Releaseから最新版をダウンロードする。今回はv1.0.0-beta33だった。ダウンロードするのはSource Code(zip)だ。ダウンロードしたら適当なディレクトリに解凍する。私の場合、C:\fastsdcpuというディレクトリを掘ってそこに置いた。

4.インストール
これまた管理者でコマンドプロンプトを開き、C:\fastsdcpuへ移動し、以下のコマンドを実行

install.bat

ここまでpythonがちゃんと入って、OpenVINOがきちんと設定されていれば、少し時間がかかるがインストールが正常に行われる。

今回も私はpowershell上で実行した

ここまでくればインストールは終わり。

5.好きなモデルをインストールする
デフォルトではクソ真面目な絵しかつくれないので、絵を生成する前にそれらしいモデルをダウンロードして設定しようと思う。まずはCivitAIへ行き、お好きなエチエチモデルをインストールする。

一例。このサイトはスクリーンショットに適さないものばかりでヒヤヒヤする

ポイントはベースモデルとしてSD1.5のものを選ぶことだ。SDXLとかは動かんので注意。モデルをダウンロードしたら、C:\fastsdcpuの下にmodelsというディレクトリを掘り、解凍したファイル(****.safetensors)を置いておく。そして、C:\fastsdcpu\configs\stable-diffusion-models.txtをメモ帳かなにかで編集する。

一番下の行に、今回ダウンロードして解凍したモデルを指定しておく。他にもLoRA等いろいろ設定ができるが、今回は割愛する。

6.絵を生成する
では早速実行してみよう。C:\fastsdcpuの下にあるstart.batを実行する。すると簡素なUIがでてくるので、setupタブをまずクリックする。

あまり細かく設定できない

ここでUse LCM LoRAを設定し、Lora base model IDとしてさきほど設定したベースモデルを指定する。あと、Number of inference stepsを適当に増やし(ためしに18くらい)、解像度を指定(今回は512 x 768)する。その後、Text to Imageへうつり、プロンプトを入力する。プロンプトに関しては世の中に死ぬほど説明しているところがあるので、そこをみてほしい。今回私の場合はStability Matrixでお試ししたときと同じプロンプトにした。

ネガティブプロンプトのおまじないって意味あるのか?

設定したらGenerateボタンを押す。そうすると絵がでてくる。

最初の一回はいろいろダウンロードするので時間がかかるが、二回目以降はちょっと短縮される。画像生成にかかる時間は、

190秒から210秒くらいだった。200秒くらいだとすると、3分半くらい。Stability Matrixよりは5分ほど早い。連続で絵を生成して、ほうっておけば普通に運用できると思う。これは結構いけるのではないだろうか。こんな330円で買ったCPUでこれだけの速度がでるので、最近の12世代以降とかになると多分かなり現実的な時間で絵を生成することができると思う。なにげにアリエクに売っているコア数ばっかり多いXeon E5あたりでやるとかなり速度がでるんじゃなかろうか。アーキテクチャ的に今つかっているものと遜色ないから、仮に20コアだとすると、HSで40スレッドできるとして、だいたい30コア分の性能がでるとすると、現在4コアだから、7-8倍くらいになる。200秒が、25秒くらいで生成できるのか。これはいいんじゃないかな。ちょっとインストールのハードルは高いが、GPUみたいな糞高いものを買わなくとも絵がローカルで作れるのは結構魅力的だと思う。ぜひ皆さんも試してみてほしい。


この記事が気に入ったらサポートをしてみませんか?