From Language Models over Tokens to Language Models over Characters
This addresses a practical problem for programmers building user applications on top of language models, by reducing sensitivity to tokenization details, though it is incremental in nature.
The paper tackles the challenge of converting token-level language models to character-level ones, presenting exact and approximate algorithms that achieve accurate approximations with reasonably fast speeds and a significant improvement in compression rate (bits/byte).
Modern language models are internally -- and mathematically -- distributions over $\it{token}$ strings rather than $\it{character}$ strings, posing numerous challenges for programmers building user applications on top of them. For example, if a prompt is specified as a character string, it must be tokenized before passing it to the token-level language model. Thus, the tokenizer and consequent processing are very sensitive to the specification of the prompt (e.g., whether the prompt ends with a space or not). This paper presents algorithms for converting token-level language models to character-level ones. We present both exact and approximate algorithms. In the empirical portion of the paper, we benchmark the practical runtime and approximation quality. Across four publicly available language models, we find that -- even with a small computation budget -- our method is able to accurately approximate the character-level distribution at reasonably fast speeds, and that a significant improvement in the language model's compression rate (bits/byte) is achieved.