如何将基于HuggingFace Tokenizers的自定义Tokenizer推送至Hub?
如何将自定义HuggingFace Tokenizers库的Tokenizer推送到Hub?
你可以通过两种方式解决这个问题,核心思路是让自定义Tokenizer适配支持push_to_hub的类,或者直接手动上传文件到Hub:
方法一:用PreTrainedTokenizerFast封装自定义Tokenizer
transformers库的PreTrainedTokenizerFast类可以直接封装你用底层tokenizers库创建的自定义Tokenizer,完全保留所有自定义的解码器、归一化器和预分词器,同时自带push_to_hub方法。
具体步骤代码如下:
from tokenizers import Tokenizer from transformers import PreTrainedTokenizerFast # 加载你已保存的自定义Tokenizer custom_tokenizer = Tokenizer.from_file("my-tokenizer.json") # 封装成PreTrainedTokenizerFast,需指定训练时用的特殊token(和你的设置一致) tokenizer = PreTrainedTokenizerFast( tokenizer_object=custom_tokenizer, unk_token="[UNK]", # 如有其他特殊token(如pad、bos、eos),按需添加 # pad_token="[PAD]", # bos_token="[BOS]", # eos_token="[EOS]" ) # 保存为transformers兼容的格式文件 tokenizer.save_pretrained("my-custom-tokenizer-hf") # 推送到HuggingFace Hub(需要提前登录huggingface_hub:执行`huggingface-cli login`) tokenizer.push_to_hub("你的用户名/my-custom-tokenizer-hf")
推送完成后,其他用户可以直接用PreTrainedTokenizerFast.from_pretrained("你的用户名/my-custom-tokenizer-hf")加载,完全保留你自定义的所有组件。
方法二:手动上传Tokenizer文件到Hub
如果不想依赖transformers的封装类,也可以直接用huggingface_hub库上传你的my-tokenizer.json文件:
from huggingface_hub import create_repo, upload_file # 创建Hub仓库(private=False表示公开,按需设置) create_repo(repo_id="你的用户名/my-custom-tokenizer", private=False) # 上传自定义Tokenizer的JSON文件 upload_file( path_or_fileobj="my-tokenizer.json", path_in_repo="my-tokenizer.json", repo_id="你的用户名/my-custom-tokenizer" ) # 可选:上传README.md说明加载方式,方便其他用户使用 upload_file( path_or_fileobj="README.md", path_in_repo="README.md", repo_id="你的用户名/my-custom-tokenizer" )
其他用户加载时,直接用底层tokenizers库的方法即可:
from tokenizers import Tokenizer tokenizer = Tokenizer.from_file("https://huggingface.co/你的用户名/my-custom-tokenizer/resolve/main/my-tokenizer.json")
内容的提问来源于stack exchange,提问作者Raptor
相关产品推荐
相关产品推荐

