`AutoTokenizer.from_pretrained` 参数解析
AutoTokenizer.from_pretrained
是 Hugging Face transformers
库中用于加载预训练分词器的常用方法之一。它支持多个参数,使得分词器加载过程具有灵活性,可以根据需要自定义加载方式。
1. pretrained_model_name_or_path
-
类型:
str
-
描述: 预训练模型名称或模型目录路径。可以是 Hugging Face 模型库中模型的名称(如
bert-base-uncased
、gpt2
),或者是本地存储的分词器路径。 -
示例:
tokenizer = AutoTokenizer.from_pretrained("bert-base-uncased") tokenizer = AutoTokenizer.from_pretrained("./my_local_tokenizer")
2. use_fast
-
类型:
bool
, 可选 -
默认值:
True
(优先使用快速分词器) -
描述: 是否使用基于
tokenizers
库的快速分词器。如果设置为False
,则加载基于 Python 实现的慢速分词器。如果模型不支持快速分词器,则无论此参数设置如何,都会使用慢速分词器。 -
示例:
tokenizer = AutoTokenizer.from_pretrained("bert-base-uncased", use_fast=True)
3. tokenizer_type
-
类型:
str
, 可选 -
描述: 手动指定加载的分词器类型。如果你希望明确指定分词器的类型,可以通过该参数来设置。例如
BertTokenizer
、GPT2Tokenizer
等。 -
示例:
tokenizer = AutoTokenizer.from_pretrained("bert-base-uncased", tokenizer_type="BertTokenizer")
4. revision
-
类型:
str
, 可选 -
默认值:
"main"
-
描述: 指定要加载的模型版本。如果在 Hugging Face 上的模型有多个版本分支,可以通过此参数加载特定的分支或标签。
-
示例:
tokenizer = AutoTokenizer.from_pretrained("bert-base-uncased", revision="v1.0")
5. subfolder
-
类型:
str
, 可选 -
描述: 在加载模型或分词器时,指定 Hugging Face 仓库中的子文件夹路径。如果模型存储在特定子目录下,可以通过此参数指定路径。
-
示例:
tokenizer = AutoTokenizer.from_pretrained("my_model", subfolder="tokenizer")
6. cache_dir
-
类型:
str
, 可选 -
描述: 指定缓存目录,用于下载和存储模型或分词器。如果你想要将下载的分词器文件存储到自定义的目录,可以通过此参数设置缓存路径。
-
示例:
tokenizer = AutoTokenizer.from_pretrained("gpt2", cache_dir="./cache")
7. force_download
-
类型:
bool
, 可选 -
默认值:
False
-
描述: 是否强制重新下载分词器。即使分词器文件已经缓存,设置
force_download=True
也会重新下载并覆盖缓存文件。 -
示例:
tokenizer = AutoTokenizer.from_pretrained("gpt2", force_download=True)
8. resume_download
-
类型:
bool
, 可选 -
默认值:
False
-
描述: 如果下载过程中发生中断,是否从中断点继续下载。
-
示例:
tokenizer = AutoTokenizer.from_pretrained("gpt2", resume_download=True)
9. proxies
-
类型:
Dict[str, str]
, 可选 -
描述: 用于配置网络代理的字典,帮助你通过代理服务器下载模型或分词器。典型格式为
{"http": "http://proxy.com", "https": "https://proxy.com"}
。 -
示例:
tokenizer = AutoTokenizer.from_pretrained("gpt2", proxies={"http": "http://proxy.com", "https": "https://proxy.com"})
10. local_files_only
-
类型:
bool
, 可选 -
默认值:
False
-
描述: 是否只从本地文件加载,而不尝试从 Hugging Face 模型库在线下载。若设置为
True
,则会跳过远程下载,只从本地缓存或目录加载分词器。 -
示例:
tokenizer = AutoTokenizer.from_pretrained("gpt2", local_files_only=True)
11. use_auth_token
-
类型:
Union[bool, str]
, 可选 -
描述: 用于访问 Hugging Face 私有模型时的身份验证令牌。如果需要访问私有模型或分词器,可以传入令牌字符串,或者设置为
True
来自动读取transformers
库的配置文件中的令牌。 -
示例:
tokenizer = AutoTokenizer.from_pretrained("private-model", use_auth_token="your_token_here")
12. trust_remote_code
-
类型:
bool
, 可选 -
默认值:
False
-
描述: 如果加载的模型库中包含自定义代码并且需要执行它,则设置为
True
。这个功能在 Hugging Face 上可能被用于一些自定义的模型实现,允许远程代码执行。 -
示例:
tokenizer = AutoTokenizer.from_pretrained("custom-model", trust_remote_code=True)
13. revision
-
类型:
str
, 可选 -
描述: 指定模型分支或者版本号,比如你可以选择特定版本进行加载。
-
示例:
tokenizer = AutoTokenizer.from_pretrained("model_name", revision="main")
14. kwargs
- 描述: 其他任何关键字参数(
kwargs
)会传递给transformers.tokenization_utils_base.PreTrainedTokenizer
或transformers.tokenization_utils_base.PreTrainedTokenizerFast
,它们可以包括自定义的行为、指定的路径或处理方式。
常见组合示例
-
加载本地分词器并指定缓存目录:
tokenizer = AutoTokenizer.from_pretrained("./my_tokenizer", cache_dir="./cache")
-
使用代理服务器下载并从中断点恢复下载:
tokenizer = AutoTokenizer.from_pretrained( "bert-base-uncased", proxies={"http": "http://proxy.com", "https": "https://proxy.com"}, resume_download=True )
-
使用快速分词器并强制重新下载:
tokenizer = AutoTokenizer.from_pretrained("gpt2", use_fast=True, force_download=True)
-
加载私有模型的分词器:
tokenizer = AutoTokenizer.from_pretrained("private-model", use_auth_token="your_token_here")
总结
AutoTokenizer.from_pretrained
是 Hugging Face transformers
库中非常强大且灵活的接口,支持多种参数配置,允许用户从本地或远程库加载预训练分词器,并根据需求进行定制。
补充
tokenizer返回的结果通常是一个字典,它至少包含以下几项:
input_ids
: 文本转化为的 token ID。token_type_ids
: 区分多个句子的 ID(用于双句子输入的模型)。attention_mask
: 掩码,表示哪些 token 是有效的(即非填充的)。
例如,以下是使用 encode_plus
的结果:
encoded_input = tokenizer.encode_plus(
"Hello, how are you?",
"I am fine.",
return_tensors='pt'
)
print(encoded_input)
可能的输出字典包含:
{
'input_ids': tensor([[ 101, 7592, 1010, 2129, 2024, 2017, 102, 1045, 2572, 2986, 1012, 102]]),
'token_type_ids': tensor([[0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 1]]),
'attention_mask': tensor([[1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1]])
}
在这个示例中:
input_ids
是经过分词后的文本所对应的 token ID。token_type_ids
是用来区分两个句子的,其中前 7 个 token 属于第一个句子,后 5 个 token 属于第二个句子。attention_mask
用于区分有效的 token 和填充的 token,值为 1 的地方表示该位置是有效的 token。