인공지능 개발자 수다(유튜브 바로가기) 자세히보기

자연어처리/LLM을 위한 코딩

[LLM] 모델 학습 with HuggingFace (peft) (8)

Suda_777 2025. 2. 25. 04:08

목차

    반응형

     

    1. peft(🤗 Parameter-Efficient Fine-Tuning)란?

    peft(Parameter-Efficient Fine-Tuning)는 Hugging Face에서 제공하는 라이브러리로, 대형 언어 모델(LLM)을 효율적으로 파인튜닝할 수 있도록 도와준다.

    기존 방식처럼 모델 전체를 미세 조정하는 대신, 일부 가중치만 조정하여 메모리 사용량을 줄이고, 훈련 속도를 높이며, 다양한 작업에 쉽게 적용할 수 있도록 설계되었다.

     


    2. peft의 주요 기능

    1. LoRA (Low-Rank Adaptation)
      • 특정 가중치 행렬의 일부만 학습 가능한 상태로 두어 모델 크기를 줄이고, 연산량을 감소시킴
      • 메모리 사용량이 적어 GPU 자원이 적어도 LLM을 튜닝할 수 있음
    2. Prefix Tuning
      • 입력 시퀀스 앞에 학습 가능한 토큰(prefix) 을 추가하여 모델을 조정하는 방식
      • 모델 가중치를 거의 변경하지 않고도 빠른 도메인 적응이 가능
    3. Prompt Tuning
      • 모델의 가중치를 고정한 채, 입력 프롬프트만 학습하는 방식
      • 파인튜닝보다 훨씬 적은 데이터로 특정 태스크에 적응 가능
    4. Adapter
      • 모델의 특정 층 사이에 추가적인 작은 네트워크(어댑터)를 삽입하여 파인튜닝
      • 기존 모델을 거의 그대로 유지하면서 새로운 작업을 학습할 수 있음
    5. IA3 (Intrinsic Attention Adaptation)
      • Attention 가중치 일부만 조정하는 방식으로, 가장 적은 수의 파라미터를 학습하면서도 효과적인 성능 향상을 제공

     


    3. 적용 예시

    - config 에서 설정

    - peft 적용해 모델을 불러옴

    from peft import LoraConfig, get_peft_model
    from transformers import AutoModelForCausalLM, AutoTokenizer
    
    model_name = "meta-llama/Llama-2-7b-chat-hf"
    model = AutoModelForCausalLM.from_pretrained(model_name)
    tokenizer = AutoTokenizer.from_pretrained(model_name)
    
    # LoRA 설정
    config = LoraConfig(
        r=8, lora_alpha=32, lora_dropout=0.1,
        bias="none", task_type="CAUSAL_LM"
    )
    
    # peft 모델 적용
    peft_model = get_peft_model(model, config)

     

     

     

    반응형