---
title: "LoRA: 거대한 모델을 바꾸는 데 작은 행렬 두 개면 충분할까"
author: "Dne Cna"
published_at: "2026-10-03T22:00:00.247Z"
updated_at: "2026-09-30T08:11:08.387Z"
tags: ["ai","머신러닝","논문리딩","lora"]
canonical_url: "https://ariser.io/@writer_8706b598dfee/lora-%EA%B1%B0%EB%8C%80%ED%95%9C-%EB%AA%A8%EB%8D%B8%EC%9D%84-%EB%B0%94%EA%BE%B8%EB%8A%94-%EB%8D%B0-%EC%9E%91%EC%9D%80-%ED%96%89%EB%A0%AC-%EB%91%90-%EA%B0%9C%EB%A9%B4-%EC%B6%A9%EB%B6%84%ED%95%A0%EA%B9%8C"
ai_assisted: false
---

# LoRA: 거대한 모델을 바꾸는 데 작은 행렬 두 개면 충분할까

[원문](https://ariser.io/@writer_8706b598dfee/lora-%EA%B1%B0%EB%8C%80%ED%95%9C-%EB%AA%A8%EB%8D%B8%EC%9D%84-%EB%B0%94%EA%BE%B8%EB%8A%94-%EB%8D%B0-%EC%9E%91%EC%9D%80-%ED%96%89%EB%A0%AC-%EB%91%90-%EA%B0%9C%EB%A9%B4-%EC%B6%A9%EB%B6%84%ED%95%A0%EA%B9%8C)

회사 문서에 맞게 말하는 모델과 고객 문의에 답하는 모델을 따로 만들고 싶다고 하자. 둘 다 같은 언어 모델에서 출발하지만, 전체 가중치를 미세조정해 보관하면 사본이 두 개 생긴다. 업무가 늘어날수록 사본도 늘어난다. LoRA는 이 비용을 줄이는 데서 출발하면서, 모델을 바꾸는 데 정말 얼마나 많은 자유도가 필요한지 묻는다. 작은 파일로 모델의 성격을 바꿀 수 있다는 현상 뒤에 꽤 단순한 선형대수 아이디어가 있다.

## 큰 행렬을 그대로 두고 변화만 배우기

한 층의 선형 변환이 `h = W₀x`라고 하자. 일반적인 미세조정은 W₀의 모든 원소를 갱신한다. LoRA는 W₀를 고정하고 변화량을 두 작은 행렬의 곱으로 표현한다. 출력은 `h = W₀x + BAx`가 된다. W₀의 크기가 d×k라면 A는 r×k, B는 d×r이고, r은 d와 k보다 작은 값으로 선택한다.

이때 학습할 원소 수는 d×k에서 r×(d+k)로 바뀐다. 예를 들어 4,096×4,096 행렬을 r=8로 적응시키면 전체 행렬은 약 1,678만 원소이지만 두 행렬은 65,536원소다. 이는 특정 모델의 실험 수치가 아니라 차원으로 직접 계산한 예다. 줄어드는 것은 원래 모델의 크기보다 학습 가능한 변화의 표현 크기다. [LoRA 원문](https://arxiv.org/abs/2106.09685)

BA의 랭크는 최대 r이다. 그렇다고 원래 W₀까지 저랭크 행렬이 되는 것은 아니다. 큰 가중치 행렬은 그대로 있고, 그 위에 저랭크 변화가 더해진다. '모델을 저랭크로 압축한다'와 '변화량을 저랭크로 제한한다'를 구별해야 이 기법의 효과와 한계를 정확히 볼 수 있다.

## 표현 공간을 지나가는 좁은 통로

A와 B가 무엇을 하는지 보려면 입력 벡터가 이동하는 경로를 생각하면 된다. Ax는 k차원 입력에서 r개의 조합을 뽑아낸다. B는 그 r개 값을 다시 d차원 출력의 변화로 확장한다. 원래 경로 W₀x에 작은 수정 경로가 병렬로 붙어 있는 구조다.

가상의 문서 분류 모델을 떠올려 보자. 사전학습 표현은 이미 문체와 주제에 관한 많은 정보를 담고 있고, 새 업무는 그중 일부 조합을 더 강조해야 할 수도 있다. 새로 필요한 방향이 적다면 좁은 경로로도 유용한 수정이 가능할 것이다. 물론 이것은 직관을 주기 위한 설명이지, 실제 네트워크의 각 랭크 방향이 '문체' 같은 인간적 개념과 일대일로 대응한다는 주장은 아니다.

저자들은 적응에 필요한 변화가 낮은 내재 랭크를 가질 수 있다는 가설을 세우고, 여러 모델과 과제에서 작은 랭크로도 경쟁력 있는 결과를 보인다. 분석 실험으로 학습된 변화의 부분공간도 살핀다. 그 결과는 낮은 랭크가 유용한 설계라는 증거이지만, 모든 과제의 최적 변화가 언제나 저랭크라는 정리로 확대할 수는 없다. [원문 실험과 랭크 분석](https://arxiv.org/html/2106.09685#S7)

이 제한을 나는 결점으로만 보지 않는다. 데이터가 작고 업무가 좁다면 조절 가능한 방향을 줄이는 것이 안정적인 선택일 수 있다. 반대로 기존 모델이 갖고 있지 않은 능력을 크게 학습해야 한다면 같은 제한이 답답할 수 있다. 이 부분은 적용하려는 과제에서 검증해야 할 내 해석이다.

## 시작할 때는 원래 모델과 같아야 한다

원문의 초기화는 A에 작은 무작위 값을 주고 B를 0으로 두는 방식이다. 따라서 시작 시 BA는 0이고, 초기 출력은 원래 모델과 같다. 학습 중 두 행렬이 달라지면서 수정 경로가 생긴다. 실제 변화에는 `α/r` 같은 스케일도 곱해 사용한다.

두 행렬 모두 0으로 시작하면 어떤 일이 생길까. BA의 미분을 생각해 보면 A를 갱신하는 신호에 B가, B를 갱신하는 신호에 A가 필요하다. 둘 다 0이면 두 방향의 학습 신호도 막힌다. 한쪽만 0으로 두는 이유를 아주 간단한 곱셈에서 확인할 수 있다. 이런 초기화의 세부가 '작은 행렬 두 개를 붙이면 된다'는 설명에 빠지기 쉬워 흥미롭다.

실험 설정에서는 어느 가중치에 수정 경로를 붙이는지도 중요하다. 원문은 주로 어텐션 가중치의 적응을 살피며 Q와 V 등에 대한 선택을 비교한다. LoRA라는 이름만 같아도 적용 대상과 랭크가 다르면 학습 가능한 모델은 달라진다. 공식 라이브러리는 선형 층 교체와 학습 파라미터 선택을 보여 준다. [공식 loralib](https://github.com/microsoft/LoRA)

## 작은 체크포인트와 작은 학습은 다르다

원래 가중치를 학습하지 않으면 그 가중치용 그래디언트와 옵티마이저 상태를 보관할 필요가 줄어든다. 이것이 학습 메모리 절감의 큰 부분이다. 하지만 모델의 순전파는 여전히 필요하고, 수정 경로까지 학습 신호를 전달할 역전파와 활성값도 필요하다. 학습 가능한 원소 수가 몇백 배 줄었다고 전체 학습 메모리나 시간이 같은 비율로 줄지는 않는다.

작은 LoRA 체크포인트도 단독으로 언어 모델을 대신하지 못한다. 사용할 때는 기반 모델과 함께 있어야 한다. 실무에서 파일을 전달한다면 기반 모델의 정확한 버전, 토크나이저, 적용 층, 랭크와 스케일, 전처리 방식을 같이 기록하고 싶다. 같은 이름의 모델이라도 기준 가중치가 다르면 '차이만 담긴 파일'의 의미가 바뀐다.

이 관점은 관리 구조도 바꾼다. 공유 기반 모델 하나와 업무별 변화량 여러 개를 보관할 수 있다. 다만 작은 어댑터 여러 개를 동시에 서비스하는 운영은 또 다른 구현 문제다. 파일이 작다는 사실만으로 모델 전환 비용이나 모든 동시 실행 비용이 사라지지는 않는다.

## 추론 때 두 행렬을 꼭 계산해야 할까

고정된 업무의 어댑터를 사용할 경우 `W = W₀ + BA`를 미리 계산해 원래 가중치에 합칠 수 있다. 그러면 추론의 선형 층은 다시 Wx 형태가 되고, 추가 수정 경로를 매번 실행할 필요가 없다. 원문이 추가 추론 지연을 만들지 않는다고 말하는 근거는 이 병합 가능성에 있다. [원문 방법](https://arxiv.org/abs/2106.09685)

이 성질은 편리하지만 표현을 정확히 하고 싶다. 어댑터를 분리해서 실행하는 모든 서비스에서도 추가 비용이 0이라는 뜻은 아니다. 병합 방식, 양자화된 기반 가중치, 여러 어댑터를 교체하는 운영 등에 따라 구현의 비용은 달라진다. 내가 배포를 검토한다면 학습 때의 이점과 실제 서비스 경로의 이점을 따로 측정하겠다.

품질 평가에서도 전체 미세조정 대비 한 점수만 보기는 아쉽다. 업무 성능이 올랐는지, 기본 지시 따르기가 유지되는지, 낯선 입력에서 출력이 무너지는지 함께 보고 싶다. 랭크를 올리는 실험은 유용하지만, 나쁜 데이터나 잘못된 학습률을 큰 랭크로 해결하려는 시도는 구분할 필요가 있다.

LoRA를 읽고 나면 모델 적응을 '거대한 가중치 파일 하나를 새로 만드는 일'로만 생각하기 어렵다. 이미 가진 능력 위에 어떤 방향의 변화를 얼마나 허용할지 정하는 일로 보이기 시작한다. 작은 변화가 충분한 경우를 찾아내는 것이, 큰 모델을 다루는 가장 실용적인 기술 중 하나일 수 있다.

읽은 논문: Edward J. Hu 외, *LoRA: Low-Rank Adaptation of Large Language Models*, 사전 공개 2021, ICLR 2022. [논문](https://arxiv.org/abs/2106.09685) · [공식 코드](https://github.com/microsoft/LoRA)

