google-site-verification=nyyo4syD1Kx8t1uJ9PEMOwyXyOI6cVFV28KTk6Q2aq0
언제나 좋은날
반려동물관리,건강,다이어트,관련 정보

LLM 토큰화(Tokenization) 완전 가이드: BPE부터 SentencePiece까지

LLM 토큰화 완벽 가이드! BPE, WordPiece, SentencePiece 차이점과 원리를 쉽게 설명합니다. GPT, BERT가 텍스트를 처리하는 방식, 토큰 수가 다른 이유까지 한 번에 정리했어요.

LLM 토큰화(Tokenization) 완전 가이드: BPE부터 SentencePiece까지

왜 같은 문장인데 모델마다 토큰 수가 다를까? LLM 성능의 시작점은 바로 '토큰화'입니다.

토큰화란 무엇인가


처음 LLM을 다루기 시작했을 때 가장 이해 안 됐던 개념이 뭐였냐면요, 바로 토큰이었어요. 분명 문장은 짧은데 "토큰 초과"라는 에러가 뜨고, 같은 영어 문장을 넣어도 모델마다 비용이 다르게 나오고… 솔직히 좀 억울하더라구요. 알고 보니 그 모든 차이의 출발점이 바로 토큰화(Tokenization)였습니다. BPE, WordPiece, SentencePiece 같은 용어들은 논문이나 문서에서 자주 보이는데, 막상 한 번에 정리된 설명은 찾기 어렵더라구요. 그래서 이 글에서는 수식이나 과한 이론은 최대한 빼고, 실제 LLM을 쓰는 사람 입장에서 "아, 그래서 이런 차이가 나는구나" 하고 감 잡을 수 있게 토큰화를 처음부터 끝까지 정리해보려고 합니다.

📋 목차

1. 토큰화(Tokenization)의 기본 개념 2. LLM에서 토큰화가 중요한 이유 3. BPE(Byte Pair Encoding) 쉽게 이해하기 4. WordPiece 토큰화 방식 5. SentencePiece의 특징과 장점 6. BPE·WordPiece·SentencePiece 비교 정리

토큰화(Tokenization)의 기본 개념

토큰화는 쉽게 말해서 텍스트를 작은 단위로 쪼개는 과정이에요. 컴퓨터는 우리처럼 문장을 통째로 이해하지 못하거든요. "안녕하세요"라는 문장도 컴퓨터에게는 그냥 의미 없는 문자열일 뿐이에요. 이걸 컴퓨터가 처리할 수 있는 숫자로 바꾸려면, 먼저 적당한 단위로 나눠야 해요.

예를 들어 "I love AI"라는 문장이 있다면, 이걸 ["I", "love", "AI"]처럼 단어 단위로 나눌 수도 있고, ["I", "lo", "ve", "A", "I"]처럼 더 잘게 나눌 수도 있어요. 어떻게 나누느냐에 따라 모델이 학습하는 방식도, 처리 속도도, 비용도 달라져요.

💡 핵심 포인트: 토큰화는 텍스트를 숫자로 변환하기 전에 거치는 필수 전처리 과정이에요. 토큰 = 모델이 이해하는 최소 단위라고 생각하시면 됩니다.

토큰화 방식은 크게 세 가지로 나눌 수 있어요. 단어 기반(Word-based)은 공백이나 구두점으로 단어를 나누는 방식이고, 문자 기반(Character-based)은 글자 하나하나를 토큰으로 보는 방식이에요. 그리고 요즘 LLM에서 가장 많이 쓰는 건 서브워드 기반(Subword-based)인데, 이건 단어보다 작고 문자보다 큰 단위로 쪼개는 방식이에요. BPE, WordPiece, SentencePiece가 모두 여기에 속해요.

LLM에서 토큰화가 중요한 이유

"토큰화가 그렇게 중요해?"라고 생각하실 수 있는데, 실제로 LLM 성능의 상당 부분이 토큰화에서 결정돼요. 왜 그런지 실제 사례로 설명해드릴게요.

첫째, 비용에 직접 영향을 줍니다. ChatGPT나 Claude 같은 API를 쓸 때, 요금은 토큰 수로 계산되잖아요. 같은 내용이라도 토큰화 방식에 따라 토큰 수가 달라져요. 한국어는 특히 영어보다 토큰이 많이 나오는 경우가 많아서, 같은 길이의 문장을 넣어도 비용이 더 나올 수 있어요.

둘째, 모델의 이해력에 영향을 줍니다. 토큰화가 이상하게 되면 모델이 문맥을 제대로 파악하지 못해요. 예를 들어 "맛있다"가 ["맛", "있", "다"]로 쪼개지면, 모델은 이게 한 단어라는 걸 알기 어려워져요. 반면 자주 쓰는 단어를 통째로 하나의 토큰으로 처리하면 이해도가 올라가요.

셋째, 컨텍스트 윈도우 효율성이 달라집니다. 모든 LLM에는 한 번에 처리할 수 있는 토큰 수 제한이 있어요. 4096 토큰, 8192 토큰 이런 식으로요. 토큰화 효율이 좋으면 같은 토큰 수로 더 많은 내용을 담을 수 있어요.

⚠️ 실제 사례: 영어 "Hello"는 보통 1토큰인데, 한국어 "안녕하세요"는 모델에 따라 2~5토큰까지 나올 수 있어요. 이게 바로 토큰화 방식의 차이예요.

BPE(Byte Pair Encoding) 쉽게 이해하기

BPE는 현재 GPT 시리즈를 포함한 많은 LLM에서 사용하는 토큰화 방식이에요. 이름이 어려워 보이지만 원리는 생각보다 간단해요.

