모델 최적화와 경량화: PEFT

SeongGyun Hong·2024년 12월 27일

NaverBoostCamp

목록 보기
56/64

1. Transfer Learning

  • 전이학습
    이미 학습 완료 모델을 새로운 모델의 작업 시작점으로써 재사용하는 기계학습 방법론
    특정 데이터셋을 이용해서 사전 학습된 모델의 가중치를 업데이트 하는 것이 처음부터 훈련시키는 것 보다 훨씬 쉬움

  • 대표 패러다임
    Pre-training => Fine-tuning

1.1 Fine-tuning

  • 미세조정
    • 보통 사전 학습 모델은 특정 작업에 특화된 모델이 아니라, 문제 해결 능력이 부재되어 있음
    • 미세 조정은 모델이 새로운 작업에서의 문제 해결 능력을 얻기 위해 새로운 데이터로 사전학습 모델을 재학습하는 과정을 거침
    • 과정
    1. 사전 학습 모델 선택
    2. 모델 구조 조정 (최상단 레이어 추가 등)
    3. 재학습

모델 크기와 Fine-tuning

다만, FIne-tuning은 모든 파라미터를 업데이트하는 방법으로써, 큰 모델일수록 학습비용(학습시간, 메모리) 등이 증가한다.
이러한 이유들로 인하여 PEFT가 등장

2. PEFT

  • 모델의 전체 parameter를 학습하는 FT와는 다르게 필요한 일부분만 학습하도록 하는 방법

  • 학습 파라미터, 학습 소요 시간을 줄이는 효율적인 방법

  • PETL (transfer learning)이라고도 지칭한다.

  • 방법론

    1. 프롬프트 튜닝방식
      모델의 원래 파라미터를 변경하지 않고
      모델의 출력을 원하는 방식으로 유도하는 방식
    • Prompt Tuning Prefix Tuning P-Tuning

    1. 파라미터 삽입 방식
      모델의 특정 위치에 추가적인 학습 가능한 파라미터를 삽입하여 모델을 미세 조정
    • Adapter LoRA Compacter

    위 두가지 방법은 독립적이기에 결합하여 사용할 수 있다

PEFT를 왜 진행해야 하나요?
1. 거대한 파라미터 수의 모델을 한정된 GPU 자원으로도 학습 가능하게 함
2. 모듈화가 굉장히 잘 된다. 서로 다른 작업에 대해서 별도의 파라미터 세트를 유지하여 재사용할 수 있다. 탈부착이 가능한 어댑터!

2.1 Adapter

파라미터 삽입 방식의 주요 모델 중 하나
기존 사전학습 모델의 layer 사이에 삽입형 구조로 Adapter 모듈을 제안

  • 원 논문에서는 BERT의 Layer 사이 삽입 형 모델을 제안하였다.
    • Fine-tuning과 비교했을 때 3.6% 가량의 파라미터로 비슷한 성능에 도달함

CoLA... 등등은 Task 라고 보면 된다(GLUE 벤치마크)

Adapter Layer

  • BERT에 적용 (Bottleneck 구조 FNN + Skip-connection)
    • BERT의 각 레이어 사이에 학습 가능한 Adapter 모듈 삽입
    • Adapter 모듈은 Bottleneck 구조의 FNN과 Skip-connection으로 구성

위 구조에서 Adapter가 왜 Bottleneck 구조인지 이해해보자.

원래의 FNN은 다음 구조다.

여기 중간에 있는 mxm 매트릭스를 쪼개는 작업이
Low-Rank Decomposition(Adaptation)이라고도 부르는데, 구체적으로는 Reparameterization Trick이라고 칭해지며 이 mxm 매트릭스를 아래와 같이 둘로 쪼개어 적용시키게 된다.

  • 이는 FNN에서 Weight matrix W의 파라미터 수를 줄이는 방법으로
  • W를 두개의 작은 Matrix의 곱으로 변환시킨다.
  • 여기서 나오는 r이 바로 rank이다.
  • 이 r을 줄이느냐 늘리느냐에 따라 원래 파라미터수를 크게 줄일 수 있게 되는 것

