Tokenization
문장을 모델이 아는 작은 ID 조각으로 나눕니다. 단어 하나가 여러 토큰이 될 수도 있습니다.
답 전체를 미리 만든 뒤 꺼내는 기계가 아닙니다. 지금까지 본 토큰을 바탕으로 다음 토큰 하나를 고르고, 그 과정을 계속 반복합니다.
GPT, Llama, Qwen처럼 대화를 생성하는 많은 모델이 이 구조를 사용합니다. 여기서 decoder는 번역기의 “해독기”라기보다, 왼쪽 문맥을 읽으며 다음 조각을 생성하는 Transformer 블록을 뜻합니다.
문장을 모델이 아는 작은 ID 조각으로 나눕니다. 단어 하나가 여러 토큰이 될 수도 있습니다.
각 토큰 ID를 긴 숫자 벡터로 바꿉니다. 위치 정보도 함께 반영합니다.
여러 층이 앞 문맥을 읽고 토큰마다 새로운 hidden state를 만듭니다.
현재 마지막 입력 위치의 hidden state가 다음 토큰 예측에 쓰입니다.
hidden state를 전체 어휘 크기의 logit으로 바꿉니다. 후보마다 점수 하나가 생깁니다.
greedy라면 최고 점수를, sampling이라면 확률에 따라 하나를 고릅니다.
토큰별 정보를 다음 연산으로 운반하는 중심 통로입니다.
숫자 크기를 정돈해 각 층의 계산을 안정시킵니다.
현재 토큰이 앞쪽의 어느 토큰 정보를 얼마나 가져올지 계산합니다.
새 계산 결과를 기존 정보에 더해 깊은 층에서도 정보를 보존합니다.
각 위치의 벡터를 비선형적으로 변환해 특징을 꺼내고 조합합니다.
이 블록을 여러 번 통과하며 문맥에 맞는 표현으로 계속 갱신합니다.
하나를 고르면 끝이 아니라,
그 토큰을 붙여서 처음부터 다시 예측합니다.
실제 구현은 매번 모든 계산을 완전히 반복하지 않습니다. 이전 토큰의 attention 계산에 필요한 key와 value를 KV cache에 저장하고, 새 토큰에 필요한 부분만 계산합니다. 그래서 긴 답을 만들수록 cache는 커지지만 이미 본 prefix를 다시 계산하는 비용은 줄어듭니다.
“상관계수”와 “correlation coefficient”는 서로 다른 토큰 ID와 길이를 만듭니다. 모델에 들어가는 첫 재료부터 달라집니다.
입력 벡터가 달라지면 attention과 MLP를 지난 내부 표현도 달라질 수 있습니다. 이것은 생성 경로가 바뀔 가능성과 양립합니다.
거리만 재면 “얼마나 움직였는지”는 알 수 있어도 “정답 토큰 쪽으로 움직였는지”는 모릅니다. logit margin이나 intervention이 더 필요합니다.
모델이 읽고 쓰는 텍스트 조각. 한 단어와 정확히 같지 않을 수 있습니다.
특정 층과 위치에서 모델이 가진 문맥 표현 벡터입니다.
softmax 이전의 후보 토큰 점수. 차이가 클수록 선택 우위가 큽니다.
현재까지 입력되었거나 생성된 토큰의 전체 앞부분입니다.
각 위치가 미래를 보지 못하고 왼쪽 문맥만 보게 하는 attention 규칙입니다.
이전 토큰의 attention 중간값을 저장해 다음 생성 계산을 줄이는 메모리입니다.