BPE의 핵심 아이디어는 "자주 붙어 나오는 글자쌍을 하나로 합친다"는 거예요. 처음에는 텍스트를 글자 단위로 다 쪼개요. 그다음 통계를 내서 가장 자주 붙어 나오는 두 글자를 찾아요. 그걸 합쳐서 새로운 토큰으로 만들어요. 이 과정을 원하는 어휘 수가 될 때까지 반복하는 거예요.

📝 BPE 동작 예시

원본: "low lower lowest"
1단계: l, o, w, l, o, w, e, r, l, o, w, e, s, t (글자 단위)
2단계: "lo"가 자주 나오니까 합침 → lo, w, lo, w, e, r, lo, w, e, s, t
3단계: "low"가 자주 나오니까 합침 → low, low, e, r, low, e, s, t
계속 반복...

이렇게 하면 자주 쓰는 단어나 표현은 통째로 하나의 토큰이 되고, 드물게 나오는 단어는 여러 조각으로 나뉘어요. GPT-3, GPT-4, LLaMA 등이 BPE 또는 BPE 변형을 사용해요. OpenAI의 경우 tiktoken이라는 토크나이저를 쓰는데, 이게 BPE 기반이에요.

WordPiece 토큰화 방식

WordPiece는 구글에서 개발한 토큰화 방식으로, BERT가 대표적으로 사용하고 있어요. BPE랑 비슷해 보이지만 합칠 쌍을 선택하는 기준이 달라요.

BPE는 단순히 "빈도가 높은" 쌍을 합치지만, WordPiece는 "합쳤을 때 전체 텍스트의 우도(likelihood)가 가장 높아지는" 쌍을 선택해요. 쉽게 말하면, 합쳤을 때 가장 '그럴듯한' 조합을 고르는 거예요. 통계적으로 더 정교한 방식이라고 볼 수 있죠.

WordPiece의 특징 중 하나는 ##이라는 접두어를 쓴다는 거예요. 단어의 시작 부분과 중간 부분을 구분하기 위해서예요. 예를 들어 "playing"은 ["play", "##ing"]으로 토큰화될 수 있어요. "##"이 붙은 건 "이건 단어 중간이야"라는 표시인 거죠.

💡 사용 모델: BERT, DistilBERT, Electra 등 구글 계열 모델들이 WordPiece를 사용해요. HuggingFace의 transformers 라이브러리에서도 많이 볼 수 있어요.

SentencePiece의 특징과 장점

SentencePiece는 구글에서 만든 또 다른 토큰화 도구인데, 앞의 둘과는 조금 다른 접근을 해요. BPE와 WordPiece가 "알고리즘"이라면, SentencePiece는 "언어에 독립적인 토큰화 프레임워크"에 가까워요.

가장 큰 특징은 사전 토큰화(pre-tokenization)가 필요 없다는 거예요. BPE나 WordPiece는 보통 먼저 공백 기준으로 단어를 나눈 다음에 서브워드로 쪼개요. 근데 SentencePiece는 원본 텍스트를 바로 처리해요. 공백도 하나의 문자로 취급하죠. 이게 왜 중요하냐면, 한국어나 일본어, 중국어처럼 공백이 없거나 적은 언어에서도 잘 작동하기 때문이에요.

✅ SentencePiece의 장점

  • 언어 독립적 - 어떤 언어든 동일한 방식으로 처리
  • 전처리 불필요 - 원본 텍스트 그대로 입력 가능
  • 가역성 - 토큰에서 원래 텍스트로 완벽하게 복원 가능
  • BPE와 Unigram 모두 지원 - 용도에 맞게 선택 가능

SentencePiece는 T5, ALBERT, XLNet, LLaMA 등 다양한 모델에서 사용되고 있어요. 특히 다국어 모델이나 한국어 특화 모델에서 자주 보이죠. 공백을 "▁"(밑줄) 기호로 표시하는 것도 특징이에요. 예를 들어 "I love you"는 ["▁I", "▁love", "▁you"]처럼 되는데, "▁"가 "여기가 단어 시작이야"를 의미해요.

BPE·WordPiece·SentencePiece 비교 정리

세 가지 토큰화 방식을 한눈에 비교해볼게요. 각각의 특징과 어떤 모델에서 쓰이는지 정리했어요.

구분 BPE WordPiece SentencePiece
개발사 - Google Google
병합 기준 빈도 우도(Likelihood) BPE/Unigram 선택
전처리 필요 필요 불필요
다국어 지원 보통 보통 우수
대표 모델 GPT, LLaMA BERT, Electra T5, ALBERT

어떤 걸 써야 할까요? 사실 대부분의 경우 모델을 선택하면 토크나이저도 함께 정해져요. GPT를 쓰면 BPE 기반 tiktoken을, BERT를 쓰면 WordPiece를 쓰게 되는 거죠. 다만 직접 모델을 학습시키거나 커스텀 토크나이저를 만들 때는 데이터 특성에 맞게 선택하시면 돼요. 한국어가 많다면 SentencePiece가 유리하고, 영어 중심이라면 BPE도 충분해요.

✍️ 마치며

오늘 LLM 토큰화에 대해 BPE부터 SentencePiece까지 정리해봤어요. 처음엔 복잡해 보이지만, 결국 핵심은 "텍스트를 어떻게 쪼개느냐"예요. 자주 쓰는 표현은 통째로, 드문 표현은 잘게. 이 원리만 이해하면 왜 모델마다 토큰 수가 다른지, 왜 한국어가 비용이 더 나오는지 이해할 수 있어요. LLM을 더 효율적으로 쓰고 싶다면, 토큰화를 이해하는 게 첫걸음이에요. 오늘 글이 도움이 되셨길 바랍니다! 💙



#LLM토큰화 #Tokenization #BPE #WordPiece #SentencePiece #자연어처리 #NLP #딥러닝

댓글 쓰기