いちいちonnxにコンバートするのめんどいしckpt使いたくね?
※追々記
AUTOMATIC1111版をdirectl-mlでやるブランチが生まれていたようです.
私の環境だとうまく起動できなかったし無理やり動かしてもうまくGPU掴んでくれないので今後に期待かな?
github.com
==追々記ここまで==
※追記 いや面倒くさくないしonnx使いたいとかVRAM足らん過ぎてやばいとかckptとかどうでもいいって人はこっちのほうがいい可能性もあります. koji-genba.hateblo.jp
ckpt使えないとか設定できる項目が少ないとかって制約はあるけどVRAMの使用量はこっちのほうが少ない.両方使うこともできるし好きに選べばいい.
==追記ここまで==
環境
windows11 22H2
Radeon RX6800XT
※wsl不使用
Python3.10.8
作業
AUTOMATIC1111版stable-diffusion-webuiを用意してwebui-user.batを編集.
COMMANDLINE_ARGSに--skip-torch-cuda-test --precision full --no-half --no-half-vae --medvram
を追加する.medvramないと6800XTでもVRAM使い切る(16GBオーバー).
@echo off set PYTHON= set GIT= set VENV_DIR= set COMMANDLINE_ARGS= --skip-torch-cuda-test --precision full --no-half --no-half-vae --medvram call webui.bat
こうなればおk.
そしたら一度webui-user.batを起動する.
また色々とパッケージのインストールが始まるのでほっとく.
しばらくすると
Can't run without a checkpoint. Find and place a .ckpt file into any of those locations. The program will exit. 続行するには何かキーを押してください . . .
になるはず.なったら素直に適当なキー押して閉じる.
そしたらstable-diffusion-webuiフォルダでターミナル開いて
.\venv\Scripts\activate pip install torch torchvision torch_directml
一応CPU用にtorch入れといてradeon用にtorch-directml入れる.
modules/devices.pyを開いて
if has_mps(): return torch.device("mps") return cpu
を
if has_mps(): return torch.device("mps") try: import torch_directml return torch_directml.device() except ImportError as e: return cpu
にする.
repositories\k-diffusion\k_diffusion\external.pyを開いて
if quantize: return dists.abs().argmin(dim=0).view(sigma.shape) low_idx = dists.ge(0).cumsum(dim=0).argmax(dim=0).clamp(max=self.log_sigmas.shape[0] - 2) high_idx = low_idx + 1
を
if quantize: return dists.abs().argmin(dim=0).view(sigma.shape) low_idx = dists.ge(0).to(torch.int32).cumsum(dim=0).argmax(dim=0).clamp(max=self.log_sigmas.shape[0] - 2) high_idx = low_idx + 1
にする.
あとは普通にAUTOMATIC1111版stable-diffusion-webuiを使う時と同じ.
なおnovelAI完全再現は出来ない模様,ckptロードはできるし描かせることも出来るけど違う結果が出てくる.