Cortex-A-0.5 / cortex /tokenizer.py
Madarabr's picture
Cortex-A 0.5 live chat: KV-cache decode (CPU) + streaming + tok/s + progress panel
4f42afe verified
Raw
History Blame Contribute Delete
968 Bytes
"""Thin wrapper around the custom CortexSym tokenizer (tokenizers library)."""
from __future__ import annotations
from pathlib import Path
from tokenizers import Tokenizer
from .config import BOS_ID, EOT_ID, PAD_ID, UNK_ID
_DEFAULT = Path(__file__).resolve().parent.parent / "tokenizer" / "tokenizer.json"
class CortexTokenizer:
def __init__(self, path: str | Path = _DEFAULT):
self.tok = Tokenizer.from_file(str(path))
self.bos, self.eot, self.pad, self.unk = BOS_ID, EOT_ID, PAD_ID, UNK_ID
@property
def vocab_size(self) -> int:
return self.tok.get_vocab_size(with_added_tokens=True)
def encode(self, text: str, add_bos: bool = False, add_eot: bool = True) -> list[int]:
ids = self.tok.encode(text).ids
if add_bos:
ids = [self.bos] + ids
if add_eot:
ids = ids + [self.eot]
return ids
def decode(self, ids) -> str:
return self.tok.decode(list(ids))