grok-2-tokenizer / README.md
alvarobartt's picture
alvarobartt HF Staff
Update README.md
3616abf verified
---
library_name: transformers
tags:
- tokenizers
- sglang
license: other
license_name: grok-2
license_link: https://huggingface.co/xai-org/grok-2/blob/main/LICENSE
---
# Grok-2 Tokenizer
A 🤗-compatible version of the **Grok-2 tokenizer** (adapted from [xai-org/grok-2](https://huggingface.co/xai-org/grok-2)).
This means it can be used with Hugging Face libraries including [Transformers](https://github.com/huggingface/transformers),
[Tokenizers](https://github.com/huggingface/tokenizers), and [Transformers.js](https://github.com/xenova/transformers.js).
## Motivation
As Grok 2.5 aka. [xai-org/grok-2](https://github.com/xai-org/grok-2) has been recently released on the 🤗 Hub with [SGLang](https://github.com/sgl-project/sglang)
native support, but the checkpoints on the Hub won't come with a Hugging Face compatible tokenizer, but rather with a `tiktoken`-based
JSON export, which is [internally read and patched in SGLang](https://github.com/sgl-project/sglang/blob/fd71b11b1d96d385b09cb79c91a36f1f01293639/python/sglang/srt/tokenizer/tiktoken_tokenizer.py#L29-L108).
This repository then contains the Hugging Face compatible export so that users can easily interact and play around with the Grok-2 tokenizer,
besides that allowing to use it via SGLang without having to pull the repository manually from the Hub and then using a mount, to prevent from directly having
to point to the tokenizer path, so that Grok-2 can be deployed as:
```bash
python3 -m sglang.launch_server --model-path xai-org/grok-2 --tokenizer-path alvarobartt/grok-2-tokenizer --tp-size 8 --quantization fp8 --attention-backend triton
```
Rather than the former 2-step process:
```bash
hf download xai-org/grok-2 --local-dir /local/grok-2
python3 -m sglang.launch_server --model-path /local/grok-2 --tokenizer-path /local/grok-2/tokenizer.tok.json --tp-size 8 --quantization fp8 --attention-backend triton
```
## Example
```py
from transformers import AutoTokenizer
tokenizer = AutoTokenizer.from_pretrained("alvarobartt/grok-2-tokenizer")
assert tokenizer.encode("Human: What is Deep Learning?<|separator|>\n\n") == [
35406,
186,
2171,
458,
17454,
14803,
191,
1,
417,
]
assert (
tokenizer.apply_chat_template(
[{"role": "user", "content": "What is the capital of France?"}], tokenize=False
)
== "Human: What is the capital of France?<|separator|>\n\n"
)
```
> [!NOTE]
> This repository has been inspired by earlier similar work by [Xenova](https://huggingface.co/Xenova) in [`Xenova/grok-1-tokenizer`](https://huggingface.co/Xenova/grok-1-tokenizer).