이미지 처리 모델 성능 테스트(CLIP, RAM) - 100-hours-a-week/5-yeosa-wiki GitHub Wiki

테스트 설계

🧪 이미지 태깅 성능 비교 테스트 설계 요약

📌 목적

  • CLIPRAM++ 모델의 실제 이미지 태깅 성능을 비교하여,
  • 모델 종류와 디바이스(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) 기준 비교

토탈1

기준 요점
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) 기준 비교

토탈2

기준 요점
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 메모리 사용량 기준 비교

토탈3

기준 요점
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) 기준 비교

토탉4

기준 요점
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 환경에서 적합