이번에는 LoRA 버전을 만들어봤습니다. 다른 모델과 섞어 쓰기 유용하고 좋네요.
https://civitai.com/models/29555
자매품(?)인 체크포인트 버전에서는 그림 전체를 학습시켰던 것과 다르게, 이번에는 사람 얼굴의 디테일을 살리기 위해 한땀한땀 crop 작업을 진행했습니다. 총 137장의 샘플을 준비했고, 107장이 인물, 나머지 30장이 배경, 동물 그리고 등장하는 물건들로 구성되었습니다.
학습은 kohya-LoRA-dreambooth로 colab에서 진행했습니다.
한가지 수정한 부분이 있다면, 현재 colab에 기본적으로 설치되는 torch version이 2.0.0+cu118으로 올라가면서 여기저기 터져나가고 있는 것으로 보입니다. (참고 : https://github.com/AUTOMATIC1111/stable-diffusion-webui/issues/9341#issuecomment-1495224456 )
수정 : kohya쪽은 이미 버전이 올라가 있었네요. 제가 복사했던 시점이 좀 되어서 그랬나봅니다.
kohya-LoRA-dreambooth도 예외없이 xformers쪽에서 에러가 나고 있어서, "1.1. Install Dependencies" 부분 코드를 아래처럼 수정해 문제없이 동작 시켰습니다.
if install_xformers: !pip {'-q' if not verbose else ''} install xformers==0.0.17 triton==2.0.0
instance_token은 shinyunbo, class_token은 style을 사용했습니다. SD1.5 기반으로, 세부 설정값은 손 안대고 기본값을 그대로 사용했습니다. 참고로 아래는 학습 시작할 때 출력되었던 내용입니다.
[Dataset 0]
caching latents.
100% 137/137 [00:21<00:00, 6.36it/s]
import network module: networks.lora
create LoRA network. base dim (rank): 32, alpha: 16
create LoRA for Text Encoder: 72 modules.
create LoRA for U-Net: 192 modules.
enable LoRA for text encoder
enable LoRA for U-Net
prepare optimizer, data loader etc.
CUDA SETUP: CUDA runtime path found: /usr/local/cuda/lib64/libcudart.so
CUDA SETUP: Highest compute capability among GPUs detected: 7.5
CUDA SETUP: Detected CUDA version 118
CUDA SETUP: Loading binary /usr/local/lib/python3.9/dist-packages/bitsandbytes/libbitsandbytes_cuda118.so...
use 8-bit AdamW optimizer | {}
override steps. steps for 10 epochs is / 指定エポックまでのステップ数: 2290
running training / 学習開始
num train images * repeats / 学習画像の数×繰り返し回数: 1370
num reg images / 正則化画像の数: 0
num batches per epoch / 1epochのバッチ数: 229
num epochs / epoch数: 10
batch size per device / バッチサイズ: 6
gradient accumulation steps / 勾配を合計するステップ数 = 1
total optimization steps / 学習ステップ数: 2290
결과물은 상당히 그럴싸하게 나왔습니다. 아래는 civit 대문에 올라가있는, 개인적으로 생각하는 best샷입니다.
그 외에 동물과 풍경도 잘 그려줍니다. 이 부분은 모델에 이미 학습되어있는 수묵화 정보 덕분인 것 같습니다.
그리고 앞서 말씀드렸던 것처럼, LoRA의 강점은 다른 체크포인트에 얹혀 쓰일수 있다는 부분인 것 같습니다.
전혀 다른 그림체로 학습된 체크포인트와 섞어 써 본 결과, 아래와 같이 약간의 한국적인 분위기와 수묵화 분위기를 얹어 독특한 결과물을 생성할 수 있었습니다.
/Vollago