LoRA (저랭크 적응)

컴퓨터과학·AI
한 줄 정의: 거대 언어모델 전체를 다시 학습시키지 않고, 작은 추가 행렬만 학습시켜 적은 비용으로 원하는 작업에 맞게 조정하는 파인튜닝 기법입니다.

쉽게 풀면

수십억 개의 파라미터를 가진 언어모델을 특정 작업(예: 의료 상담, 코드 생성)에 맞게 다시 학습시키려면 원래 모델 크기만큼의 저장 공간과 막대한 연산 비용이 필요합니다. LoRA는 원래 모델의 가중치는 그대로 얼려 두고, 그 옆에 훨씬 작은 두 개의 행렬(저랭크 행렬)만 새로 만들어 학습시킵니다. 마치 두꺼운 원본 책은 그대로 두고, 얇은 "정정 노트"만 따로 만들어 붙이는 것과 비슷합니다. 이 작은 행렬들만 학습하면 되기 때문에 학습 파라미터 수가 원래의 1% 미만으로 줄어들고, 그만큼 메모리와 시간이 절약됩니다. 학습이 끝나면 이 작은 행렬을 원래 가중치에 더해주기만 하면 파인튜닝된 모델처럼 동작합니다.

왜 중요한가

거대 언어모델의 크기가 계속 커지면서 전체 파인튜닝에 필요한 GPU 메모리와 비용이 대부분의 연구자와 기업에게 부담스러운 수준이 되었습니다. LoRA는 이 문제를 완화해 제한된 자원으로도 모델을 특정 도메인이나 작업에 맞게 조정할 수 있게 해주기 때문에, 효율적 파인튜닝(parameter-efficient fine-tuning) 연구 전반의 대표 기법으로 자리 잡았습니다. 또한 작업별로 작은 가중치 파일만 저장하면 되므로 여러 작업에 대응하는 모델을 운영할 때 저장 공간 문제도 크게 줄여줍니다.

논문에서는 이렇게 쓰입니다

"본 연구에서는 LoRA를 적용하여 전체 파라미터의 0.1%만 학습시키면서도 전체 파인튜닝과 유사한 성능을 달성하였다."

이 문장은 "모델 전체를 다시 학습시키는 대신, LoRA로 아주 일부의 추가 파라미터만 학습시켰는데도 성능은 거의 비슷했다"는 뜻입니다.

"이미지 생성 모델의 확산 U-Net 어텐션 층에 LoRA를 적용함으로써, 원본 모델의 전반적인 생성 능력을 유지하면서도 특정 스타일에 맞춘 이미지를 생성할 수 있었다."

텍스트 생성뿐 아니라 이미지 생성 모델을 특정 스타일이나 캐릭터에 맞게 가볍게 조정하는 데도 LoRA가 쓰인다는 것을 보여주는 예문이다.

"여러 작업별로 학습된 LoRA 가중치를 필요에 따라 원본 모델에 교체 장착함으로써, 단일 백본 모델로도 다양한 도메인에 대응할 수 있었다."

하나의 원본 모델에 여러 개의 LoRA 모듈을 상황에 맞게 갈아 끼우는 운영 방식을 설명하는 문장이다.

조금 더 깊게 보면

LoRA는 가중치 행렬의 변화량을 두 개의 작은 저랭크 행렬의 곱으로 근사한다는 가정에 기반합니다. 이 랭크 값이 클수록 표현력은 커지지만 학습해야 할 파라미터 수도 늘어나므로, 성능과 효율 사이의 트레이드오프를 조절하는 핵심 하이퍼파라미터로 다뤄집니다. 이후 QLoRA처럼 원본 모델을 양자화해 메모리 사용량을 더 줄이는 변형이나, 태스크에 따라 적응적으로 랭크를 조절하는 방법 등 다양한 후속 기법들도 함께 등장했습니다.

주의할 점

LoRA는 파인튜닝 비용을 크게 줄여주지만, 모든 작업에서 전체 파인튜닝과 완전히 동일한 성능을 보장하지는 않습니다. 또한 저랭크 행렬의 랭크(rank) 크기를 어떻게 설정하느냐에 따라 성능과 효율성 사이의 균형이 달라지므로, 논문에서 제시한 랭크 값과 적용 위치(어느 층에 적용했는지)를 함께 확인해야 정확한 비교가 가능합니다.

관련 용어