익명 사용자
로그인하지 않음
토론
기여
계정 만들기
로그인
IT 위키
검색
LoRA (인공지능)
편집하기
IT 위키
이름공간
문서
토론
더 보기
더 보기
문서 행위
읽기
편집
원본 편집
역사
경고:
로그인하지 않았습니다. 편집을 하면 IP 주소가 공개되게 됩니다.
로그인
하거나
계정을 생성하면
편집자가 사용자 이름으로 기록되고, 다른 장점도 있습니다.
스팸 방지 검사입니다. 이것을 입력하지
마세요
!
'''LoRA'''(Low-Rank Adaptation)는 대형 언어모델(LLM) 등 초거대 신경망의 선형층(linear layer)을 효율적으로 미세조정(fine-tuning)하기 위한 '''저차원 보정'''(low-rank adaptation) 기법이다.<ref name="lora2022">[https://arxiv.org/abs/2106.09685 Hu, Edward J., et al. "LoRA: Low-Rank Adaptation of Large Language Models." ICLR (2022).]</ref> 전체 파라미터를 재학습하지 않고, 각 선형변환 가중치 행렬에 작은 저랭크(rank-r) 보정 행렬만 추가로 학습하여 메모리와 연산량을 대폭 절감한다. ==개요== <nowiki>Transformer의 Self-Attention, MLP 등은 모두 선형변환을 수행하는 가중치 행렬 \( W \in \mathbb{R}^{d_{\text{out}} \times d_{\text{in}}} \)을 포함한다. LoRA는 이 행렬 전체를 다시 학습하는 대신, 기존 가중치 \(W_0\)를 고정(freeze)하고 저차원 보정 행렬 \(\Delta W = B A\)만 학습한다. 이때 \(A \in \mathbb{R}^{r \times d_{\text{in}}}\), \(B \in \mathbb{R}^{d_{\text{out}} \times r}\), \(r \ll d\)이며 보통 r은 4~8 정도로 설정된다.</nowiki> ==수식== \[ W' = W_0 + \Delta W = W_0 + B A \] \[ y = W'x = W_0 x + B (A x) \] 즉 입력 x를 A를 통해 r차원으로 축소한 뒤, B로 다시 확장하여 보정량을 더하는 구조이다. \(W_0\)는 학습되지 않으며, A와 B만 학습된다. ==핵심 아이디어== *'''저차원 보정 (Low-rank adaptation)''' **ΔW를 직접 학습하지 않고, 두 개의 저차원 행렬 B, A로 분해하여 파라미터 수를 대폭 줄인다. **예: \(4096\times4096\) 행렬(약 1.6억 파라미터)을 \(4096\times4 + 4\times4096 = 3.2만\) 파라미터로 근사. **dense하되 정보가 저차원 subspace에 존재하기 때문에 희소성(sparsity)과는 다르다. *'''기존 가중치 보존''' **W₀는 고정(freeze)되어, 미세조정 중 원본 모델의 지식을 손상시키지 않는다. *'''추론 효율''' **학습 후 ΔW = BA를 W₀에 병합(merge)할 수 있어 추론 시 추가 연산이 없다. *'''선형성 활용''' **Transformer의 선형층은 본질적으로 선형연산이므로, low-rank 근사로 효율적인 보정이 가능하다. ==구조적 특징== *'''적용 위치''' **주로 Self-Attention의 Q, K, V, Output projection, 그리고 MLP의 선형층에 적용된다. **Attention의 각 선형변환마다 별도의 LoRA 모듈이 추가된다. *'''파라미터 비율''' **전체 파라미터 대비 약 0.05%~0.2%만 학습한다. **예: LLaMA-7B 모델에서 LoRA rank=8 기준 추가 파라미터는 약 0.1% 수준. *'''하이퍼파라미터''' **rank (r): 저차원 공간의 크기 (보통 4~16) **α: scaling factor (기본 16 또는 32) **dropout: regularization 용도 (기본 0 또는 0.1) ==예시 (직관적 설명)== 예를 들어 3×3 가중치 행렬 \[ W = \begin{bmatrix} 2 & 4 & 6\\ 1 & 2 & 3\\ 3 & 6 & 9 \end{bmatrix} \] 은 rank=1 행렬이므로, 두 개의 작은 행렬로 정확히 분해할 수 있다: \[ B = \begin{bmatrix} 2\\ 1\\ 3 \end{bmatrix}, \quad A = \begin{bmatrix} 1 & 2 & 3 \end{bmatrix}, \quad W = BA \] 이처럼 LoRA는 큰 W 전체를 다시 학습하지 않고, B(확장)·A(축소) 형태로 보정량을 학습하는 원리이다. ==장점== *전체 미세조정 대비 GPU 메모리 사용량을 90% 이상 절감. *원본 모델(W₀)의 파라미터는 유지되어 catastrophic forgetting이 없음. *추론 시 ΔW를 병합할 수 있어 추가 latency가 없음. *파라미터 공유를 통해 멀티태스크·멀티도메인 학습에 적합. ==한계== *rank가 너무 작으면 표현력 부족으로 성능 저하. *rank·적용 위치·scaling factor 등 하이퍼파라미터 선택이 성능에 민감. *학습 시에는 여전히 dense 연산이 수행되어 완전한 sparsity 기반 효율은 아님. ==후속 연구== *'''QLoRA''' (Dettmers et al., NeurIPS 2023): LoRA를 4bit quantization과 결합하여 메모리 효율을 극대화. *'''AdaLoRA''' (Zhang et al., ICLR 2023): rank를 layer별로 동적으로 조정하여 성능 향상. *'''DyLoRA''' (Li et al., 2024): 학습 중 rank를 동적으로 확장·축소하는 adaptive 구조. *'''LoCon, LoHa, LoKr''' (Stable Diffusion 계열): 비시각·비언어 도메인에도 확장 적용 ==참고 문헌== *Hu, Edward J., et al. "LoRA: Low-Rank Adaptation of Large Language Models." ICLR (2022). <ref name="lora2022" /> *Dettmers, Tim, et al. "QLoRA: Efficient Finetuning of Quantized LLMs." NeurIPS (2023). *Zhang, X., et al. "Adaptive Low-Rank Adaptation for LLMs (AdaLoRA)." ICLR (2023). *Li, Z., et al. "Dynamic Low-Rank Adaptation of LLMs (DyLoRA)." arXiv (2024). [[분류:인공지능]] [[분류:딥 러닝]]
요약:
IT 위키에서의 모든 기여는 크리에이티브 커먼즈 저작자표시-비영리-동일조건변경허락 라이선스로 배포된다는 점을 유의해 주세요(자세한 내용에 대해서는
IT 위키:저작권
문서를 읽어주세요). 만약 여기에 동의하지 않는다면 문서를 저장하지 말아 주세요.
또한, 직접 작성했거나 퍼블릭 도메인과 같은 자유 문서에서 가져왔다는 것을 보증해야 합니다.
저작권이 있는 내용을 허가 없이 저장하지 마세요!
취소
편집 도움말
(새 창에서 열림)
둘러보기
둘러보기
대문
최근 바뀜
광고
위키 도구
위키 도구
특수 문서 목록
문서 도구
문서 도구
사용자 문서 도구
더 보기
여기를 가리키는 문서
가리키는 글의 최근 바뀜
문서 정보
문서 기록