본문 바로가기

Capstone

[ Meeting ] 5월 1주차 - Baseline 측정(PyTorch FP32)

실험 순서 

  1. Baseline (Image+Text 모두 FP32)
  2. 이미지 인코더만 INT8 양자화
  3. 텍스트 인코더만 INT8 양자화
  4. 둘 다 INT8

1: Baseline 측정 (Image + Text 인코더 모두 FP32)

  • 이미지 인코더와 텍스트 인코더 모두 FP32 상태에서,
  • 이미지 ⟶ image encoder ⟶ image feature
  • 텍스트 ⟶ text encoder ⟶ text feature
  • 두 feature 간 cosine similarity or matching score 측정

dataset_ms_split_1.pkl과 dataset_ms_split_2.pkl은 각각 전체 데이터셋의 “절반씩 분할된 버전”

“split 1 + split 2 = 전체 MSP60K” 

 

원하는 흐름

  1. dataset_ms_split_1.pkldataset_ms_split_2.pkl 모두 불러옴
  2. 각 pkl에서 trainvaltest 인덱스 가져옴
  3. 모든 인덱스 합쳐서 중복 제거
  4. 해당 인덱스로부터 image_name 추출
  5. 기존 코드대로 CLIP 모델로 이미지 인퍼런스 수행

 

원본 이미지 크기가 커서(총 1GB 정도) 제공해준 degrade image 버전으로 진행했다.(총 650MB 정도)

 

Baseline Model(CLIP)

TinyClip

MobileClip

 

 

 

  • TinyCLIP이 압도적으로 가장 낮은 latency 가장 높은 throughput 보여줌. 총 inference 시간도 짧은 편
  • CLIP은 latency는 중간이고 throughput도 높지만 총 시간은 제일 길었음
  • MobileCLIP은 latency 가장 높고 throughput은 낮음

 

degrade image로 진행 

- 앞으로 모든 실험 (quantization 포함) 동일 조건 유지할 것

- 논문에 사실 명시할 것

 

 1. 일관성 유지

앞으로 할 모든 실험 (4bit 양자화, dual encoder quant 등등)도 baseline과 동일한 입력 이미지로 진행해야 공정한 비교 가능

 

 2. degrade = 실제 Edge 환경 모사

실제 Edge 디바이스에서는 해상도 낮거나/ 압축 이미지나/ 라이트한 입력 처리가 기본값

 

3. 속도, 메모리, GPU 효율 측면에서 이득

원본 1GB vs degrade 650MB -> 모델 인퍼런스 뿐만 아니라 전처리 속도 + I/O 비용 줄어듦

 


 

현 상태

  • dataset_ms_split_1 + 2 → 인덱스 중복 제거해 통합(전체 60,122장 실험)
  • CLIP model & processor → openai/clip-vit-base-patch32 사용
  • GPU에서 인퍼런스 시간 측정
  • feature 저장, latency 로그 저장

 

진행 예정

  1. Image encoder 양자화 (4bit or INT8)
    • 일단 PyTorch native quantization으로 시작
    • 가능하면 bitsandbytes, torch.ao.quantization, nncf도 고려
  2. 양자화된 encoder로 위와 동일한 인퍼런스 반복
    • clip_image_features_quant.pt, latency_log_quant.txt 저장
  3. 정확도 체크 (mAP, F1, Recall 등)
    • 향후 비교용으로 baseline vs quant 성능 대비

 

 


Tiny Star