3. 모델이 호텔 시상식 기사를 내놓던 날
그러던 어느 날, 개발 환경에서 테스트하다가 예상 못 한 일을 만났어요.
한 업무용 목록 화면을 만들어 달라고 요청했는데, 시스템이 내놓은 건 영국 어느 시상식 결과를 정리한 영문 보도자료였어요. 코드는 한 줄도 없이 깔끔한 영어 기사 한 편이었어요. 입력 어디에도 호텔이니 시상식이니 하는 단어는 없었어요.
이건 순수하게 모델 머릿속에서 흘러나온, 이른바 recitation, 학습 데이터를 거의 그대로 되뇌어버리는 환각에 가까웠어요. AI도 가끔은 일에서 손 놓고 딴 데 다녀오고 싶었던 걸까요? 물론 그럴 리 없죠. 그러니 진짜 원인을 찾아야 했어요.
추적은 완전히 명탐정 코난 에피소드와 비슷했어요.
용의자 1: 전달이 꼬였나?
가장 먼저 의심한 건 전달 과정이었어요. 다른 사람 요청의 응답이 엉뚱한 곳으로 잘못 배달된 건 아닐까? 스트리밍 브로드캐스트 쪽이 수상했어요. 그래서 저장된 데이터를 직접 들여다봤어요. 그런데 그 기사는 문제의 메시지에 그대로 저장돼 있었어요. 배달 사고가 아니라, 모델이 진짜로 그걸 생성한 거였어요.
용의자 2: 프롬프트가 모델을 헷갈리게 했나?
전달이 멀쩡하다면, 다음은 프롬프트 차례였어요. 그날의 프롬프트를 1:1로 복제해서 같은 모델에 8번, 10번 실행해봤어요. 그런데 전부 멀쩡한 코드가 나왔어요. 입력이 문제였다면 매번 비슷하게 어긋났을 텐데, 그렇지 않았죠. 정해진 조건에서 늘 터지는 버그가 아니라, 모델이 정상 경로를 잠깐 벗어난 거였어요. 같은 입력에도 매번 다르게 나오고, 한 번 나오면 다시 재현되지 않는 일시적인 '이탈'이요. 재현이 안 되는 버그만큼 다루기 어려운 것도 없어요.
결정적 단서: 그날 무슨 일이?
두 용의자 다 아니라면, 남은 건 '그날 무슨 일이 있었나'였어요. 그래서 로그를 시간순으로 펼쳐봤어요. 유독 한 생성만 8분이 걸렸더라고요. 평소엔 수십 초면 끝나는 작업인데 말이에요. 왜 하필 그때였을까요? 그 시간대엔 인프라에 부하가 걸려 있었고, 저희가 쓰던 모델도 안정화 전의 프리뷰 빌드였어요. 불안정한 조건이 겹친 거죠. 한 번 엇나가기 시작한 모델이 그 8분 내내 엉뚱한 걸 만들어냈고, 그동안 아무도 눈치채지 못했어요.
그리고 가장 뼈아픈 대목은 따로 있었어요. 그 응답은 에러 하나 없이 '성공'으로 저장돼 있었어요. 코드를 만들어 달라는 요청이었는데, 정작 코드는 0줄이었어요. 그런데도 시스템 입장에선 그냥 성공한 작업이었죠.
한 가지 분명히 해두면, 이건 운영 환경이 아니라 개발 환경에서 테스트하던 중 마주친 일이에요. 실제 사용자에게 이 엉뚱한 응답이 나간 적은 없어요. 하지만 비결정적이고 일시적인 현상이라, 운영에서도 똑같이 일어날 수 있었어요. 그래서 운영에서 터지기 전에 미리 막아두기로 했어요.