19.9 사전학습·전이·Foundation Model

실습 · 연습문제 1개

LoRA의 순전파·병합·파라미터 수 lora-merge

LoRA는 사전학습 가중치 W0∈Rdout×din\mathbf{W}_0 \in \mathbb{R}^{d_{\text{out}} \times d_{\text{in}}}를 고정하고 저랭크 갱신을 더한다.

y=W0x+αr BAx,B∈Rdout×r, A∈Rr×din.\mathbf{y} = \mathbf{W}_0\mathbf{x} + \frac{\alpha}{r}\,\mathbf{B}\mathbf{A}\mathbf{x}, \qquad \mathbf{B} \in \mathbb{R}^{d_{\text{out}} \times r},\ \mathbf{A} \in \mathbb{R}^{r \times d_{\text{in}}}.

세 함수를 완성한다. 입력은 batch로 들어온다: X의 shape은 (N, d_in), 출력은 (N, d_out)이다.

  1. lora_forward(X, W0, A, B, alpha): 위 식을 병합하지 않고 계산한다. 고정 경로 XW0⊤\mathbf{X}\mathbf{W}_0^\top와 저랭크 경로 (XA⊤)B⊤(\mathbf{X}\mathbf{A}^\top)\mathbf{B}^\top를 따로 계산해 더한다. rr은 A의 행 수다.
  2. merge(W0, A, B, alpha): 병합한 가중치 W0+αrBA\mathbf{W}_0 + \frac{\alpha}{r}\mathbf{B}\mathbf{A}를 반환한다(shape (d_out, d_in)). W0를 제자리에서 바꾸지 않는다.
  3. n_trainable(d_in, d_out, r): LoRA가 학습하는 파라미터 수(정수)를 반환한다.

테스트는 다음을 확인한다.

  • 병합한 가중치의 출력 X @ merge(...).T가 lora_forward와 같다.
  • B가 0이면 출력이 사전학습 모델 XW0⊤\mathbf{X}\mathbf{W}_0^\top와 같다(학습의 시작점).
  • 갱신 W−W0\mathbf{W} - \mathbf{W}_0의 rank가 rr 이하다.
  • merge가 W0를 바꾸지 않는다.
  • 1024×10241024 \times 1024 행렬, r=8r = 8이면 학습 파라미터는 16,384개다.