|
--- |
|
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). |