Instructions to use jfrick/scholarly-code-tokenizer with libraries, inference providers, notebooks, and local apps. Follow these links to get started.
- Libraries
- Transformers
How to use jfrick/scholarly-code-tokenizer with Transformers:
# pip install -U transformers accelerate # Load model directly from transformers import AutoModel model = AutoModel.from_pretrained("jfrick/scholarly-code-tokenizer", device_map="auto") - Notebooks
- Google Colab
- Kaggle
|
Download README.md from jfrick/scholarly-code-tokenizer: direct link, hf CLI and curl.
- Browser
- Download file 3.36 kB
-
https://huggingface.co/jfrick/scholarly-code-tokenizer/resolve/main/README.md
- Command line
-
hf download hf://jfrick/scholarly-code-tokenizer/README.md
-
curl -L -o README.md https://huggingface.co/jfrick/scholarly-code-tokenizer/resolve/main/README.md
3.36 kB
| library_name: transformers | |
| language: | |
| - en | |
| tags: | |
| - tokenizer | |
| - byte-level-bpe | |
| - code | |
| - tool-calling | |
| # Code and tool-calling tokenizer | |
| The default is **structured-code-v1: 32,768 entries, fitted on approximately 64 MiB** | |
| on Modal. It was explicitly selected for code and tool-calling workloads. | |
| This repository contains tokenizer assets, not language-model weights. | |
| ```python | |
| from transformers import AutoTokenizer | |
| tokenizer = AutoTokenizer.from_pretrained("jfrick/scholarly-code-tokenizer") | |
| text = '{"name":"read_file","arguments":{"path":"src/main.py"}}' | |
| ids = tokenizer.encode(text, add_special_tokens=False) | |
| assert tokenizer.decode(ids, clean_up_tokenization_spaces=False) == text | |
| # The previous balanced default remains available: | |
| previous = AutoTokenizer.from_pretrained( | |
| "jfrick/scholarly-code-tokenizer", subfolder="variants/2048mib-32768" | |
| ) | |
| ``` | |
| The default is also available in `variants/structured-code-v1-32768`. All 18 original | |
| learning-curve variants remain available under their existing names. Pin a commit | |
| revision when training models; changing a tokenizer requires retokenizing data. | |
| Old tokenized shards and model checkpoints must not be relabeled with the new IDs. | |
| ## Fitting and measurements | |
| The focused fitting mixture is 40% real Python excerpts, 20% JSON, 20% Git diffs and | |
| 20% tool-call formats by UTF-8 bytes. JSON, diffs and tool formats are generated | |
| controlled fixtures derived from Python excerpts. Fitting and evaluation source | |
| parents are disjoint, but generator templates are shared. They are not production | |
| traces. Source Python comes from the pinned, license-filtered CodeParrot inventory | |
| in the original [source recipe](recipe.json); raw source text is not distributed. | |
| Source datasets retain their respective licenses and provenance. | |
| Compared with the previous 2 GiB / 32K balanced default, this tokenizer uses 2.81% | |
| fewer tokens on Python, 8.21% fewer on JSON, 11.83% fewer on Git diffs, and 13.97% | |
| fewer on tool-format fixtures. It uses **13.99% more tokens on the broader scholarly | |
| mixture**. This is an explicit specialization trade-off, not a claim of better | |
| language-model quality or valid tool execution. | |
| [Structured-output report](research/structured-code-v1/REPORT.md) · | |
| [PDF](research/structured-code-v1/research-report.pdf) · | |
| [Original learning-curve report](research/REPORT.md) | |
| The reports preserve their original experimental conclusions; this model card | |
| records the subsequent user decision to promote the focused tokenizer. | |
| ## Contract and reproducibility | |
| Byte-level BPE; full 256-byte alphabet; no normalization, prefix insertion or | |
| automatic BOS/EOS. PAD=0, BOS=1, EOS=2, UNK=3. Add document boundaries explicitly. | |
| No model context length is implied. All held-out examples pass exact round-trip | |
| and zero-UNK checks. JSON validity and tool-call success require model evaluation. | |
| Standard loading is verified with `transformers==4.57.6`, `tokenizers==0.22.2`; | |
| no custom remote code is required. Decode with `skip_special_tokens=False` to | |
| preserve special literals. The Rust `tokenizers.Tokenizer.from_file` API also works. | |
| [Publication manifest](publication-manifest.json) pins all tokenizer hashes. | |
| The default variant includes its immutable freeze manifest, fitting corpus metadata | |
| and evaluation metrics. [Implementation PR](https://github.com/koogle/lm-exploration/pull/8). | |