프로젝트 소개
Swift Tokenizers는 Hugging Face의 Rust `tokenizers` 크레이트를 래핑하는 Swift 패키지로, Swift 애플리케이션에 고성능 토큰화를 제공합니다. Swift Transformers와 달리 토큰화에만 집중하며 Hugging Face Hub에 의존하지 않으므로, 모델 파일은 별도로 다운로드되어 로컬 디렉터리에서 로드됩니다.
요구 사항 및 플랫폼 지원: Swift 6.2 이상 (Apple 플랫폼에서 Xcode 26), macOS 14+, iOS 17+, 그리고 x86_64 및 aarch64 아키텍처의 Linux. Rust 백엔드는 Apple 및 Linux 슬라이스를 포함하는 단일 SE-0482 staticLibrary artifactbundle으로 제공되므로, 조건부 매니페스트 로직 없이도 플랫폼 전반에 걸쳐 단일 의존성이 작동합니다. Linux 바이너리는 Ubuntu 22.04의 glibc를 타겟으로 하며 새로운 Ubuntu LTS 이미지와 호환됩니다. musl은 지원되지 않습니다. artifact 유형이 Swift 6.2에서 도입되었기 때문에 이전 툴체인은 패키지를 해결할 수 없습니다.
핵심 기능:
- tokenizer.json 및 tokenizer_config.json, config.json, chat_template.jinja와 같은 사이드카 파일이 포함된 로컬 디렉터리에서 토크나이저 로드.
- 텍스트를 토큰 ID로 인코딩하고 토큰 ID를 텍스트로 디코딩.
- encodeWithMetadata는 토큰 문자열, 마스크, 시퀀스 인덱스, 단어 인덱스, 오프셋 범위를 포함하여 더 풍부한 인코딩 데이터를 반환합니다.
- StreamingDetokenizer는 완전한 Unicode 스칼라가 사용 가능한 즉시 텍스트 청크를 방출하며, 스트림 길이에 따라 증가하지 않는 내부 상태를 한정된 상태로 유지합니다. 중단된 스트림을 재개할 때 이전 토큰으로 시딩할 수 있습니다.
- applyChatTemplate을 통한 채팅 템플릿 적용, 함수 정의를 포함한 도구 호출 지원.
- 배치 인코딩 및 토큰화 작업.
API는 실패 시(잘못된 토큰 ID, 구성 불일치, 내부 Rust 오류) TokenizerError를 던지며, 타입화된 throws를 사용하여 호출자가 케이스를 포괄적으로 잡을 수 있습니다. 마이그레이션 섹션에서는 조용히 빈 결과를 반환하는 방식에서 던지는 방식으로의 변경 사항을 문서화하고, 다른 섹션에서는 패키지 의존성 교체 및 허브 기반 로딩에서 로컬 디렉터리 로딩으로 전환하는 것을 포함하여 Swift Transformers에서 마이그레이션하는 방법을 다룹니다.
README에는 M3 MacBook Pro에서 Swift Tokenizers 0.5.0과 Swift Transformers 1.3.2를 비교한 벤치마크 표가 포함되어 있으며, 더 빠른 토크나이저 로드, 토큰화, 디코딩 및 모델 로드 시간을 보고합니다. 벤치마크는 TOKENIZERS_ENABLE_BENCHMARKS 환경 변수 뒤에 게이트되어 있어 일반 소비자는 Metal을 필요로 하고 macOS 전용인 mlx-swift-lm을 가져오지 않습니다. 모델 로드 벤치마크는 Metal을 필요로 하며 xcodebuild를 통해 실행해야 합니다. 토크나이저 전용 벤치마크는 릴리스 구성으로 swift test를 사용하여 실행할 수 있습니다.
Comments
0 Rating appears after 10 ratings
Sign in to join the discussion.