- OpenAI를 그만둔 Andrej Karpathy가 새로 공개한 코드
- LLM 토큰화에 일반적으로 사용되는 (Byte Level) 바이트 쌍 인코딩(BPE) 알고리듬을 위한 미니멀/클린 코드
- Byte Level : UTF-8 인코딩된 문자열에 대해서 동작하기 때문
- BPE는 GPT-2 논문과 OpenAI의 관련 GPT-2 코드 릴리스에 의해 LLM에 대중화되었음
- 오늘날 모든 최신 LLM(예: GPT, Llama, Mistral)은 이 알고리듬을 사용하여 Tokenizer를 훈련함
- Repo에는 2개의 토크나이저가 있음. 두개 다 3가지 주요 동작을 실행
-
- 주어진 텍스트에 대해 Tokenizer의 어휘 및 병합 훈련
-
- 텍스트에서 토큰으로 인코딩
-
- 토큰에서 텍스트로 디코딩
- Tokenizer 베이스 클래스 와 가장 간단한 구현체인 BasicTokenizer, 입력 문자열을 정규식으로 분할하는 RegexTokenizer
- RegexTokenizer의 래퍼인 GPT4Tokenizer는 tiktoken 라이브러에서 GPT-4의 토큰화를 정확히 재현