Невозможно загрузить недавно обученный токенизатор из локальных файлов.Python

Программы на Python
Ответить
Anonymous
 Невозможно загрузить недавно обученный токенизатор из локальных файлов.

Сообщение Anonymous »

Я хотел добавить несколько токенов в токенизатор GPTNeoXTokenizerFast, но поскольку функции поезда нет, мне пришлось использовать метод train_new_from_iterator из унаследованного класса PreTrainedTokenizerFast.
Я сохранил новый словарь и слияния, добавил их к исходному словарю и слияниям, а результаты сохранил в новом файл tokenizer.json. Однако, когда я пытаюсь загрузить «новый» токенизатор, я получаю следующую ошибку:
Класс GPTNeoXSdpaAttention устарел в пользу простого изменения config._attn_implementation атрибут класса GPTNeoXAttention! Он будет удален в версии 4.48
Traceback (последний вызов — последний):
Файл «C:\Users\echagnon\PycharmProjects\mass_spec\forge_chem_test.py», строка 4, в

tokenizer = GPTNeoXTokenizerFast.from_pretrained("combined_tokenizer/", local_files_only=True)

Файл «C:\Users\echagnon\anaconda3\envs\mass_spec\lib\site-packages\transformers\tokenization_utils_base.py», строка 2036, в from_pretrained
return cls._from_pretrained(

Файл "C:\Users\echagnon\anaconda3\envs\mass_spec\lib\site-packages\transformers\tokenization_utils_base.py", строка 2276, в _from_pretrained

tokenizer = cls(*init_inputs, **init_kwargs )

Файл «C:\Users\echagnon\anaconda3\envs\mass_spec\lib\site-packages\transformers\models\gpt_neox\tokenization_gpt_neox_fast.py», строка 106, в init
super() .init(

Файл «C:\Users\echagnon\anaconda3\envs\mass_spec\lib\site-packages\transformers\tokenization_utils_fast.py», строка 117, в init

fast_tokenizer = TokenizerFast .from_file(fast_tokenizer_file)

Исключение: данные не соответствуют ни одному варианту нетегированного перечисления MergeType в строке 105581, столбец 1
Вот как я создал новый файл tokenizer.json, который пытаюсь прочитать:

Код: Выделить всё

tokenizer = GPTNeoXTokenizerFast.from_pretrained("path", local_files_only=True)
files = pd.read_csv('data/data.csv')['field'].to_list()
desired_tokens_to_add = 1000
ASCII_VOCAB_SIZE = 258

new_tokenizer = tokenizer.train_new_from_iterator(files, vocab_size=ASCII_VOCAB_SIZE + desired_tokens_to_add,                                                       max_token_length=5)

new_tokenizer.save_pretrained('new_path')

original_vocab = tokenizer.get_vocab()    # {'token': id}
new_vocab = selfies_tokenizer.get_vocab() # {'token': id}

combined_vocab = {}
idx = 0 # so new tokens have new id values
for token in original_vocab.keys():
if token not in combined_vocab.keys():
combined_vocab[token] = idx
idx += 1
for token in new_vocab.keys():
if token not in combined_vocab.keys():
combined_vocab[token] = idx
idx += 1

with open('path/tokenizer.json', encoding="utf8") as f:
original_json = json.load(f)
with open('new_path/tokenizer.json', encoding="utf8") as f:
new_json = json.load(f)
old_merges = original_json['model']['merges'] # [[]]
new_merges = new_json['model']['merges']      # [[]]
combined_merges = old_merges + new_merges

final_json = copy.deepcopy(original_json)
final_json['model']['merges'] = combined_merges
final_json['model']['vocab'] = combined_vocab

with open('final_path/tokenizer.json', 'w', encoding="utf8") as fp:
print('saving new .json file')
json.dump(final_json, fp, ensure_ascii=False)
Примечание. Я скопировал файлы Special_tokens_map.json и tokenizer_config.json из каталога, содержащего исходный токенизатор


Подробнее здесь: https://stackoverflow.com/questions/793 ... ocal-files
Ответить

Быстрый ответ

Изменение регистра текста: 
Смайлики
:) :( :oops: :roll: :wink: :muza: :clever: :sorry: :angel: :read: *x)
Ещё смайлики…
   
К этому ответу прикреплено по крайней мере одно вложение.

Если вы не хотите добавлять вложения, оставьте поля пустыми.

Максимально разрешённый размер вложения: 15 МБ.

Вернуться в «Python»