Skip to main content

🛏️ trimbed

CI codecov Documentation PyPI version Python versions License

Trim a tokenizer's vocabulary, and optionally its model's embedding table, down to the subset you actually need. You can specify "what you need" explicitly, by presets, or by providing a corpus (one or more datasets) as an anchor for what you'd actually like to keep.

The most typical use would be to provide a corpus of the domain and/or language that is relevant for you, and then specifying to, for example, keep only the top 32k tokens from that corpus, or to remove the tail of the corpus by only keeping 99.95% of its tokens. But more options are available!

Read the documentation for the full guides and the API reference.

Installation

pip install trimbed                       # tokenizer trimming only
pip install "trimbed[model]"              # + torch, for trimming embeddings
pip install "trimbed[model,convert]"      # + sentencepiece/protobuf, for spiece-only tokenizers

Or preferably with uv add.

From a git clone the above would be uv sync, uv sync --extra model and uv sync --all-extras.

Quickstart

Installing the package comes with the trimbed command, which is the main entrypoint for users. It has a number of subcommands: trim, count, inspect and presets. trimbed --help lists them.

If you have only cloned the repository, python -m trimbed.cli works too.

# What am I dealing with?
trimbed inspect --model codefuse-ai/F2LLM-v2-160M

# Trim tokenizer + model from a config file
trimbed trim --config my_config.yaml

# Same config but overridden one value and nothing written (dry-run)
trimbed trim --config my_config.yaml --dry-run selection.top_k=30000

# Or without a config, keeping a preset
# (only all alphanumeric tokens in the vocab are kept),
# and the model is not trimmed
trimbed trim --model google-bert/bert-base-multilingual-cased \
    --keep-preset alphanumeric --output-dir trimmed/bert --no-trim-model

From Python:

from trimbed import TrimConfig, TrimPipeline

config = TrimConfig.from_yaml("my_config.yaml")
report = TrimPipeline(config).run()
print(report.render())

examples/ has a few Python examples: inspecting a tokenizer, trimming from rules alone, trimming over a corpus with the model, and registering your own preset.

What it does

  • One code path for every family. trimbed operates on the tokenizers backend document (tokenizer.json) rather than on SentencePiece protobufs, so BPE, WordPiece, Unigram and WordLevel are all covered. The vocabulary surgery itself is delegated to skeletoken.
  • Selection with provenance. Structural tokens, must-keep rules and the corpus frequency ranking are unioned, closed over BPE merge dependencies, then capped. Every kept token records why it survived.
  • Prompts and chat templates stay intact. keep_texts and keep_chat_template keep the ids a prompt is made of, so it goes on tokenizing exactly as it does now.
  • The model follows. Embedding table, output head, head bias, tied and untied, encoder-decoders, pad_to_multiple_of alignment rows, and the token ids stored on the config and generation config.
  • It proves its work. Both tokenizers re-encode sampled texts, and both models can be run and compared, before anything is called a success.

Documentation

Command line The four subcommands and their flags
Configuration Every config field, and how the override layers stack
How selection works What survives a trim and why
Trimming a model Embedding and head surgery, and verification
Output and reports What lands in the output directory
Extending trimbed A new tokenizer family or a new preset
API reference Every public symbol

Contributing

See CONTRIBUTING.md. In short: make style, make test and make build-docs before you push.

Acknowledegments

We rely heavily on the internals of skeletoken to map out tokenizers to a standardized Pydantic format.

Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Source Distribution

trimbed-0.0.2.tar.gz (221.0 kB view details)

Uploaded Source

Built Distribution

If you're not sure about the file name format, learn more about wheel file names.

trimbed-0.0.2-py3-none-any.whl (72.2 kB view details)

Uploaded Python 3

File details

Details for the file trimbed-0.0.2.tar.gz.

File metadata

  • Download URL: trimbed-0.0.2.tar.gz
  • Upload date:
  • Size: 221.0 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? Yes
  • Uploaded via: uv/0.12.7 {"installer":{"name":"uv","version":"0.12.7","subcommand":["publish"]},"python":null,"implementation":{"name":null,"version":null},"distro":{"name":"Ubuntu","version":"24.04","id":"noble","libc":null},"system":{"name":null,"release":null},"cpu":null,"openssl_version":null,"setuptools_version":null,"rustc_version":null,"ci":true}

File hashes

Hashes for trimbed-0.0.2.tar.gz
Algorithm Hash digest
SHA256 291c4993b9a785e0ac7eeb6bae1ecc2c168916b4def5bdc104a92e829fa9aa1e
MD5 a6a8a3555463f6382cce76d1f3a94250
BLAKE2b-256 6c3b8d9a6dd1035e9db8eef8b9dc2f2bba69dff42e514dc8e2c737c91b2fbebe

See more details on using hashes here.

File details

Details for the file trimbed-0.0.2-py3-none-any.whl.

File metadata

  • Download URL: trimbed-0.0.2-py3-none-any.whl
  • Upload date:
  • Size: 72.2 kB
  • Tags: Python 3
  • Uploaded using Trusted Publishing? Yes
  • Uploaded via: uv/0.12.7 {"installer":{"name":"uv","version":"0.12.7","subcommand":["publish"]},"python":null,"implementation":{"name":null,"version":null},"distro":{"name":"Ubuntu","version":"24.04","id":"noble","libc":null},"system":{"name":null,"release":null},"cpu":null,"openssl_version":null,"setuptools_version":null,"rustc_version":null,"ci":true}

File hashes

Hashes for trimbed-0.0.2-py3-none-any.whl
Algorithm Hash digest
SHA256 3c3c22ce6c4b666f4894bab63978cb61800542726ae10858d53d44b735a77f75
MD5 6ad65279fd3ac0d33fee0cab4a3ce13e
BLAKE2b-256 533e2858be38accc1bc7d7a0f50f55bc9ca1f846c807f59d0592d7c647f70344

See more details on using hashes here.

Release history Release notifications | RSS feed

0.0.4

2 files

0.0.3

2 files

This release

0.0.2 This release

2 files

0.0.1

2 files

Anthropic, PBC Visionary sponsor Bloomberg Visionary sponsor Hudson River Trading Visionary sponsor Meta Visionary sponsor NVIDIA Visionary sponsor Microsoft Sustainability sponsor Depot Continuous Integration AWS Cloud computing and Security Sponsor Datadog Monitoring Fastly CDN Google Download Analytics Sentry Error logging StatusPage Status page