Deep Interview Round 4
작성일: 2026-05-13 · 주제: 앱 연동 포맷, 사용자 표시 점수, out-of-scope 로그
핵심 결론
Sprint 1 앱 연동은 단순한 JSON artifact와 JSON output을 기준으로 한다. 모델팀은 Python inference wrapper를 먼저 만들고, Flutter 앱은 이후 같은 ONNX 모델과 동일한 preprocessing spec을 사용한다. 사용자에게는 점수를 percentage로 보여주며, 범위 외 입력의 Top-3 후보는 화면에 표시하지 않고 debug log에만 남긴다.
Interview Notes
| 질문 영역 | 결정 | 설계 반영 |
|---|---|---|
| 앱 연동 파일 | 복잡한 SQLite보다 JSON으로 시작. | prototype_index.json, labels_master.json, inference output JSON을 표준으로 둔다. |
| Inference wrapper | Python 기준으로 먼저 만들고, 이후 Flutter ONNX 직접 호출로 확장. | Python local demo를 reference implementation으로 삼는다. |
| 점수 표시 | 일반 여행객이 보기 편하게 percentage로 변환. | 앱 output에는 confidence_percent를 포함한다. raw score는 debug field에만 둔다. |
| 범위 외 처리 | Top-3 후보를 화면에는 보여주지 않고 로그로 남긴다. | status=out_of_scope일 때 UI는 안내 문구만 표시하고, 후보/score는 debug log에 저장한다. |
| Artifact 이름 | landmark_encoder.onnx, preprocessing.json, prototype_index.json, labels_master.json 확정. |
Sprint 1 model handoff package 이름으로 고정한다. |
Dataset Upload Layout
서버 업로드는 Datasets 폴더 아래에 각 랜드마크별 폴더를 만들고,
그 안에 labels.json과 images/를 두는 구조로 확정한다.
예: Datasets/cheongwadae/labels.json, Datasets/cheongwadae/images/....
병합 스크립트는 각 폴더명을 canonical landmark_id로 사용한다.
Training Server Update
학습 서버는 Ubuntu 20.04 LTS, 8 × NVIDIA Tesla P100 PCIe 16GB, 128GB RAM, CUDA 12.2로 확인되었다. 따라서 학습 기본값은 8-GPU DDP이며, BF16이 아니라 FP32 smoke 후 FP16 AMP를 사용한다.