# task-939.1: GPU vs CPU 작업 시 토큰 사용량 비교 분석

- 작업자: 다그다 (dev3-team)
- 작성일: 2026-03-25
- 분석 대상: GTX 1060 6GB GPU 활용 시 비용/성능 비교

---

## SCQA

**S**: InsuWiki 유튜브 파이프라인은 자막 없는 영상에 OpenAI Whisper API($0.006/분)를 사용하며, 서버에 GTX 1060 6GB가 장착되어 있으나 GPU 유휴율이 100%다. task-932.2 벤치마크에서 medium+int8 GPU 설정이 CPU 대비 6.3배 빠름(185초→29초/5분)을 확인했다.

**C**: GPU가 유휴 상태로 방치되고 있어, OpenAI API 비용이 불필요하게 지출되고 있다. 또한 CPU Whisper의 느린 처리가 봇 세션을 지연시켜 LLM 토큰 소모에 간접 영향을 줄 수 있다는 가설이 있다.

**Q**: GPU 활용으로 얼마의 비용을 절감할 수 있으며, GPU/CPU 선택이 LLM 토큰 소모에 실제로 영향을 미치는가?

**A**: 현재 규모(2채널)에서 연간 $23.28 절감으로 금액은 미미하나, 확장(5채널) 시 연간 $97.20 절감 가능. **LLM 토큰은 GPU/CPU 선택과 무관** — Bash 블로킹 대기 중 토큰 소모 0건 실측 확인. GPU의 핵심 가치는 비용보다 **처리 속도**(3.3시간→0.5시간/월)와 **봇 세션 해방**(다른 작업 가용)에 있다.

---

## 1. 직접 비용 비교: 로컬 GPU Whisper vs OpenAI Whisper API

### 단가 비교

- **OpenAI Whisper API**: $0.006/분 (유료, 25MB 파일 크기 제한)
- **로컬 GPU (GTX 1060)**: 전기료만. TDP 120W, 실부하 ~80W → 0.08kW × 시간 × 120원/kWh
- **로컬 CPU (i5-8400)**: 전기료만. TDP 65W

### 월간 InsuWiki 유튜브 크롤링 비용 (추정)

전제 조건 (모두 추정치):
- 2개 채널, 채널당 주 3개 신규 영상 = 월 24개
- 자막 미제공 비율: ~30% → 월 7개 영상
- 평균 영상 길이: 45분
- 월간 총 처리 오디오: 324분 (5.4시간)

| 항목 | OpenAI API | 로컬 GPU | 로컬 CPU |
|:---|:---|:---|:---|
| 월 비용 | $1.94 | 5.1원 (≈$0.004) | 32.0원 (≈$0.02) |
| 연 비용 | $23.33 | 61.2원 (≈$0.04) | 384원 (≈$0.27) |
| 월 처리 시간 | 즉시 (클라우드) | 31.6분 | 200.0분 (3.3시간) |
| 연간 절감액 (vs API) | — | **$23.28** | **$23.06** |

### 확장 시나리오 (추정): 5개 채널, 자막 미제공 50%

| 항목 | OpenAI API | 로컬 GPU | 로컬 CPU |
|:---|:---|:---|:---|
| 월간 오디오 | 1,350분 (22.5시간) | 좌동 | 좌동 |
| 월 비용 | $8.10 | 21.1원 (≈$0.015) | — |
| 연 비용 | $97.20 | 253원 (≈$0.18) | — |
| 월 처리 시간 | 즉시 | 131.6분 (2.2시간) | 833분 (13.9시간) |
| 연간 절감액 | — | **$97.02** | — |

### 판단

현재 규모에서 API 비용 자체는 미미($23/년). **GPU의 진정한 가치는 비용 절감보다 처리 속도(6.3배)와 API 의존성 제거**(25MB 제한, API 키 관리, 네트워크 의존)에 있다. 확장 시에만 비용 절감이 유의미해진다.

---

## 2. 간접 비용 비교: GPU 속도 → LLM 토큰 소모 영향

### 가설

> GPU가 빠르면 → 작업 전체 소요 시간 감소 → 봇 세션 시간 단축 → LLM 토큰 소모 감소?

### 실측 결과: **가설 기각**

JSONL 세션 분석에서 **Bash 블로킹 대기 중 LLM 토큰 소모 = 0**임을 확인했다.

**task-932.1 CPU Whisper 세션 분석 (실측)**:

```
15:23:12  Bash 호출 (python3 transcribe.py)  — usage: out=65, cc=869
    ← 658초 동안 완전 침묵 (LLM API 호출 0건, 토큰 0) →
15:34:10  Bash 결과 반환 (+658s)             — usage: cc=19,996 (캐시 재생성)
```

