ぐるのなんか

多分ゲームのプレイ日記とか

Python何も知らん人間が Stable Diffusionの環境作った

話題の画像生成AIのStable Diffusionのローカル環境作ってみたので備忘録的に書きます。
わからん人向けの説明なのに専門用語が出てきたりしますが参考程度に。
細かい説明は読み飛ばして、「〇〇をする」というとこだけ実行してもらえばOKです。

筆者は三流プログラマです。

環境

  • OS:Windows11 Home 21H2
  • GPU:RTX 3070 8GB(PC新調したばっかなのに推奨環境に足りてない)

はじめに

Stable Diffusionと一口に言っても、既に何個かバリエーションがあるようです。(2022/08/29現在)

  1. 本家github.com
  2. 高負荷すぎて並のPCじゃ動かない本家をフォークして低負荷にしたやつgithub.com
  3. 必要なもの全部入り+独自のGUIが加えられたものgrisk.itch.io
  4. (2022/09/03追記)グラボじゃなくてCPUとメモリで動かせるやつgithub.com

環境構築とかめんどくさい、とにかくAI触ってみたいんやという人は3でいいんじゃないかな。
ただ全部入りなのでファイルサイズがでかい+本家の方に更新が来るたびにDLし直しになるかも?
勉強がてら構築してみるか、という人は1か2を使うことになります。
以降は1,2用の解説です。

導入手順

基本的にはこちらの記事を参考にしました。
zenn.dev

Gitインストール

参考記事には書いてないですが、とりあえずGitをインストールしましょう。
SourceTreeとかGithub DesktopみたいなGUIクライアントでなく、Gitそのものです。
エンジニア的には既に入ってたりするかもですが、そうでない人は多分入ってないし、入ってないとうまくいかない(後述)。
公式サイトまでいってインストーラを落としてきてもいいですが、
Win11や10には標準でwingetというツールがついてるっぽいのでこっちを使う方が楽です。
docs.microsoft.com
Winキー押して「poweshell」と入力すると「Windows PowerShell」というアプリが表示されるのでこれを起動。

開いた画面で 以下のように入力してEnter

winget install Git.Git


あとは適当に許可したりすればインストール完了です。
それはそれとしてGUIのクライアントを持っておくと更新とかが楽なので適当に入れておくのがおすすめ。

condaインストール

次はStable Diffusionの公式で使ってるよって書かれてるcondaをインストールします(表現おかしいかも)。
docs.conda.io
詳しくないのでconda何するものぞという感じなんですが、
パッケージマネージャであると共に仮想環境的なものを作って実行環境の切り分けができるみたいですね。
これがうまいこと動いてくれれば環境構築もだいぶ楽になります。
インストーラは画面左のメニューからUser guide>Installation>Installing conda on a ~ >Installing on Windowsから取得します。

ここにきてMinicondaとAnacondaどっち欲しいのよと聞かれますが、よくわからんのでMinicondaにしました。
さらに飛んだ先でダウンロードリンクが並んでるので自分の環境にあったやつを選べばインストーラがDLされます。

インストーラを起動してNext Agreeと進めるとインストールをログイン中のユーザ用にするか全ユーザ用にするか出ますがお好みで、インストール先もお好みで、特に難しいとこはなかったはずです。

ここまで終わってようやっと参考記事のスタート地点です。
参考記事の方ではAnacondaを使ってるようですが、この手順の中ではさほど違いなさそうです。

CUDA

正直なんなのかよくわかってないですが、参考記事のリンクからインストーラ落としてインストールするだけなんで割愛。

conda環境の構築

参考記事のセットアップのあたりです。
コマンドを入力して進めていくのですが、ここで使うのは先ほどインストールしたMinicondaに付属する「Anaconda Prompt(Miniconda3)」です(以下コンソール)。

git clone (Stable DiffusionのリポジトリのURL)

というコマンドを打つことで本体がクローン(≒DL)されてくるのですが、コンソールを開いてすぐの状態だとユーザーフォルダの直下にクローンしてしまうので、気になる場合は好みのディレクトリにcdコマンドで移動しましょう。

実際打つコマンドですが、PCスペックに余裕がある場合は

git clone https://github.com/CompVis/stable-diffusion

余裕がない場合は

git clone https://github.com/basujindal/stable-diffusion

になります。
どちらを打ってもこの後の作業は変わりません。
この後下記の3つのコマンドを打つことになります。

cd stable-diffusion
conda env create -f environment.yaml
conda activate ldm

いったん説明のためにDドライブ直下のreposフォルダ内にクローンしてきたとすると、
reposフォルダ内には「stable-diffusion」というフォルダができているので、そのフォルダに移動します(1行目)
フォルダ内にある「environment.yaml」という設定ファイルを元に環境を自動で構築します(2行目)
その設定ファイル内の記述により「ldm(LDM)」という環境が作成されているので、この環境を有効化します(3行目)

少し話が戻りますが、「はじめに」のGitインストールが行われていない場合、この2行目の処理の途中でエラーになります。
というのも、「environment.yaml」の中にはStable Diffusionが使用するライブラリ等の情報が記載されており、
この情報を元にGitの機能を使って必要な諸々をDLする処理が2行目のコマンドで実行されるのですが、
Gitにパスが通っていないとGitの機能が使えず、DLも行えない、という状態になります。
筆者はこれがなってなかった(新調したばかりなのでGitがインストールされてなかった)のでここで躓きました。
「パスが通っている」の上手い説明が思いつきませんが、「はじめに」のGitのインストールで「パスを通した」と認識してもらえればとりあえずOKです。

ここで躓いたけど環境作り直しもめんどい、という場合は、environment.yamlの「pip」の下の「albumentations」とかをひたすらpip installすればなんとかなるかもしれません。
例)

pip install albumentations==0.4.3
pip install opencv-python==4.1.2.30
pip install pudb==2019.2
...

学習データの取得

ここまでできればStable Diffusionというシステムのプログラムを動かす準備は整いましたが、
AIが使う「学習データ」なるものがまだありませんので、これもGitを使ってクローンしてきます。

その前に以下のコマンドでひとつ上のフォルダに移動しましょう。

cd ../

https://huggingface.co/ へのユーザ登録と規約への合意を行えば、下記のコマンドで学習データがクローンできます。

git clone https://huggingface.co/CompVis/stable-diffusion-v-1-4-original

ただこのコマンドがすぐに終了した場合、学習データ自体はまだPC上に存在しないかもしれません。
学習データはGB単位のファイルサイズなのでDLしてくるのに相当時間がかかるのですが、そんな気配が無かった場合、この学習データのコミットログ(変更の履歴みたいなもの)だけ存在している可能性があります。
この場合「学習データのファイルが削除された」という「変更」が行われた扱いになっているので、
Git用のツールなりでこの「変更」を取り消すことで正常に学習データが復元されます(時間はかかります)。
(このあたりはGitの知識がないとややこしいのでググるなりなんなり…)

repos>stable-diffusion-v-1-4-originalフォルダの下に「sd-v1-4.ckpt」というファイルが存在する状態になったら「stable-diffusion-v-1-4-original」フォルダをコピー&貼り付けで複製し、
複製した方のフォルダ名を「stable-diffusion-v1」、その中の「sd-v1-4.ckpt」というファイル名を「model.ckpt」に変更し、フォルダごとrepos>stable-diffusion>models>ldmフォルダにぶち込みます。

ここまでできればあとはコマンドをごにょごにょして好きな画像を生成するだけです。
お疲れ様でした。
各機能の使い方なんかは多分後日…。