Сохранение токенизатора Huggingface

Oct 27 2020

Я пытаюсь сохранить токенизатор в huggingface, чтобы потом загрузить его из контейнера, где мне не нужен доступ в Интернет.

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

Однако последняя строка дает ошибку:

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

версия трансформаторов: 3.1.0

Как загрузить сохраненный токенизатор из предварительно обученной модели в Pytorch , к сожалению, не помогло.

Редактировать 1

Благодаря ответу @ ashwin ниже я попробовал save_pretrainedвместо этого и получил следующую ошибку:

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

содержимое папки токенизатора ниже:

Я попытался переименовать tokenizer_config.jsonв, config.jsonа потом получил ошибку:

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

Ответы

2 AshwinGeetD'Sa Oct 27 2020 at 17:41

save_vocabulary(), сохраняет только файл словаря токенизатора (Список токенов BPE).

Чтобы сохранить весь токенизатор, вы должны использовать save_pretrained()

Таким образом, следующим образом:

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

Редактировать:

по неизвестной причине: вместо

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

с помощью

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

работает.