- Bash tool은 단일 블로킹 호출 — 스크립트 종료까지 Claude는 아무것도 하지 않음
- 658초 대기 = 토큰 0 소모
- progress 로그(4.7MB)는 도구 스트림일 뿐, LLM API 호출이 아님

### 캐시 재생성 비용 (미미한 간접 영향)

- 장시간 블로킹 후 캐시 만료로 `cache_creation` 19,996 토큰 발생 (1회)
- GPU 사용 시(~29초 블로킹) 캐시 만료 가능성이 낮아 이 비용 회피 가능
- 절감 규모: 약 $0.0003/세션 — **실질적으로 무시 가능**

### task-932.1 실제 토큰 사용량 (실측)

| 세션 | input | output | cache_create | cache_read | 합계 |
|:---|---:|---:|---:|---:|---:|
| 메인 오케스트레이터 | 60,012 | 9,485 | 292,963 | 1,911,102 | 2,273,562 |
| subagent-1 (Whisper) | 24 | 1,907 | 85,574 | 243,083 | 330,588 |
| subagent-2 (InsuWiki 분석) | 1,969 | 2,020 | 282,011 | 850,030 | 1,136,030 |
| **전체** | **62,005** | **13,412** | **660,548** | **3,004,215** | **3,740,180** |

- task-timers.json 기록($5.58)은 메인 세션만. subagent 포함 실제: ~$19.95 (추정)
- 토큰 대부분은 Whisper 대기가 아닌 **프롬프트/컨텍스트 처리**에 사용됨

### 결론

**GPU/CPU 선택은 LLM 토큰 비용에 영향 없음.** Bash 블로킹 대기는 토큰 0. GPU의 가치는 토큰 절감이 아닌 **봇 세션 시간 단축**(다른 작업을 더 빨리 처리 가능)에 있다.

---

## 3. 시스템 전체 GPU 활용 현황 분석

### 시스템 사양

- GPU: NVIDIA GeForce GTX 1060 6GB (CC 6.1, CUDA 12.2)
- CPU: Intel i5-8400 @ 2.80GHz (6코어)
- RAM: 16GB DDR4
- GPU 현재 상태: **100% 유휴** (VRAM 2MB/6144MB, 컴퓨팅 프로세스 0)

### GPU 사용 서비스 목록

| 서비스 | GPU 사용 | VRAM (실측) | 현재 상태 | 비고 |
|:---|:---|:---|:---|:---|
| faster-whisper STT | **사용** (medium+int8) | 878 MB | task-932.3에서 서비스 구축 중 | 유일한 실질 GPU 소비자 |
| docling hybrid server | **미사용** (CPU only) | 0 MB | 포트 5002 실행 중 | PyTorch 2.10+cu128 ↔ sm_61 불일치 |
| ODL Java 코어 | 미사용 | 0 MB | CPU 전용 | — |
| 기타 AI 추론 | 없음 | — | — | — |

### GPU 유휴율 분석

- **systemd GPU 서비스**: 0개 등록
- **Docker GPU 컨테이너**: 0개
- **crontab GPU 작업**: 0개
- **현재 GPU 유휴율**: 100%
- **docling GPU 미사용 원인**: PyTorch 2.10+cu128은 sm_70 이상 지원. GTX 1060(sm_61) 미지원

### VRAM 사용량 패턴

| 모델 설정 | VRAM | 6144MB 대비 | 동시 실행 여유 |
|:---|---:|:---|:---|
| medium+int8 (권장) | 878 MB | 14.3% | 5,264 MB 여유 |
| small+int8 (속도 우선) | 366 MB | 6.0% | 5,776 MB 여유 |
| large-v2+int8 (품질 최고) | 2,510 MB | 40.9% | 3,632 MB 여유 |
| large-v2+int8_float32 | 6,020 MB | 98.0% | **위험** (122 MB 여유) |

---

## 4. 비용 최적화 권장안

### 4.1 GPU 상시 활용 vs 필요 시 활용

**권장: 필요 시 활용 (on-demand)**

- 현재 Whisper 처리량이 월 324분(5.4시간)으로 적음
- GPU 유휴 시간이 99%+ — 상시 모델 로딩 불필요
- faster-whisper 모델 로드: ~2초 (medium+int8, 캐시 후)
- HTTP 서비스(task-932.3)가 요청 시 로드하는 방식이 최적

### 4.2 GPU 작업 스케줄링 권장

