Adapter는 "기존 대규모 언어 모델(LLM)을 모두 수정하지 않고도, 중간에 작고 가벼운 네트워크를 덧붙여서 파인튜닝하는 방식"입니다.
즉, 원래 모델은 그대로 두고, 작은 덧붙임 모듈만 학습해서 모델을 바꾸는 방식이에요.
🎒 비유: 새로운 옷을 전부 갈아입는 대신, 기존 옷 위에 얇은 조끼(조정기)를 덧입는 것입니다.
🧠 Adapter가 필요한 이유
| 기존방식 | 문제점 |
| Full Fine-Tuning | 모델 전체 학습 → 비용 비쌈, 메모리 큼 |
| Adapter | 전체 모델 유지 + 일부만 훈련 → 효율적, 빠름 |
LLM을 수백 개, 다양한 목적에 맞게 쓰려면 매번 전체 학습은 너무 무거워요.
→ Adapter 방식으로 효율적인 다목적 튜닝이 가능해집니다.
🔧 Adapter의 구조와 작동 방식
Transformer 블록 내부에 **작은 추가 계층(레이어)**을 삽입합니다:
[Input] → [Transformer Layer]
↓
[Adapter Module]
↓
[출력값 보정]
Adapter는 보통 다음 구조를 가집니다:
Linear ↓ (줄이기: down-projection)
ReLU
Linear ↑ (늘리기: up-projection)
- 입력 벡터의 차원을 잠깐 줄였다가 다시 늘리면서,
- 그 사이에서 도메인 특화 정보를 학습합니다.
- 전체 파라미터 중 극히 일부만 훈련 대상이 됩니다.
🧠 작동 방식 비교 (비유로 설명)
🧪 Adapter 비유
“기존 Transformer 사이에 **보조 장치(컨버터 박스)**를 끼워 넣는 느낌”
- 원래 길을 그대로 두고,
- 중간에 짧게 우회로를 만들어, 그 길에서만 학습을 수행
⚙️ LoRA 비유
“기존 가중치 행렬 옆에 작은 벡터(조정기)를 덧붙여 살짝 방향만 틀어주는 방식”
- 기존 가중치는 그대로 두고,
- 작은 방향 조정 행렬을 덧붙여 응답 스타일이나 도메인 특성을 보정
✅ Adapter의 특징 요약
| 항목 | 설명 |
| 🧠 기존 모델 유지 | 원래 모델 파라미터는 수정하지 않음 (freeze) |
| 📦 추가 모듈만 학습 | Adapter Layer만 업데이트 |
| 💾 경량화 | 파라미터 수 매우 적음 (1% 미만 가능) |
| 🔁 유연성 | 다양한 Task마다 adapter만 교체 가능 |
💡 예시
예: GPT 모델을 의료 상담용으로 튜닝하고 싶을 때
- 원래 GPT는 그대로 둔 채,
- “의료 도메인 정보”만 반영하는 Adapter Layer를 삽입
- 결과:
- ✅ 원래 문법/문장력 유지
- ✅ 의료 용어/문장 스타일 반영
🔁 Adapter vs LoRA vs Full Fine-Tuning
| 구분 | Adapter | LoRA |
| 🎯 개념 | Transformer 블록 사이에 추가 모듈(layer) 삽입 | 기존 가중치에 저랭크 행렬을 덧붙여 보정 |
| 🏗 삽입 위치 | Transformer의 각 층 중간에 새 레이어 삽입 | 기존 가중치(W)의 곱셈 연산 위치에 직접 연결 |
| 🎯 학습 대상 | 추가된 Adapter Layer만 학습 | 새로 추가된 A, B 행렬만 학습 |
| 💾 메모리 효율 | 높음 (1~5% 파라미터) | 더 높음 (0.1~2% 파라미터) |
| 🔄 기본 모델 수정 | ❌ 기존 가중치는 고정 | ❌ 기존 가중치는 고정 |
| ⚡ 성능/효율 균형 | 비교적 일반적 성능 향상 | 고속·고효율에서 강점 |
| 💼 도입 난이도 | 상대적으로 간단 | Hugging Face 기반 시 사용 용이 |
| 항목 | Full FT | Adapter | LoRA |
| 수정 대상 | 전체 파라미터 | Adapter 모듈 | 저랭크 보정 행렬 |
| 메모리 | ❌ 매우 큼 | ✅ 적음 | ✅ 매우 적음 |
| 성능 | ✅ 최고 | ✅ 높음 | ✅ 높음 |
| 유연성 | ❌ 낮음 | ✅ 높음 | ✅ 높음 |
| 훈련 파라미터 수 | 100% | ~1–5% | 0.1–2% |
📊 기술적 구조 요약
| 항목 | Adapter | LoRA |
| 수식 형태 | 추가 레이어: x → down → ReLU → up → output | 가중치 수정: W → W + A·B |
| 메모리 | 높음 (~5%) | 매우 낮음 (~0.1%) |
| 병렬성 | 높음 | 높음 |
| LoRA보다 유연한가? | ✅ 다양한 구조 설계 가능 | ❌ 구조 고정적 |
| 프레임워크 | AdapterHub, Transformers | Hugging Face PEFT, QLoRA 등 |
🧩 언제 어댑터를 쓰면 좋을까?
- 💼 기업별/부서별로 다양한 특화 모델이 필요한 경우
- 💾 모델 저장 공간이 부족하거나, GPU 리소스가 제한적일 때
- 🔁 하나의 LLM에 다양한 Adapter 모듈만 갈아 끼워서 사용하고 싶을 때
실제 사용 선택 기준
| 상황 | 추천방식 |
| 파인튜닝 효율성과 경량화가 중요할 때 | ✅ LoRA |
| 여러 작업을 동시에 지원하고 싶을 때 | ✅ Adapter |
| GPU 메모리 매우 부족한 경우 | ✅ LoRA |
| 다양한 모듈을 독립적으로 실험하고 조합하고 싶을 때 | ✅ Adapter |
🧠 Adapter 정리 요약
| 항목 | 설명 |
| 무엇인가요? | 기존 모델은 그대로 두고, 중간에 조정 모듈을 삽입하여 학습하는 방식 |
| 어떤 상황에 유리한가요? | 빠르고 경량화된 튜닝, 다목적 확장, 비용 절감 |
| 장점은? | 메모리/속도 효율, 파라미터 절감, 멀티태스킹 유연성 |
| 대표 활용 | Hugging Face AdapterHub, LLM 튜닝, 개인화 AI |
'인공지능' 카테고리의 다른 글
| 멀티모달 모델 (0) | 2025.05.26 |
|---|---|
| MCP(Model Context Protocol)란? (0) | 2025.05.26 |
| PEFT란? Parameter-Efficient Fine-Tuning (0) | 2025.05.26 |
| LLM Fine-Tuning이란? (0) | 2025.05.26 |
| 🔍 RAG란? (0) | 2025.05.26 |