AI VIDEO BRIEFING

LoRA 원리 정리: 저랭크 적응으로 학습 파라미터를 줄이는 방법과 파이토치 구현

LoRA는 사전학습 가중치를 고정한 채 작은 두 행렬만 학습하는 미세조정 기법이다. 저랭크 분해가 통하는 이유와 파라미터 절감 규모, 파이토치 파라미터화 기능을 활용한 구현 방식까지 차례로 정리했다.

전체를 다시 학습하지 않는 미세조정, LoRA의 원리와 파이토치 구현 영상 대표 이미지

핵심 메시지

  • LoRA는 사전학습된 가중치를 얼려 두고, 곱하면 같은 크기가 되는 작은 두 행렬만 학습하는 미세조정 기법이다.
  • 1000×5000 가중치 행렬은 500만 개 파라미터를 갖지만, 랭크를 1로 잡으면 1000+5000, 즉 6000개만 학습하면 된다.
  • 원본 가중치를 건드리지 않기 때문에 용도가 다른 미세조정 결과를 작은 행렬만 갈아끼워 즉시 전환할 수 있다.
  • 이 방식이 통하는 근거는 미세조정에 따른 가중치 변화가 낮은 랭크로도 충분히 표현된다는 가설이다.
  • MNIST 실습에서 280만 개 파라미터 모델에 랭크 1 LoRA를 붙이자 실제 학습 대상은 6794개로 줄었다.

쉽게 이해하기

이 영상은 대규모 언어모델 미세조정 기법인 LoRA(Low-Rank Adaptation)를 이론과 파이토치 구현 양쪽에서 설명한다. 마이크로소프트에서 나온 기법이지만 언어모델에만 쓸 수 있는 것은 아니며, 영상에서도 간단한 손글씨 숫자 분류 과제에 적용해 보인다.

출발점은 전체 미세조정의 비용이다. 사전학습 모델을 통째로 새 데이터에 다시 학습시키려면 모든 가중치를 메모리에 올리고 역전파를 돌려야 하며, 에폭마다 저장하는 체크포인트와 옵티마이저 상태까지 디스크를 크게 차지한다. 같은 기반 모델을 서로 다른 데이터로 두 번 미세조정했다면, 둘 사이를 오갈 때마다 전체 가중치를 내렸다가 다시 올려야 한다.

LoRA는 원본 가중치 행렬 W를 읽기 전용으로 고정하고, 곱했을 때 W와 같은 모양이 되는 두 행렬 B와 A를 새로 만든다. W가 D×K라면 B는 D×R, A는 R×K이고, 순전파에서는 W에 B와 A의 곱을 더해 쓰되 역전파는 B와 A에만 흘린다. R을 D나 K보다 훨씬 작게 잡는 것이 핵심이며, R을 1로 두는 것도 가능하다.

왜 작은 행렬로 충분한가에 대한 설명으로 행렬의 랭크 개념이 등장한다. 랭크란 서로 선형독립인 열의 개수로, 랭크가 크기보다 낮다는 것은 다른 열들의 선형결합으로 만들어낼 수 있는 중복된 열이 많다는 뜻이다. 영상은 일부러 랭크가 2인 10×10 행렬을 만든 뒤 특잇값분해로 10×2와 2×10 행렬을 뽑아, 원소 수가 100개에서 40개로 줄어도 같은 입력에 같은 출력이 나오는 것을 확인한다.

구현에는 파이토치의 파라미터화 기능을 쓴다. 신경망이 가중치 행렬에 접근할 때마다 등록된 함수가 대신 호출되도록 만들어, 원본 가중치에 B와 A의 곱과 스케일 계수를 더한 값을 돌려주는 방식이다. 논문을 따라 B는 0으로, A는 정규분포 난수로 초기화하고, 편향에는 적용하지 않고 가중치 행렬에만 적용한다.

주요 인사이트

  • 저장 비용 절감이 극적이다. 실습에서 미세조정 결과를 보관하는 데 필요한 값은 280만 개가 아니라 6794개뿐이며, 원본 가중치는 그대로 재사용된다.
  • 파라미터화를 켜고 끄는 것만으로 미세조정 모델과 원본 모델을 즉시 오갈 수 있다. 영상은 LoRA를 끄면 숫자별 오답 개수가 사전학습 모델과 정확히 일치하는 것을 확인해 원본이 훼손되지 않았음을 보인다.
  • 스케일 계수는 랭크를 바꿔도 더해지는 값의 크기가 달라지지 않게 하려는 장치다. 여러 랭크를 시험해 볼 때 비교가 흔들리지 않도록 돕는다.
  • 미세조정에는 대가가 따른다. 성능이 나빴던 숫자 9만 집중적으로 학습시키자 그 숫자의 정확도는 좋아졌지만 다른 숫자의 성능은 일부 나빠졌다.
  • 저랭크 근사는 LoRA만의 발상이 아니라 압축 알고리즘 등 여러 분야에서 오래 쓰여 온 아이디어라는 점도 언급된다.

자주 묻는 질문

LoRA는 전체 미세조정과 무엇이 다른가요?

전체 미세조정은 사전학습 모델의 모든 가중치를 갱신하지만, LoRA는 원본 가중치를 고정한 채 곱해서 같은 크기가 되는 작은 두 행렬만 학습합니다. 학습과 저장 비용이 크게 줄고 원본 모델은 그대로 남습니다.

작은 행렬로도 성능이 나오는 이유는 무엇인가요?

가중치 행렬 안에는 다른 열들의 선형결합으로 만들 수 있는 중복된 열이 많아 실제 랭크가 크기보다 훨씬 낮은 경우가 있기 때문입니다. 논문은 미세조정에 따른 가중치 변화도 낮은 랭크로 표현된다고 가정합니다.

파라미터 수는 실제로 얼마나 줄어드나요?

영상의 손글씨 숫자 분류 실습에서 원래 모델은 2,807,010개 파라미터를 갖는데, 랭크 1 LoRA를 붙이면 전체는 2,813,804개가 되지만 실제로 학습되는 것은 새로 추가된 6,794개뿐입니다.

용도가 다른 미세조정 결과를 오갈 때 어떤 이점이 있나요?

원본 가중치를 건드리지 않으므로 B와 A 행렬만 교체하면 됩니다. 전체 가중치를 내렸다가 다시 올릴 필요가 없어 모델 전환이 훨씬 빠르고 가볍습니다.

원문과 출처

이 글은 원본 영상의 자막을 바탕으로 한국어 독자를 위해 요약했습니다. 전체 맥락과 최신 정보는 원문에서 확인하세요.

YouTube 원본 영상 보기 ↗

관련 AI 소식