| 우선순위 | 서비스 | VRAM | 동시 실행 가능 |
|:---|:---|---:|:---|
| 1 (최우선) | faster-whisper medium+int8 | 878 MB | docling과 비경합 (docling은 CPU) |
| 2 | 향후 AI 추론 서비스 | TBD | VRAM 5,264MB 여유 내에서 |
| 3 | large-v2 (특수용) | 2,510 MB | 다른 GPU 서비스 없을 때만 |

- 경합 상황 없음: docling이 GPU를 사용하지 못하므로, faster-whisper가 GPU를 독점 사용
- 향후 docling GPU 활성화 시: PyTorch를 sm_61 지원 버전(2.5 이하 등)으로 다운그레이드 검토 필요

### 4.3 VRAM 예산 분배 가이드 (6GB = 6,144MB)

| 용도 | 할당 | 비고 |
|:---|---:|:---|
| 시스템 디스플레이 | 2 MB | 고정 |
| faster-whisper (상시 예약) | 900 MB | medium+int8 기준 |
| 향후 확장 예약 | 3,000 MB | AI 추론, 다른 모델 등 |
| 안전 버퍼 | 2,242 MB | OOM 방지 |

### 4.4 실행 권장 사항

1. **즉시**: task-932.3 Whisper GPU 서비스 완료 후, InsuWiki 파이프라인에서 OpenAI API → 로컬 GPU 전환
2. **단기**: InsuWiki 크롤링 시 자동생성 자막 우선 시도 → 없을 때만 Whisper 호출 (task-932.1 제안사항)
3. **중기**: 채널 확장(5개+) 시 비용 절감 효과가 $97/년으로 커짐
4. **검토 필요**: docling GPU 활성화 여부 — PyTorch 버전 다운그레이드 vs CPU 유지 판단

---

## 발견 이슈 및 해결

### 자체 해결 (3건)

1. **task-timers.json 토큰 데이터가 메인 세션만 집계** — JSONL 세션 분석으로 subagent 포함 실제 토큰 확인 (2,273,562 → 3,740,180). 보고서에 양쪽 수치 모두 기재
2. **docling GPU 미사용 원인 불명확** — PyTorch 2.10+cu128이 sm_61(GTX 1060) 미지원임을 확인. CTranslate2(faster-whisper 엔진)는 독립적으로 CUDA 지원하여 정상 작동
3. **전기료 계산 기준 불확실** — 한국 산업용 전기 120원/kWh 기준 적용, 추정치임을 명시

### 범위 외 미해결 (1건)

1. **task-timers.json이 subagent 토큰을 미집계** — 범위 외 사유: task-938.1(토큰 추적 시스템) 범위. 해당 작업에서 subagent 토큰 합산 로직 추가 필요

---

## 셀프 QC 체크리스트

- [x] 1. 다른 파일 영향: 없음 (분석/보고서 작업, 코드 수정 없음)
- [x] 2. 엣지 케이스: 추정치에 모두 "추정" 표시 완료, 규모 확장 시나리오 포함
- [x] 3. 작업 지시 일치: 4개 분석 범위(직접 비용, 간접 비용, GPU 현황, 최적화 권장) 모두 수행
- [x] 4. 에러 처리/보안: API 키 미노출, 보안 관련 없음
- [x] 5. 테스트 커버리지: 코딩 작업 아님, 데이터 분석 결과로 검증
- [x] 6. 발견 이슈 처리: 3건 자체 해결, 1건 범위 외 명시

---

## 핵심 수치 요약

| 항목 | 값 | 출처 |
|:---|:---|:---|
| GPU 속도 향상 | CPU 대비 6.3배 (medium+int8) | 실측 (task-932.2) |
| GPU VRAM 사용 | 878 MB / 6,144 MB (14.3%) | 실측 |
| OpenAI API 비용 | $1.94/월 ($23.33/연) | 추정 (2채널, 자막 미제공 30%) |
| 로컬 GPU 비용 | 5.1원/월 (≈$0.004) | 추정 (전기료) |
| 연간 절감액 (현재) | $23.28 | 추정 |
| 연간 절감액 (5채널) | $97.02 | 추정 |
| GPU→토큰 영향 | **없음** (Bash 블로킹 = 토큰 0) | 실측 (JSONL 분석) |
| GPU 현재 유휴율 | 100% | 실측 (nvidia-smi) |
| CPU Whisper 대기 중 토큰 | 0 (658초 대기, API 호출 0건) | 실측 |
| 월간 처리 시간 절감 | 200분 → 31.6분 (GPU vs CPU) | 추정 |
