트랜스포머·PEFT 2일 과정2장 · Transformer 입력 표현3 / 15← 이전목차다음 →MetaContents

2장. Transformer 입력 표현

글자가 숫자 행렬이 되기까지

택배를 보낼 때를 떠올려 봅니다. 물건을 그대로 트럭에 싣지 않습니다. 먼저 상자에 나눠 담고(토큰화), 상자마다 송장 번호를 붙이고(토큰 ID), 송장 번호로 무게와 크기가 적힌 정보표를 찾고(임베딩), 몇 번째로 실을지 차례 번호를 붙입니다(위치 정보). 트럭(Transformer)은 이 정보표 묶음만 보고 일합니다.

Input "I am a student." 이 토큰으로 나뉘고, 토큰마다 숫자 줄(임베딩)로 바뀌는 그림

그림 왼쪽은 문장 "I am a student." 가 토큰으로 나뉘는 모습이고, 오른쪽은 토큰마다 숫자 한 줄(벡터)로 바뀐 모습입니다. 그림에서는 "student" 가 "stude" 와 "nt" 로 나뉘었는데, 토크나이저마다 자르는 법이 달라 생기는 차이입니다. 아래 짧은 예시에서 Qwen 토크나이저는 " student" 를 한 토큰으로 둡니다. 숫자 줄 다섯 개를 위아래로 쌓으면 (토큰 수, d_model) 모양의 행렬, 즉 행이 토큰이고 열이 특징인 표가 됩니다.

원 논문 Transformer 구조도에서 맨 아래 입력 준비(토큰, Embedding, 위치) 부분을 강조한 그림

1장에서 본 Transformer 구조도에서 이 장이 다루는 곳은 강조된 "입력 준비" 칸입니다. Encoder 와 Decoder 는 모두 이 칸에서 만든 행렬을 받아 일을 시작합니다.

입력 준비의 네 걸음

걸음하는 일결과의 모양택배로 치면
토큰화문장을 토큰으로 자른다["I", " am", " a", " student", "."]상자에 나눠 담기
정수 ID 변환사전에서 번호를 찾는다[40, 1079, 264, 5458, 13]송장 번호 붙이기
임베딩번호마다 d_model 길이의 벡터를 꺼낸다(5, d_model) 행렬송장으로 정보표 찾기
위치 정보 더하기위치마다 다른 벡터를 더한다(5, d_model) 행렬(모양은 그대로)싣는 차례 번호 붙이기

짧은 예시

Python
# AutoTokenizer = 모델 이름만 주면 그 모델에 맞는 토크나이저를 골라 주는 도구
from transformers import AutoTokenizer

# from_pretrained = 이미 학습된(pretrained) 설정에서 불러오기. 처음 한 번만 내려받고 다음부터는 캐시를 쓴다
tok = AutoTokenizer.from_pretrained("Qwen/Qwen2.5-0.5B-Instruct")

# 1걸음과 2걸음: 문장을 잘라 번호로 바꾼다. add_special_tokens=False 는 표시용 토큰을 붙이지 말라는 뜻
ids = tok("I am a student.", add_special_tokens=False)["input_ids"]
print(ids)  # 결과: [40, 1079, 264, 5458, 13]

# decode = 번호를 다시 글자로. 번호 하나씩 되돌려 토큰 조각을 본다
print([tok.decode([i]) for i in ids])  # 결과: ['I', ' am', ' a', ' student', '.']

이 코드가 뜻하는 것

택배 상자 다섯 개에 송장 번호 다섯 개가 붙은 모습을 찍어 본 코드입니다. 여기서 택배 회사가 tok, 송장 번호 목록이 ids 입니다. 토큰 앞의 빈칸(" am")은 "앞에 띄어쓰기가 있던 조각"이라는 표시입니다. 그래서 디코딩하면 띄어쓰기까지 원래대로 돌아옵니다.

줄하는 일쉽게 말하면
AutoTokenizer.from_pretrained(...)Qwen 의 토크나이저를 불러온다택배 회사 고르기
tok(..., add_special_tokens=False)문장을 토큰 ID 로 바꾼다상자에 송장 붙이기
["input_ids"]결과 사전에서 번호 리스트만 꺼낸다송장 번호 목록
tok.decode([i])번호 하나를 글자로 되돌린다송장으로 상자 내용 확인

주의할 점

  • 이 예시는 토크나이저만 불러오고 모델은 불러오지 않습니다. 토크나이저 파일은 수 MB 라 CPU 에서 몇 초면 끝납니다.
  • 처음 실행할 때는 Hugging Face 에서 파일을 내려받으므로 인터넷이 필요합니다. Windows 에서는 이때 "symlinks" 경고가 한 번 보일 수 있는데, 캐시가 조금 더 자리를 차지한다는 안내일 뿐 결과에는 영향이 없습니다.
← 이전 절2장 · 용어 짚고 가기다음 절 →2장 · 토큰화: 문장을 레고 블록으로