AI/LLM

Parameter-Efficient Fine-Tuning (PEFT)

칼쵸쵸 2025. 3. 1. 15:48
반응형

Parameter-Efficient Fine-Tuning (PEFT)란?

개요

Parameter-Efficient Fine-Tuning (PEFT) 방법은 사전 훈련된 언어 모델(Pre-trained Language Model, PLM)을 모든 매개변수를 조정하지 않고도 다양한 하위 작업(task)에 효과적으로 적응시키는 기술입니다.

왜 PEFT가 필요할까?

대규모 PLM을 완전히 미세 조정(Fine-Tuning)하는 것은 다음과 같은 이유로 어렵습니다.

  • 높은 비용: 모델 크기가 클수록 학습에 많은 계산 리소스가 필요합니다.
  • 메모리 사용량 증가: 모든 매개변수를 업데이트하면 저장 및 메모리 부담이 큽니다.
  • 다양한 작업 적용의 어려움: 특정 작업에 맞게 모델을 미세 조정하면, 다른 작업을 위해 다시 전체 모델을 학습해야 합니다.

이러한 문제를 해결하기 위해 PEFT가 등장했습니다.

PEFT의 특징

  • 소수의 추가 매개변수만 미세 조정: 모델의 모든 가중치를 조정하는 대신, 일부 추가 매개변수만 조정하여 학습 비용을 절감합니다.
  • 저장 및 계산 비용 절감: 기존의 전체 미세 조정 방식보다 훨씬 적은 자원을 사용하면서도 높은 성능을 유지할 수 있습니다.
  • 최신 PEFT 기법은 전체 미세 조정과 유사한 성능 제공: 일부 연구에서는 PEFT 방법이 전통적인 Fine-Tuning과 비교해도 경쟁력 있는 성능을 보인다고 보고합니다.

결론

PEFT는 대규모 언어 모델을 효율적으로 미세 조정할 수 있는 강력한 방법으로, 특히 자원 제한이 있는 환경에서 유용합니다. 최근에는 다양한 PEFT 기법이 개발되었으며, 이를 활용하면 더욱 효율적인 NLP 모델 학습이 가능합니다.

Parameter-Efficient Fine-Tuning (PEFT)에서 지원하는 기법들

PEFT란?

Parameter-Efficient Fine-Tuning (PEFT)는 대규모 사전 훈련된 언어 모델(Pre-trained Language Model, PLM)의 모든 매개변수를 조정하지 않고도, 일부 추가 매개변수만 조정하여 다양한 작업(Task)에 효과적으로 적용할 수 있도록 하는 방법입니다. 이를 통해 계산 및 저장 비용을 절감하면서도 높은 성능을 유지할 수 있습니다.

PEFT에서 지원하는 주요 기법

PEFT는 여러 가지 방식으로 구현될 수 있으며, 대표적인 기법들은 다음과 같습니다.

1. LoRA (Low-Rank Adaptation of Large Language Models)

  • 논문: LORA: LOW-RANK ADAPTATION OF LARGE LANGUAGE MODELS
  • 핵심 개념
    • 모델의 특정 가중치 행렬에 대해 저차원(Low-Rank) 행렬을 추가하여 학습하는 방식
    • 원래 모델의 모든 가중치를 업데이트하지 않고, 일부 작은 행렬만 조정하여 학습 비용을 크게 줄임
    • Hugging Face의 peft 라이브러리에서 널리 지원되는 기법

2. Prefix Tuning

3. P-Tuning

  • 논문: GPT Understands, Too
  • 핵심 개념
    • 기존의 Prompt Tuning 방식보다 더 확장된 개념으로, 연속된 벡터(Continuous Prompt)를 활용하여 모델을 조정
    • Zero-shot과 Few-shot 학습 성능을 향상시키는 데 도움을 줌

4. Prompt Tuning

5. AdaLoRA (Adaptive LoRA)

  • 논문: Adaptive Budget Allocation for Parameter-Efficient Fine-Tuning
  • 핵심 개념
    • 기존 LoRA 방식에서 적응형 예산 할당(Adaptive Budget Allocation)을 통해 효율적인 학습 가능
    • 태스크(task)에 따라 적절한 가중치 업데이트를 자동으로 할당하여 성능을 최적화함

6. (IA)^3 (Infused Adapter-Activation Adjustment)

7. MultiTask Prompt Tuning


Hugging Face

Hugging Face는 PEFT를 쉽게 사용할 수 있도록 peft 라이브러리를 제공합니다.

https://github.com/huggingface/peft

Hugging Face peft 라이브러리

  • LoRA, Prefix Tuning, P-Tuning 등 주요 PEFT 기법을 지원
  • transformers 라이브러리와 통합되어 사용 가능
  • 미세 조정(Fine-Tuning)보다 훨씬 적은 메모리와 계산 자원으로 학습 가능

Hugging Face에서 PEFT를 사용하는 이유

  1. 손쉬운 적용: 기존 모델(transformers)과의 호환성이 높아 간단한 코드 변경만으로 적용 가능
  2. 낮은 자원 소모: 대규모 모델을 완전히 미세 조정하지 않고, 일부 파라미터만 조정 가능
  3. 고성능 유지: 최소한의 파라미터 조정만으로도 높은 성능을 유지할 수 있음

예제 코드

아래는 Hugging Face peft 라이브러리를 활용하여 LoRA 기반으로 GPT-2 모델을 학습하는 간단한 예제입니다.

from transformers import AutoModelForCausalLM, AutoTokenizer
from peft import LoraConfig, get_peft_model

# 모델 및 토크나이저 불러오기
model_name = "gpt2"
tokenizer = AutoTokenizer.from_pretrained(model_name)
model = AutoModelForCausalLM.from_pretrained(model_name)

# LoRA 설정
config = LoraConfig(
    r=8,  # 저차원 랭크
    lora_alpha=32,  # LoRA scaling factor
    lora_dropout=0.1,
    bias="none",
    task_type="CAUSAL_LM"
)

# PEFT 모델 적용
peft_model = get_peft_model(model, config)
print(peft_model)
반응형

'AI > LLM' 카테고리의 다른 글

PyTorch, Hugging Face Trainer를 활용한 분산 환경 학습  (0) 2025.03.12