BertTokenizer не имеет атрибута с именем save_pretrained.Python

Программы на Python
Anonymous
BertTokenizer не имеет атрибута с именем save_pretrained.

Сообщение Anonymous »

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

from transformers import BertTokenizer

tokenizer = BertTokenizer.from_pretrained("fnlp/bart-base-chinese")
# some manipulations here, omitted
tokenizer.save_pretrained("my_tokenizer") # it works!
Вывод:

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

('my_tokenizer/tokenizer_config.json',
'my_tokenizer/special_tokens_map.json',
'my_tokenizer/vocab.txt',
'my_tokenizer/added_tokens.json')
Затем я создаю токенайзер для загрузки в HuggingFace:

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

from transformers import PreTrainedTokenizerFast

wrapped_tokenizer = PreTrainedTokenizerFast(
tokenizer_object=tokenizer,
)

wrapped_tokenizer.push_to_hub('my-tokenizer-bert', private=True)
Не удается выполнить следующее:

AttributeError: у объекта «BertTokenizer» нет атрибута «сохранить»
Полная трассировка стека:

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

---------------------------------------------------------------------------
AttributeError                            Traceback (most recent call last)
Cell In[11], line 7
1 from transformers import PreTrainedTokenizerFast
3 wrapped_tokenizer = PreTrainedTokenizerFast(
4     tokenizer_object=tokenizer,
5 )
----> 7 wrapped_tokenizer.push_to_hub('my-tokenizer-bert', private=True)

File ~/.local/lib/python3.10/site-packages/transformers/utils/hub.py:781, in PushToHubMixin.push_to_hub(self, repo_id, use_temp_dir, commit_message, private, use_auth_token, max_shard_size, create_pr, **deprecated_kwargs)
778 files_timestamps = self._get_files_timestamps(work_dir)
780 # Save all files.
--> 781 self.save_pretrained(work_dir, max_shard_size=max_shard_size)
783 return self._upload_modified_files(
784     work_dir,
785     repo_id,
(...)
789     create_pr=create_pr,
790 )

File ~/.local/lib/python3.10/site-packages/transformers/tokenization_utils_base.py:2182, in PreTrainedTokenizerBase.save_pretrained(self, save_directory, legacy_format, filename_prefix, push_to_hub, **kwargs)
2178 logger.info(f"Special tokens file saved in {special_tokens_map_file}")
2180 file_names = (tokenizer_config_file, special_tokens_map_file)
-> 2182 save_files = self._save_pretrained(
2183     save_directory=save_directory,
2184     file_names=file_names,
2185     legacy_format=legacy_format,
2186     filename_prefix=filename_prefix,
2187 )
2189 if push_to_hub:
2190     self._upload_modified_files(
2191         save_directory,
2192         repo_id,
(...)
2195         token=kwargs.get("use_auth_token"),
2196     )

File ~/.local/lib/python3.10/site-packages/transformers/tokenization_utils_fast.py:605, in PreTrainedTokenizerFast._save_pretrained(self, save_directory, file_names, legacy_format, filename_prefix)
601 if save_fast:
602     tokenizer_file = os.path.join(
603         save_directory, (filename_prefix + "-" if filename_prefix else "") + TOKENIZER_FILE
604     )
--> 605     self.backend_tokenizer.save(tokenizer_file)
606     file_names = file_names + (tokenizer_file,)
608 return file_names

AttributeError: 'BertTokenizer' object has no attribute 'save'
Результат противоречивый. Я дважды проверяю класс объекта токенизатора:

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

print(type(tokenizer))

Похоже, что BertTokenizer использует .save_pretrained() вместо .save(). Как я могу решить эту проблему, чтобы токенизатор успешно был обернут PreTrainedTokenizerFast и загружен в HuggingFace?
Спасибо.
p.s. В конечном итоге я хочу обучить этот BertTokenizer с помощью нового набора данных, но у BertTokenizer также нет .train_from_iterator().

ОБНОВЛЕНИЕ Если я заменю PreTrainedTokenizerFast на BertTokenizerFast (его подкласс также является PreTrainedTokenizerFast), ошибка будет следующей:

AttributeError: объект «BertTokenizer» не имеет атрибута «нормализатор»

Не предполагается быстрая версия может ли полностью поддерживаться медленная версия?

Подробнее здесь: https://stackoverflow.com/questions/788 ... pretrained

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