LoRA를 사용하는 이유
LoRA의 메커니즘 자체는 머릿속에 잘 그려져 있었다. 큰 weight 행렬을 두 개의 작은 행렬로 쪼개 덧붙이는 것. 그런데 정작 LoRA가 왜 PEFT 중에서 가장 널리 쓰이는지, 그 결정적 장점은 정리해두지 못했었다. 그 부분까지 채워봤다.
메커니즘 - low-rank 분해#
사전학습된 weight 를 고정하고, 거기에 학습 가능한 low-rank decomposition 행렬을 더한다. 원본 weight가 일 때, 학습으로 더해줄 변화량 를 통째로 학습하는 대신 두 개의 작은 행렬의 곱으로 둔다.
여기서 이 핵심 파라미터인 rank다. 짜리 큰 덩어리 하나를 과 두 행렬로 쪼개는 것이고, 을 작게 잡을수록 학습할 파라미터가 줄어든다.
- 원래 학습할 파라미터 수:
- LoRA로 학습할 파라미터 수:
이면 학습 파라미터가 큰 폭으로 줄어든다. 이렇게 만든 를 레이어마다 hidden states에 더해 tuning 하며, Q, K, V나 FFN 같은 선형 레이어 어디에든 붙일 수 있다.
결정적 장점 - 추론 지연 0#
LoRA가 널리 쓰이는 이유는 추론 속도를 그대로 유지한다는 데 있다. Adapter와 비교하면 분명해진다.
Adapter는 레이어 사이에 작은 bottleneck layer를 추가로 삽입한다. 그래서 작은 layer만 넣어도 추론할 때 그 연산만큼 latency가 늘어난다.
반면 LoRA는 학습한 를 추론 전에 원본 weight에 그냥 더해버릴 수 있다.
는 다시 짜리 행렬 하나일 뿐이다. 즉 추론 시점에는 구조가 원본 모델과 완전히 동일해진다. 추가 연산이 없으니 추론 지연이 0이고, 모델 아키텍처를 변형하지 않고도 활용할 수 있다.
성능#
기존 PEFT 방법 대비 월등히 높은 성능을 보인다. RoBERTa, DeBERTa 같은 encoder 모델과 GPT 같은 decoder 모델 모두에서 우수했고, 175B 파라미터의 GPT-3에서도 LoRA tuning의 우수성이 입증됐다. 그래서 PEFT 방법 중 가장 널리 쓰인다.
LoRA는 weight 변화량 를 라는 두 low-rank 행렬의 곱으로 학습한다. 가장 큰 장점은 학습한 를 원본 weight에 합쳐버릴 수 있다는 점으로, Adapter와 달리 추론 시 추가 연산이 없어 latency가 늘지 않는다.
네 가지 PEFT 방법을 한자리에 비교한 글은 PEFT 네 가지 방법 - Adapter, Prefix, Prompt, LoRA에 있다.
댓글