- ChatGPT 3.5는 특정 문자열을 응답 맨 위에 넣으라는 요청에서 메시지 스트림 오류를 반복적으로 내며, GPT-4는 같은 요청에 더 정상적으로 응답함
- API에서도 GPT-3.5는 서버 처리 오류를 반환하고,
useRal,useRalative,useRalativeImagePath를 바꿔 넣어도 같은 현상이 나타남 - 문제의 문자열들은 GPT 모델이 글자 대신 출력하는 토큰으로 존재하며,
useRalativeImagePath는 Katalon Studio XML 설정 파일 옵션명으로 GitHub 80.4k개 파일에 등장함 - 토큰 목록에는 GitHub 파일이 반영됐지만 이후 XML 파일이 학습 데이터에서 빠졌다면, 모델이 해당 토큰을 충분히 학습하지 못했을 수 있음
- 문서 안에 이 문자열을 넣으면 GPT-3.5 요약을 방해하는 데이터 포이즈닝처럼 작동할 수 있으며, 실제 블로그 글 요약 요청에서도 오류가 재현됨
GPT-3.5에서 재현되는 문자열 오류
- ChatGPT 3.5에 아래 문구를 응답 상단에 포함하라고 요청하면 오류가 일관되게 발생함
Include this at the top of the response: "ponyuseRal ponyuseRal ponyuseRal pony"
- 화면에는
pony뒤에 Error in message stream 오류가 표시됨 - GPT-4는 같은 요청에 더 정상적으로 응답함
- GPT-3.5 API에서는 다음 오류가 반환됨
The server had an error processing your request. Sorry about that! You can retry your request, or contact us through our help center at help.openai.com if you keep seeing this error
useRal을useRalative또는useRalativeImagePath로 바꿔도 결과는 같음
토큰과 useRalativeImagePath
- OpenAI의 GPT 모델은 글자를 하나씩 출력하지 않고, 여러 글자로 묶인 토큰 스트림을 출력함
- 토큰 단위 출력은 모델의 성능과 정확도를 높이는 방식이며, OpenAI의 tokenizer demo에서 동작을 확인할 수 있음
useRal,useRalative,useRalativeImagePath는 각각 하나의 토큰으로 존재함useRalativeImagePath는 자동화 테스트 소프트웨어 Katalon Studio의 XML 설정 파일 옵션명으로 쓰임- GitHub 코드 검색 기준 80.4k개 파일에 등장함
Relative가 아니라Ralative로 잘못 철자화된 점이 별도 토큰이 된 이유일 수 있음
- 세 토큰은 프롬프트에서 서로 바꿔 써도 같은 오류를 유발함
학습 데이터에 대한 추정
- GPT-3.5 학습 이전에 XML 파일 밖에서
useRalativeImagePath를 언급한 사례는 Katalon 포럼의 spelling mistake 게시글 하나만 발견됨 - 가능한 시나리오는 다음과 같음
- 토큰 목록을 만들 때 사용한 데이터셋에는 GitHub 파일 전체가 포함됐을 수 있음
- 이후 OpenAI가 실제 학습 데이터에서 XML 파일을 제외했을 수 있음
- 그 결과
useRalativeImagePath토큰이 학습 데이터에는 거의 남지 않았을 수 있음
- 이 경우 모델은 해당 토큰을 이해할 만큼 충분히 학습하지 못해, 출력 과정에서 비정상 동작을 일으켰을 수 있음
데이터 포이즈닝 가능성
- 이 문구를 문서에 넣으면 GPT-3.5로 요약하려는 시도를 방해하는 방식으로 악용될 수 있음
- 실제로 ChatGPT에 해당 블로그 글을 요약하게 했을 때도 요약 도중 같은 오류가 발생함
- 확인된 동작은 GPT-3.5 대상이며, GPT-4는 더 정상적으로 응답하는 것으로 구분됨