如果繼承了Tokenizer例如mTokenizer(GPT2Tokenizer),在__init__中加入了一些新tokens,這樣在save之后from_pretrained時不能用mTokenizer.from_pretrained,會報錯。
AssertionError: Non-consecutive added token '<|b_img|>' found. Should have index 50317 but has index 50257 in saved vocabulary.
這是因為from_pretrained調用時是先初始化實例,再從本地文件中加載詞表,因此mTokenizer初始化時會加入新tokens,而從本地詞表中又會再加一次,導致了重復。最好的做法是把加新tokens的過程移出__init__。