proto_Ares / training /train_tokenizer.py
Ares Builder
Add transparent policy architecture and BPE tokenizer build
6995b22
Raw
History Blame Contribute Delete
1.15 kB
"""Train Ares's first inspectable byte-level BPE tokenizer.
Run from a notebook after installing: pip install tokenizers
"""
import argparse, json
from tokenizers import Tokenizer, models, pre_tokenizers, decoders, trainers
def main():
p=argparse.ArgumentParser(); p.add_argument('--data',default='corpus.txt'); p.add_argument('--out',default='ares_tokenizer.json'); p.add_argument('--vocab-size',type=int,default=8192); args=p.parse_args()
tok=Tokenizer(models.BPE(unk_token='[UNK]'))
tok.pre_tokenizer=pre_tokenizers.ByteLevel(add_prefix_space=False)
tok.decoder=decoders.ByteLevel()
trainer=trainers.BpeTrainer(vocab_size=args.vocab_size,min_frequency=2,special_tokens=['[PAD]','[BOS]','[EOS]','[UNK]'],show_progress=True)
tok.train([args.data],trainer); tok.save(args.out)
sample='Ares can write code, explain an algorithm, and continue a fictional scene.'
enc=tok.encode(sample); assert tok.decode(enc.ids)==sample, repr(tok.decode(enc.ids))
print(json.dumps({'vocab_size':tok.get_vocab_size(),'sample_tokens':len(enc.ids),'round_trip':'passed','output':args.out},indent=2))
if __name__=='__main__': main()