모델은 대화를 기억하지 않는다
ChatGPT처럼 매끄럽게 이어지는 대화도 모델 입장에서는 매 턴이 처음입니다. 애플리케이션은 매번 이전 대화 전체를 하나의 입력으로 다시 붙여 보내고, 모델은 그 뭉치를 처음 보는 텍스트처럼 읽은 뒤 다음 토큰 하나를 예측합니다. ‘기억’처럼 보이는 것은 모델의 속성이 아니라, 대화 이력을 반복해서 다시 실어 보내는 서비스 설계의 결과입니다.
이 구조는 두 가지 실무적 결과를 낳습니다. 대화가 길어질수록 다시 보내야 할 텍스트가 쌓여 컨텍스트 윈도우가 차오르고, 입력 토큰이 늘어난 만큼 매 턴의 비용도 함께 불어납니다. 그래서 긴 대화를 다루는 서비스에서 이력을 어디까지 싣고 어디서 요약할지는 편의 기능이 아니라 처음부터 설계해야 할 과제가 됩니다.
토크나이저를 열면 한국어의 불리함이 보인다
모델은 글자를 그대로 읽지 않고 토큰이라는 조각으로 잘라 읽습니다. 토크나이저를 직접 열어 보면 언어별 차이가 눈에 들어옵니다. 한국어 인사말 “안녕”은 토큰 두 개로 나뉘지만, “안녕하세요, 어떻게 지내세요?”는 여덟 개로 잘리고, 비슷한 뜻의 영어 “How are you?”는 여섯 개면 끝납니다.
토크나이저의 어휘가 영어 중심 말뭉치에서 만들어진 탓에, 한국어는 같은 의미를 담는 데 더 많은 토큰을 씁니다. 결과적으로 같은 크기의 컨텍스트 윈도우에 한국어는 영어보다 더 적은 내용밖에 담지 못하고, 토큰 단위로 매겨지는 비용도 더 커집니다. 한국어 AI 서비스를 기획한다면 이 불리함은 기능을 얹기 전에 출발선에서부터 깔고 가야 할 제약입니다.
환각과 출력의 변동성은 코드 몇 줄로 재현된다
존재하지 않는 2019년 논문의 기여를 그럴듯하게 서술하는 장면도 코드 몇 줄이면 직접 만들어 볼 수 있습니다. 모델에게는 ‘모른다’고 답하기보다 문맥에 어울리는 다음 토큰을 이어 붙이는 쪽이 더 자연스럽기 때문입니다. 환각은 모델이 고장 난 신호가 아니라, 사실 여부가 아니라 그럴듯함을 기준으로 다음 토큰을 고르는 작동 방식이 겉으로 드러난 결과입니다.
같은 질문이라도 출력은 설정과 지시에 따라 크게 흔들립니다. temperature를 0.1에서 1.8로 올리면 같은 입력에도 답이 완전히 갈리고, 시스템 프롬프트 한 줄을 바꾸면 같은 블랙홀 질문에 과학 선생님과 소크라테스가 서로 다른 어조로 답합니다. 출력이 하나의 정답이 아니라 설정과 지시의 함수라는 사실을 알면, 프롬프트와 파라미터를 대하는 태도가 달라집니다.
설명으로 듣는 것과 화면으로 보는 것은 무게가 다르다
이런 현상은 말로 설명을 들을 때와 화면에서 직접 볼 때의 무게가 다릅니다. 토크나이저가 한국어를 더 잘게 쪼개는 장면, temperature를 올렸을 때 답이 갈라지는 장면을 한 번이라도 눈으로 확인한 사람은, 환각을 모델 탓으로 돌리는 대신 출력에 검증 절차를 붙이고 긴 대화의 이력 관리를 설계 과제로 다루기 시작합니다.
SH Consulting의 AX 교육에서 비개발자에게도 코드 시연을 고집하는 이유가 여기 있습니다. 원리를 추상적으로 아는 것과 몇 줄의 코드로 그 원리를 직접 재현해 보는 것은 이후의 의사결정을 바꿉니다. 도구를 신비화하지도 막연히 두려워하지도 않으면서, 한계를 알고 통제하며 쓰는 태도가 거기서 출발합니다.