Tokenize your documents at GB/s
Project description
Gigatoken
400-1600x faster than HuggingFace's tokenizers, drop-in replacement.
Tokenize your text data at GB/s!
Keep in mind that both HF tokenizers and tiktoken are already running multithreaded Rust!
What is Gigatoken?
Gigatoken is the fastest tokenizer for language modeling. It supports a wide range of CPU hardware, and nearly all commonly used tokenizers.
Installation
pip install gigatoken
Usage
Gigatoken can be used with its own API, or in compatibility mode with HuggingFace Tokenizers or Tiktoken.
Compatibility Mode (Easiest)
import gigatoken as gt
# Minimum change from existing HuggingFace tokenizers usage (compatibility mode)
hf_tokenizer = ...
tokenizer = gt.Tokenizer(hf_tokenizer).as_hf()
# tokenizer can be used in the same contexts as hf_tokenizer
tokens = tokenizer.encode_batch(["This is a tes runningt string", "And here is another"])
A substantial amount of effort has been put into making sure the outputs match exactly with what you would get with HuggingFace Tokenizers in this setting, but this is at a non-negligible cost to performance. You can still expect way faster performance across the board, but not quite the 1000x you will get with the Gigatoken API.
Gigatoken API (Fastest)
import gigatoken as gt
tokenizer = gt.Tokenizer("Qwen/Qwen3-8B") # Accepts HF model names
file_source = gt.TextFileSource(["owt_train.txt"], separator=b"<|endoftext|>")
tokens = tokenizer.encode_files(file_source)
Using the Gigatoken API lets the Rust implementation read data directly, and skips as much overhead as possible while allowing for maximum parallelism. Keep in mind that passing Python data structures through this API still incurs the overhead of reading from Python.
FAQ
Q: Did you just way over-optimize for a specific CPU and tokenizer?
No, I way over-optimized for every combination of these! The results are very consistent across CPUs (modern x86 and ARM), and across specific tokenizers.
Q: How can I quickly check if my tokenizer is supported?
You can try it out without installing anything! The following command will validate and time tokenization for a given HuggingFace model repo:
$ uvx gigatoken bench 'openai-community/gpt2' ~/data/owt_train.txt --in-memory --validate --comparison-limit 100MB
gigatoken: 1.316 s | 11920.51 MB at 9059.61 MB/s | 2704.05 Mtok at 2055.08 Mtok/s
hf: 25.385 s | 100.00 MB at 3.94 MB/s | 22.72 Mtok at 0.90 Mtok/s
gigatoken is 2299.75x faster than hf (by MB/s)
validation OK: 1 documents match
You can see help for these flags with uvx gigatoken bench --help.
AI Use Disclosure
A majority of this code base was crafted by hand without any use of AI (which can be seen from the project's Git history). In the final stages of the project, AI was used to assist:- Implementing the user-facing API
- Widening of compatibility, for instance generalizing and porting the pretokenizer implementations to support more tokenizers, less interesting features like padding/truncation/unicode normalization
- Porting SIMD strategies between AVX512/AVX2/NEON
- Final profiling stages and the last ~4x worth of performance from eliminating branch prediction and improving the pretoken cache hierarchy
- Refactoring and code reuse
Project details
Release history Release notifications | RSS feed
Download files
Download the file for your platform. If you're not sure which to choose, learn more about installing packages.
Source Distribution
Built Distributions
Filter files by name, interpreter, ABI, and platform.
If you're not sure about the file name format, learn more about wheel file names.
Copy a direct link to the current filters
File details
Details for the file gigatoken-0.4.1.tar.gz.
File metadata
- Download URL: gigatoken-0.4.1.tar.gz
- Upload date:
- Size: 688.4 kB
- Tags: Source
- Uploaded using Trusted Publishing? No
- Uploaded via: uv/0.11.28 {"installer":{"name":"uv","version":"0.11.28","subcommand":["publish"]},"python":null,"implementation":{"name":null,"version":null},"distro":{"name":"macOS","version":null,"id":null,"libc":null},"system":{"name":null,"release":null},"cpu":null,"openssl_version":null,"setuptools_version":null,"rustc_version":null,"ci":null}
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
6d2f2c54c43dec6c223cc752be9f44800254be38305baa8cb7cc8e8aa1b1416a
|
|
| MD5 |
6c81369151c20c373a31727b97f40b65
|
|
| BLAKE2b-256 |
b01da014418be68ae8fc4cb42e86a3dfa9fb8e015fd4d7aeaac9f5924910a65d
|
File details
Details for the file gigatoken-0.4.1-cp310-abi3-win_arm64.whl.
File metadata
- Download URL: gigatoken-0.4.1-cp310-abi3-win_arm64.whl
- Upload date:
- Size: 1.3 MB
- Tags: CPython 3.10+, Windows ARM64
- Uploaded using Trusted Publishing? No
- Uploaded via: uv/0.11.28 {"installer":{"name":"uv","version":"0.11.28","subcommand":["publish"]},"python":null,"implementation":{"name":null,"version":null},"distro":{"name":"macOS","version":null,"id":null,"libc":null},"system":{"name":null,"release":null},"cpu":null,"openssl_version":null,"setuptools_version":null,"rustc_version":null,"ci":null}
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
0e8b1bcb6c1e03cf4e634fd417bec41196776ad7ca8e46d81332c7125239746e
|
|
| MD5 |
c78efd0e5e7f6f5226a4e383901f7816
|
|
| BLAKE2b-256 |
ebaa3699bc38d46f96aa786a4eb957a5d9cfe896271f595065f4c0a840f435da
|
File details
Details for the file gigatoken-0.4.1-cp310-abi3-win_amd64.whl.
File metadata
- Download URL: gigatoken-0.4.1-cp310-abi3-win_amd64.whl
- Upload date:
- Size: 1.7 MB
- Tags: CPython 3.10+, Windows x86-64
- Uploaded using Trusted Publishing? No
- Uploaded via: uv/0.11.28 {"installer":{"name":"uv","version":"0.11.28","subcommand":["publish"]},"python":null,"implementation":{"name":null,"version":null},"distro":{"name":"macOS","version":null,"id":null,"libc":null},"system":{"name":null,"release":null},"cpu":null,"openssl_version":null,"setuptools_version":null,"rustc_version":null,"ci":null}
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
0102d10a9eee8e61746eed351f48ff4ded1999ff6a2f144ca9d6fb9d88859577
|
|
| MD5 |
c5be9856f3b3334e586d92f11fa3e3fc
|
|
| BLAKE2b-256 |
eeca7509d57bcbac37063a761afb9a8a973a7731ab1156e1271727e1b1204fa6
|
File details
Details for the file gigatoken-0.4.1-cp310-abi3-manylinux_2_17_x86_64.manylinux2014_x86_64.whl.
File metadata
- Download URL: gigatoken-0.4.1-cp310-abi3-manylinux_2_17_x86_64.manylinux2014_x86_64.whl
- Upload date:
- Size: 1.9 MB
- Tags: CPython 3.10+, manylinux: glibc 2.17+ x86-64
- Uploaded using Trusted Publishing? No
- Uploaded via: uv/0.11.28 {"installer":{"name":"uv","version":"0.11.28","subcommand":["publish"]},"python":null,"implementation":{"name":null,"version":null},"distro":{"name":"macOS","version":null,"id":null,"libc":null},"system":{"name":null,"release":null},"cpu":null,"openssl_version":null,"setuptools_version":null,"rustc_version":null,"ci":null}
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
962959c87de11cd6234c9c3162ce52fc6467667ed362acac6f7270f0e26a83a8
|
|
| MD5 |
8e8fcc28270b4ad997c356cc7d935053
|
|
| BLAKE2b-256 |
89980df1273ff112b3a92ee95f3dbdd6d61288609b6c4448b89cc8f7a04d20e1
|
File details
Details for the file gigatoken-0.4.1-cp310-abi3-manylinux_2_17_aarch64.manylinux2014_aarch64.whl.
File metadata
- Download URL: gigatoken-0.4.1-cp310-abi3-manylinux_2_17_aarch64.manylinux2014_aarch64.whl
- Upload date:
- Size: 1.4 MB
- Tags: CPython 3.10+, manylinux: glibc 2.17+ ARM64
- Uploaded using Trusted Publishing? No
- Uploaded via: uv/0.11.28 {"installer":{"name":"uv","version":"0.11.28","subcommand":["publish"]},"python":null,"implementation":{"name":null,"version":null},"distro":{"name":"macOS","version":null,"id":null,"libc":null},"system":{"name":null,"release":null},"cpu":null,"openssl_version":null,"setuptools_version":null,"rustc_version":null,"ci":null}
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
6c6ae3d13381b1e25510f6256ae7b9a444da546fc85a9c363bf8cad018148cd5
|
|
| MD5 |
3a365b4bc105b3d4defb6a0b9e4a682c
|
|
| BLAKE2b-256 |
895662686beb27941df934f3ba61abe5c93f6251106afdc417073346dbd4538c
|
File details
Details for the file gigatoken-0.4.1-cp310-abi3-macosx_11_0_arm64.whl.
File metadata
- Download URL: gigatoken-0.4.1-cp310-abi3-macosx_11_0_arm64.whl
- Upload date:
- Size: 1.3 MB
- Tags: CPython 3.10+, macOS 11.0+ ARM64
- Uploaded using Trusted Publishing? No
- Uploaded via: uv/0.11.28 {"installer":{"name":"uv","version":"0.11.28","subcommand":["publish"]},"python":null,"implementation":{"name":null,"version":null},"distro":{"name":"macOS","version":null,"id":null,"libc":null},"system":{"name":null,"release":null},"cpu":null,"openssl_version":null,"setuptools_version":null,"rustc_version":null,"ci":null}
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
0788b3584a028fe86d749d72d1364c6ec16f2b5917f18a608afb595218e19db2
|
|
| MD5 |
165701c13eb0122b331ee048f4345f58
|
|
| BLAKE2b-256 |
4a52b9b91fe1f57df91025809d777a1b27624e345b42335ebb91a00b081ca3f0
|
File details
Details for the file gigatoken-0.4.1-cp310-abi3-macosx_10_12_x86_64.whl.
File metadata
- Download URL: gigatoken-0.4.1-cp310-abi3-macosx_10_12_x86_64.whl
- Upload date:
- Size: 1.7 MB
- Tags: CPython 3.10+, macOS 10.12+ x86-64
- Uploaded using Trusted Publishing? No
- Uploaded via: uv/0.11.28 {"installer":{"name":"uv","version":"0.11.28","subcommand":["publish"]},"python":null,"implementation":{"name":null,"version":null},"distro":{"name":"macOS","version":null,"id":null,"libc":null},"system":{"name":null,"release":null},"cpu":null,"openssl_version":null,"setuptools_version":null,"rustc_version":null,"ci":null}
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
f63930c30f870773770b1eefca95fb114bd8c38147518fe2b87d44e7760d4a05
|
|
| MD5 |
e5ef1cc2ce7efdeb33fc178e172f515d
|
|
| BLAKE2b-256 |
37082b80d8eb10bcd29c639896748fecf55e1e197ba3181387409f348fdf63f5
|