LoRA 논문: 왜 단순한 아이디어가 그토록 큰 파급력을 가졌는가
요약
LoRA(Low-Rank Adaptation) 논문의 핵심 아이디어와 그 파급력을 분석합니다. 가중치 행렬을 저차원 행렬의 곱으로 분해하여 학습 파라미터와 메모리 사용량을 획기적으로 줄이면서도, 추론 지연 시간 없이 효율적인 미세 조정이 가능한 원리를 설명합니다.
핵심 포인트
- 가중치 행렬을 두 개의 작은 행렬(A, B)의 곱으로 표현하여 파라미터 수 급감
- 학습 시 메모리 점유를 줄이면서 추론 시 추가 지연 시간(latency)이 발생하지 않음
- 업데이트가 저차원(low-rank)이라는 가설에 기반한 매개변수 효율적 미세 조정
- 기존 어댑터 방식과 달리 기존 모델 구조에 직접 가중치를 더할 수 있는 구조적 이점
LoRA: Low-Rank Adaptation of Large Language Models (2021)은 냅킨 위에서도 설명할 수 있을 만큼 간단한 것을 제안합니다. 그 파급력은 복잡성에 비해 매우 거대하며, 그 이유는 논문에서 거의 스치듯 언급된 단 하나의 공학적 특성 때문입니다.
한 단락으로 요약한 아이디어
파인튜닝 (Fine-tuning)은 가중치 행렬 (weight matrix) W를 동일한 형태를 가진 학습된 변화량 ΔW로 업데이트합니다. 만약 W가 크다면, 전체 크기의 ΔW를 저장하고 최적화하는 것은 비용이 많이 듭니다. 모든 파라미터에 대한 옵티마이저 상태 (optimiser state)가 필요하며, 결과적으로 작업(task)마다 모델의 완전한 복사본을 갖게 됩니다. LoRA는 W를 완전히 동결 (freeze)하고, 업데이트를 두 개의 얇은 행렬의 곱으로 표현합니다:
W_adapted = W + BA W : d x k (frozen)
B : d x r (trained)
A : r x k (trained)
...
오직 A와 B만이 학습됩니다. 차원이 수천 단위일 때 랭크 (rank) r을 예를 들어 8로 설정하면, 해당 레이어의 학습 파라미터 수는 수십 배(orders of magnitude) 감소하며, 파인튜닝 메모리를 점유하는 주범인 옵티마이저 상태 또한 마찬가지로 감소합니다. B는 0으로 초기화되어, 적응된 모델이 원래 모델과 정확히 동일한 상태에서 시작하도록 합니다. 이는 작지만 큰 안정화 효과를 주는 세부 사항입니다.
그 밑바탕에 깔린 가설
이 방법은 유용한 업데이트가 진정으로 저차원 (low-rank)일 때만 작동합니다. 즉, 사전 학습된 모델을 다운스트림 태스크 (downstream task)에 적응시키는 것이 비교적 적은 방향(directions)을 따라 모델을 변경하는 것을 요구할 때만 유효합니다. 논문은 이를 사실로 단정 짓기보다는, 파인튜닝의 내재적 차원 (intrinsic dimensionality)에 관한 이전 연구들에 근거하여 하나의 가설로 제시합니다.
이는 논문을 읽을 때 주목해야 할 좋은 습관입니다. 이 논문은 자신이 증명할 수 있는 주장(이 파라미터화 방식이 해당 태스크들에서 전체 파인튜닝과 일치한다)과 그 이유라고 믿는 설명(업데이트가 내재적으로 저차원이다)을 분리합니다. 전자는 증거이며, 후자는 해석입니다. 이 둘을 융합해 버리는 논문들은 결과는 수용하면서 그 이면의 이야기는 의심하는 것을 불가능하게 만드는데, 독자는 종종 정확히 그렇게 하고 싶어 하기 때문입니다.
중요했던 속성
매개변수 효율적 미세 조정 (Parameter-efficient fine-tuning)은 새로운 기술이 아니었습니다. LoRA가 기존의 대안들을 대체할 수 있었던 이유는 BA가 W와 동일한 형태를 가져서, 훈련된 업데이트를 훈련 후 원래의 가중치에 더할 수 있기 때문입니다. 따라서 배포된 모델은 추가적인 레이어나 깊이, 추가적인 추론 지연 시간 (inference latency)이 없는 일반적인 크기의 평범한 모델이 됩니다.
기존 레이어 사이에 새로운 모듈을 삽입하는 어댑터 (adapter) 방식과 비교해 보십시오. 이 방식들 또한 적은 매개변수를 훈련하지만, 모든 순전파 (forward pass) 과정에 순차적인 작업 (sequential work)을 추가합니다. 그리고 순차적인 작업은 바로 디코딩 단계 (decode phase)에서 감당할 수 없는 비용입니다. 훈련 메모리를 절약하면서 서빙 지연 시간을 희생하는 방법은 트레이드오프 (trade)이지만, 훈련 메모리를 절약하면서 서빙 시에는 아무런 비용도 들지 않는 방법은 트레이드오프가 아닙니다. 이러한 비대칭성이 바로 이 방식이 승리한 이야기의 전부입니다.
병합 가능성 (mergeability)에는 논문이 예측했고 상업적으로 결정적인 역할을 하게 된 두 번째 측면이 있습니다. 어댑터는 작고 분리된 객체이기 때문에, 이를 별도로 유지할 수 있다는 점입니다. 수천 개의 작업 특화형 또는 고객 특화형 어댑터가 하나의 공유된 베이스 모델 (base model) 옆에 메모리에 상주하며 요청마다 교체될 수 있습니다. 이것이 하나의 모델로부터 많은 미세 조정 모델을 서빙하는 (serving many fine-tunes from one model) 아키텍처의 배경이며, 업데이트가 가산적 (additive)이고 작기 때문에 존재할 수 있는 것입니다.
실질적인 역할을 하는 절제 연구 (Ablations)
이 논문은 절제 연구 (ablations)를 먼저 읽는 습관을 연습하려는 독자에게 아주 좋은 표본입니다. 왜냐하면 이 논문의 절제 연구는 실무자가 실제로 갖는 두 가지 질문에 답을 주기 때문입니다.
- 어떤 행렬을 적응(adapt)시킬 것인가. 트랜스포머(Transformer) 레이어에는 쿼리(query), 키(key), 값(value), 출력(output), 그리고 피드포워드(feed-forward) 가중치와 같은 여러 프로젝션(projection)이 있습니다. 이 논문은 고정된 파라미터 예산(parameter budget) 하에서 서로 다른 하위 집합에 적응을 적용하는 방식을 비교하였으며, 예산을 더 많은 행렬 유형에 분산시키는 것이 하나의 행렬에 더 높은 랭크(rank)로 집중시키는 것보다 더 나은 성능을 보였다고 보고합니다. 이는 방법론에 대한 설명만으로는 도출할 수 없는, 즉시 실행 가능한(actionable) 발견입니다.
- 어느 정도의 랭크가 충분한가. 다양한 랭크에 걸친 성능이 보고되었으며, 일부 설정에서는 한 자릿수 초반의 매우 작은 랭크로도 경쟁력 있는 성능을 보임을 입증했습니다. 또한, 이 논문은 단순히 결과를 보고하는 데 그치지 않고, 서로 다른 랭크에서 학습된 부분 공간(subspaces) 사이의 중첩(overlap)을 조사함으로써 그 이유를 설명하려고 시도합니다.
헤드라인만 제공하는 요약본에서는 이 두 가지 사항 모두 보이지 않을 것입니다. 그리고 이 두 가지 모두 어블레이션 연구(ablation study)가 존재하는 목적, 즉 "우리의 방법이 작동한다"가 아니라 "우리의 선택 중 결과가 무엇에 의존하는지"를 보여주는 발견의 전형입니다. 단 하나의 구성과 하나의 수치만을 보고하는 논문과 대조해 보십시오. 그런 논문에는 적용할 수 있는 것이 아무것도 없습니다. 무엇을 변경할 수 있는지 알 수 없기 때문입니다.
논문이 명확히 밝히고 있지만 독자들은 간과하는 주의 사항이 하나 있습니다. 보고된 파라미터 및 메모리 감소량은 특정 모델과 설정에 대한 것입니다. 눈길을 사로잡는 배수(multiples) 수치는 해당 구성의 특성이지 방법론 자체의 상수가 아닙니다. 이를 마치 상수인 것처럼 인용하는 것은 red flags page에 분류된 흔한 오독 사례 중 하나입니다.
그 이후의 흐름
그 직접적인 후손은 양자화 적응 (quantised adaptation)입니다. 이는 베이스 모델 (base model)을 저정밀도 (low-precision) 형식으로 동결하고, 그 위에 더 높은 정밀도로 어댑터 (adapter)를 학습시키는 방식이며, 바로 이 방식 덕분에 대규모 모델의 미세 조정 (fine-tuning)이 단일 소비자용 GPU에서 가능해졌습니다. 그로부터 실질적인 질문들은 랭크 선택 (rank selection), 어댑터에 적용되는 스케일링 인자 (scaling factor), 대상이 될 레이어 (layers), 그리고 한 대의 서버가 얼마나 많은 어댑터를 수용할 수 있는지 등으로 이어졌습니다. 이 모든 것들은 근본적인 아이디어가 구축하기에 충분히 단순했기 때문에 비로소 존재하게 된 엔지니어링 (engineering) 질문들입니다.
이 독해의 교훈은 일반화될 수 있습니다. 어떤 논문이 분야 전체에 빠르게 퍼진다면, 그 원인은 대개 그 아이디어가 다른 대안들보다 더 영리하기 때문이 아닙니다. 그것은 그 아이디어가 사람들이 이미 하고 있는 모든 것과 결합(compose)되기 때문입니다. 즉, 서비스의 변경도, 아키텍처 (architectural)의 변경도, 베이스 모델의 재학습 (retraining)도 필요하지 않습니다. 여러분이 평가하는 어떤 방법론 논문에 대해서도 이 질문을 던져보십시오. "이것이 더 나은가"가 아니라, "이것을 채택했을 때 내가 무엇을 바꿔야만 하는가"라고 말입니다.
관련 자료
AI 자동 생성 콘텐츠
본 콘텐츠는 Dev.to AI tag의 원문을 AI가 자동으로 요약·번역·분석한 것입니다. 원 저작권은 원저작자에게 있으며, 정확한 내용은 반드시 원문을 확인해 주세요.
원문 바로가기