Tokenizer di salvataggio di Huggingface

Oct 27 2020

Sto cercando di salvare il tokenizer in huggingface in modo da poterlo caricare in seguito da un contenitore in cui non ho bisogno di accedere a Internet.

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

Tuttavia, l'ultima riga sta dando l'errore:

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

versione trasformatori: 3.1.0

Il modo in cui caricare il tokenizer salvato dal modello pre-addestrato in Pytorch non è stato d'aiuto.

Modifica 1

Grazie alla risposta di @ ashwin di seguito ho provato save_pretrainedinvece e ottengo il seguente errore:

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

il contenuto della cartella tokenizer è di seguito:

Ho provato a rinominare tokenizer_config.jsonin config.jsone poi ho ricevuto l'errore:

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

Risposte

2 AshwinGeetD'Sa Oct 27 2020 at 17:41

save_vocabulary(), salva solo il file di vocabolario del tokenizer (List of BPE token).

Per salvare l'intero tokenizer, dovresti usare save_pretrained()

Quindi, come segue:

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

Modificare:

per qualche motivo sconosciuto: invece di

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

utilizzando

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

lavori.