윈디하나의 누리사랑방. 이런 저런 얘기

글쓴시간
분류 기술,IT/스테이블 디퓨전
Stable Diffusion web UI - LoRA

Stable Diffusion web UI (이하 SD) 를 사용하다보면 반드시 사용하게 되는 SD 의 기능중 하나가 LoRA (Low-Rank Adaptation of Large Language Models)다. 여기서 Large Language Models 는 Transformer 를 이야기하는거고 Stable Diffusion 에도 Transformer 가 있기 때문에 이 부분에 적용된다.

기본적으로 학습된 모델을 (SD 에서는 체크포인트) 파인튜닝(미세조정)하려면 DreamBooth 를 사용해 재학습 시켜야 한다. 재학습시키는건 비용(=시간)이 많이 들기 때문에 좀 더 빠르게 미세조정할 수 있는 방법을 생각해보다가 나온게 "Low-Rank Adaptation" 이다. 예를 들어 1000 x 2000 행렬을 1000 x 2 + 2000 x 2 로 해서 학습할 파라메터를 줄인다. 이후 LoRA 를 이용한 다양한 기법들이 연구되고 사용되고 있다.

- LoRA: Low-Rank Adaptation (Tranformer 블록만 학습)
- LoCon: LoRA for Convolusion Network (Tranformer 외에 Res 블록도 학습)
- LoHa: LoRA with Hadamerd Product Representation (LoRA 에서 행열곱 연산 대신 하마다르곱 연산을 사용)
- LoKR: LoRA with KRonecker Product Representation (LoRA 에서 행열곱 연산 대신 크로네커곱 연산을 사용)
- DyLoRA: Dynamic search-free LoRA (한번의 학습으로 여러 Rank 의 모델을 얻음)

SDUI 에서는 LyCORIS(Lora beYond Conventional methods, Other Rank adaptation Implementations) 라는 확장 프로그램을 사용해 각종 LoRA 들을 사용할 수 있다.

물론 학습이 쉬워졌다(=낮은 사양에서도 실질적으로 학습 할 수 있다)는 이야기지, 대충 만들어도 좋게 나온다는 의미는 아니다. 그래도 학습에 필요한 양질의 이미지를 준비해야하기 때문에, 상당한 노력과 시간이 필요하긴 하다.

학습에 필요한 이미지가 준비되었고 준비된 이미지에 프롬프트를 설정해주었다면, RTX 3060 12G 에서 LoRA 를 생성하는데 3시간 정도 걸린다.

필자가 생성하는 거의 모든 이미지에 koreanDollLikeness_v10 를 사용한다. 심지어 koreanDollLikeness_v20 이 나오긴 했지만 안쓴다. 맘에 드는 LoRA 하나 정도는 찾아 놓는것도 좋을것 같다. 아래 이미지는 이를 사용해 생성한 이미지다.

사용자 삽입 이미지

사용자 삽입 이미지

사용자 삽입 이미지

사용자 삽입 이미지

사용자 삽입 이미지