모델 선택 의사결정 가이드
상용 API vs 오픈소스 자체 호스팅 선택을 위한 실무 가이드.
개요
LLM 도입 시 가장 먼저 결정해야 할 것은 상용 API를 쓸지, 직접 모델을 호스팅할지다. 이 결정은 비용, 성능, 보안, 운영 복잡도에 모두 영향을 미친다.
핵심 의사결정 트리
데이터 외부 전송 가능?
├─ No → 자체 호스팅 (On-premise/Private Cloud)
└─ Yes
└─ 월 API 비용 예상?
├─ <$500 → 상용 API
├─ $500-$5,000 → 상황별 판단
└─ >$5,000 → 자체 호스팅 검토
상용 API
주요 제공자 비교 (2026년 2월 기준)
| 제공자 |
대표 모델 |
입력 ($/1M tokens) |
출력 ($/1M tokens) |
강점 |
| OpenAI |
GPT-4o |
$2.50 |
$10.00 |
범용 성능, 에코시스템 |
| OpenAI |
o3-mini |
$1.10 |
$4.40 |
추론 특화 |
| Anthropic |
Claude 3.5 Sonnet |
$3.00 |
$15.00 |
긴 컨텍스트, 안전성 |
| Google |
Gemini 1.5 Pro |
$1.25 |
$5.00 |
멀티모달, 긴 컨텍스트 |
| Mistral |
Mistral Large |
$2.00 |
$6.00 |
유럽 데이터 규정 |
적합한 상황
- MVP/프로토타입 개발
- 트래픽 예측 어려움
- ML 엔지니어 부재
- 빠른 시장 진입 필요
- 요구사항 자주 변경
비용 계산 예시
시나리오: 고객 지원 챗봇
- 일일 대화: 1,000건
- 평균 입력: 500 토큰
- 평균 출력: 300 토큰
GPT-4o 기준:
- 입력: 1,000 × 500 × 30일 = 15M tokens → $37.50
- 출력: 1,000 × 300 × 30일 = 9M tokens → $90.00
- 월 총액: $127.50
장단점
| 장점 |
단점 |
| 즉시 사용 가능 |
데이터 외부 전송 |
| 운영 부담 없음 |
비용 예측 어려움 |
| 최신 모델 자동 적용 |
Rate limit 제약 |
| 확장성 무제한 |
커스터마이징 제한 |
자체 호스팅
오픈소스 모델 비교
| 모델 |
파라미터 |
VRAM 요구 |
성능 (MMLU) |
라이선스 |
| Llama 3.1 |
8B/70B/405B |
16GB/140GB/800GB |
69/83/89 |
Llama 3.1 License |
| Mistral |
7B/8x7B |
16GB/100GB |
63/71 |
Apache 2.0 |
| Qwen 2.5 |
7B/72B |
16GB/150GB |
74/86 |
Qwen License |
| DeepSeek V3 |
671B (MoE) |
80GB (활성 37B) |
88 |
DeepSeek License |
인프라 옵션
Option 1: 클라우드 GPU
# AWS 기준
g5.xlarge (A10G 24GB):
- 시간당: $1.01
- 적합 모델: 7B-13B (양자화)
g5.48xlarge (A10G 192GB):
- 시간당: $16.29
- 적합 모델: 70B
p5.48xlarge (H100 640GB):
- 시간당: $98.32
- 적합 모델: 405B+
Option 2: On-premise
# 구성 예시
Entry Level:
- GPU: RTX 4090 24GB × 2
- 비용: ~$4,000
- 적합: 7B-13B
Production:
- GPU: H100 SXM5 80GB × 4
- 비용: ~$120,000
- 적합: 70B-405B
서빙 스택
| 스택 |
지연시간 |
처리량 |
난이도 |
| vLLM |
최저 |
최고 |
중간 |
| TGI (HuggingFace) |
낮음 |
높음 |
낮음 |
| TensorRT-LLM |
매우 낮음 |
매우 높음 |
높음 |
| Ollama |
중간 |
낮음 |
매우 낮음 |
적합한 상황
- 민감한 데이터 처리
- 높은 트래픽 (월 $5,000+ API 비용 예상)
- Fine-tuning 필요
- 특정 SLA 요구 (지연시간 보장)
- 규제 준수 (데이터 주권)
비용 계산 예시
시나리오: 동일한 고객 지원 챗봇
vLLM + Llama 3.1 70B on AWS g5.48xlarge:
- 처리량: ~50 req/sec
- 시간당 비용: $16.29
- 월 비용 (24/7): $11,889
vs API 비용 스케일링:
- 1,000 대화/일 → $127.50/월 (API 유리)
- 10,000 대화/일 → $1,275/월 (API 유리)
- 50,000 대화/일 → $6,375/월 (자체 호스팅 검토)
- 100,000 대화/일 → $12,750/월 (자체 호스팅 유리)
하이브리드 전략
라우팅 기반
def route_request(query, complexity):
if complexity == "simple":
# 간단한 쿼리 → 작은 자체 호스팅 모델
return local_llm_7b.generate(query)
elif requires_reasoning(query):
# 복잡한 추론 → 상용 API
return openai_o3.generate(query)
else:
# 일반 쿼리 → 중간 자체 호스팅 모델
return local_llm_70b.generate(query)
Fallback 패턴
async def generate_with_fallback(prompt):
try:
# 1차: 자체 호스팅 (비용 절감)
return await local_llm.generate(prompt, timeout=5)
except (TimeoutError, ServiceUnavailable):
# 2차: 상용 API (안정성)
return await openai_api.generate(prompt)
의사결정 체크리스트
보안/규정
- [ ] 데이터가 외부로 나가도 되는가?
- [ ] 특정 지역 데이터 저장 요구사항이 있는가?
- [ ] 감사 로그가 필요한가?
비용
- [ ] 예상 월간 토큰 사용량은?
- [ ] GPU 인프라 운영 인력이 있는가?
- [ ] 초기 투자 vs 운영비 선호는?
기술
- [ ] Fine-tuning이 필요한가?
- [ ] 지연시간 SLA가 있는가?
- [ ] 모델 업데이트 주기 요구사항은?
운영
- [ ] 24/7 운영이 가능한가?
- [ ] 장애 대응 프로세스가 있는가?
- [ ] 모니터링/알림 시스템이 있는가?
마이그레이션 전략
API → 자체 호스팅
Phase 1: 섀도우 테스트
- 동일 쿼리를 양쪽에 전송
- 품질/지연시간 비교
Phase 2: 점진적 전환
- 10% → 30% → 50% → 100%
- 롤백 기준 명확화
Phase 3: 최적화
- 프롬프트 조정 (모델별 최적화)
- 캐싱 전략 수립
자체 호스팅 → API
대부분 간단함:
1. API 클라이언트 구현
2. 프롬프트 형식 조정
3. 에러 핸들링 추가
요약 매트릭스
| 기준 |
상용 API |
자체 호스팅 |
| 초기 비용 |
없음 |
높음 |
| 운영 비용 (저트래픽) |
낮음 |
높음 |
| 운영 비용 (고트래픽) |
높음 |
중간 |
| 데이터 보안 |
제한적 |
완전 통제 |
| 커스터마이징 |
제한적 |
무제한 |
| 운영 복잡도 |
없음 |
높음 |
| 확장성 |
무제한 |
인프라 의존 |
| 지연시간 |
네트워크 의존 |
통제 가능 |