Hugging Face, 토크나이저 라이브러리 tokenizers v1 공개
최근 30일 조회수 — 좋아요 —핵심 요약
허깅페이스가 구조 개편과 SIMD 기반 최적화로 기존 대비 최대 수십 배 빨라진 tokenizers v1을 출시했다.
Hugging Face가 토크나이저 라이브러리 tokenizers의 차기 버전 1(v1)에서 성능을 핵심 목표로 삼았다고 21일(현지시간) 공식 블로그를 통해 밝혔다. 회사에 따르면 이번 릴리스의 초점은 속도이며, 기존 v0.23 대비 수십 배 빠른 처리 성능을 기록했다. 다만 이번에 공개된 벤치마크 결과는 v1의 정식 출시판이 아닌 릴리스 후보(release candidate) 버전을 기준으로 측정됐다.
tokenizers는 텍스트를 모델이 읽을 수 있는 정수 토큰 목록으로 바꾸는 라이브러리로, 정규화(normalization)·사전 토큰화(pre-tokenization)·모델(model)·후처리(post-processing) 4단계로 동작한다. 이 중 실제 텍스트를 토큰 ID로 매핑하는 모델 단계가 이번 개선의 핵심이었다. Hugging Face가 측정한 10개 모델 계열 중 8개가 바이트 페어 인코딩(byte pair encoding, BPE) 방식을 쓰는데, BPE는 사전 토큰을 바이트 단위로 쪼갠 뒤 학습 시 정해진 순위(rank)에 따라 인접한 쌍을 반복적으로 병합해 나간다. 나머지 두 계열은 WordPiece와 Unigram 방식을 쓰며, v1도 이 세 가지 모델 유형을 모두 지원한다.
성능 개선은 라이브러리 구조 자체를 손보는 방식으로 이뤄졌다. Hugging Face가 공개한 표에 따르면 우선 단일 크레이트(crate)였던 구조를 워크스페이스로 분리해, 런타임에 필수적인 tk-encode와 직렬화·변환·학습을 각각 담당하는 tk-serialize, tk-convert, tk-train을 애플리케이션이 실제로 필요로 할 때만 연결하도록 했다. 병합 작업에 쓰는 데이터는 호출자가 소유한 스크래치 버퍼에 두어 루프가 메모리 할당기(allocator)를 거치지 않도록 하는 “no-alloc 모델” 방식도 도입했다.
가장 눈에 띄는 변화는 분할 패턴 탐색과 병합 루프 두 곳이다. 정규식 엔진 대신 SIMD 명령어를 활용해 비트스트림에 대한 불리언 연산으로 분할 지점을 찾는 “bitcannon” 방식을 적용했고, 병합 대상이 되는 조각들을 하나의 사전 할당된 버퍼 안에서 인트루시브 이중연결리스트(intrusive doubly-linked list)로 구성해 병합이 일어날 때마다 데이터를 옮기는 대신 인덱스 두 개만 갱신하도록 바꿨다.
Hugging Face는 이번 릴리스가 출력값·API·어휘집(vocabulary)·병합 순위를 v0.23과 동일하게 유지하면서 성능만 끌어올리는 것을 목표로 삼았다고 밝혔다. 즉 v1이 만들어내는 토큰 ID는 v0.23과 같으며, 기존에 로드하던 토크나이저 종류도 그대로 지원해 특정 방식에 국한되지 않는 범용성을 유지했다고 설명했다.
회사는 이번 작업이 gigatoken, tiktoken, kitoken, tokie, fastokens, wordchipper, ai-tokenizer 등 오픈소스 생태계의 다른 고속 토크나이저 프로젝트들에서 얻은 아이디어 덕분에 가능했다고 밝히며, 이번 리팩터링 이전에는 tokenizers의 성능이 낮아 외부 기여의 유인이 크지 않았다고 인정했다. 아울러 IBM, NVIDIA, ExecuTorch 팀이 패치를 제공하고 다양한 하드웨어에서 테스트를 도왔다고 전했다.
성능 측정치는 단일 스레드·멀티 스레드·스레드 확장성·모델별·언어별 비교와 지연 시간, 디코딩 처리량, 메모리 힙, 크레이트 크기 등을 포함해 tokbench 저장소에서 공개됐으며, 사용자가 자신의 하드웨어에서 직접 벤치마크를 재현할 수 있는 명령도 함께 제공된다고 밝혔다. 다만 이번 자료에는 구체적인 벤치마크 수치나 tokbench 저장소의 정확한 위치는 담겨 있지 않다.
읽기 목록은 이 브라우저에 저장됩니다.
출처
- tokenizers v1: encode, decode and scaling, measured — Hugging Face Blog
이 글은 위 출처를 근거로 자동 생성된 뒤 발행됐습니다. 원문을 함께 확인해 주세요. 교차 보도 없이 단독 출처로 작성됐습니다.