이 글은 Kaggle 벤치마킹 챌린지 제출물입니다.
제 글들을 읽어보신 분들은 제가 작성한 글들 상당수가 사실 어떤 것의 벤치마크라는 것을 알고 계실 겁니다. 대부분 .NET 관련이지만, 그래도 이 챌린지는 제가 보통 하는 작업과 상당히 유사할 것이라고 말할 수 있습니다.
하지만 실제는 정반대였습니다.
코드 벤치마크를 구축하는 것과 AI 모델을 벤치마킹하는 것은 완전히 다른 영역이었습니다. 그래서 이 챌린지를 처음 봤을 때, 제가 정확히 무엇을 벤치마크해야 할지 전혀 감을 잡지 못했습니다. 코딩 작업에 대해 모델들을 비교하는 것은 너무 일반적이라고 느껴졌고, 단순히 벤치마크가 필요해서 그것만을 위한 것을 만들고 싶지는 않았습니다.
그러다가 최근 몇 편의 글 주제를 살펴보았습니다. 대부분 API, 복원력(resilience), 실패(failures), 그리고 시스템이 무언가 잘못되었을 때 어떻게 작동하는지에 관한 것이었습니다. 그리고 이것이 저에게 하나의 실험 아이디어를 주었습니다: 만약 제가 AI 모델들을 아주 간단한 질문 하나로 벤치마크한다면 어떨까? 바로 '재시도할 것인가, 말 것인가?'입니다.
503 Service Unavailable 상태 코드가 재시도가 안전하다는 것을 자동으로 의미하지는 않습니다. POST 요청은 이미 처리되었을 수도 있습니다. Idempotency key가 답 자체를 완전히 바꿀 수 있습니다. 타임아웃(timeout)은 서버가 아무것도 받기 전일 수도 있고, 이미 어떤 상태를 변경한 후에 발생할 수도 있습니다.
따라서 HTTP 상태 코드만으로는 종종 충분하지 않습니다. 모델은 전체 상황을 이해해야 합니다.