Huggingface salvar tokenizer

Oct 27 2020

Estou tentando salvar o tokenizer em abraçandoface para que possa carregá-lo mais tarde de um contêiner onde não preciso de acesso à internet.

BASE_MODEL = "distilbert-base-multilingual-cased"
tokenizer = AutoTokenizer.from_pretrained(BASE_MODEL)
tokenizer.save_vocabulary("./models/tokenizer/")
tokenizer2 = AutoTokenizer.from_pretrained("./models/tokenizer/")

No entanto, a última linha está apresentando o erro:

OSError: Can't load config for './models/tokenizer3/'. Make sure that:

- './models/tokenizer3/' is a correct model identifier listed on 'https://huggingface.co/models'

- or './models/tokenizer3/' is the correct path to a directory containing a config.json file

versão dos transformadores: 3.1.0

Infelizmente, como carregar o tokenizer salvo do modelo pré-treinado no Pytorch não ajudou.

Editar 1

Graças à resposta de @ ashwin abaixo, tentei save_pretrainede recebo o seguinte erro:

OSError: Can't load config for './models/tokenizer/'. Make sure that:

- './models/tokenizer/' is a correct model identifier listed on 'https://huggingface.co/models'

- or './models/tokenizer/' is the correct path to a directory containing a config.json file

o conteúdo da pasta tokenizer está abaixo:

Tentei renomear tokenizer_config.jsonpara config.jsone recebi o erro:

ValueError: Unrecognized model in ./models/tokenizer/. Should have a `model_type` key in its config.json, or contain one of the following strings in its name: retribert, t5, mobilebert, distilbert, albert, camembert, xlm-roberta, pegasus, marian, mbart, bart, reformer, longformer, roberta, flaubert, bert, openai-gpt, gpt2, transfo-xl, xlnet, xlm, ctrl, electra, encoder-decoder

Respostas

2 AshwinGeetD'Sa Oct 27 2020 at 17:41

save_vocabulary(), salva apenas o arquivo de vocabulário do tokenizer (Lista de tokens BPE).

Para salvar todo o tokenizer, você deve usar save_pretrained()

Assim, da seguinte forma:

BASE_MODEL = "distilbert-base-multilingual-cased"
tokenizer = AutoTokenizer.from_pretrained(BASE_MODEL)
tokenizer.save_pretrained("./models/tokenizer/")
tokenizer2 = DistilBertTokenizer.from_pretrained("./models/tokenizer/")

Editar:

por algum motivo desconhecido: em vez de

tokenizer2 = AutoTokenizer.from_pretrained("./models/tokenizer/")

usando

tokenizer2 = DistilBertTokenizer.from_pretrained("./models/tokenizer/")

trabalho.