最近イラストAI流行ってますよね。私のブログでも結構アクセス増えてきて、私もうれしいです。そんな中、ついに登場した最強お絵かきAI
“novelAI”
私も最上位プランに課金して生成しまくっています。
でもこれ月額25$と結構高額なんですよね。まあ、自分でイラストかけないのでこのレベルのイラストが月4000円で生成できるなら安いんですが…
そんなある噂が…「noveAIがハッキングされたらしい。」
モデルごと流出して有志によるローカル環境での実行ができるらしい。でもハイエンドグラボがいるらしい。
なぜかうちの片隅にRTX3070が転がっていました。これはもうやらない手はないということでプログラムなんもわからない私が頑張ってローカル環境を作ったのでその忘備録を残します。
2023年1月時点でのイラスト生成モデルの一覧紹介記事を書きました。環境導入出来た方は参考にしてください。
最新環境のより簡単な導入方法の記事を書きました。こちらも参考にしてください。
超えるべきハードル
- WindowsかLinuxのPCを持っている。RAM16GB以上、GTX1060以上のGPU(2060以上じゃないと厳しい?)
- 大容量ファイル(52 GB)のmagnetLinkによるDLができる。(torrentファイルをある程度扱える)
- ハイスペックGPUを持っている。2chとか見てると3060以上がいいみたいです。
- 何があっても自己責任(GPUが燃えても、著作権関係で捕まっても、無修正を間違えてネットにさらしてしまっても)
ぶっちゃけプログラムの知識はいりません。プログラム要素はコマンドプロンプトにコピペしたコマンド打ち込むくらいです。
導入方法
1次ソース
ここをGoogle翻訳かけるだけで大体行けます。以下は私がつまずいた部分を交えながら大体の流れをまとめていきます。
ステップ1 リーク版novelAIのダウンロード
1次ソースに従って
magnet:?xt=urn:btih:5bde442da86265b670a3e5ea3163afad2c6f8ecc
上のmagnetリンクからファイルをダウンロードします。
この時点でtorrent怖いという方は導入を諦めたほうがいいかもしれません。今回のリーク版novelAIはグレーであり、今回やっていることもかなりのグレーゾーンです。novelAI自体がオープンソース化されるという噂もあるので、そちらを待ったほうがいいかもしれません。
ちなみに私のおすすめtorrentクライアントはμtorrentです。
ステップ2 Stable Diffusionの環境構築
この界隈追ってない方は知らないかもしれませんが、2022年の9月ごろから始まったAIイラストの急速な進化はStable Diffusionがオープンソース化されたことから始まります。今回のnovelAIはこのStable Diffusionの派生でDanbooruというイラストサイトの画像から学習したAIというわけです。
このDanbooruというサイトの画像の多くが無断転載でこれを学習したAIってどうなの?というのがAIイラスト界隈で問題となっているのですが、ここでは語りません。
今回はギガジンさんのこちらの解説がわかりやすかったのでこちらを参考に導入してください。
https://gigazine.net/news/20220907-automatic1111-stable-diffusion-webui/
目次のところからWindowsで動かす(NVIDIA製GPUが必要)へとびます。
指示に従ってPythonを入れて、Gitを入れて、NvidiaCUDAまで入れたらAUTOMATIC1111版Stable Diffusion web UIのリポジトリをクローンまでで一旦止めます。
ステップ3 novelAIleakから必要な部分を取り出してリネーム
ダウンロードしてきたモデルから必要な3つのファイルを取り出します。この辺は1次ソースの通りです。拡張子の部分でややこしいのでファイル名が完全一致しているか確認してください。
ステップ4 Stable Diffusion-webuiにモデルデータを入れる
こんな感じでフォルダで分けず直接3つのファイルを直接入れます。
ステップ5 webui-user.batを実行
最初に読み込みと環境構築みたいなのをはさみますが、正常に読み込まれるとURLが出てきます。あとはこのURLをお好きなブラウザに入力して完了です。
初期設定
このまま適当にプロンプトを入力してgenerateしても、イラストは生成できますが本家novelAIに近づけるためにはいくつか設定が必要です。
使用するモデルデータを選択
今回は1種類しか導入していませんが、ほかのモデルデータを読み込むことでnovelAIとは違う雰囲気のイラストを生成できるようになります。waifudiffusionなんかが有名ですね。なんでもnobelAIとwaifudiffusionのモデルデータをミックスすることでいい感じのイラストを生成できるとか…。
この辺はなれてきたら設定してみてください。
Stop At last layers of clipを 2 にする。
Settingのタブの結構下の方にある設定項目です。F3キーを押して[stop]とかで検索かけると出てきます。ここを2にして設定上部のApply settingを押してください。これを押さないと設定が反映されません。
noiseの設定
1次ソースにもある通りnoise値を手動で設定します。
settingタブから Eta noise seed delta の項目を探し 31337 と入力してください。
これでノイズ生成周りの設定が本家と同じになりかなり本家に近づきます。 Apply setting も忘れずに押してください。
Negative promptにデフォルトプロンプトを書き込む。
本家NAIではデフォルトでかけられているフィルターですが、ローカル版ではこちらで設定する必要があります。
一時ソースのアスカの下にあるNegative promptをコピー。webuiのNegative prompt欄に貼り付けます。
lowres, bad anatomy, bad hands, text, error, missing fingers, extra digit, fewer digits, cropped, worst quality, low quality, normal quality, jpeg artifacts,signature, watermark, username, blurry, artist name,
その他の設定
本家触ったことない人のためにその他の設定もざっくり説明しておきます。
Undesired Content/Negative prompt:プロンプトから除外する要素。上級者向けなので最初は気にしなくていい。ローカル版は最初に
lowres, bad anatomy, bad hands, text, error, missing fingers, extra digit, fewer digits, cropped, worst quality, low quality, normal quality, jpeg artifacts,signature, watermark, username, blurry, artist name,
をいれて本家デフォルトネガティブプロンプトを設定。
Steps/Sampling step:画像生成の反復回数みたいな数値。10$プランなら27。25$プランなら28がオススメ。
ローカル版は上げても消費トークン変わらないので50くらいがいいかも。上げると一枚あたりの生成時間は伸びるけどいい画像が出やすい。
Image Resolution/width heigth:512512が基本。512768が本家portraitでスマホで見やすい。背景とか意識するなら768512でもOK。高解像度が良ければ768768でもいいみたい。
Scale/CFG Scale:promptにどれだけよせるか。5-16くらいがおすすめ。デフォは11でOK。
Seed:イラストを固定するための数値。同じSEED値だと似たようなキャラが出やすい。
ローカル版由来の設定値
Sampling method:1次ソースはEulerかEuler aを推奨してるぽいのでこのどっちか
Batch count/size:一回に何枚生成するか、最大1クリック800枚までいける。途中で止められるので最大で回すのもおすすめ。
ここまでできたら試しに
masterpiece, best quality, masterpiece,1girl
あたりでテストしてみてください。このAIにハマる理由がわかるはずです。
1次ソースのHELLO ASUKAテストもやってみてください。同じprompt、同じSEED値、同じ設定で行けば全く同じ画像が出るはずです。
本家NAIとなんか違う問題はたいていここで解決できるはずです。
Anything-V3.0
11月頭くらいに突如4chに投稿された学習モデル。ハイパーネットワークとかDREAMBOOTHではなくそれ単体で動作するSD用の学習モデルです。
詳細や学習元は不明なのでここでマグネットリンクを貼るようなことはしませんが「anything 3.0 stable diffusion」あたりで検索すると見つかります。
性能としてはNovelAIよりもきれいな感じのイラストを出力できます。体感として手や指の構造もこちらのほうが破綻なく出力できています。
ある程度手が特徴的なイラストをピックアップ、 Anythingのほうが絵柄とか塗りがきれいな感じがしますね。
いろいろな学習モデル
BAKA diffusion:写真とNovelAIをマージしたモデルらしい。等身や手のできが良い。
waifu diffusion:NovelAI登場前ま最も美少女イラストの生成に適していたと言われているモデル。もうすぐ1.4が発表される予定。
2023年最新版 イラスト生成モデル事情
2023年1月現在のモデル事情を記事にしました。使い方は上で解説した通り.ckptファイルまたは.safetensorファイルをmodelフォルダー内のstable diffusionフォルダに入れると使えます。
最新のAutomatic1111を使っている場合.vaeファイルは設定から選べるのでリネームは必要ないです。一部のモデル(waifu diffusion1.4)はymalというファイルの導入が必要です。.ckptファイルと全く同じ名前になるように(拡張子は.ymal)リネームしてください。
マイニング経験者が語るGPUあれこれ
まずはこれを見てください。RTX3070で連続生成を行った場合のGPUの温度と消費電力です。
GPU Temperratureが65℃ HotSpotが76℃これはまあそんなにやばくはないです。重めのゲームしてたらこれくらい行きます。
問題はBoard Power Drawの部分。217.6W 約220Wです。RTX3070のTDPは220Wなのでほぼ全力回転です。ゲーム中もこれくらい電気を食うこともあるのですがぶっ続けともなると少し危険。
実はマイニングは効率を上げるために最省電力でGPUを動かすのでRTX3070だと120Wで常時60℃以下くらいで回します。つまりローカル版NAIの実行はマイニングよりもGPUにダメージを与えます。流石にこの消費電力で24時間は少し対策が必要だとは思います。
そんなわけでGPUに少しでも頑張ってもらうためにマイニング時代の工夫を3つ紹介しておきます。
GPUの熱対策1 PCケース側面を開けておこう。
最も費用対策効果の大きい方法です。ほとんどのマイニング勢はPCケースにGPUを入れずフルオープンで回してます。
私の最終形態がこちらですが、ここまでしなくても側面開けるだけでOKです。
こんな感じで側面は開けておきましょう。
GPUの熱対策2 SwitchBotで電力を監視しよう。
マイニングガチ勢はほぼ使っていると過言ではない必須アイテムです。スマホアプリから消費電力の監視。グラフによる日毎月毎の消費電力の記録。さらには電力供給を遮断する事による緊急停止が可能です。novelAIでマネタイズを考えている方は電気代が経費になるはずなのでその計算にも便利です。ぜひ導入を検討してください。
GPUの熱対策3 サーキュレーターを使う
扇風機でもいいですが、GPUについてるファンに加えてサーキュレーター直あてが一番冷えます。ケースファン何個も買うより2000円のサーキュレーターのほうが安上がりなのでこの機会にサーキュレーター買ってしまいましょう。
私はこれで回しています。
ダウンクロックの検証
先にも説明した通り、このAIを24時間回すのはGPUに良くないです。そこで設定してほしいのはアフターバーナーによるダウンクロック。マイニング界隈ではマイニングのための最適なOC設定に自動でオーバークロックしてくれるソフトもあるのですがSDにはないので自分で設定します。
私自身3070しか持ってないので、参考になるかはわかりませんが一応検証してきました。
以下の設定で生成速度を見てみます。generateを右クリックして「generate forever」機能を使ってそれぞれ10枚ほど生成した結果をしたにまとめました。
CUI上の右側の数字が画像生成の速さを表しています。it/sという単位の部分。マイニングで言うところのハッシュレートですね。
そして真ん中がアフターバーナーの操作画面今回はPowerlimitの部分をいじるのでここに注目してください。
最後に右側がGPUIDの電力モニター。下から2つ目「Board Power Draw」に注目してください。これがいわゆるGPU単体の消費電力になります。
簡単に表にまとめると
Power Limit | 消費電力 | 生成速度(it/s) |
100% | 220 W | 8.5 |
75% | 165 W | 8.1 (約5%減) |
50% | 110 W | 7.1 (約16%減) |
消費電力を半分にしても生成速度は半分にならないんですね。これなら50%制限で回したほうが良さそうです。マイニング勢的にもRTX3070で110 Wなら十分に許容範囲です。ちなみに去年流行ったイーサリアムマイニングでは約110Wで24時間1年間ほどぶっ通しで回していたのでおそらく大丈夫なはず、RTX3070*5枚の運用でしたが1枚も不具合出てません。
というわけで少し速度は下がるけどPower limit 50%がおすすめ。
ほかのGPUでもCUIとアフターバーナー、GPUIDの画面を見ながら調節してみてください。
電気代の話
GPUの電気代の話をします。難しそうな電気代の計算ですがパソコンはエアコンなどと違い常に一定の電力を消費するので、消費電力さえわかれば簡単です。
上でおすすめしたSwitchBotにはAC100Vコンセントの時点での消費電力をモニターできるのでかなり正確な電気代の計算ができます。今回は上のRTX3070の110Wと220Wのときの電気代を計算していきます。
まずは契約している電力会社の1kwhあたりの電気代を調べてください。2022年10月現在燃料調整費が高騰しているので今回は30 円/kwhで計算していきます。30円/kwhというのは「1000Wの電気を1時間使った場合30円」という意味です。
110w/1000 * 30=3.3円
220w/1000 * 30=6.6円
GPU以外にもCPUやメモリ、SSDに電力を消費するのでざっくり100Wとします。ちゃんとダウンクロックした状態で24時間ぶん回すと…
210W/1000 * 30 *24 =151.2円
大体150円です。これが高いか安いかはその人の経済状況次第ですが、まあ気にするほどの額ではないです。24時間30日回しても5000円くらいで済みます。
マルチGPUでゲームしながらイラスト生成
マイニング勢なので当然1つのPCに複数のGPUを搭載しています。そこで重要になってくるのがマルチGPU設定です。
2022年11月13日現在、複数のGPUを並列化して画像生成をすることはできませんが、一方のGPUで画像生成を行いながら、もう一方のGPUでゲームを楽しむと言ったとこなら可能です。
PCI Express×16のレーンが2レーンあるようなマザーボードなら普通に2枚さしてもいいですが、こういうときに便利なのがライザーカード。
PCIスロットを延長しPCケースの外側にGPUを配置できます。使い方はマイニング系のブログを見てください。うまく接続できればこんな感じになります。
タスクマネージャー側でも2枚のGPUを確認できたら、あとはソフト側で使用するGPUを指定します。
設定方法自体は簡単です。
“stable-diffusion-webui\modules\devices.py”の devices.py というファイルをメモ帳で開きます。
import contextlib
import torch
from modules import errors
# has_mps is only available in nightly pytorch (for now), `getattr` for compatibility
has_mps = getattr(torch, 'has_mps', False)
cpu = torch.device("cpu")
def get_optimal_device():
if torch.cuda.is_available():
return torch.device("cuda:0")
if has_mps:
return torch.device("mps")
return cpu
def torch_gc():
if torch.cuda.is_available():
torch.cuda.empty_cache()
torch.cuda.ipc_collect()
def enable_tf32():
if torch.cuda.is_available():
torch.backends.cuda.matmul.allow_tf32 = True
torch.backends.cudnn.allow_tf32 = True
errors.run(enable_tf32, "Enabling TF32")
device = device_gfpgan = device_bsrgan = device_esrgan = device_scunet = device_codeformer = get_optimal_device()
dtype = torch.float16
dtype_vae = torch.float16
15行目 return torch.device(“cuda:0”) の部分デフォルトでは (“cuda”) になっていると思いますがこれを cuda:1 かcuda:0に変更します。どちらがどのGPUかは一度負荷をかけてみて確認してください。
これでゲームをしながら画像生成が可能です、正直生成中はYou Tubeとか若干重かったのでこの機能は助かります。
言い忘れていましたが、消費電力には気をつけてください。電源容量以上の電力を使用するとGPUが燃える場合があります。大抵の場合電源が落ちるだけですが、高額なGPUを壊すと元も子もないので気になる人は止めておきましょう。
コメント