LoRA(Low-Rank Adaptation)는 딥러닝 모델의 학습을 최적화하고 경량화하는 기술로, 주로 Stable Diffusion과 같은 대형 모델을 커스터마이징할 때 사용된다.
스테이블디퓨전의 checkpoint 는 보통 6G 이상이고, Flux1-dev 모델은 22G 정도 되는 대형 모델들이다. 이런 대형 모델들을 사용하면서 자신이 원하는 이미지를 만드는데 부족한 부분을 느낄 수있고 checkpoint 전체를 재 training 시키기 보다는 적은 용량으로 모델을 훈련시켜 보완적인 모델로 사용한다. 그런 소형 모델들을 Lora 라고 하며 checkpoint에 연결하여 사용한다.
LoRA의 특징
경량화된 학습: LoRA는 기존 대형 모델의 전체 파라미터를 모두 조정하지 않고, 특정 부분의 더 적은 파라미터만 조정한다. 이는 GPU 메모리를 적게 사용하게 만들어 학습 속도를 크게 높여준다.
빠른 Fine-tuning: LoRA는 대형 모델을 처음부터 다시 학습할 필요 없이, 기존 모델의 특정 요소를 개선하거나 변형할 때 유용하다. 특정 스타일의 이미지로 학습시키려면 LoRA를 사용하여 빠르게 그 스타일에 적합한 모델을 만들어 스타일을 적용 할 수 있다.
유연성하다: LoRA는 원본 모델(checkpoint)을 손상시키지 않으면서도, 다양한 특성이나 새로운 스타일을 학습시킬 수 있기 때문에 매우 유연하다. 원본 모델과 LoRA 모델을 결합하여 사용하며, 기존 학습된 데이터를 기반으로 모델의 특성을 손쉽게 변경할 수 있다. 특히 특정 인물이나 특정 style 등을 훈련시켜 많이 사용한다.
LoRA 사용법 (comfyui)
automatic1111 에서도 물론 LoRA를 사용 할 수 있지만 이 글에서는 comfyui 에서의 LoRA 적용법을 설명한다.
- LoRA 모델 다운로드 : LoRA 모델들을 다운로드 할 수 있는 사이트는 주로 CIVITAI , Tensor art, shakker ai 등에서 다운 받을 수 있다.
- LoRA 모델설치 : D:\ComfyUI_windows_portable\ComfyUI\models\loras 에 다운받은 파일을 옮겨 넣는다.
- Comfyui 를 실행시킨다.
- LoRA 노드 연결 : workflow 에서 Load checkpoint 노드와 CLIP Text Encode 노드사이에 Load LoRA 노드를 삽입하여 연결한 후 LoRA 모델을 선택하고 이미지를 생성한다.
(LoRA 모델을 사용할 때는 반드시 Trigger Words 을 prompt 에 입력해 줘야 LoRA 모델이 작동하여 원하는 이미지를 만들 수 있다.)
LoRA가 적용된 workflow |
LoRA (Double Exposure ) 를 civitai 에서 다운받아 적용하였다. LoRA 가 없을때는 double exposure 이미지를 만들기가 어려운데 LoRA를 적용하면 쉽게 만들어 진다.
LoRA 훈련 시키는 방법
LoRA 훈련을 개인용 컴퓨터에서 시키기 위해서는 고 사양이 필요하고 많은 시간이 소모된다. 그래서 가급적 LoRA 모델을 훈련 시켜주는 online 사이트를 이용하여 만드는것을 권장한다.
- replicate.com
- fal.ai
- tost.ai
- civitai
- tensor.art
등 이 밖에도 여러 군데가 있는데 대부분 유료로 만들어야 한다.
LoRA 훈련 실습
내가 훈련 시켰던 replicate.com 에서 훈련을 시켜 보겠다.
- 먼저 훈련 시킬 이미지가 준비되어 있어야 한다. 최소 10장에서 이미지가 많을 수록 좋지만 시간이 많이 소모되고 비용도 많이 들기 때문에 보통 20장 정도 준비하는 것이 좋다.
- 20장의 사진을 zip 파일로 압축한다.
- replicate.com 접속 - "lora trainer" 로 검색
- 개인적으로 ostris/flux-dev-lora-trainer 를 선택하였다.
- Destination 에 출력파일명, input image 에 20장 압축파일 업로드, trigger_word 입력, autocaption_prefix 를 입력한 후 생성을 시켰다. 대략 시간이 20~30분정도 소요되고 여기에서는 소요되는 시간에 따라 훈련시키는 비용을 지불한다.
댓글
댓글 쓰기