헬창 개발자

LoRA target_modules 본문

공부방

LoRA target_modules

찬배 2024. 8. 8. 11:45

LoRA target_modules은 특정 모델의 파인튜닝이나 훈련 시, 수정 또는 최적화하려는 모델의 모듈을 지정하는 부분입니다.

 

특히, "q_proj", "k_proj", "v_proj", "o_proj", "gate_proj", "up_proj", "down_proj"와 같은 모듈 이름들은 트랜스포머

(Transformer) 아키텍처와 관련이 있습니다.  Attention is all you need 논문을 읽어 보신분들은 어느정도 감이 오겠지만 모르시는 분들을 위해 각 모듈이 무엇을 하는지 간단히 설명하겠습니다:

트랜스포머 아키텍처에서의 주요 모듈들

  1. q_proj (query projection):
    • 쿼리 벡터를 생성하는 모듈입니다. 입력된 텍스트의 특정 부분에 대한 쿼리를 생성합니다.
    • 트랜스포머의 셀프 어텐션 메커니즘에서, 각 단어의 쿼리 벡터가 다른 모든 단어와의 관계를 평가합니다.
  2. k_proj (key projection):
    • 키 벡터를 생성하는 모듈입니다. 입력 텍스트의 각 단어에 대한 키 벡터를 생성합니다.
    • 쿼리 벡터와 키 벡터의 내적(dot product)을 통해 각 단어 간의 연관성을 계산합니다.
  3. v_proj (value projection):
    • 밸류 벡터를 생성하는 모듈입니다. 입력 텍스트의 각 단어에 대한 밸류 벡터를 생성합니다.
    • 어텐션 스코어에 따라 가중치가 적용된 후, 최종적으로 출력되는 벡터를 형성합니다.
  4. o_proj (output projection):
    • 셀프 어텐션 메커니즘의 출력을 최종 출력으로 변환하는 모듈입니다.
    • 어텐션 헤드들의 출력을 통합하여 최종적인 출력을 생성합니다.

추가적인 프로젝션 모듈들

  1. gate_proj:
    • 특정 입력을 조절하거나 필터링하기 위해 게이트 메커니즘을 적용하는 모듈입니다.
    • 이는 게이트드 피드포워드 네트워크(Gated Feedforward Network)나 LSTM에서 게이트 메커니즘과 유사한 역할을 할 수 있습니다.
  2. up_proj (up projection):
    • 입력의 차원을 증가시키는 모듈입니다. 예를 들어, 입력 벡터의 크기를 증가시켜 더 많은 정보를 담을 수 있도록 합니다.
    • 주로 트랜스포머의 피드포워드 신경망에서 사용됩니다.
  3. down_proj (down projection):
    • 입력의 차원을 감소시키는 모듈입니다. 예를 들어, 입력 벡터의 크기를 줄여 계산 효율성을 높입니다.
    • 주로 트랜스포머의 피드포워드 신경망에서 사용됩니다.
Comments