ABOUT ME

-

Today
-
Yesterday
-
Total
-
  • PEFT의 핵심: "기존 모델은 얼리고, 추가 레이어만 학습한다"
    AI 2026. 4. 18. 02:00

    LLM을 튜닝할 때 가장 큰 벽은 '메모리'입니다. 이미지에서 빨간색으로 적어주신 것처럼, 모델 사이즈가 너무 커서 물리적인 GPU 한계에 부딪히기 때문이죠. 이를 해결하는 PEFT의 철학은 명확합니다. "원본은 건드리지 말고, 필요한 것만 덧붙여라."

     

    PEFT(Parameter-Efficient Fine-Tuning)의 대원칙: Pretrained Model은 'Frozen'

    우리가 산 70B, 175B 파라미터 모델은 이미 훌륭한 '기초 지식'을 가지고 있습니다. 이걸 다 고치려다가는 배보다 배꼽이 더 커집니다.

    • 기존 레이어: 그대로 둡니다. (Frozen/동결)
    • 추가 레이어: 그 위에 혹은 사이에 아주 작은 '추가 레이어'를 붙입니다. (Add-on)
    • 학습 범위: 오직 이 '추가된 레이어'의 가중치만 업데이트합니다.

     

    레이어를 어떻게 '덧대는가'? (구조적 분류)

    ① Prefix-Tuning: 가상 토큰의 주입 (도식 a)

    입력값 앞에 학습 가능한 가상 토큰(Virtual Tokens)을 붙이는 방식입니다. 텍스트 프롬프트가 아닌 '연속적인 벡터'를 매 레이어(Transformer block)의 Activation 앞에 주입하여 모델의 출력을 제어합니다. 이 가상토큰만 학습한다.

     

    • 장점:  극강의 파라미터 효율성: 전체 모델의 0.1% 미만의 파라미터만 사용합니다.
    • 도메인 특화: 특정 태스크(요약, 번역 등)의 '맥락'을 모델에게 주입하는 데 매우 효과적입니다.
    • 단점:
      • 컨텍스트 윈도우 점유: 가상 토큰이 입력 시퀀스 길이를 차지하므로, 실제로 모델이 처리할 수 있는 문장 길이가 짧아집니다.
      • 최적화 난이도: 가상 벡터의 초기값($P$가 처음엔 아무 값임)에 따라 성능 편차가 큽니다.

     

    ② Adapter: 모델 사이에 끼워 넣기 (도식 c, d)

    Transformer 블록 내부에 작은 신경망(Bottleneck)을 물리적으로 삽입합니다.

    • 구조: 고차원을 저차원으로 압축($d \to r$) $\rightarrow$ 활성화 함수(GeLU) $\rightarrow$ 다시 확장($r \to d$).
    • Series Adapter (c): 레이어 뒤에 순차적으로 배치. 연산 경로가 길어져 추론 속도 저하(Latency)가 발생할 수 있습니다.
    • Parallel Adapter (d): 기존 레이어와 병렬로 연산 후 합산. 최근에는 하드웨어 연산 효율성 때문에 병렬 방식을 선호하기도 합니다.

    ③ LoRA (Low-Rank Adaptation): 가중치 레벨의 혁신 (도식 b)

    현재 가장 널리 쓰이는 표준 기법입니다. 기존 가중치 행렬 옆에 두 개의 작은 행렬($A, B$)을 병렬로 덧댑니다.

     

     

    LoRA(Low-Rank Adaptation): "병렬로 덧대기"

    $$\Delta W = B \times A$$
    • Sparse(희소성): 모델이 새로운 정보를 배울 때, 모든 가중치가 변할 필요는 없습니다. 대부분의 변화량($\Delta W$)은 0에 가까운 Sparse한 특성을 가집니다.
    • Low-Rank & QR 분해:  $\Delta W$는 낮은 계수(Rank)를 가지므로, 이를 $B \times A$로 분해할 수 있습니다.
      • 이때 QR 분해를 통해 행렬의 핵심 기저(Basis)를 추출하면, 아주 적은 파라미터($r=4$ 등)만으로도 전체 변화량을 완벽하게 근사할 수 있습니다.
    • Merging (병합): LoRA의 가장 큰 장점입니다. 학습이 끝나면 $W = W_0 + BA$를 미리 계산해 합쳐버릴 수 있어, 추론 시 추가적인 레이어 연산(Overhead)이 전혀 없습니다.

    Rank 선정: 하이퍼파라미터인 Rank($r$) 값을 정하는 데 노하우가 필요합니다.

     

    왜 '추가 레이어'를 사용하는 것이 이득인가? (엔지니어링 관점)

    이미지 상단 메모의 "훈련 범위"와 "물리적 메모리 한계"에 대한 답변입니다.

    • GPU 메모리 절약: 1,000개의 레이어를 학습시키는 것과, 기존 1,000개는 얼려두고 새로 붙인 1~2개의 작은 레이어만 학습시키는 것은 하늘과 땅 차이입니다.
    • 모듈화(Modularization): A라는 태스크용으로 레이어를 하나 붙여서 학습하고, B라는 태스크가 필요하면 기존 레이어는 그대로 둔 채 B용 추가 레이어만 갈아 끼우면 됩니다. (마치 레고 블록을 갈아 끼우는 것과 같습니다.)
    • 추론 효율성: 특히 LoRA 같은 경우, 학습 때는 레이어를 따로 붙여서 학습하지만, 실제 서비스할 때는 기존 가중치에 더해버릴 수(Merge) 있어 추론 속도가 떨어지지 않습니다.

     

    정리하자면 

    PEFT = Frozen Base Model + Trainable Extra Layers

    1. 기존 모델(Pretrained): 물리적인 메모리 한계로 인해 전체를 학습시키는 것은 불가능함. 따라서 '고정'시킴.
    2. 추가 레이어(Extra Layer): 모델 내부 또는 옆에 아주 가벼운 레이어를 '붙임'.
    3. 학습: 전체 파라미터의 1%도 안 되는 이 '추가 레이어'만 학습시켜서 메모리 한계를 돌파함.
    구분 Prefix-Tuning Adapter LoRA
    핵심 기법 가상 토큰 주입 Bottleneck 레이어 삽입 행렬 분해 ($BA$)
    덧대는 방식 입력측 병렬 레이어 사이 (직/병렬) 가중치 병렬 (Merging 가능)
    추론 속도 약간 저하 저하 (레이어 추가) 동일 (오버헤드 0)
    수학적 특징 Continuous Prompt Residual Connection Low-Rank / Sparse

     

     


    헤드 교체(Head Tuning) vs PEFT: 같은 점과 다른 점

    1. 공통점: "백본(Backbone)은 건드리지 않는다"

    둘 다 Transfer Learning(전이 학습)의 일종입니다. 수조 원을 들여 만든 거대 모델의 가중치(Backbone)는 고정(Freeze)하고, 아주 적은 파라미터만 학습시켜 가성비를 챙긴다는 전략적 뿌리는 동일합니다.

    2. 차이점 1: 수술 부위 (깊이의 차이)

    • 헤드 교체 (Linear Probing): 모델의 **맨 마지막 층(출력층)**만 갈아 끼웁니다. 뇌는 그대로 두고 '입술'만 바꿔서 다른 언어를 말하게 하는 식입니다.
    • PEFT (LoRA, Adapter 등): 모델의 모든 층(Transformer blocks) 내부에 침투합니다. 뇌의 각 뉴런 사이사이에 작은 보조 장치를 달아, 정보가 흐르는 방식 자체를 재설계합니다.

    3. 차이점 2: 표현력 (Intelligence의 차이)

    이 부분이 블로그의 핵심 통찰이 될 것입니다.

    • 헤드 교체: 모델이 이미 뽑아낸 특징(Feature)을 가지고 "이건 A야, 저건 B야"라고 분류하는 것만 잘합니다. 모델의 근본적인 '이해 방식'은 바꿀 수 없습니다.
    • PEFT: 모델이 데이터를 해석하는 'Attention 패턴' 자체를 바꿉니다. 즉, 모델의 성격, 말투, 추론 논리 자체를 뜯어고칠 수 있습니다. 70B 모델의 거대한 지능을 유지하면서, 그 지능을 쓰는 '방법론'을 전 층에 걸쳐 튜닝하기 때문입니다.

     

    엔지니어링 비유: UI 교체 vs 미들웨어 패치

    헤드 교체: 기존 시스템의 로직은 하나도 안 건드리고, 맨 앞단의 API 스펙이나 UI 레이아웃만 바꾸는 것입니다. 데이터 포맷을 바꾸는 데는 효율적이지만, 시스템 내부 로직을 바꿀 순 없습니다.

    PEFT (LoRA/Adapter): 코어 라이브러리(Frozen Weights)는 건드리지 않되, 모든 함수 호출 사이에 미들웨어(Add-on Layers)를 끼워 넣어 로직을 가로채고(Interception) 변경하는 것입니다. 시스템 전체의 동작 방식을 바꿀 수 있는 훨씬 강력한 수단입니다.

     

     

     

    왜 LLM에서는 헤드 교체만으론 부족한가?

    이미지 상단의 메모처럼 "물리적으로 메모리 한계"가 있는 상황에서, 단순히 헤드만 바꾼다면 모델은 새로운 지식을 배우거나 복잡한 지시사항을 따르는 법을 배울 수 없습니다.

    • 분류(Classification)만 한다면 헤드 교체로 충분합니다.
    • 생성(Generation)과 추론(Reasoning)을 하려면, 모델의 깊숙한 곳까지 영향을 주는 LoRA나 Prefix-Tuning 같은 PEFT가 필수적입니다.

    티스토리 포스팅용 요약표

    구분 헤드 교체 (Traditional) PEFT (LoRA, Adapter, Prefix)
    수술 위치 모델의 최상단 (Output Layer) 모델의 전 계층 (All Transformer Layers)
    학습 범위 출력 레이어만 업데이트 내부 레이어 사이에 삽입된 가중치 업데이트
    주요 용도 단순 분류 (A인가 B인가?) 대화, 요약, 추론, 페르소나 변경
    파급력 출력 결과만 가공함 모델의 '생각하는 방식'을 바꿈
Designed by Tistory.