On-device Feasibility
MobileCLIP2-S4 artifact 벤치마크
Sprint 1에서 만든 FP32 ONNX, dynamic INT8 ONNX, AI Hub w8a16 NPU 측정 결과를 한 문서로 압축한다. 핵심은 “팀원 실행 모델”과 “NPU latency evidence”를 구분하는 것이다.
최종 해석
팀원 실행과 시연 기본값은 dynamic INT8 ONNX다. 이 artifact는 PC ONNX Runtime 회귀에서 FP32와 거의 같은 embedding을 냈고, PyTorch checkpoint를 다시 로드하지 않아 Windows paging file 오류를 피한다.
AI Hub w8a16은 Snapdragon NPU에 1014/1014 layer가 탑재되고 latency가 측정됐다는 근거로만 사용한다. 정확도는 calibration 15장과 260장 모두에서 붕괴했으므로 Sprint 1 시연 모델로 쓰지 않는다.
Artifact 비교
| 경로 | 크기 | 정확도/동치성 | 실행 의미 |
|---|---|---|---|
mobile_artifacts/ FP32 ONNX |
약 1.23GB | PyTorch 대비 Top-3 parity 확인. | 원본 ONNX 기준선. 용량과 메모리 부담 큼. |
mobile_artifacts_int8/ dynamic INT8 |
약 983MB | top-1 agreement 100%, embedding cosine mean 0.99941. | 팀원 실행/시연 기본값. |
mobile_artifacts_int8_qdq/ static QDQ |
약 316MB 계열 | mode collapse 확인. | 실패 실험으로 보존. 배포 금지. |
| AI Hub w8a16 | AI Hub 내부 산출물 | cos 약 0.08, top-1 13.3% 수준으로 붕괴. | NPU latency evidence로만 사용. |
| AI Hub FP32 | AI Hub 내부 산출물 | cos 0.9995. | 그래프 변환 자체는 무손실임을 증명. |
NPU latency 측정
| 디바이스 | SoC | warm latency | NPU layer |
|---|---|---|---|
| Samsung Galaxy S23 Family | Snapdragon 8 Gen 2 | 517.91 ms | 1014 / 1014 |
| Samsung Galaxy S24 Family | Snapdragon 8 Gen 3 | 389.67 ms | 1014 / 1014 |
| Snapdragon 8 Elite QRD | Snapdragon 8 Elite | 374.10 ms | 1014 / 1014 |
위 수치는 QAIRT 2.45, Hexagon v73, qnn_context_binary, compute_unit=npu 기준이다.
정확도 모델이 아니라 NPU feasibility 근거로 해석한다.
팀원에게 전달할 파일
mobile_artifacts_int8/
landmark_encoder.onnx
landmark_encoder.onnx.data
preprocessing.json
prototype_index.json
labels_master.json
manifest.json
quantization_regression_report.json
이 폴더는 GitHub에 올리지 않는다. 압축해서 별도 전달한다.
데모 앱은 config.int8.toml과 python run.py --int8로 이 폴더를 읽는다.
발표 문구 주의
“NPU에서 374-518ms로 돌아갔다”와 “그 모델이 정확했다”는 같은 말이 아니다. Sprint 1 발표에서는 정확한 데모는 dynamic INT8 ONNX/PC 경로, 스마트폰 NPU 가능성은 AI Hub latency 실측으로 분리해서 말한다.