ChatGPT에 질문하면 안에서 무슨 일이 벌어질까

원본 영상 보기 →
- 대화가 길어질수록 답이 흔들리는 데는 구조적인 이유가 있어요
- 글자 세기·숫자 계산 실수는 토큰화에서 시작돼요
- 같은 질문에 다른 답이 나오는 건 이상한 일이 아니에요
한 줄 요약
ChatGPT에 질문 하나를 보내면 답이 나오기까지 몇 초 사이에 무슨 일이 벌어지는지, Nick Saraev가 순서대로 따라가요. 프롬프트 포장, 안전 분류기, 토큰화, 데이터센터 GPU, 어텐션 연산, 한 토큰씩 생성, 추론·도구 사용까지 한 흐름으로 정리했습니다.
전체 내용 정리
ChatGPT는 모델이 아니라, 모델을 감싼 앱이에요
Nick은 첫 단계를 "앱이 메시지를 포장하는 일"이라고 설명해요. ChatGPT는 AI 모델 그 자체가 아니라 모델을 감싸고 있는 소비자용 애플리케이션이거든요. 그래서 여러분이 입력한 프롬프트는 모델로 가기 전에 여러 정보가 덧붙여진 상태로 넘어갑니다.
가장 먼저 붙는 건 시스템 프롬프트(회사가 모델에 내리는 지침)예요. Anthropic은 Claude 시스템 프롬프트를 온라인에 공개하는데, 분량이 3,000단어가 넘는다고 해요. 모델은 보통 오늘이 며칠인지 모르기 때문에 오늘 날짜도 함께 들어가요. 그다음에 맞춤 지침, 저장된 메모리, 첨부한 파일, 그리고 결정적으로 지금까지의 대화 전체가 붙습니다.
대화 전체를 매번 다시 넣는 이유는 모델에 내장된 메모리가 없기 때문이에요. 모델은 오직 텍스트 안에서만 작동하니, 무슨 얘기를 하는지 알려면 그 순간까지 스레드에 쓰인 모든 글자가 메시지마다 들어가야 하죠. 그래서 대화가 길어지면 단어와 토큰이 크게 늘고 모델이 처리할 계산도 점점 복잡해집니다.
Nick은 이렇게 길어질수록 성능이 불안정해지는 현상을 컨텍스트 로트(context rot)라고 부른다고 소개해요. 그리고 이건 무엇보다 수학 문제에 가깝다고 봅니다. 중간 계산이 많아질수록 계산마다 아주 약간씩 정확도가 깎이는데, 그래도 계산은 끝까지 진행되거든요. 이렇게 모든 걸 하나로 합친 결과물이 Nick이 말하는 '포장된 프롬프트'예요.
작은 안전 분류기가 여러분의 대화를 늘 지켜보고 있어요
포장된 프롬프트는 바로 모델로 가지 않고 검사를 거칩니다. Nick은 이걸 일종의 인증이라고 생각하면 된다고 해요. 더 작은 모델들이 여러분과 거대 모델 사이의 대화를 계속 지켜보면서 마약이나 네이팜탄 제조, 폭력적인 요청처럼 안전하지 않은 사용을 걸러 내는 구조예요.
좋든 싫든, 안전 분류기가 여러분이 쓰는 모든 내용을 읽고 있는 셈입니다. 효과는 꽤 컸어요. Nick에 따르면 Anthropic의 초기 분류기 버전은 탈옥 시도 성공률을 거의 90%에서 약 4~5% 수준까지 낮췄습니다. 예전에는 이 검사에 연산 비용이 많이 들었지만 지금은 모델 구동 비용의 1%도 안 된다고 해요.
OpenAI의 ChatGPT도 비슷한 방식을 써요. 원치 않는 용도로 쓰는 것이 감지되면 요청을 다른 모델로 돌리는데, 보통은 더 단순한 모델이나 추가 안전장치가 걸린 모델로 보냅니다. Nick은 18세 미만 사용자는 ChatGPT가 18세 미만용 안전 모델로 연결하는 것으로 알고 있다고 덧붙여요.
모델은 글자가 아니라 토큰을 읽어요
분류기를 통과한 프롬프트는 모델이 이해하는 형식, 곧 토큰으로 바뀌어야 해요. 토큰은 평균적으로 단어의 약 70% 정도 크기라서 단어보다 조금 짧습니다. 이 변환은 토크나이저(tokenizer)라는 프로그램이 맡는데, 토크나이저마다 고유한 미니 어휘집이 있어요. 같은 토큰을 레고 블록처럼 여러 방식으로 조합해 다양한 단어를 만들 수 있으니 이렇게 압축하는 편이 효율적이라는 설명이에요.
Nick에 따르면 OpenAI 토크나이저의 어휘 크기는 약 20만 개예요. 예를 들어 "ChatGPT에게 무언가를 물어볼 때 내부에서 실제로 무슨 일이 일어날까?"라는 질문은 12개 토큰이고 'ChatGPT'는 'chat'과 'GPT' 두 토큰이에요. 'strawberry'는 'st', 'raw', 'berry' 세 토큰으로 나뉩니다. 모델이 개별 글자가 아니라 토큰을 보기 때문에, 최근까지도 이런 단어의 글자를 다루는 질문에서 자주 틀렸던 거죠.
숫자도 잘게 쪼개져요. 흥미로운 건 숫자 하나가 토큰 하나로 대응하지 않는다는 점이에요. 빈도에 따라 숫자를 묶기 때문에 12345678901은 123456789와 01로 나뉠 수 있습니다. Nick은 모델이 숫자 하나를 깔끔한 덩어리로 받지 못하고 여러 조각으로 받는 것이 수학을 못하는 이상한 결과로 이어진다고 봐요.
언어마다 쓰는 토큰 수도 달라요. 영어 "hello world"는 약 2개 토큰이지만 같은 문구를 힌디어로 쓰면 대략 5개가 필요해요. Nick은 영어가 가장 효율적인 토큰 언어 중 하나라서 대부분의 모델이 영어를 기본값으로 쓴다고 설명하고 물론 영어 시장에서 버는 돈이 더 많은 것도 한몫한다고 말합니다.
토큰은 먼 데이터센터에서 다른 사람 요청과 함께 처리돼요
토큰은 이제 데이터센터로 보내져요. 거대 언어 모델은 여러분의 휴대폰이나 컴퓨터가 아니라 수백, 어쩌면 수천 마일 떨어진 곳의 칩으로 가득 찬 건물에 있거든요. Nick은 구글 데이터센터 중 하나가 한 달에 3,200조 개 이상의 토큰을 처리한다는 예를 들어요.
칩은 대부분 엔비디아 GPU예요. 그런데 여러분의 요청이 칩 하나로만 가는 건 아니에요. 연산 자원을 아끼려고 다른 사람들의 요청과 함께 쪼개지고 묶여서, GPU 하나가 그 순간 빈 공간에 요청을 나눠 담아 여러 사람을 동시에 처리합니다.
Nick이 가장 놀랍다고 꼽는 부분이 여기예요. 같은 GPU를 쓰는 다른 사람들이 여러분의 모델 응답을 바꿀 수 있다는 거죠. 혼자 보낼 때와 여럿이 GPU를 나눠 쓸 때는 배치 크기, 계산의 경제적 요인, GPU 열 같은 변수 때문에 답을 내는 수학 과정 자체가 달라질 수 있다고 해요.
어텐션 연산을 한 바퀴 돌면, 토큰 딱 하나가 나와요
준비가 끝나면 모델이 실제로 실행돼요. 토큰은 수십, 어쩌면 수백 개의 수학 연산 레이어를 통과합니다. 수많은 변수와 함수가 들어간 거대한 방정식을 떠올리면 된다고 Nick은 설명해요. 오늘날 이 설계 대부분은 2017년 구글이 발표한 논문 'Attention is All You Need'에서 나왔어요.
이 논문이 제안한 어텐션(attention) 덕분에 모델은 프롬프트의 모든 단어를 동시에 보면서 문맥상 뜻을 파악할 수 있게 됐어요. 예를 들어 '은행(bank)'이 '강(river)'과 같은 문장에 있으면 강둑(riverbank)을 뜻하지만 '대출(loan)'과 함께 있으면 전혀 다른 뜻이 되죠. Nick은 GPT-3의 매개변수(parameter)가 1,850억 개였다고 소개해요. 행렬이라 불리는 거대한 숫자 묶음 안에서 따로 추적되는 숫자들이고 이 행렬들이 여러 번 곱해지면서 단어에 대한 미세한 통계적 분포를 만들어 냅니다.
그런데 이 과정을 한 바퀴 다 돌아도 나오는 건 토큰 하나예요. 그래서 모델은 토큰 하나를 만든 뒤 결과를 붙여 전체 과정을 다시 자기 자신에게 넣고 그다음 토큰을 만들어요. 'ChatGPT'처럼 두 토큰짜리 짧은 출력이라도 전체 과정을 두 번 돌려야 하는 셈이죠. Nick은 엄청난 양의 계산을 아주 빠르게 반복해야 하니 GPU와 데이터센터의 경제성이 그토록 중요하다고 봅니다.
답이 채팅창에 줄줄 흘러나오는 이유도 여기에 있어요. 기업들은 토큰을 한 번에 하나씩 보내 주는 편이 효율적이라는 걸 알아냈고 화면에 보이는 단어 하나하나가 실제로 실시간으로 만들어지고 있습니다. 출력을 중간에 멈출 수 있는 것도, 문장 중간에서 끊기기도 하는 것도 그래서예요.
Nick은 모델의 역할이 꼭 사실을 알려 주는 게 아니라는 점도 짚어요. 모델은 통계적으로 확률이 가장 높은 다음 토큰의 분포를 내놓을 뿐이라 꽤 자주 환각(hallucination)을 일으켜요. 새 모델이 나올 때마다 나아지고 있지만 꼭 염두에 둬야 한다고 말합니다.
멈출지, 더 생각할지, 도구를 쓸지 모델이 고르고 반복해요
출력 토큰이 나오면 모델은 갈림길에 서요. Nick에 따르면 2023년에 추가된 결정 단계인데, 여기서 멈출지, 추론할지, 도구를 쓸지를 고릅니다.
추론(reasoning)은 모델이 자기 출력을 숨겨진 추론 섹션에 다시 넣는 과정이에요. 답을 보여 주기 전에 네 번, 다섯 번, 백 번, 천 번까지 검토할 수 있죠. 이 내부 사고 흐름에는 '하지만', '그렇지만', '그러나', '또한' 같은 단어가 자주 나오는데, 다음 줄 첫머리에 들어가 모델이 추론 방향을 바꾸고 가능한 결과를 비교하게 만들어요. 모델은 늘 확률이 가장 높은 다음 토큰을 고르니 '하지만'으로 시작하면 앞 내용의 반례를 찾으려는 성향이 생기고 그렇게 스스로를 검증해 더 나은 결과를 낸다는 설명이에요.
다른 선택지는 도구 사용이에요. 이제 모델은 여러 소프트웨어에 연결돼 있어서 특정 텍스트를 내보내면 소프트웨어가 작업을 수행해요. Nick은 웹 검색 도구를 예로 들어요. URL을 넣는 칸과 날짜·시간 범위를 넣는 칸이 있고 이 값을 구글, 덕덕고 에코시아 같은 검색 엔진에 넣으면 결과 목록이 돌아옵니다. 결과를 직접 찾아오는 건 모델이 아니라 소프트웨어지만 모델은 그 소프트웨어를 호출해 결과를 받을 수 있어요.
도구 결과를 받은 모델은 다시 멈출지, 더 추론할지, 다른 도구를 쓸지 결정해요. 응답 품질에 만족할 때까지 이 과정을 내부에서 반복한 뒤에 결과를 보여 줍니다. 이 모든 일이 말 그대로 몇 초 만에 일어나고 Nick은 모델이 빨라질수록 지연 시간이 줄어 결국 생각하는 속도와 거의 비슷하게 답을 받게 될 거라고 내다봐요.
핵심 인사이트
- 대화가 길어질수록 답이 흔들리는 데는 구조적인 이유가 있어요: 모델은 기억이 없어서 매번 대화 전체를 다시 읽고 중간 계산마다 정확도가 조금씩 깎여요. 긴 스레드를 이어 가기보다 필요한 내용만 정리해 새로 시작하는 편이 낫다는 근거가 됩니다.
- 글자 세기·숫자 계산 실수는 토큰화에서 시작돼요: 모델은 'strawberry'를 글자가 아니라 세 조각으로, 긴 숫자를 엉뚱한 덩어리로 받아요. 정확한 계산이나 글자 단위 작업을 맡길 때 모델 자체보다 도구를 쓰게 하는 이유가 여기 있습니다.
- 같은 질문에 다른 답이 나오는 건 이상한 일이 아니에요: 한 토큰씩 확률로 뽑는 데다, GPU를 함께 쓰는 다른 요청까지 계산에 영향을 줄 수 있어요. 업무에 쓸 결과는 한 번의 답으로 확정하지 말고 검증 단계를 두는 게 맞는 설계예요.
오늘 당장 해볼 것
- OpenAI의 Tokenizer 페이지(platform.openai.com/tokenizer)에 자주 쓰는 업무 문장을 한국어와 영어로 각각 넣어 보세요. 같은 내용이 토큰 몇 개로 쪼개지는지 보면 언어별 비용 차이가 바로 감이 옵니다.
- Anthropic이 공개한 Claude 시스템 프롬프트 문서를 열어 앞부분만이라도 읽어 보세요. 내 메시지 앞에 어떤 지침이 붙는지 알면 맞춤 지침에 무엇을 적어야 할지가 선명해져요.
- ChatGPT나 Claude에서 오래 이어 온 대화가 있다면, 핵심 결정·자료만 요약해 달라고 한 뒤 그 요약을 새 대화에 붙여 다시 시작해 보세요. 컨텍스트 로트를 피하면 답이 얼마나 안정되는지 직접 비교할 수 있어요.