토니의 연습장
LoRA (Low Rank Adaptation) 본문
Stable Diffusion 모델을 개인의 custom model로 fine tuning 하기는 쉽지 않습니다.
또한, 자원 및 데이터의 제한 문제와 함께 신규 데이터셋을 통해 재학습 했을 때 발생할 수 있는 문제도 있습니다.
(모델 전체 학습 : 학습의 효율성 문제 / 일부 layer 학습 : 성능의 문제)
이를 해결하기 위해 도입할 수 있는 기법 중 하나가 PEFT 기술 중 하나인 LoRA로써, 이는 대규모 사전학습된 언어 모델을 적용하는 과정에서 fine tuning 하기 위해 NLP에서 가장 먼저 도입되었으며, Fine tuning 학습시간을 감소시키면서도 Base model의 기본 성능을 저해하지 않습니다.
해당 기법의 원리를 간단히 요약하면, 위 그림에서와 같이 Pretrained Weights는 고정하고, Adaptor인 A와 B만 학습하여 효율적으로 output h를 수정 가능하게 됩니다.
(LoRA 기법의 원리 자체에 관련된 더 자세한 내용은 이를 더 상세하게 다뤄 주신 다른 블로그 글인 https://semonan.com/kr/book/5001 를 참고하시기를 추천 드립니다)
위와 같은 LoRA를 Stable Diffusion에 적용하기 위한 방안으로는, Transformer의 self attention 모듈에 적용하고 MLP에는 적용하지 않는 것입니다. 즉, input의 W matrix 적용 부분에서 이를 low rank로 분해하여 LoRA를 적용하는 것입니다.
이렇게 할 경우 메모리 / 스토리지의 사용량이 감소할 뿐만 아니라, 모델 사용자 간의 공유 차원에서도 LoRA 가중치만을 상호 교환받아(LoRA 모델만 배포) 사용할 수 있는 편리함도 증대됩니다.
[ 참고 ]
https://chatgpt.com/share/e37ddeb9-9132-42b3-b7d9-dfa1571f921b
'비전 AI (VISION) > Stable Diffusion' 카테고리의 다른 글
FLUX - LoRA (2) | 2025.03.15 |
---|---|
Inpainting (0) | 2024.08.24 |
StableDiffusionPipeline (0) | 2024.08.23 |
Stable Diffusion 이론 (0) | 2024.08.23 |