AI/LLM

rsLoRA를 통해 LoRA 미세 조정의 잠재력 활용하기

검정비니 2025. 3. 3. 14:30
728x90
반응형

대규모 언어 모델(LLM)의 컴퓨팅 및 메모리 사용량이 점점 더 증가함에 따라 매개변수 효율적 미세 조정(PEFT) 방법은 이제 LLM을 미세 조정하는 일반적인 전략이 되었다. 가장 널리 사용되는 PEFT 방법 중 하나이자 다른 많은 PEFT 방법의 기반이 되는 방법은 로우랭크 적응(LoRA) 방법이다. LoRA는 원래의 사전 학습된 모델 파라미터를 수정하고 미세 조정을 위해 학습 가능한 낮은 순위의 '어댑터'를 선택한 레이어에 추가하는 방식으로 작동한다.

 

원래 LoRA 작업의 중요한 발견 중 하나는 매우 낮은 어댑터 랭크(예: 4~32)로 미세 조정해도 성능이 좋으며, 이 성능은 랭크가 높아져도 더 이상 향상되지 않는다는 것이었다. 그러나 매우 낮은 랭크에서 이러한 성능 포화는 주로 학습 매니폴드의 내재적 차원이 매우 낮기 때문이 아니라 매우 낮은 어댑터 랭크 밖에서 LoRA의 학습이 둔화되기 때문인 것으로 밝혀졌다.

 

랭크 안정화 LoRA(rank stabilized LoRA; rsLoRA)라는 방법은 LoRA의 이러한 한계가 존재하며, 단순히 LoRA 어댑터를 랭크의 제곱근으로 나누면 이를 보정할 수 있음을 증명했다.

 

 

기본적으로 언어모델이 미세조정될 때 학습되어지는 변화량이 저차원에서만 그나마 활발히 일어난다는 점에서 기인하여 설계된 모듈이 바로 LoRA이다. Pretrained weight들을 freeze시키고 저차원의 LoRA 어댑터만 학습을 시키도록 대체한 뒤, 학습이 완료되었을 때 LoRA adaptor를 행렬 분해된 미세 행렬들처럼 고려해서 행렬곱 기반의 복원 절차를 거친 뒤 Pretrained wieghts와 merge시켜서 미세조정된 버전의 모델을 생성해내는 것이다.

 

위의 설명한 과정에서 '행렬곱'의 과정이 마치 제곱과도 같다는 점에 기인해서, 애초에 LoRA 어댑터에 root 기반의 안정화 규제식을 추가해 놓는 것이다.

 

이와 같은 규제를 추가하고 학습을 해본 결과, 상대적으로 높은 어댑터 랭크에서도 학습히 충분히 안정적으로 진행이 되었으며, 기존 LoRA 대비 더 높은 성능을 내는 것을 확인할 수 있었다고 한다.

 

허깅페이스 peft 라이브러리에서 rsLoRA를 사용하는 방법은 아래와 같이 매우 단순하다:

from peft import LoraConfig, get_peft_model


base_model = AutoModelForCausalLM.from_pretrained(...) 

# initialize the config as usual but with "use_rslora = True"
lora_config = LoraConfig(..., use_rslora = True)


peft_model = get_peft_model(base_model, lora_config)

 

References:

- A Rank Stabilization Scaling Factor for Fine-Tuning with LoRA

 

반응형