- 글쓴시간
- 분류 기술,IT/스테이블 디퓨전
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 하나 정도는 찾아 놓는것도 좋을것 같다. 아래 이미지는 이를 사용해 생성한 이미지다.




