자세 분석 에이전트의 판정 모델을 결정하고, 그 내용을 서비스 제안 3)·4)절과 시스템 설계 3)·4)절에 반영했다.
결정한 사항
측정과 판단을 분리한다. 영상을 언어 모델에 직접 넣어 점수를 매기게 하지 않는다. 관절 각도 같은 수치는 포즈 추정 코드가 산출하고, 언어 모델은 그 수치를 채점 기준과 대조해 등급만 판정한다. 총점 계산은 애플리케이션 코드가 한다. 부록 D의 ERD가 이미 analysis_metric_value(측정값)와 analysis_report(LLM 생성물)를 별도 테이블로 분리해 둔 구조와 일치한다.
판정 모델은 EXAONE 3.5 7.8B Instruct (GGUF Q4_K_M)로 한다. 개발 GPU가 RTX 3050 8GB라 선택지가 좁았다. EXAONE 4.5(33B)·4.0(32B)·3.5(32B)는 4비트 양자화로도 19GB 안팎이라 적재 불가다. 7.8B Q4_K_M이 약 4.7GB로, 8K 컨텍스트 KV 캐시를 더해 6GB 내외에 들어오는 최대 규모다.
비전 모델은 쓰지 않는다. EXAONE 계열의 비전-언어 모델은 4.5의 33B뿐이라 8GB에 올릴 수 없다. 에이전트는 키프레임 이미지를 보지 못하고 수치만으로 판정한다. 그만큼 포즈 파이프라인이 뽑는 특징 항목의 범위가 중요해졌고, 시선·표정처럼 수치화할 수 없는 항목은 루브릭에서 제외하기로 했다.
추론 특화 모델(EXAONE Deep)은 제외했다. 추론 토큰 생성으로 지연이 크고, 출력 스키마를 문법으로 강제하는 방식과 충돌한다.
논의 과정에서 뒤집힌 판단
처음에는 상용 API 모델을 전제로 설계했고, 그때는 “파인튜닝하지 말고 루브릭과 RAG로 해결하라”가 결론이었다. 오픈 웨이트 모델로 방향을 바꾸면서 이 부분이 달라졌다. 골든셋이 200건 이상 쌓이면 LoRA 미세조정이 유효한 선택지가 된다. 다만 순서는 지킨다 — 루브릭 정교화 → 앵커 예시 → 모델 상향 → 미세조정. 앞 단계를 건너뛰면 무엇이 효과를 냈는지 알 수 없다.
샘플링 파라미터 취급도 반대가 됐다. 상용 API에서는 temperature를 아예 넣지 않는 것이 맞았지만, 자체 서빙에서는 기본값이 0.7이라 명시적으로 0.0으로 지정하지 않으면 같은 영상에서 점수가 요동친다.
확인이 필요한 사항
EXAONE은 EXAONE AI Model License Agreement 1.2 - NC로 배포되며, 상업적 이용에는 별도 계약이 필요하다. 수익 모델을 전제한 서비스이므로 착수 전에 확인해야 한다. 미결 항목 1번으로 등록했다.
다행히 모델을 교체하더라도 루브릭·출력 스키마·파이프라인은 그대로 재사용된다. 교체 범위는 판정 백엔드 한 곳으로 한정된다.
다음 할 일
- 최초 지원 종목·동작 확정 (미결 2, 3번)
- 해당 동작의 루브릭 초안 작성 — 항목별 가중치, 등급 정의, 근거 지표
- 지도자 라벨링 골든셋 50건 확보
- 포즈 추출 파이프라인 프로토타입 (MediaPipe, CPU)