AI VIDEO BRIEFING

디코더 전용 트랜스포머 작동 원리: 토크나이저부터 KV 캐시까지 토큰 하나로 따라가기

'the cat'이라는 짧은 문장에서 cat 토큰 하나가 토크나이저와 임베딩, 인과 어텐션, MLP를 거쳐 다음 단어가 정해지기까지의 전 과정을 단계별로 따라가며 LLM 내부에서 벌어지는 일을 풀어낸다.

토큰 하나를 끝까지 따라가 보기: 디코더 전용 트랜스포머가 다음 단어를 고르는 과정 영상 대표 이미지

핵심 메시지

  • 텍스트는 토크나이저를 통해 숫자 ID로 바뀌고, 임베딩 행렬에서 해당 행을 꺼내 의미를 담은 벡터가 된다.
  • 임베딩만으로는 위치 정보가 없으므로 위치 정보를 더해 '잔차 스트림'이라는 정보 고속도로의 출발점을 만든다.
  • 디코더 모델은 인과 마스킹을 써서 각 토큰이 자신과 앞선 토큰만 볼 수 있게 하며, 이것이 GPT 계열의 자기회귀 생성을 가능하게 한다.
  • 어텐션이 토큰끼리 정보를 섞는 역할이라면, MLP는 각 위치를 독립적으로 변환한다. 두 블록 모두 잔차 연결로 원래 값에 더해진다.
  • 마지막 위치의 표현에 LM 헤드를 곱해 로짓을 얻고, 온도 조절과 소프트맥스를 거쳐 샘플링으로 다음 토큰을 정한다.

쉽게 이해하기

이 영상은 'the cat'이라는 두 단어짜리 입력에서 cat 토큰 하나를 골라, 그것이 신경망 전체를 통과하며 어떻게 변해 가는지를 단계별로 좇는다. 먼저 토크나이저가 문장을 토큰으로 쪼갠다. 설명에서는 the가 5번, cat이 42번이라는 단순화한 예를 쓰지만, 실제 모델은 BPE나 SentencePiece 같은 서브워드 방식을 쓰기 때문에 한 단어가 여러 조각으로 나뉘고 ID도 모델마다 다르다.

토큰 ID 42로 임베딩 행렬에서 해당 행을 꺼내면 학습으로 얻어진 의미가 담긴 밀집 벡터가 나온다. 그런데 임베딩만으로는 문제가 하나 남는다. 1번 자리의 cat과 5번 자리의 cat이 구별되지 않는다는 것이다. 그래서 위치 정보를 더해 주고, 이렇게 만들어진 초기 표현이 이후 모든 층을 관통하는 잔차 스트림의 시작점이 된다.

핵심은 멀티헤드 셀프 어텐션이다. 먼저 층 정규화를 거치는데(어텐션 앞에서 정규화하는 프리놈 방식), 여기서 디코더 모델의 결정적 특징인 인과 마스킹이 등장한다. cat은 자기 자신과 앞의 the만 볼 수 있고 미래 토큰은 엿볼 수 없다. 잔차 스트림을 쿼리·키·값으로 투영해 여덟 개 헤드로 나누고, 각 헤드가 쿼리와 키의 스케일 조정 내적으로 어텐션 점수를 계산한다. 헤드 차원의 제곱근으로 나누는 이유는 내적 값을 안정적인 범위에 두어 소프트맥스가 포화되고 기울기를 잃는 일을 막기 위해서다.

소프트맥스로 얻은 가중치로 값 벡터를 가중합하면 한 헤드의 출력이 나오고, 여덟 헤드의 출력을 이어 붙여 마지막 선형 변환을 거친다. 그리고 이 결과를 원래 입력에 그대로 더한다. 이 단순한 덧셈이 바로 잔차 연결이며, 학습 중 기울기가 잘 흐르게 하고 층을 지나도 정보가 보존되게 한다. 이어지는 MLP는 층 정규화 뒤 차원을 네 배로 넓히고 GELU 활성화를 적용한 다음 다시 원래 차원으로 좁힌다. 어텐션과 달리 MLP는 토큰끼리 섞이지 않고 각 위치를 따로 변환한다. 어텐션-잔차-MLP-잔차, 이 묶음이 디코더 한 층이다.

마지막 단계에서는 마지막 위치 토큰의 표현에 어휘 크기만큼의 행을 가진 LM 헤드를 곱해 모든 후보 토큰의 점수, 즉 로짓을 얻는다. 예시에서는 sat이 5.1, slept가 3.8을 받았다. 소프트맥스 전에 온도를 적용하면 값이 낮을수록 분포가 뾰족해지고 높을수록 평평해진다. 확률로 바꾼 뒤 상위 K나 상위 P 같은 방식으로 샘플링해 sat을 뽑고, 'the cat sat'을 다시 모델에 넣어 다음 토큰을 이어 간다. 이때 이미 계산한 키와 값 벡터를 층과 헤드마다 저장해 두는 KV 캐시를 쓰면 새 토큰의 쿼리만 계산해 기존 캐시와 어텐션하면 되므로 생성 속도가 크게 빨라진다.

주요 인사이트

  • 잔차 스트림을 '정보 고속도로'로 보는 관점이 유용하다. 어텐션과 MLP는 이 흐름을 갈아 치우는 것이 아니라 각자의 계산 결과를 더해 조금씩 다듬어 나갈 뿐이다.
  • 어텐션과 MLP의 역할 분담이 명확하다. 어텐션은 토큰 사이를 잇는 통신 담당이고, MLP는 각 위치를 독립적으로 처리하는 변환 담당이다.
  • 학습 때는 모든 위치의 다음 토큰 예측을 한 번에 병렬로 계산하지만, 추론 때는 마지막 토큰의 표현만 써서 한 개씩 생성한다. 같은 구조라도 두 상황의 계산 방식이 다르다.
  • 온도와 샘플링 방식은 모델 가중치를 건드리지 않고 출력의 성격을 바꾸는 손잡이다. 낮은 온도는 결정적이고 안정적인 답을, 높은 온도는 다양하지만 산만한 답을 만든다.
  • KV 캐시는 알고리즘을 바꾸지 않고 중복 계산만 없애는 최적화다. 긴 대화에서 응답 속도가 유지되는 이유가 여기에 있다.

자주 묻는 질문

인과 마스킹이 왜 필요한가요?

디코더 모델은 앞선 토큰들만 보고 다음 토큰을 예측해야 하기 때문입니다. 인과 마스킹은 각 토큰이 자기 자신과 그 이전 토큰에만 어텐션하도록 제한해 미래 토큰을 미리 엿보지 못하게 하며, 이것이 GPT 계열의 자기회귀 생성을 성립시킵니다.

어텐션 점수를 왜 헤드 차원의 제곱근으로 나누나요?

내적 값을 안정적인 범위에 유지하기 위해서입니다. 이 스케일링이 없으면 소프트맥스가 포화되어 기울기 정보를 잃게 되고, 학습이 제대로 진행되지 않습니다.

KV 캐시는 정확히 무엇을 저장하나요?

이전 토큰들에 대해 모든 층과 모든 헤드에서 계산한 키(K)와 값(V) 벡터를 저장합니다. 새 토큰이 들어오면 그 토큰의 쿼리·키·값만 새로 계산하고 기존 캐시에 이어 붙이므로, 예전 K와 V를 다시 계산할 필요가 없어집니다.

원문과 출처

이 글은 원본 영상의 자막을 바탕으로 한국어 독자를 위해 요약했습니다. 전체 맥락과 최신 정보는 원문에서 확인하세요.

YouTube 원본 영상 보기 ↗

관련 AI 소식