피드로 돌아가기
Dev.toAI/ML
원문 읽기
I built the algorithm behind ChatGPT from scratch — here's what I learned
Tushar Singla이 순수 Python으로 BPE 토크나이저를 처음부터 구현하여 GPT-2/GPT-3/GPT-4가 사용하는 토큰화 메커니즘의 작동 원리 파악
AI 요약
Context
LLM의 토크나이저 작동 방식을 개념 학습만으로는 이해하기 어렵다. 텍스트가 숫자 시퀀스로 변환되는 과정, 특히 BPE(Byte Pair Encoding) 알고리즘에서 단어 병합 규칙의 순서가 갖는 중요성을 실제 구현 없이 파악하기 부족하다.
Technical Solution
- YouTube 자막을 수집하여 약 50-60개 동영상의 영어 + 힌디어 혼합 코퍼스(corpus.txt) 구성: youtube-transcript-api로 자동 수집
- 정규식 패턴 2개(r"[.*?]", r"\s+")로 [Music], [Applause] 같은 메타데이터 제거 및 공백 정규화: 청소 효율성 90% 달성
- 개별 문자 단위 어휘로 시작하여 가장 빈번하게 나타나는 인접 토큰 쌍을 반복 병합: 8,000회 반복으로 7,915 어휘 크기 도달
- 병합 규칙의 정확한 순서 유지를 학습: 규칙 3(t+h → th)이 규칙 17(th+e → the)보다 반드시 먼저 실행되어야 하며, 순서 변경 시 전체 토크나이저 동작 실패
- encode() 및 decode() 함수 구현으로 Python 패키지화: pip install git+https://github.com/tusharinqueue/tewtoken.git로 설치 가능
Impact
- Python 구현 처리 속도: 320초 (초기 버전) vs 2초 (최적화 버전), 160배 성능 차이
- 최종 토크나이저 사양: 어휘 크기 7,915, 병합 규칙 8,000개, 양언어(English + Hindi) 지원
Key Takeaway
BPE 토크나이저는 신경망 없이 빈도 계산만으로 동작하는 순차 규칙 시스템이며, 병합 규칙의 수행 순서가 알고리즘 정확성을 좌우한다. ML을 학습하는 엔지니어가 토크나이저 같은 기초 인프라를 직접 구현하면 LLM 내부 작동 방식에 대한 근본적 이해를 확보할 수 있다.
실천 포인트
LLM 또는 NLP 파이프라인을 구축하는 팀에서 오픈소스 토크나이저(HuggingFace Tokenizers 등)를 사용할 때, 병합 규칙 리스트의 순서가 인코딩 결과를 결정하는 핵심 요소임을 인식하고, 도메인별 토크나이저 재훈련이 필요한 경우 BPE 알고리즘의 반복 병합 단계에서 코퍼스 기반 빈도 계산이 유일한 학습 메커니즘임을 활용할 수 있다.