kanana-o API beta tester — modality gap test
“카나나한테 같은 말을 세 가지 방식으로 해봤다”
카카오의 옴니모달 모델 Kanana-o API를 쓸 수 있게 됐다. 하루 20콜 제한이 있다.
원래 이 API로 감정 반응 실험 두 개를 이미 돌린 적 있는데 — TTS 합성 음성에 샘플 3개, judge도 AI, 채점 기준도 일관성 없고 — 돌아보니 별로였다. 그래서 방향을 바꿨다.
같은 내용을 텍스트로 보내는 것과, 이미지로 보내는 것과, 음성으로 보내는 것이 다를까?
엄밀히 말하면 정보는 동일하다. 텍스트를 그대로 이미지에 렌더링하고, TTS로 읽어서 보내는 거니까. 모달리티만 다르고 내용은 같다. 그런데도 모델이 다르게 반응한다면 그게 modality gap이다.
이걸 측정하려면 정답이 명확한 태스크가 필요했다. 직접 시나리오를 만들면 이전 실험의 전철을 밟는 거라, 이미 검증된 벤치마크를 쓰기로 했다.
벤치마크 선택
KMMLU와 CLIcK을 검토했다. 둘 다 한국어 객관식이라 채점이 binary(맞/틀)로 단순하다는 게 장점.
CLIcK은 한국 문화·언어 특화라 흥미롭긴 한데, 도메인이 좁다. KMMLU는 45개 서브셋에 전문 도메인이 다양하고 — Kanana-o같은 한국 특화 모델이 이미 잘 아는 영역에서 모달리티만 바꿔 테스트하는 게 gap을 더 깔끔하게 볼 수 있다고 판단했다. CLIcK은 나중에 시간 나면.
서브셋은 45개 전부 쓰지 않았다. 전체 랜덤 샘플링하면 공학 계열이 절반 이상이라 편향이 생기고, 굳이 전 도메인을 볼 필요도 없다 — modality gap은 도메인 특성보다 모델의 입력 처리 방식 문제니까. Korean-History와 Law, 두 도메인으로 좁혔다. 텍스트 추론 기반 질문이라 이미지/음성 변환해도 정보 손실이 적고, 긴 수식이나 기호가 없어서 렌더링도 깔끔하다.
각 30개씩 총 60문제. 하루 20콜 한도라 문제당 3콜(텍스트/이미지/오디오), 6문제씩 며칠에 걸쳐 돌린다.
세팅
이미지 입력이 API에서 실제로 되는지 확인이 필요했다. 1콜 써서 테스트해봤더니 됐다. OpenAI 호환 포맷으로 base64 PNG를 넣으면 읽는다.
- 텍스트: 질문 그대로
- 이미지: 흰 배경에 같은 텍스트를 렌더링한 PNG (Pillow로 생성)
- 음성: macOS Yuna 음성 중립 TTS → 16kHz WAV (ffmpeg 변환)
오늘 결과 (12문제, 자정 전후 두 배치)
| 모달리티 | 정답률 |
|---|---|
| 텍스트 | 6/12 = 50.0% |
| 음성 | 5/12 = 41.7% |
| 이미지 | 3/12 = 25.0% |
12개라 숫자 자체를 믿기는 이르다. 그래도 이미지가 눈에 띄게 낮다. 텍스트로 맞힌 걸 이미지로 틀리는 케이스가 두 번 있었다.
더 흥미로운 건 불일치율이다. 12문제 중 10문제(83%)에서 세 모달리티의 답이 달랐다. 완전히 같은 내용인데도.
48문제 남았다.