쉽게 말하면, LoRA는 큰 모델 전체를 다시 학습시키지 않고 작은 보조 부품만 새로 학습해 특정 작업에 맞추는 방법이다. 원래 모델은 건드리지 않으므로 작업마다 가벼운 파일만 따로 저장하면 되고, 학습할 값의 수와 저장 공간을 크게 줄일 수 있다.
| 분류 | 파라미터 효율적 미세 조정 기법 |
|---|---|
| 최초 제안 | 2021년, Edward Hu 등 (ICLR 2022 발표) |
| 핵심 방식 | 기존 가중치 행렬은 고정하고 두 개의 작은 행렬로 된 저랭크 업데이트만 학습 |
| 주요 효과 | 학습 파라미터, 옵티마이저 상태, 작업별 체크포인트 저장 공간 감소2 |
| 주요 구현 | 마이크로소프트 loralib, Hugging Face PEFT3,4 |
1. 개요
LoRA(Low-Rank Adaptation)는 사전 학습된 모델을 특정 작업에 맞추는 파라미터 효율적 미세 조정 방법이다. 큰 가중치 행렬을 직접 바꾸는 대신 원래 행렬은 고정하고, 두 개의 훨씬 작은 행렬로 표현되는 저랭크 가산 업데이트를 학습한다. Edward Hu 등이 2021년에 이 방법을 제안했고, 논문은 ICLR 2022에 실렸다.2
LoRA는 모델을 작게 만드는 기법이라기보다 모델 업데이트에 거는 제약으로 이해하는 편이 정확하다. 학습 가능한 파라미터 수, 옵티마이저 상태, 작업별 체크포인트 저장 공간을 크게 줄일 수 있다. 그러나 기저 가중치는 여전히 불러와야 하며, 활성화 메모리를 자동으로 없애지도 못한다. 품질과 효율은 모델, 대상 모듈, 데이터, 랭크, 옵티마이저, 정밀도, 서빙 방식에 따라 달라진다.
2. 핵심 아이디어
고정된 선형 층의 가중치를 W₀라 하자. 전체 미세 조정은 W₀와 같은 모양의 임의 업데이트 ΔW를 학습할 수 있다. LoRA는 이 업데이트를 ΔW = sBA로 제한한다. 여기서 B는 출력 차원 × r, A는 r × 입력 차원 행렬이고, r은 어댑터 랭크, s는 스케일링 계수다. 층의 계산은 y = W₀x + sB(Ax)가 된다.
W_0 \in \mathbb{R}^{d_{\mathrm{out}} \times d_{\mathrm{in}}}
\Delta W = sBA
B \in \mathbb{R}^{d_{\mathrm{out}} \times r}, \quad A \in \mathbb{R}^{r \times d_{\mathrm{in}}}
y = W_0x + sB(Ax)이 구조에서 업데이트의 랭크는 r 이하로 제한된다. 학습 파라미터는 r(d_in + d_out)개로, 같은 행렬에 제약 없는 업데이트를 줄 때의 d_in × d_out개보다 적다. 이 절약은 r이 두 차원보다 훨씬 작을 때 두드러진다. 모델 전체의 절약량은 적응시킨 모든 행렬을 합산해야 나오므로, 랭크 값만으로는 어댑터 크기를 알 수 없다.
LoRA는 행렬 분해와 관련이 있지만 목적이 다르다. 보통 W₀를 분해해 대체하지 않고, 고정된 W₀ 곁에 분해된 변화량을 학습한다. 라이브러리에 따라 두 인자의 이름이나 순서가 다를 수 있으므로, 실제 업데이트는 문자 A와 B가 아니라 행렬의 모양과 곱셈 순서로 판단해야 한다.
2.1. 기저 행렬을 고정하는 이유
- W₀의 그래디언트와 옵티마이저 모멘트를 저장하지 않아도 된다.
- 하나의 기저 체크포인트를 여러 작은 작업별 어댑터가 공유할 수 있다.
- 편향이나 출력 헤드 같은 다른 파라미터를 학습하지 않았다면, 어댑터를 제거하거나 끄는 것만으로 기저 모델의 계산이 복원된다.
기저 가중치는 여전히 순전파에 참여하고, 앞쪽 학습 층을 위해 입력에 대한 그래디언트도 계속 필요하다. 그래서 LoRA는 파라미터와 옵티마이저 상태 비용은 직접 줄이지만, 활성화 비용은 같은 수준으로 줄이지 못한다. 긴 시퀀스나 큰 배치가 학습 메모리를 지배한다면 이 차이가 중요하다.
3. 초기화, 스케일링, 그래디언트
3.1. 0으로 시작하는 초기화
원 논문은 A를 무작위로, B를 0으로 초기화해 학습 시작 시 ΔW가 0이 되도록 했다. 마이크로소프트의 참조 구현 loralib는 선형 층의 A에 Kaiming 초기화를, B에 0을 쓴다. 따라서 무작위 분포는 구현마다 다르지만, 시작 업데이트가 0이라는 점이 핵심 불변 조건이다.2,3
(∂ L)/(∂ A)=sBᵀ G, (∂ L)/(∂ B)=sGAᵀ
B가 0이면 A에 대한 첫 업데이트는 0이지만, B는 무작위 A를 거쳐 0이 아닌 그래디언트를 받는다. B가 0에서 벗어나면 두 인자 모두 학습할 수 있다. 두 인자를 모두 0으로 초기화하면 첫 단계에서 두 그래디언트가 모두 막힌다.
3.2. 표준 스케일링과 드롭아웃·편향
원래 방식의 스케일은 s = α/r이며, 여기서 α는 어댑터에 맞춰 정하는 상수다. 랭크, α, 인자 초기화, 학습률은 서로 영향을 준다. 랭크가 같아도 α가 다르면 실효 업데이트 크기가 일반적으로 같지 않다.2
보편적으로 가장 좋은 랭크나 α는 없다. 랭크를 높이면 용량과 학습 상태가 늘어나지만 검증 성능이 좋아진다는 보장은 없다. 랭크를 낮추면 업데이트를 규제하는 효과가 생기지만 용량 병목이 될 수도 있다. 적절한 비교는 데이터 분할, 대상 모듈, 옵티마이저, 스케줄, 정밀도, 평가 절차를 고정한 채 랭크와 학습률을 함께 탐색하는 것이다.
rsLoRA는 스케일을 α/√r로 바꾼다. 2023년 프리프린트는 표준 1/r 인자가 랭크가 커질수록 학습을 약하게 만들 수 있다고 이론과 실험으로 주장했고, 제곱근 인자가 높은 랭크의 학습을 안정시킨다고 보고했다. 이는 표준 LoRA의 정의를 소급해 바꾼 것이 아니라 별도의 변형이다.5
드롭아웃은 보통 기저 분기가 아니라 어댑터 분기에 적용한다. 편향은 고정해 두거나 따로 학습할 수 있다. Hugging Face PEFT 0.13.0에서는 bias를 none, all, lora_only 중 하나로 정한다. 편향을 학습하면 어댑터를 꺼도 수정되지 않은 기저 모델이 더 이상 반드시 재현되지는 않는다.4
4. LoRA를 적용하는 위치
LoRA는 호환되는 어떤 밀집 가중치 행렬에도 붙일 수 있다. 트랜스포머에서 흔한 대상은 어텐션의 쿼리, 키, 값, 출력 투영과 피드포워드 블록의 up, gate, down 투영이다. 임베딩, 합성곱 층, 출력 헤드는 구조별 지원이 필요하다.
원 논문은 연구 대부분을 어텐션 가중치에 한정했고, 흔히 쿼리와 값 투영을 적응시켰다. 피드포워드 층, 정규화 층, 기타 여러 선택지는 후속 연구로 남겼다. 이 실험 범위를 보편적인 처방으로 읽어서는 안 된다.2
대상 모듈 선택은 용량과 비용을 함께 바꾼다. 랭크 8로 모든 선형 투영을 적응시키는 것이 랭크 32로 쿼리와 값 투영만 적응시키는 것보다 학습 파라미터가 많을 수 있다. 어떤 함수를 쉽게 학습하는지도 달라진다. 따라서 보고할 때는 「어텐션 LoRA」처럼 뭉뚱그린 표현 대신 정확한 모듈 이름을 적어야 한다.
Hugging Face PEFT 0.13.0은 target_modules, modules_to_save, 층별 랭크와 α 패턴, all-linear 선택자를 제공한다. fan_in_fan_out으로 구조에 따른 가중치 방향도 지정할 수 있다. 이 설정들은 구현상의 제어 장치일 뿐 최적 선택의 근거가 아니다.4
5. LoRA가 줄여 주는 것
각 적응 행렬에서 제약 없는 d_out × d_in 학습 업데이트가 r × (d_in + d_out)개의 인자 파라미터로 바뀐다. 1차 옵티마이저는 이 인자의 그래디언트만 필요하고, Adam 계열은 학습 상태에 대해서만 모멘트 추정치를 유지한다. 기저 모델을 고정하고 r이 작으면 큰 절약이 될 수 있다.
비병합 어댑터는 Ax와 B(Ax)라는 두 번의 곱셈을 추가로 계산한다. 학습은 대부분의 가중치 그래디언트를 계산하고 주고받지 않아도 되므로 더 빨라질 수 있지만, 실제 속도는 커널 형태, 메모리 이동, 배치, 분산 배치 구성에 따라 달라진다. 작은 저랭크 행렬 곱셈이 항상 하드웨어 효율적인 것은 아니므로, 보고된 속도 향상은 특정 하드웨어와 소프트웨어 구성에 묶어서 해석해야 한다.
5.1. 체크포인트 저장
어댑터 체크포인트는 인자 가중치와 설정 파일만 담을 수 있으며, 그 자체로 독립된 모델이 아니다. PEFT의 체크포인트 문서는 기저 모델도 있어야 한다고 명시하고, 알려진 경우 기저 모델의 이름이나 경로와 리비전을 기록한다고 밝힌다. 재현을 위해 어댑터 배포본에는 최소한 다음 항목을 밝혀야 한다.6
- 정확한 기저 체크포인트와 리비전
- 토크나이저 또는 프로세서 리비전
- 대상 모듈 이름과 층 선택
- 랭크, α, 스케일링 방식, 드롭아웃, 편향 정책
- 추가로 학습한 모듈
- 프레임워크와 라이브러리 버전
- 가중치 정밀도와 직렬화 형식
같은 구조나 같은 이름을 가진 다른 모델에 한 기저 리비전에서 학습한 어댑터가 자동으로 유효해지지는 않는다. 저장된 ΔW는 특정 W₀에 맞춰 최적화된 값이기 때문이다.
5.2. 학습 메모리
LoRA는 기저 가중치의 그래디언트와 대부분의 옵티마이저 상태를 없앤다. 그러나 학습 과정은 여전히 다음을 메모리에 담을 수 있다.
실제 메모리 절감은 시퀀스 길이, 배치 크기, 체크포인팅, 샤딩, 오프로딩, 옵티마이저, 수치 정밀도에 따라 달라진다. 파라미터 수의 비율이 곧 메모리 비율이 되지는 않는다.
6. 병합·비병합 추론 실행
단일 어댑터라면 인자를 기저 행렬에 병합할 수 있다.
Wmerged=W0+sBA
병합 후 층은 원래 층과 같은 행렬 곱셈 형태를 사용한다. 원 논문의 추가 추론 지연이 없다는 주장은 이렇게 올바르게 병합된 어댑터에 적용된다. 병합되지 않았거나, 핫스왑되었거나, 양자화되었거나, 여러 어댑터를 쓰는 구현에 오버헤드가 전혀 없다는 뜻은 아니다.2
정확한 산술에서는 병합과 비병합 계산이 대수적으로 같다. 그러나 유한 정밀도의 반올림, 양자화, 라이브러리 구현에 따라 작은 수치 차이가 생길 수 있으므로, 병합 후에는 의도한 정밀도에서 출력 동일성 테스트를 해야 한다.
마이크로소프트의 참조 구현은 평가할 때 병합하고, 병합 옵션이 켜져 있으면 학습으로 돌아갈 때 업데이트를 뺀다. PEFT의 merge_and_unload()는 생명주기 의미가 다르다. 반환된 객체는 PEFT 방법이 없는 기본 모델이고, 그 객체로는 어댑터를 끄거나 병합을 되돌릴 수 없으며, 전체 모델 크기만큼의 저장 공간을 차지한다. 운영 절차는 사용하는 라이브러리의 실제 동작을 따라야 한다.3,6
어댑터를 기저 가중치를 다시 쓰지 않고 켜고 끄거나 결합하고 바꿔야 하는 서비스라면 비병합 형태가 낫다. 다만 그 유연성의 대가로 어댑터 분기의 연산과 더 복잡한 스케줄링이 필요하다.
7. 원 논문의 실험 근거
LoRA 논문은 RoBERTa, DeBERTa, GPT-2, GPT-3를 일부 자연어 이해와 생성 과제에서 평가했다. 이 실험에서 LoRA는 논문이 보고한 전체 미세 조정 및 다른 파라미터 효율 기준선과 견줄 만하거나 그보다 나았으며, 학습한 파라미터는 훨씬 적었다. 이 주장은 해당 모델, 데이터셋, 시드, 지표, 기준선 절차 안에서만 경험적으로 뒷받침된다.2
가장 큰 사례 연구는 GPT-3 175B였다. 논문이 보고한 검증 결과는 다음과 같다.
| 방법 | 학습 파라미터 수 | WikiSQL / MNLI-m | SAMSum R1/R2/RL |
|---|---|---|---|
| 전체 미세 조정 | 175,255.8M | 73.8 / 89.5 | 52.0 / 28.0 / 44.5 |
| LoRA | 4.7M | 73.4 / 91.7 | 53.8 / 29.8 / 45.9 |
| LoRA | 37.7M | 74.0 / 91.6 | 53.4 / 29.2 / 45.12 |
같은 표는 WikiSQL 약 0.5 퍼센트포인트, MNLI-m 약 0.1 퍼센트포인트, SAMSum 세 지표는 각각 0.2, 0.2, 0.1 퍼센트포인트 정도의 변동이 있다고 적었다. 이 변동폭보다 작은 차이로 우열을 가리면 안 된다.
GPT-3 175B에서 쿼리와 값 투영에 랭크 4를 적용했을 때, 저자들은 학습 메모리를 1.2 TB에서 350 GB로, 태스크 체크포인트 저장 공간을 350 GB에서 35 MB로 줄였다고 보고했다. 같은 가중치 샤딩 설정에서 V100 한 장당 처리량은 LoRA가 43.1, 전체 미세 조정이 32.5 초당 토큰 수였다. 자주 인용되는 이 수치는 2021년 특정 시스템에 대한 것이며, 최신 모델에 적용할 일반 환산값이 아니다.2
논문의 랭크 분석은 어텐션만 적응시킨 GPT-3 실험에서 여러 과제에 작은 랭크로도 충분했다고 밝혔다. 그러나 랭크 1, 2, 4, 8이 모든 모델, 대상 모듈, 데이터셋, 적응 목표에 충분하다는 것을 입증하지는 않았다.
8. 낮은 랭크가 통하는 이유
중요한 선행 연구는 언어 모델 적응에서의 본질적 차원(intrinsic dimension) 연구다. Aghajanyan 등은 무작위로 투영한 부분공간에서 파라미터를 최적화했고, 한 MRPC 실험에서는 학습 좌표 200개만으로 전체 모델 성능의 90%에 도달했다고 보고했다. 연구한 모델과 과제 전반에서 사전 학습은 측정된 본질적 차원이 낮은 것과 관련이 있었다.7
이 연구는 유용한 적응이 전체 파라미터 공간보다 훨씬 작은 공간을 차지할 수 있다는 가설을 세웠다. 그러나 특정 가중치 업데이트가 반드시 저랭크여야 한다는 사실을 증명하지는 않았다. 최적화 문제의 본질적 차원, ΔW의 행렬 랭크, LoRA 인자 파라미터 수는 서로 관련된 직관이지만 서로 다른 수학적 양이다.
원 LoRA 논문은 학습된 어텐션 업데이트의 특이값을 경험적으로 분석했다. 이후 이론 연구는 표현 능력을 다루었다. Zeng과 Lee는 명시된 가정과 랭크 임계값 아래에서 완전 연결 네트워크와 트랜스포머 네트워크의 저랭크 어댑터 존재를 증명했다. 이 논문은 표현력만 분석할 뿐, 경사 하강법이 그런 어댑터를 찾아내는지나 일반화하는지는 다루지 않는다. 따라서 이런 정리를 보편적인 랭크 선택 규칙으로 바꿔 쓰면 안 된다.2,8
9. 다른 적응 방법과의 비교
여러 방법이 작업별 상태를 서로 다른 방식으로 줄인다.
| 방법 | 학습 대상 | 기저 가중치 | 주요 구조적 트레이드오프 |
|---|---|---|---|
| 전체 미세 조정 | 원래 파라미터 전부 또는 대부분 | 갱신 | 업데이트 자유도가 가장 높지만 작업별 상태가 가장 크다 |
| Houlsby 어댑터 | Transformer 하위 층 사이에 추가한 병목 모듈 | 고정 | 추가된 순차 모듈이 추론 깊이를 늘릴 수 있다9 |
| 프리픽스 튜닝 | 어텐션에 제공되는 연속 프리픽스 상태 | 고정 | 시퀀스 계산 안에서 작업별 프리픽스 용량을 쓴다10 |
| 프롬프트 튜닝 | 학습된 입력 임베딩 또는 소프트 프롬프트 | 고정 | 상태는 매우 작지만 성능이 모델 규모와 과제에 따라 다르다11 |
| BitFit | 편향 항 또는 그 일부 | 가중치는 고정, 선택한 편향만 갱신 | 극도로 희소한 업데이트이며 용량이 제한적이다12 |
| LoRA | 선택한 가중치 행렬 옆의 저랭크 업데이트 | 고정 | 용량과 연산이 랭크와 대상 행렬에 따라 달라진다2 |
Houlsby 어댑터는 논문의 GLUE 종합 점수에서 전체 미세 조정과의 차이가 0.4 퍼센트포인트 이내였고, 과제마다 파라미터를 3.6%만 추가했다. 프리픽스 튜닝은 연속 프리픽스를 학습했다. GPT-2에서 0.1% 프리픽스는 검토한 table-to-text 벤치마크에서 전체 데이터 기준으로 비슷한 결과를 냈고, BART에서 0.1%와 2% 프리픽스는 XSum 요약 지표에서 전체 미세 조정보다 낮았다. 프롬프트 튜닝은 소프트 프롬프트를 학습했으며, Lester 등의 실험에서 T5 규모가 커질수록 전체 모델 튜닝과 더 경쟁력을 띠었다. BitFit은 편향을 업데이트했고, 검토한 BERT 과제에서 소규모에서 중간 규모 데이터셋에 대해 전체 미세 조정과 경쟁력이 있었다.9,10,11,12
이 결과들은 서로 다른 모델과 과제에서 얻은 것이므로 보편적인 순위를 정하지 않는다. 적합한 선택은 작은 체크포인트, 시퀀스 길이 불변, 추가 층 깊이 없음, 핫스왑, 최대 용량, 기존 런타임 호환성 중 무엇을 중시하는지에 달려 있다.
10. QLoRA
QLoRA는 LoRA와 고정된 기저 모델의 양자화를 결합한다. 2023년 논문은 기저 가중치를 4비트 NormalFloat로 저장하고, 순전파와 역전파를 위해 계산 타입으로 역양자화했다. 그래디언트는 양자화된 기저 가중치가 아니라 LoRA 인자로 전파했다. 또한 양자화 상수를 다시 양자화하는 이중 양자화와 페이징 옵티마이저를 도입했다.13
QLoRA는 일반 LoRA와 다른 메모리 요소를 바꾼다.
- LoRA는 학습 파라미터, 그래디언트, 옵티마이저 상태를 줄인다.
- QLoRA는 여기에 더해 고정된 기저 가중치의 저장 공간을 추가로 줄인다.
논문의 설정에서 QLoRA는 650억(65B) 파라미터 모델을 48 GB GPU 한 장에서 미세 조정할 수 있게 했다. 저자들은 선택한 16비트 미세 조정과의 성능 비교 결과도 유지했다고 밝혔다. 이는 논문 설정에 한정된 시스템 결과다. 최대 학습 가능 모델 크기는 여전히 시퀀스 길이, 배치 크기, 활성화, 양자화 구현, 오프로딩에 따라 달라진다.13
QLoRA는 정의상 4비트로 양자화된 어댑터가 아니다. 핵심은 양자화된 고정 기저와 학습 가능한 저랭크 어댑터의 조합이다. 양자화된 가중치에 LoRA 어댑터를 병합하려면 역양자화나 라이브러리별 경로가 필요할 수 있으며, 일부 구성은 병합을 지원하지 않는다.6
11. 주요 변형
LoRA에서 파생된 방법은 많다. 이 이름들은 서로 다른 변경을 가리키므로 같은 뜻의 라벨로 바꿔 쓰면 안 된다.
| 변형 | 주요 변경 | 근거 범위 |
|---|---|---|
| AdaLoRA | SVD 유사 매개변수화와 중요도 기반 가지치기로 행렬 간 파라미터 예산을 배분 | ICLR 2023, 언어 이해·질의응답·생성 실험14 |
| DyLoRA | 여러 랭크 범위에 걸쳐 중첩 표현을 학습해 한 번의 학습으로 여러 랭크 예산을 지원 | EACL 2023, GLUE 및 생성 과제 실험15 |
| rsLoRA | α/√r 스케일링으로 높은 랭크를 안정화 | 2023 프리프린트, 이론과 언어 모델 실험5 |
| VeRA | 고정된 무작위 저랭크 행렬을 층 사이에 공유하고 작은 스케일링 벡터만 학습 | ICLR 2024, 언어 및 이미지 과제 실험16 |
| LongLoRA | 이동 희소 어텐션과 변경된 LoRA 레시피를 결합해 문맥 확장 | ICLR 2024, Llama 2 문맥 확장 실험17 |
| DoRA | 가중치 크기와 방향을 분해하고 방향 업데이트에 LoRA 사용 | ICML 2024, 언어 및 비전-언어 실험18 |
| LoRA+ | 두 인자에 서로 다른 학습률 적용 | ICML 2024, 설정에서 1~2% 향상과 최대 약 2배 속도 향상 보고19 |
| PiSSA | W₀의 주요 특이 성분으로 인자를 초기화하고 잔차는 고정 | NeurIPS 2024, 여러 언어 모델과 과제 실험20 |
| LoRA-FA | 한 인자를 고정하고 다른 인자만 학습, 최신 버전에서는 그래디언트 보정 추가 | arXiv v3, 2026년 5월. 활성화 메모리와 과제 실험이며 심사를 거친 학회 논문은 아님21 |
이 방법들은 초기화, 스케일링, 학습 상태, 옵티마이저 동작, 심지어 주변 어텐션 알고리즘까지 바꿀 수 있다. 체크포인트에는 정확한 변형과 라이브러리 설정을 적어야 한다. 일반적인 「LoRA」 로더가 DoRA, PiSSA, VeRA, AdaLoRA 체크포인트를 올바르게 재현하지 못할 수 있다.
12. 용량, 학습, 망각
LoRA와 전체 미세 조정은 비슷한 과제 점수에 도달하면서도 서로 다른 파라미터 공간의 해를 학습할 수 있다. 어댑터 용량이 부족하거나 최적화 설정이 한 방법에 유리하면 둘의 차이가 크게 벌어질 수도 있다.
2024년 TMLR 연구는 프로그래밍과 수학에서 LoRA와 전체 미세 조정을 비교했다. 약 10만 개의 프롬프트-응답 쌍으로 한 지시 미세 조정과 최대 약 200억 토큰의 지속 사전 학습을 검토했다. 연구한 표준 저랭크 설정에서 LoRA는 목표 도메인을 덜 배웠지만, 그 밖의 도메인에서는 성능을 더 많이 유지했다. 저자들은 전체 미세 조정의 섭동 랭크가 분석에서 일반적인 LoRA 설정보다 약 10배에서 100배 높았다고 밝혔다. 이 결과는 테스트한 Llama 2 설정과 목표에 관한 것이며, 모든 짧은 사후 학습 실행에 해당하지는 않는다.22
NeurIPS 2025 논문은 적응 후 Llama 2 7B와 RoBERTa의 가중치 스펙트럼을 분석했다. LoRA로 학습된 행렬에서는 대응하는 전체 미세 조정 비교에 없던 높은 랭크의 특이 방향이 나타났고, 이를 「침입 차원(intruder dimensions)」이라 불렀다. 이 방향에 개입하면 논문 실험에서 망각이 달라졌고, 순차적 LoRA 학습은 지속 학습 설정에서 이 방향을 누적시켰다. 하위 과제 지표가 같다고 해서 내부 변화도 같다는 뜻은 아니다.23
Thinking Machines Lab이 2025년 발표한 연구 보고서는 보완적인 결과를 제시한다. 이 보고서는 Llama와 Qwen의 지도 학습과 정책 그래디언트 실험에서, 모든 가중치 행렬에 적용한 충분히 높은 랭크의 LoRA가 학습률을 따로 탐색한 뒤 전체 미세 조정의 학습 곡선과 최종 성능에 맞먹을 수 있었다고 보고했다. 어텐션만 대상으로 하면 성능이 낮았고, 일부 큰 배치 크기에서는 불이익이 더 컸다. 이 보고서는 DOI가 붙은 연구소 보고서이며 심사를 거친 학회 논문이 아니다. 권고는 대상 모델과 데이터에서 재현해 볼 가설로 다루는 것이 좋다.24
이 연구들을 종합하면 조건부 관점이 타당하다.
- 좁은 적응에서는 낮은 랭크로도 충분할 수 있다.
- 더 크거나 새로운 데이터셋에서는 랭크와 대상 모듈의 용량이 학습을 제한할 수 있다.
- 전체 미세 조정과 LoRA는 목표 점수가 비슷해도 서로 다른 능력을 보존할 수 있다.
- 최적화 선택이 겉보기 용량 차이를 만들 수 있다.
- 어떤 단일 결과도 모든 설정에 대해 동등성이나 열등성을 확정하지 못한다.
13. 구성 선택
건전한 LoRA 실험은 관행적 기본값이 아니라 제약 조건과 측정에서 출발한다.
13.1. 비교 설계 정하기
답하려는 질문에 맞는 기준선을 고른다. 유용한 비교는 다음과 같다.
- 변경하지 않은 기저 모델
- 가능하다면 전체 미세 조정
- 같은 하드웨어 예산으로 학습한 더 작은 전체 미세 조정 모델
- 다른 PEFT 방법
- 같은 어댑터 설정에서 일반 LoRA와 QLoRA 비교
같은 데이터 분할, 프롬프트 템플릿, 평가 코드, 디코딩 설정, 중단 규칙을 쓴다. 그렇지 않으면 방법의 차이와 파이프라인의 차이가 뒤섞인다.
13.2. 대상 모듈 명시하기
구조를 고려한 모듈 이름부터 시작한다. 계산 여력이 되면 좁은 선택 하나와 넓은 선택 하나를 최소한 비교한다. 랭크를 고정한다고 학습 파라미터 수가 고정되지는 않으므로 둘 다 보고한다.
임베딩, 정규화 층, 편향, 작업 헤드가 학습 가능하다면 따로 이름을 적는다. 예를 들어 LongLoRA는 문맥 확장 레시피에서 학습 가능한 임베딩과 정규화가 중요했다고 보고했다.17
13.3. 랭크와 학습률 탐색
랭크는 각 적응 업데이트의 최대 랭크를 정하고, 학습률과 α는 최적화 크기를 정한다. 실용적인 탐색은 랭크와 학습률을 함께 바꾸고, 학습 손실만이 아니라 검증 곡선으로 판단한다. 저랭크 실행이 정체되는지 드러나도록 학습 기간을 충분히 둔다.
학습률이나 스케일링을 재조정 없이 물려받았다면 높은 랭크가 쓸모없었다고 결론내리면 안 된다. 반대로 어댑터가 기저 모델보다 작다는 이유만으로 높은 랭크가 안전하다고 보면 안 된다. 과적합하거나 학습을 불안정하게 만들거나 원치 않는 행동을 학습할 수 있다.
13.4. 메모리와 처리량 측정
피크 할당 및 예약 장치 메모리, 오프로딩을 쓴다면 호스트 메모리, 초당 예제 수 또는 토큰 수, 시퀀스 길이 분포, 배치 구성을 기록한다. 파라미터 수만으로는 활성화 중심 실행을 설명할 수 없다.
혼합 정밀도 학습에서는 저장 타입과 계산 타입을 따로 기록한다. 예를 들어 QLoRA는 기저 가중치를 4비트 저장 타입으로 두지만, 보통 더 높은 정밀도의 계산 타입으로 연산한다.13
13.5. 보존과 견고성 평가
목표 과제 품질은 여러 평가 축 중 하나일 뿐이다. 다음을 함께 평가한다.
- 보류된 목표 예제
- 대표적인 기저 도메인 과제
- 필요한 경우 보정이나 신뢰도
- 프롬프트와 디코딩 변화에 대한 민감도
- 사용자 대면 모델의 안전성과 정책 행동
- 차이가 작을 때는 여러 시드
학습과 망각의 대비 결과는 목표 전용 점수가 중요한 차이를 가릴 수 있음을 보여 준다.22,23
14. 구현 개요
다음은 프레임워크에 중립적인 골격 코드다.
# W0는 [d_out, d_in] 모양이며 고정된다
A = Parameter(shape=(rank, d_in))
B = Parameter(shape=(d_out, rank))
initialize_nonzero(A)
initialize_zero(B)
def forward(x):
base = linear(x, W0)
adapter = linear(linear(dropout(x), A), B)
return base + (alpha / rank) * adapter실제 프레임워크는 다음도 처리해야 한다.
- 의도하지 않은 기저 파라미터를 모두 고정한다
- 가중치 방향을 올바르게 처리한다
- 편향은 정책에 따라 보존하거나 학습한다
- 어댑터 설정을 가중치와 함께 저장한다
- 그래디언트가 실수로 전체 구체화되지 않도록 분산 래핑을 지원한다
- 병합과 병합 해제 동작을 검증한다
- 정확한 기저 리비전에 대해 로딩을 테스트한다
마이크로소프트의 loralib는 선형, 임베딩, 합성곱, 병합 쿼리-키-값 층을 포함하는 간결한 PyTorch 참조 구현을 제공한다. Hugging Face PEFT는 더 넓은 설정과 체크포인트 인터페이스를 제공한다. 두 라이브러리는 기본값과 생명주기 동작이 달라서, 재현에는 라이브러리 이름이 아니라 실제 설정이 필요하다.3,4,6
15. 언어 모델 밖의 응용
저랭크 업데이트는 언어 모델링에만 특화된 기법이 아니라 밀집 행렬 전반에 적용된다. LoRA는 비전-언어 시스템과 확산 모델에 쓰였으며, Stable Diffusion 관련 워크플로도 포함된다. Hugging Face Diffusers는 텍스트-이미지 모델의 LoRA 학습을 문서화했고, 어댑터는 보통 어텐션 투영에 붙는다. 목표, 대상 모듈, 데이터 증강, 평가 기준이 언어 모델 적응과 다르므로 언어 모델의 랭크와 학습률 레시피를 그대로 옮길 수는 없다.25
강화 학습도 다른 응용 분야다. 2025년 Thinking Machines 보고서는 정책 그래디언트 기반 추론 실험에서 일부 랭크 1 설정을 포함해 저랭크 LoRA가 전체 미세 조정과 경쟁력이 있다고 밝혔다. 이 결과는 해당 모델, 보상, 데이터, 알고리즘에만 특정된다. 모든 강화 학습 업데이트가 저랭크라는 것을 입증하지는 않는다.24
16. 많은 어댑터 서빙
LoRA는 여러 배포 패턴을 가능하게 한다.
- 병합된 단일 어댑터: 하나의 어댑터를 기저 복사본에 병합해 단순한 추론 경로를 만든다.
- 핫스왑 어댑터: 기저를 고정하고 한 번에 한 어댑터 분기만 불러온다.
- 동시 어댑터: 기저 연산을 공유하면서 서로 다른 어댑터를 쓰는 요청을 묶어 처리한다.
- 조합 어댑터: 한 요청에 대해 여러 어댑터를 결합하거나 라우팅하거나 병합한다.
세 번째 패턴은 시스템 지원이 필요하다. S-LoRA는 어댑터를 호스트 메모리에 저장하고, 활성 어댑터를 GPU 메모리로 옮기며, 어댑터 가중치와 KV 캐시에 통합 페이징을 쓰고, 이종 배치 커널을 구현한다. 논문의 MLSys 2024 실험은 선택된 설정에서 패킹된 vLLM 비교 대비 최대 4배, PEFT 대비 최대 30배의 처리량을 보고했으며, 훨씬 많은 어댑터 모음을 서빙할 수 있었다. 이는 LoRA 알고리즘의 본질적 속성이 아니라 S-LoRA의 벤치마크 결과다.26
어댑터 조합이 각 기술을 보존한다고 보장되지는 않는다. 호환되는 업데이트를 더하면 다음과 같다.
Δ Wcombined=Σi λiΔ Wi
결합된 업데이트는 랭크가 더 높아질 수 있고 행동 간섭을 만들 수 있다. LoRA Soups는 구성적 과제에서 가중 병합과 연결 병합을 연구했고, COLING 2025 실험에서 방법별로 다른 이득을 발견했다. 별도로 ICML 2024 연구는 보류된 과제를 위해 LoRA 라이브러리를 만들고 라우팅했다. 두 연구는 조합을 설계할 수 있음을 보여 주지만, 임의의 어댑터를 안전하게 더할 수 있다는 뜻은 아니다.27,28
17. 재현성과 배포 점검표
어댑터를 공개하거나 배포하기 전에 다음을 확인한다.
- 정확한 기저 모델, 리비전, 토크나이저, 라이선스를 고정한다
- 모든 대상 모듈과 추가 학습 모듈을 기록한다
- 랭크, α, 스케일링 방식, 초기화, 드롭아웃, 편향 정책, 변형을 기록한다
- 옵티마이저, 인자별 학습률(다를 경우), 스케줄, 가중치 감쇠, 그래디언트 클리핑, 시드를 기록한다
- 데이터셋 버전, 필터, 프롬프트 템플릿, 샘플링, 학습-검증 분리를 기록한다
- 학습 가능 파라미터 수, 기저 정밀도, 계산 정밀도, 피크 메모리, 처리량을 보고한다
- 목표 과제 품질과 보존 측정을 함께 보고한다
- 기대되는 경우 어댑터를 끈 출력이 기저 모델과 같은지 테스트한다
- 배포 정밀도에서 병합 전후 출력을 테스트한다
- 체크포인트 형식을 검사하고, 신뢰할 수 없는 산출물은 안전한 직렬화 방식으로 로드한다
- 사용 목적, 한계, 데이터 출처, 평가를 설명하는 모델 카드를 공개한다
LoRA가 가치 있는 이유는 재사용 가능한 기저와 작고 학습된 업데이트를 분리하기 때문이다. 이 분리가 운영상의 주된 제약이기도 하다. 어댑터의 의미는 정확한 기저 모델과 그것을 적용하는 코드에 달려 있다.
18. 한계
LoRA는 다음을 보장하지 않는다.
- 전체 미세 조정과의 동등성
- 고정된 메모리 또는 속도 절감
- 비병합 서빙에서의 추론 오버헤드 없음
- 치명적 망각에 대한 면역
- 안전하거나 올바른 어댑터 조합
- 기저 모델 리비전 간 호환성
- 작은 체크포인트가 작은 행동 변화만 담는다는 것
- 낮은 학습 손실이 일반화를 뜻한다는 것
저랭크 제약은 유용한 규제일 수도 있고, 해로운 용량 부족일 수도 있다. 이 차이는 특정 용도에서 통제된 평가를 해야만 가릴 수 있다.
출처 28개
- AI Wiki: LoRA (Low-Rank Adaptation) (2026-07-30 수정본) aiwiki.ai · CC BY 4.0 · 확인 2026-10-17
- LoRA: Low-Rank Adaptation of Large Language Models openreview.net · 확인 2026-10-18
- LoRA and loralib reference implementation github.com · 확인 2026-10-18
- PEFT 0.13.0 LoRA API reference huggingface.co · 확인 2026-10-18
- A Rank Stabilization Scaling Factor for Fine-Tuning with LoRA arxiv.org · 확인 2026-10-18
- PEFT 0.13.0 checkpoint format huggingface.co · 확인 2026-10-18
- Intrinsic Dimensionality Explains the Effectiveness of Language Model Fine-Tuning aclanthology.org · 확인 2026-10-18
- The Expressive Power of Low-Rank Adaptation proceedings.iclr.cc · 확인 2026-10-18
- Parameter-Efficient Transfer Learning for NLP proceedings.mlr.press · 확인 2026-10-18
- Prefix-Tuning: Optimizing Continuous Prompts for Generation aclanthology.org · 확인 2026-10-18
- The Power of Scale for Parameter-Efficient Prompt Tuning aclanthology.org · 확인 2026-10-18
- BitFit: Simple Parameter-efficient Fine-tuning for Transformer-based Masked Language-models aclanthology.org · 확인 2026-10-18
- QLoRA: Efficient Finetuning of Quantized LLMs proceedings.neurips.cc · 확인 2026-10-18
- AdaLoRA: Adaptive Budget Allocation for Parameter-Efficient Fine-Tuning arxiv.org · 확인 2026-10-18
- DyLoRA: Parameter-Efficient Tuning of Pretrained Models using Dynamic Search-Free Low Rank Adaptation aclanthology.org · 확인 2026-10-18
- VeRA: Vector-based Random Matrix Adaptation arxiv.org · 확인 2026-10-18
- LongLoRA: Efficient Fine-tuning of Long-Context Large Language Models arxiv.org · 확인 2026-10-18
- DoRA: Weight-Decomposed Low-Rank Adaptation proceedings.mlr.press · 확인 2026-10-18
- LoRA+: Efficient Low Rank Adaptation of Large Models proceedings.mlr.press · 확인 2026-10-18
- PiSSA: Principal Singular Values and Singular Vectors Adaptation of Large Language Models proceedings.neurips.cc · 확인 2026-10-18
- LoRA-FA: Memory-efficient Low-rank Adaptation for Large Language Models Fine-tuning arxiv.org · 확인 2026-10-18
- LoRA Learns Less and Forgets Less arxiv.org · 확인 2026-10-18
- LoRA vs Full Fine-tuning: An Illusion of Equivalence papers.nips.cc · 확인 2026-10-18
- LoRA Without Regret thinkingmachines.ai · 확인 2026-10-18
- Diffusers 0.16.0: Low-Rank Adaptation training huggingface.co · 확인 2026-10-18
- S-LoRA: Serving Thousands of Concurrent LoRA Adapters proceedings.mlsys.org · 확인 2026-10-18
- LoRA Soups: Merging LoRAs for Practical Skill Composition Tasks aclanthology.org · 확인 2026-10-18
- Towards Modular LLMs by Building and Reusing a Library of LoRAs proceedings.mlr.press · 확인 2026-10-18