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.jsonimages/를 두는 구조로 확정한다. 예: 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를 사용한다.