Reparameterization Trick의 과정을 구체적으로 보자면

위 사진과 같은데, 보는 바와 같이 Bottleneck 구조처럼 그 중간에 오는 사이즈가 굉장히 작아진다(z(1xr)1)

  • 위와 같은 과정을 큰거에서 작은 것으로 Project 되었다. 즉, Down-Projection 되었다고 말함
  • 이걸 다시 아래처럼 Up-Projection하기에 Bottle-neck 구조라고 하는 것
  • 이런 일련의 과정을 바로 Reparameterization Trick이라고 하는 것
  • 결국 Adapter Module은
    Bottleneck 구조의 FNN이다.
    • 순방향 신경망(FNN)의 일종으로, 차원 축소 후 차원 확장하는 bottleneck 구조로 되어 있다.
      - Projection 과정에서 feature dimension에 대한 변화가 있는데
      - Bottleneck 구조 자체는 학습 파라미터 개수를 사용자 설정에 맞게 조정하여 줄일 수 있다 (r 조절)


      W_a W_b 가 바로 각각의 md사이즈에 해당하고 여기에서 m과 d는 원래차원과 차원 축소 후의 bias 각각을 말해준다. (m은 rank)

2.2 LoRA

Low-Rank Adaptation of Large Language Models의 약자로
사전 학습 모델 가중치는 고정한 채로, 트랜스포머 아키텍처의 각 층에 랭크 분해 행렬을 병렬적으로 위치시켜 추가적인 추론의 지연이 발생하지 않는다.
Adapter 보다 속도 측면에서 효율적이다.

  • 비선형 함수를 사용하지 않고
  • Bias 파라미터를 학습하지 않는다는 특징이 있다.

    이외 아래를 보면 알 수 있듯이 Reparameterization Trick은 동일하다.
  • LoRA가 Adapter 보다 시간효율적임은 아래의 구조를 통해서도 확인할 수 있다.
    • LoRA는 병렬적이고
    • Adapter는 직렬로 연결된다.

이게 차이가 어디서나냐?
배치 단위 훈련에서는 차이가 안 나는데,
인퍼런스할 때 LoRA를 썼을 때랑 안 썼을 때랑 그 추론 시간에서 30퍼센트가량 차이가 난다.
배치단위 훈련에서는 차이가 크지 않지만, 인퍼런스할 때는 하나씩 들어가므로, 차이가 생긴다.
아래 표 참고

표 출처: https://arxiv.org/pdf/2106.09685

  • LoRA는 Adapter보다 더 간소화된 모델 구조로 되어 있어 파라미터 수를 추가적으로 절약한다.

    • Adapter Module:

    • LoRA Module

    • 기본 모델이 비선형 모델로 되어 있으니 Nonlinear activation 및 bias term 생략

      • 추가적인 파라미터 절약 및 인퍼런스 속도 향상

3. Adapter vs LoRA


출처: https://arxiv.org/pdf/2110.04366

AdapterLoRA
모듈 연산 방법Sequential (각 layer에 삽입)Parallel (각 layer 연산과 병렬 연결)
추가 비선형 함수OX
학습 파라미터Weight, biasWeight
연결지연모듈에 비례하여 발생거의 발생하지 않음

4. 요약

  • Transfer Learning
    이미 학습 완료된 모델을 새로운 작업의 시작점으로써 재사용하는 기계학습 방법론

  • PEFT
    사전 학습 모델에 학습 가능한 파라미터를 추가하여 특정 작업에 맞춰 업데이트

    • 프롬프트 튜닝
      모델의 원래 파라미터를 변경하지 않고도 모델의 출력을 원하는 방향으로 유도하는 방식
    • 파라미터 삽입 방식
      모델의 특정 위치에 추가적인 학습 가능한 파라미터를 삽입하여 모델을 미세조정
      • 가중치 행렬의 크기를 적절하게 결정하여 파라미터 수를 조절할 수 있고, 사전 학습 모델의 가중치는 고정해두기 때문에 추가된 파라미터에 대한 모듈화가 가능하다.
        • Adapter LoRA
profile
헤매는 만큼 자기 땅이다.

0개의 댓글