Table of Contents

728x90

LoRA 외에도 PEFT(Parameterized Efficient Fine-Tuning) 기술로 사용할 수 있는 여러 가지 방법이 있습니다. 각 방법은 LoRA와 마찬가지로 대규모 모델의 효율적인 파인튜닝을 목표로 하며, 메모리와 계산 비용을 줄이면서 성능을 유지하거나 개선할 수 있습니다. 아래에서 다른 주요 PEFT 기술들을 소개합니다.

1. Prefix Tuning

  • 설명: 입력 시퀀스에 모델 학습 중 추가적인 "프리픽스" 벡터를 삽입하여 모델을 미세 조정하는 방식입니다. 모델의 기존 파라미터는 고정된 상태에서 추가된 프리픽스 벡터만 학습됩니다.

  • 장점:

    • 모델 파라미터를 수정하지 않고, 효율적으로 미세 조정이 가능합니다.
    • 원래 모델의 성능을 유지하면서도 특정 작업에 맞게 빠르게 조정할 수 있습니다.
  • 적용 시점: 대규모 파라미터를 직접 수정하지 않고 특정 작업에 최적화할 때 유용합니다.

  • 관련 연구: Prefix Tuning (Li and Liang, 2021)

    from peft import PrefixTuningConfig
    prefix_config = PrefixTuningConfig(
      num_virtual_tokens=20,  # 프리픽스 토큰 개수
      prefix_projection=True  # 프리픽스 투영 사용 여부
    )

2. Adapter Tuning

  • 설명: 모델의 원래 파라미터를 고정하고, 추가적인 작은 네트워크(어댑터)를 삽입하여 파인튜닝하는 방식입니다. 각 층에 어댑터를 추가하여 이 부분만 학습하고, 나머지 부분은 고정합니다.

  • 장점:

    • 기존 모델을 거의 변경하지 않고, 새로운 작업에 대한 미세 조정이 가능합니다.
    • 메모리 사용량이 적고, 학습 효율이 높습니다.
  • 적용 시점: 대규모 모델을 수정하지 않으면서 작은 학습 파라미터로 성능을 최적화할 때 유용합니다.

  • 관련 연구: Adapter-BERT (Houlsby et al., 2019)

    from peft import AdapterConfig
    adapter_config = AdapterConfig(
      reduction_factor=4,  # 차원 축소율
      non_linearity="relu"  # 활성화 함수
    )

3. Prompt Tuning

  • 설명: 입력 프롬프트에 몇 개의 학습 가능한 토큰을 추가하여, 모델을 미세 조정하는 방식입니다. 프롬프트 토큰만 학습되며, 모델의 나머지 파라미터는 고정됩니다.

  • 장점:

    • 매우 가벼운 파라미터를 학습함으로써 빠르고 메모리 효율적으로 미세 조정이 가능합니다.
    • 소량의 데이터로도 좋은 성능을 얻을 수 있습니다.
  • 적용 시점: 대규모 파라미터를 직접 수정하지 않고, 모델이 특정 프롬프트에 반응하도록 조정할 때 유용합니다.

  • 관련 연구: Prompt Tuning (Lester et al., 2021)

    from peft import PromptTuningConfig
    prompt_config = PromptTuningConfig(
      num_virtual_tokens=50  # 학습 가능한 프롬프트 토큰 개수
    )

4. P-Tuning v2

  • 설명: Prompt Tuning을 확장한 방식으로, 프롬프트 학습을 Transformer 레이어에 적용하여 더 깊은 학습이 가능하게 합니다. 입력과 연결된 프롬프트뿐만 아니라 각 레이어에 학습된 벡터를 추가하여 성능을 높입니다.

  • 장점:

    • 더 복잡한 작업에서도 성능을 발휘하며, 다양한 작업에 맞게 쉽게 조정 가능합니다.
    • 메모리 사용량이 적어 효율적입니다.
  • 적용 시점: 프롬프트 튜닝의 성능이 충분하지 않을 때, 더 복잡한 모델에 적용할 수 있습니다.

  • 관련 연구: P-Tuning v2 (Liu et al., 2021)

    from peft import PromptTuningConfig
    prompt_v2_config = PromptTuningConfig(
      num_virtual_tokens=100,  # 더 많은 학습 가능한 프롬프트 토큰 개수
      task_type="seq_classification"  # 작업 유형
    )

5. BitFit

  • 설명: 모델의 bias 파라미터만 미세 조정하는 방식입니다. 나머지 가중치는 고정하고, bias 항만 학습하게 하여 메모리와 계산 비용을 극도로 줄입니다.

  • 장점:

    • 메모리 사용량이 매우 적고, 연산 비용이 낮습니다.
    • 간단한 작업에도 효과적이며, 특정 상황에서 LoRA에 가까운 성능을 보일 수 있습니다.
  • 적용 시점: 메모리나 연산 자원이 매우 제한된 상황에서 빠르게 학습을 해야 할 때 유용합니다.

  • 관련 연구: BitFit (Zaken et al., 2021)

    from peft import BitFitConfig
    bitfit_config = BitFitConfig()

6. IA^3 (Inverse Attention Adapters)

  • 설명: 모델의 Attention 및 MLP 모듈에 작은 학습 가능한 행렬을 추가하여 파라미터를 미세 조정합니다. IA^3는 추가적인 학습이 가능하면서도 매우 효율적인 방식으로, 메모리와 연산량을 줄이는 데 도움을 줍니다.

  • 장점:

    • 성능 손실 없이 매우 효율적인 학습이 가능하며, 메모리 사용량이 최소화됩니다.
  • 적용 시점: LoRA와 유사한 방식으로, 대규모 모델을 효율적으로 학습할 때 사용됩니다.

  • 관련 연구: IA^3 (Liu et al., 2022)

    from peft import IA3Config
    ia3_config = IA3Config()

각 PEFT 기법 비교

기술 장점 단점 사용 사례
LoRA 효율적이고 성능이 좋음 추가 파라미터 필요 대규모 모델 파인튜닝
Prefix Tuning 모델 파라미터 고정, 작은 데이터에도 적합 전체 모델 파인튜닝 불가 특정 작업에 맞춤
Adapter Tuning 모델의 작은 모듈만 학습 어댑터 크기가 클 경우 메모리 사용 증가 다중 작업, 언어 모델
Prompt Tuning 빠르고 경량 성능이 제한될 수 있음 소량 데이터 학습
P-Tuning v2 깊은 학습으로 성능 향상 복잡성 증가 복잡한 작업
BitFit 매우 가벼운 학습 가능 성능 제한 가능성 있음 메모리 제한된 상황
IA^3 매우 효율적이고 메모리 사용량 적음 모델 구조에 의존적 효율적 학습 필요 시

결론:

  • LoRA 외에도 다양한 PEFT 기술을 사용해 모델을 효율적으로 파인튜닝할 수 있습니다.
  • 각 기술은 메모리 사용, 학습 효율, 성능 최적화 측면에서 장단점이 있으므로, 작업 특성에 맞게 선택하는 것이 중요합니다.