HomeAboutMeBlogGuest
© 2025 Sejin Cha. All rights reserved.
Built with Next.js, deployed on Vercel
장지원 페이지/
📝
AI Advanced
/[LoRA]: Low-Rank Adaptation/
LoRA 논문 리뷰 영상

LoRA 논문 리뷰 영상


 

Problem (~0min)

 
매번 언급하듯이 parameter 수가 많아 진다는 것이 문제가 되고 있다.
(GPT3 .. 파라미터가 많고 강력한 zero shot learner의 모습을 보여주고 있다)
이제 application이 더 중요하게 된다.
 
Point ⇒ Pre train model을 활용해서 여러 down stream 문제(small task 정도로 이해하면 될 듯, ex GPT가 해주는 기사 요약, 간단한 번역 등..의 task들)를 해결하겠다.
 
파인 튜닝의 목표?: prefix가 있을 때 이 다음에 올 likelihood(log probability)를 maxima하는 것
notion image
이 때 중요한 것: GD, Learning rate
log probability란?

확률을 단순히 해주기 위해서 사용하는 것
 
파라미터가 많다? (= 연산과 스토리지를 많이 차지한다)
 

LoRA (~10min)

 
→ PEFT 말고, RAG라는 것도 있나? 찾아보기
PEFT의 접근 법
오른쪽 항: pi에서 theta로 바뀌었다. (= 일부 파라미터만 업데이트 해서 효율적인 결과를 내겠다)
왼쪽 항: pt가 theta_0 + delta_0pi_theta로 바뀌었다. (= 새로운 theta에 변화량을 더하겠다!?)
notion image
 
What?
: Over parameterized model이 실제로는 낮은 intrinsic dimension에 있다.
  • pre train weight를 freeze 상태로 유지하면서 adaptation 중 dense layer 변화에 대한 rank decomposiition meatrices를 최적화 한다. → 신경망의 일부 dense layer를 간접적으로 훈련 시킨다.
 
Terminology
d_model: input/output dimension size
w_1, w_k, w_v, w_o: query, key, value, output projection matrices in self-attention module
w or w_0: pre trained weight matrix
delta_w: adaptation 중의 gradient update 축적
r: rank of LoRA model
(이 때 transfomer는 논문의 setting을 따른다. ex. use Adam optimizer, d_ffn = 4xd_model)
 
PEFT’s strategy (~15min)
  1. Adapter를 삽입하는 방법
    1. adapter
      밑의 그림은 transfomer의 한 개의 layer이다. transfomer의 한 개의 layer는 self attention module으로 이루어진 multi head attention module + feed forward network로 이루어져 있다.
      → multi header attention의 output을 adapter에 쏴주고 있는 모습!? ++ feedfoward network를 통과한 output을 adapter에 쏴주고 있는 모습!? (== feedforward down projection, feedforward up projection 두 가지 matrix만을 새롭게 학습 시킨다)
      → 문제 점: multi header attention에서 output을 받아야지 adapter에서 연산을 수행할 수 있다. 즉 sequential하게 연산이 수행되기 때문에 inference latency가 발생하게 된다.
      (이후에 AdapterFusion, AdapterDrop 등의 기법이 나와서 이를 해결하려는 노력을 하였다. 나중에 시간이 나면 이 AdapterFusion, AdapterDrop을 알아보자! → but 구조적인 문제를 해결하지는 못했다…)
      → adapter는 한 layer에 두 개씩 들어간다.
      → 그냥 adapter는 우선 추가 거치는 곳이 있다.. 정도만 알아두자..
      → 얜 유튜브 설명 잘 없네..
      notion image
       
  1. Prompting을 하는 방법 (~18min)
    1. prefix tuning
      P tuning, Prompting에서 영감을 받은 작업이다.
      → 문제점 인간의 지시어가(prompting)이 정확하지 않을 수 있다.
      → sequence length가 제한이 되어 있기 때문에 문제가 될 수 있다.
결론:
Adapter: inference가 너무 길다.
preifx: 최적화가 어렵고, trainable-param이 non monotonically하게 변한다. → 즉 파라미터가 잘 수렴하지 않는다.
 
LoRA (~25min)
모든 dense layer에 대해서 적용 가능하다. (CV 등등에서 모두 적용 가능하다)
Adapter도 R차원 보다 적은 차원으로 down projection 하는 matrix가 있었고, LoRA도 마찬가지 이다. 그럼 차이점은!?
⇒ 변화를 rank decomposition matrix로 최적화 한다. 따라서 가중치에 대한 업데이트도 intrinsic rank가 낮다. 밑 식이 이를 의미하는 것 같다. (A는 up projection 해주는 matrix, B는 down projection 해주는 matrix
notion image
 
notion image
 
BA로 나누어서 delta_W를 근사한다.
 
코드리뷰
LoRA 생성
notion image
A는 in feature에서 r로 down projection, B는 r에서 out feature로 up projection하게 설계한다.
각 matrix의 initializing은 A는 kaiming uniform, B는 0으로 하였다. (행렬 초기화)
→ 논문에서는 가우시안으로 초기화 했다고 하였다.
notion image
뭐.. 합쳐주는 것이기 때문에 inference latency가 발생하지 않는다.
LoRA evaluation
notion image
A, B를 거치는 것이 아니라 추가로 합치는 것이기 때문에 inference할 때 추가로 sequential하게 증가하지 않는다.
→ 원래껄로 복원하고 싶으면 빼주면 되기 때문에 편하다.
notion image
 
가장 큰 차이는 아키텍쳐 위치인 것 같다!!
notion image
notion image