LoRA 정리

Plato·2024년 1월 11일
0

딥러닝

목록 보기
13/21

연구 동기

  • 어댑터의 단점
    • 사전 학습된 모델보다 조정된 모델이 더 많은 계층을 가짐
    • 어댑터로 인해 추가된 계층의 계산이 완료돼야 다음 계층의 계산을 할 수 있기에 병렬화하기 어렵다는 단점이 있음
  • 위의 단점을 극복하기 위해, 사전 학습된 모델과 동일한 구조와 파라미터 수를 가질 방법이 필요함.

방법

  • 사전 학습된 모델의 파라미터를 θ\theta 그리고 미세 조정된 모델의 파라미터를 θ\theta'이라 하자. 여기에서 θ\thetaθ\theta'의 차원은 mnm*n
    • 그렇다면 θ=θ+Δθ\theta'=\theta+\Delta\theta
    • Δθ\Delta\thetamrm*r 차원의 행렬 BBrnr*n차원의 행렬 AA로 분해할 수 있다
      • 이렇게 분해한 행렬 A,BA,B만 학습할 때, 학습할 수 있는 파라미터의 수는 r(m+n)r(m+n)이 된다
        • 만약 rm,nr \ll m, n이면 r(m+n)<mnr(m+n) < mn이 되기에 적은 수의 파라미터만 업데이트할 수 있다
    • θ\thetaBABA를 더하면 조정된 모델이 되기에, 사전 학습된 모델과 동일한 구조와 파라미터 수를 갖는다
  • 초기화
    • BB는 영행렬로 초기화하고 AA는 평균이 0인 가우스 분포에서 샘플링하여 초기화한다
      • 영행렬로 초기화하는 이유: 미세 조정을 시작할 때, Δθ=0\Delta\theta=\bold{0}이 되도록 만들기 위함
  • 가중치
  • 트랜스포머에 적용한 방법
    • 모델 전체 파라미터가 아니라 WQ,WK,WV,WOW_Q, W_K, W_V, W_O와 같은 어텐션 레이어의 파라미터에, 새롭게 학습한 파라미터를 더함
      • 즉 MLP 계층의 파라미터와 layer norm 파라미터는 변하지 않음

장점

  • r<<dr << d이면 그래픽카드 메모리 사용량을 크게 줄일 수 있음
    • 이유: 학습할 수 있는 파라미터 수가 적기 때문에 optimizer state가 메모리를 많이 사용하지 않음
  • 모델 Checkpoint의 크기가 작음
    • 초기에 다수의 모델을 메모리에 로드하고 입력에 따라 모델을 빠르게 교체할 수 있음
      • 이 교체 방법은 memory bound되기 어려움

단점

  • 여러 입력을 batch로 묶어서 한 번에 처리하기 어려움. 각 입력마다 적절한 모델이 다를 수 있기 때문.

0개의 댓글