Parameter-Efficient Fine-Tuning (PEFT)
매개변수 효율적 미세 조정(PEFT)은 추가하거나 선택한 소수의 가중치만 학습하여 사전 학습 모델을 조정합니다. 어댑터, LoRA 및 가중치 고정을 다룹니다.
매개변수 효율적 파인튜닝 (PEFT)은 새 매개변수 몇 개를 네트워크에 추가하거나 기존 매개변수 중 일부를 선택해 학습함으로써 사전 학습된 모델을 새로운 작업에 맞게 조정합니다. 나머지 모델 가중치는 고정된 상태로 유지됩니다. 전체 파인튜닝은 모든 가중치를 업데이트합니다. 70억 개 매개변수를 가진 대규모 언어 모델 (LLM)의 경우, 70억 개 전체 값의 그래디언트와 옵티마이저 상태를 유지하고 작업마다 모델 전체 사본을 저장해야 합니다. PEFT 방법은 매개변수의 1% 미만을 학습하는 경우가 많으므로, 파운데이션 모델을 단일 GPU에서 조정할 수 있으며, 새로운 작업마다 전체 체크포인트 대신 학습된 매개변수의 작은 파일만 추가하면 됩니다. Hugging Face의 PEFT 라이브러리는 트랜스포머 모델에 가장 널리 사용되는 방법을 구현합니다.
PEFT의 작동 방식#
PEFT는 전이 학습을 기반으로 합니다. 광범위한 데이터로 사전 학습된 모델은 이미 일반적인 특징을 인코딩하고 있으므로, 관련 작업에 맞게 조정할 때는 학습할 때보다 훨씬 적은 부분을 변경하면 됩니다. 학습하는 매개변수에 따라 방법은 세 가지 유형으로 나뉩니다.
가산 방법은 고정된 네트워크에 새로운 학습 가능 모듈이나 입력을 추가합니다. 어댑터는 각 트랜스포머 블록 내부에 작은 병목 레이어를 추가합니다. GLUE 언어 벤치마크에서는 전체 파인튜닝 대비 성능 차이가 0.4% 이내였고 작업당 매개변수는 3.6% 추가되었습니다. 프롬프트 튜닝과 프리픽스 튜닝은 입력 앞이나 각 레이어의 활성값 앞에 붙이는 소수의 연속 벡터를 학습합니다.
선택적 방법은 기존 가중치 중 선택한 일부를 학습합니다. 백본을 고정하고 뒷부분 레이어만 학습하는 것이 가장 단순한 형태이며, BitFit은 편향 항만 학습합니다.
재매개변수화 방법은 고정된 가중치 행렬에 대한 간결한 업데이트를 학습합니다. LoRA는 업데이트를 두 저랭크 행렬의 곱으로 표현합니다. GPT-3 175B를 전체 파인튜닝하는 방식과 비교했을 때, 학습 가능한 매개변수는 10,000배 줄이고 GPU 메모리는 3배 줄였습니다. QLoRA는 4비트 양자화 기본 모델 위에서 LoRA 어댑터를 학습합니다. DoRA는 각 가중치를 크기와 방향으로 분리하고, LoRA를 사용해 방향을 조정합니다.
작업 간 차이는 학습된 매개변수 일부에만 있으므로, 기본 모델 하나로 여러 작업을 동시에 처리할 수 있습니다. 서버는 고정된 기본 모델을 메모리에 유지하고 각 요청에 맞는 어댑터를 적용합니다. S-LoRA와 같은 시스템은 다음과 같이 수천 개의 LoRA 어댑터를 제공합니다.
장점과 절충점#
그래디언트와 옵티마이저 상태는 학습하는 매개변수에 대해서만 필요하므로 메모리 사용량이 크게 줄어듭니다. 다만 고정된 가중치와 활성값은 여전히 GPU 메모리에 들어가야 합니다. 사전 학습된 가중치를 고정하면 소규모 데이터셋에서의 과적합과 모델의 기존 능력에 대한 치명적 망각도 줄일 수 있습니다. 단점은 용량입니다. LoRA는 덜 학습하고 덜 잊는다라는 제목의 연구에서 LoRA는 프로그래밍과 수학 작업에서 전체 파인튜닝보다 성능이 낮았지만, 해당 도메인 밖의 작업에서는 기본 모델의 성능을 더 많이 보존했습니다.
컴퓨터 비전에서의 PEFT#
비전 트랜스포머에도 같은 방법을 적용할 수 있습니다. 비주얼 프롬프트 튜닝은 고정된 ViT에 추가 입력 토큰을 학습시킵니다. 매개변수의 1% 미만만 학습하면서도 여러 테스트에서 전체 파인튜닝보다 뛰어난 성능을 보였습니다. LoRA 어댑터는 Stable Diffusion을 새로운 스타일이나 주제에 맞게 조정합니다. 합성곱 객체 탐지 모델에서는 동결이 표준적인 선택적 접근 방식입니다. Ultralytics YOLO26 학습에서 freeze 인수는 처음 N개 레이어의 그래디언트 업데이트를 중단하고 해당 레이어의 배치 정규화 통계도 고정합니다. freeze=11는 레이어 0부터 10까지, 즉 YOLO26 백본 전체를 지정하므로 넥과 탐지 헤드만 학습됩니다.
from ultralytics import YOLO
# COCO로 사전 학습된 YOLO26n 가중치를 불러옵니다
model = YOLO("yolo26n.pt")
# 레이어 0~10(백본)을 고정하고 넥과 탐지 헤드만 학습합니다
results = model.train(data="coco8.yaml", epochs=5, freeze=11)학습 로그에는 첫 번째 에포크가 시작되기 전에 Freezing layer 줄에 각 고정된 매개변수가 나열됩니다.
PEFT와 관련 용어 비교#
- 전체 파인튜닝: 모든 가중치를 업데이트하므로 조정 능력이 가장 뛰어나지만 메모리를 가장 많이 사용하고 작업마다 모델 전체 사본이 필요합니다. PEFT는 변경되는 매개변수의 범위를 제한하는 파인튜닝 방식입니다.
- 선형 프로빙: 고정된 특징에 선형 분류기만 학습하는 가장 제한적인 선택적 방법이며, 사전 학습된 표현이 이미 얼마나 많은 정보를 포착하는지 측정하는 데 주로 사용됩니다.
- 프롬프트 엔지니어링: 입력에 직접 작성한 텍스트를 사용해 모델의 동작을 바꾸며 학습은 수행하지 않습니다. 프롬프트 튜닝은 그래디언트 하강법으로 연속 프롬프트 벡터를 학습합니다.
- 지식 증류: 더 작은 학생 모델을 학습시켜 큰 교사 모델을 모방하게 하여 모델을 압축합니다. 반면 PEFT는 기존 모델을 새로운 작업에 맞게 조정합니다.
- 모델 병합: 학습된 가중치나 어댑터를 하나의 모델로 결합합니다. 학습된 LoRA 업데이트를 조정 대상인 고정 가중치 행렬에 더할 수 있으므로, 병합된 모델은 추론 비용을 추가하지 않고 실행됩니다.










