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/")

動作します。