연구 동기
- 어댑터의 단점
- 사전 학습된 모델보다 조정된 모델이 더 많은 계층을 가짐
- 어댑터로 인해 추가된 계층의 계산이 완료돼야 다음 계층의 계산을 할 수 있기에 병렬화하기 어렵다는 단점이 있음
- 위의 단점을 극복하기 위해, 사전 학습된 모델과 동일한 구조와 파라미터 수를 가질 방법이 필요함.
방법
- 사전 학습된 모델의 파라미터를 θ 그리고 미세 조정된 모델의 파라미터를 θ′이라 하자. 여기에서 θ와 θ′의 차원은 m∗n
- 그렇다면 θ′=θ+Δθ
- Δθ를 m∗r 차원의 행렬 B와 r∗n차원의 행렬 A로 분해할 수 있다
- 이렇게 분해한 행렬 A,B만 학습할 때, 학습할 수 있는 파라미터의 수는 r(m+n)이 된다
- 만약 r≪m,n이면 r(m+n)<mn이 되기에 적은 수의 파라미터만 업데이트할 수 있다
- θ에 BA를 더하면 조정된 모델이 되기에, 사전 학습된 모델과 동일한 구조와 파라미터 수를 갖는다
- 초기화
- B는 영행렬로 초기화하고 A는 평균이 0인 가우스 분포에서 샘플링하여 초기화한다
- 영행렬로 초기화하는 이유: 미세 조정을 시작할 때, Δθ=0이 되도록 만들기 위함
- 가중치
- BA에 가중치 γ=rα를 곱해준다
- α를 증가시키면 θ′이 크게 바뀌기 때문에, 학습률을 증가시키는 것과 유사한 효과를 가짐.
- 적절한 α와 r이 무엇인지에 대한 논란이 있음.
- r과 학습 가능한 파라미터 수가 같이 증가함에 주목하자. 더 복잡한 downstream 작업에 조정할 때 r을 키우면 좋을 것이라 예상해 볼 수 있다
- 다만 저자에 의하면 r이 일정 수준을 넘어가면 성능이 개선되지 않았다고 한다
- 트랜스포머에 적용한 방법
- 모델 전체 파라미터가 아니라 WQ,WK,WV,WO와 같은 어텐션 레이어의 파라미터에, 새롭게 학습한 파라미터를 더함
- 즉 MLP 계층의 파라미터와 layer norm 파라미터는 변하지 않음
장점
- r<<d이면 그래픽카드 메모리 사용량을 크게 줄일 수 있음
- 이유: 학습할 수 있는 파라미터 수가 적기 때문에 optimizer state가 메모리를 많이 사용하지 않음
- 모델 Checkpoint의 크기가 작음
- 초기에 다수의 모델을 메모리에 로드하고 입력에 따라 모델을 빠르게 교체할 수 있음
- 이 교체 방법은 memory bound되기 어려움
단점
- 여러 입력을 batch로 묶어서 한 번에 처리하기 어려움. 각 입력마다 적절한 모델이 다를 수 있기 때문.