이미지 처리 모델 성능 테스트(CLIP, RAM) - 100-hours-a-week/5-yeosa-wiki GitHub Wiki
테스트 설계
🧪 이미지 태깅 성능 비교 테스트 설계 요약
📌 목적
- CLIP과 RAM++ 모델의 실제 이미지 태깅 성능을 비교하여,
- 모델 종류와 디바이스(CPU vs GPU), 배치 전략(batch size)에 따른 속도와 자원 사용 효율성을 평가
📁 테스트 조건
항목 | 내용 |
---|---|
데이터 | 이미지 100장 (고정 샘플) |
태깅 대상 모델 | CLIP (ViT-B/32) vs RAM++ (Swin-L 기반) |
디바이스 환경 | CPU , T4 GPU (CUDA) |
배치 전략 | 배치 크기 1 , 16 , 32 |
🧮 측정 항목 (metrics)
아래 항목들을 시나리오별로 측정하여 비교:
항목 | 설명 |
---|---|
total_time |
전체 100장의 태깅에 걸린 총 시간 (초) |
avg_time_per_image |
이미지 1장당 평균 처리 시간 (초) |
gpu_memory_mb |
GPU 메모리 사용량 (MB) |
ram_usage_mb |
시스템 메모리 사용량 (MB) |
cpu_time_used |
CPU 사용 시간 (초) |
cpu_percent_avg |
평균 CPU 사용률 (%) |
🧪 실험 구조
-
총 12개 조합 테스트 진행:
(2 모델) × (2 디바이스) × (3 배치 크기)
→ 예:
clip_cpu_100_single
,ram_gpu_100_batch_32
등 -
모든 테스트는 같은 100장 이미지에 대해 수행됨
테스트 결과
📊 CLIP vs RAM++ (임베딩 + 태깅) 성능 테스트 결과 (100장 기준)
모델 | 디바이스 | 배치 | 총 처리 시간 (s) | 평균 시간/장 (s) | GPU 메모리 (MB) | CPU 사용률 (%) |
---|---|---|---|---|---|---|
CLIP | CPU | 1 | 8.49 | 0.085 | 0 | 400.48 ✅ |
CPU | 16 | 4.28 | 0.043 | 0 | 399.87 ✅ | |
CPU | 32 | 3.53 ✅ | 0.035 ✅ | 0 | 399.57 ✅ | |
GPU (T4) | 1 | 1.96 | 0.020 | 357.4 | 385.85 | |
GPU | 16 | 1.01 | 0.010 | 385.8 | 383.26 | |
GPU | 32 | 1.00 | 0.010 | 416.7 | 375.37 | |
RAM++ | CPU | 1 | 166.12 | 1.661 | 0 | 392.64 ❗ |
CPU | 16 | 176.74 | 1.767 | 0 | 384.94 ❗ | |
CPU | 32 | 186.91 | 1.869 | 0 | 378.68 ❗ | |
GPU (T4) | 1 | 13.50 | 0.135 | 1902.2 | 146.18 | |
GPU | 16 | 12.43 | 0.124 | 4335.3 | 133.17 | |
GPU | 32 | 12.69 | 0.127 | 6931.3 ❗ | 132.09 |
✅ 1. 총 시간 (Total Time) 기준 비교
기준 | 요점 |
---|---|
CLIP | - GPU (Batch 32): 1.00초 ⏱️ (가장 빠름)- CPU (Batch 32): 3.53초, RAM++ 대비 약 53배 빠름 |
RAM++ | - GPU (Batch 32): 12.69초, CLIP보다 약 13배 느림- CPU (Batch 32): 186.91초, 절대적으로 느림 |
⏱️ CLIP은 CPU와 GPU 모두에서 RAM++보다 빠르며, 특히 GPU 환경에서는 극적인 속도 차이를 보임
✅ 2. 1장당 평균 시간 (Avg Time/Image) 기준 비교
기준 | 요점 |
---|---|
CLIP | - GPU (Batch 32): 0.010초 ✅- CPU (Batch 32): 0.035초, 여전히 빠름 |
RAM++ | - GPU (Batch 32): 0.127초, CLIP보다 12배 느림- CPU (Batch 32): 1.869초, 53배 느림 |
📷 CLIP은 실시간 서비스에도 적합한 처리 속도를 제공, 반면 RAM++는 GPU 사용 시에도 부담 존재
✅ 3. GPU 메모리 사용량 기준 비교
기준 | 요점 |
---|---|
CLIP | - GPU (Batch 32): 416 MB- 전체적으로 매우 가볍고 효율적 |
RAM++ | - GPU (Batch 32): 6,931 MB ❗- Swin-L 백본 구조로 인해 CLIP 대비 약 17배 높음 |
💾 CLIP은 저사양 GPU 환경에서도 가능, 반면 RAM++는 A100 이상급 고사양 GPU 요구
✅ 4. CPU 사용률 (CPU Utilization) 기준 비교
기준 | 요점 |
---|---|
CLIP | - 대부분 환경에서 375~400%, 즉 4코어 풀로드- 짧은 시간 내 고효율 부하 |
RAM++ | - CPU 환경: 평균 380~392%, 처리 시간 길어 지속적인 부하 발생- GPU 환경: 평균 132%, 멀티코어 활용 낮음 |
🧠 CLIP은 병렬화와 효율적 실행이 뛰어나고, RAM++는 긴 처리 시간으로 CPU 장시간 점유
🧠 분석 요점
⏱️ 총 시간 & 평균 시간
- ✅ CLIP은 GPU뿐 아니라 CPU에서도 매우 빠름 (배치 32 기준 3.53초, 0.035초/장)
- ❗ RAM++는 CPU 환경에서 100장 처리에 2~3분 소요 → 실시간 사용 불가
💾 GPU 메모리 사용
- ✅ CLIP은 GPU에서도 400MB 미만 사용
- ❗ RAM++는 Swin-L 백본으로 인해 최대 6.9GB 사용 → 고성능 GPU 필수
🧠 CPU 부하
- CLIP은 짧은 시간 고부하 (멀티코어 병렬 태깅에 적합)
- RAM++는 오랜 시간 고부하 유지, 서버 리소스 점유 지속
✅ 결론
-
CLIP은 CPU 기반 서버에서도 충분히 빠른 응답 시간으로 서비스 가능
→ GPU 없이도 태깅 서비스 운영 가능, 저비용 환경에 최적
-
RAM++는 정확도는 우수하나, 실시간 태깅에는 GPU 필수
→ 오프라인 대량 분석 또는 강력한 GPU 환경에서 적합