tiktoken과 BPE — 토크나이저가 텍스트를 나누는 방식
tiktoken과 BPE
언어 모델은 사람처럼 글자를 읽지 않고 숫자(토큰)의 나열로 텍스트를 봐요. BPE(Byte Pair Encoding)는 텍스트를 토큰으로 바꾸는 방법 중 하나인데, tiktoken의 교육용 서브모듈이 이 과정을 더 쉽게 배우게 해 줘요.
BPE가 가진 좋은 성질
공식 문서가 강조하는 BPE의 장점은 네 가지예요.
- 역변환 가능하고 무손실 — 토큰을 다시 원래 텍스트로 되돌릴 수 있어요.
- 어떤 텍스트든 처리 — 토크나이저 훈련 데이터에 없던 텍스트라도 동작해요.
- 압축 효과 — 토큰 시퀀스가 원본 바이트보다 짧아요. 실무에서 토큰 하나당 약 4바이트에 해당해요.
- 공통 부분 단어 인식 — 예를 들어 영어의 흔한 부분 단어인
ing을 보면, "encoding"은encod와ing으로 자주 나뉘어요. 모델이 여러 맥락에서 같은ing토큰을 계속 보게 되면서 일반화가 좋아져요.
교육용 서브모듈
BPE를 더 알고 싶다면 tiktoken._educational 서브모듈이 친절해요. 시각화 코드도 포함돼 있어요.
from tiktoken._educational import *
# Train a BPE tokeniser on a small amount of text
enc = train_simple_encoding()
# Visualise how the GPT-4 encoder encodes text
enc = SimpleBytePairEncoding.from_tiktoken("cl100k_base")
enc.encode("hello world aaaaaaaaaaaa")
더 알아보기
- tiktoken 저장소
- tiktoken/core.py — 토크나이저 API 정의