LabHub
배우기 러닝패스 코스

AI 다이어트 실패 사건 · 정확도 손실을 재는 법 · 실습

이 차이가 재현되는 차이인가 — 정확도 손실을 재는 법

LabHub 에서 이어서 보기

목표

같은 시험 표본에서 FP32 원본·이전 배포본·정수 후보 셋을 돌려 예측과 출력값을 남기고, 정확도 차이가 재현되는 차이인지 따지는 도구 acccmp.py 를 만든다. 구간·쌍 비교·뒤집힌 표본·출력 차이를 각각 재고, 기준선을 둘로 두어 판정을 내린다.

왜 중요한가

"정확도가 0.3% 떨어졌다" 는 그 자체로는 판단 근거가 아니다. 표본 400개에서 정확도 하나의 95% 구간은 폭이 8퍼센트포인트에 가깝다. 두 모델을 따로 재어 뺀 값으로는 이보다 작은 차이를 말할 수 없다.
말할 수 있게 하는 것은 같은 표본이다. 두 모델이 같은 입력을 보았다면, 둘 다 맞힌 표본과 둘 다 틀린 표본은 판정에 쓸 수 없고 한쪽만 맞힌 표본만 정보가 된다. 그 갈린 건수가 실제 분모다.
기준선도 하나가 아니다. FP32 원본은 양자화가 얼마나 깎았는지를 답하고, 이전 배포본은 지금 돌고 있는 것보다 나빠지는지를 답한다. 두 답이 다른 방향일 수 있으므로 둘 다 적는다.
그리고 출력 차이와 과제 지표는 다르다. 최대 절대 오차가 크게 나와도 정확도는 그대로일 수 있고 그 반대도 있다. 결정 경계에서 먼 표본은 출력이 흔들려도 답이 안 바뀌기 때문이다.
채점기는 여러분이 적은 숫자를 믿지 않는다. 매번 다른 씨앗과 표본 수로 자기 예측표를 차려 여러분의 도구를 실제로 실행하고 같은 계산을 다시 해 대조한다. 1단계는 여러분이 남긴 씨앗으로 시험 입력을 다시 만들어 여러분의 모델을 직접 돌려 본다.

단계

1. /root/acc/gen_eval.py 를 만들어 실행해 모델 셋과 /root/acc/preds.json, /root/acc/eval_seed.json 을 만드세요.
2. /root/acc/acccmp.pysummary 를 만들어 표본 수와 실행별 정확도를 내게 하세요.
3. interval 을 더해 정확도 하나의 95% 구간을 Wilson 점수 구간으로 내게 하세요.
4. paired 를 더해 같은 표본에서 2x2 로 갈린 건수와 쌍 비교 통계량을 내게 하세요.
5. flips 를 더해 뒤집힌 예측만 방향별로 세게 하세요.
6. outputs 를 더해 출력값 차이(최대 절대 오차·평균 절대 오차·코사인)를 내게 하세요.
7. baseline 을 더해 기준선 둘을 각각 견주게 하고, 여러분 자료의 판정을 /root/acc/verdict.json 에 적으세요.
8. /root/acc/accuracy_report.md 를 네 절로 쓰세요.

참고

단계 8개

  1. 세 판을 같은 표본에서 돌려 예측을 남기기
  2. 표본 수와 정확도를 한 자리에 모으기
  3. 정확도 하나에 구간을 붙이기
  4. 같은 표본에서 쌍으로 견주기
  5. 뒤집힌 예측만 방향별로 세기
  6. 출력 차이와 과제 지표를 갈라 재기
  7. 기준선을 둘로 두고 판정하기
  8. 읽는 사람이 판단할 수 있게 적기