BPE 서브워드 토크나이저
기본적으로 모델에서 사용하는 토크나이저 즉 컴퓨터가 학습할 수 있게 자연어를 임베딩 전까지 진행시켜주는 것이 토크나이저이다.
허깅페이스에서 제공하는 transformer에 AutoTokenizer를 사용하여 해당 모델이 사용한 토크나이저를 불러올수 있다.
나는 여기서 궁금증을 가지게 되었는데, 이 토큰화를 하는 과정이 되게 중요할 것인데 어떠한 방식으로 진행하는지 궁금해지기 시작했다.
공부하면서 배웠지만 시간이 흘러가니 다시 잊게 되어 다시 한번 찾아보았다.
토큰화란 기본적으로 글자를 숫자로 변경하는 것
문장을 토큰으로 바꾸는 알고리즘은 여러개가 존재하였다.
단어 기반(Word-base Tokenization), 글자 기반(character-base Tokenization)
단어 기반에 경우 단어를 위주로 토큰화를 진행하는 것인데 이 과정에서 Dog’s, Dogs, Dogs 의미는 동일하지만
서로 다른 단어로 인식하는 바람에 단어 사전의 크기가 매우 커지는 단점이 존재한다.
이렇게 되면 모델의 성능은 떨어지게 될것이다.
글자 기반의 경우에는 Dog를 3가지 방식으로 표현하게 된다.
그리하여 서로 다른 단어가 공통되는 연결고리가 생길수도 있어 이 또한 모델의 성능을 낮출수 있게 된다.
그래서 서드워드 방식을 대부분 많이 사용하게 된다.
이 방식은 위에 나온 방식들과는 다르게 Dog의 경우 하나의 Dog로 D,o,g 로 나뉘어서는 안되고, Tokenization 은 Token,ization 이런식으로 분할되어야 한다.
이중에서도 가장 대표적으로 사용되는 알고리즘은 BPE라고도 불리는 Byte Pair Encoding 이다.
여기까지는 내가 알고있었지만 다시 한번 까먹어서 정리하는 과정이였고, 이 뒤로는 발견한 내용들이다.
이런식으로 토큰화 과정을 알게되니, 다른 언어들의 경우에는 어떤방식의 토큰화를 하는지 궁금하게 되었고, Gork,GPT,와 같은 대규모 모델들은 학습을 진행할떄 다른언어들을 어떻게 토큰화 하고 학습을 진행하는지 궁금해지기 시작했다.
우선 딥시크는 어떤 방식으로 토큰화를 하는지 궁금하여 찾아보았다.
BPE 방식을 통해서 토큰화를 사용한다
일반적인 BPE를 사용하는게 아니라 Llama 모델의 토큰나이저를 사용한다.
Byte-Level BPE 기반
라마 토크나이저 코드
transformers/src/transformers/models/llama/tokenization_llama_fast.py at main · huggingface/transformers
🤗 Transformers: State-of-the-art Machine Learning for Pytorch, TensorFlow, and JAX. - huggingface/transformers
github.com
https://blog.sionic.ai/cuda-tokenizer
CUDA C 한국어 토크나이저 구현 | Sionic AI
CUDA C로 한국어 토크나이저를 구현하는 방법을 자세히 알아보세요. OOV 문제 해결과 성능 최적화 팁을 제공합니다.
blog.sionic.ai
OOV 발생시 처리하는 과정 리버스 엔지니어링으로 원리 구현
다국적 언어들이 발생하는 OOV를 다루는 내용이 자세히 표현되어 있다.
https://blog.sionic.ai/qwen3-moe-upscaling
Qwen 3 (큐웬 3) MoE 서빙 최적화를 위한 사이오닉의 전략
최신 AI 모델 큐웬3(Qwen3)의 핵심은 Mixture-of-Experts(MoE) 구조에 있습니다. 하지만 MoE의 성능을 최대화하려면 단순히 자주 선택되는 전문가만 쓰는 것이 아닌, 실제로 AI 출력 품질에 기여하는 전문가
blog.sionic.ai