mindformers.models.LlamaTokenizer

查看源文件
class mindformers.models.LlamaTokenizer(vocab_file, unk_token='<unk>', bos_token='<s>', eos_token='</s>', pad_token='<unk>', sp_model_kwargs: Optional[Dict[str, Any]] = None, add_bos_token=True, add_eos_token=False, clean_up_tokenization_spaces=False, legacy=True, **kwargs)[源代码]

基于字节级字节对编码(Byte-Pair-Encoding)构建Llama分词器。 默认未设置填充词元,因为原始模型中没有填充词元。

参数:
  • vocab_file (str) - 词汇文件的路径。

  • unk_token (Union[str, AddedToken], 可选) - 未知词元。不在词汇表中的词元将被设置为此词元。默认值: "<unk>"

  • bos_token (Union[str, AddedToken], 可选) - 预训练时使用的序列开始词元。可以用作序列分类器词元。默认值: "<s>"

  • eos_token (Union[str, AddedToken], 可选) - 序列结束词元。默认值: "</s>"

  • pad_token (Union[str, AddedToken], 可选) - 用于批量处理时使词元数组大小相同的特殊词元。然后在注意力机制或损失计算中将被忽略。默认值: "<unk>"

  • sp_model_kwargs (Dict[str, Any], 可选) - 将传递给 SentencePieceProcessor.__init__() 方法。可以使用 Python wrapper for SentencePiece 设置以下参数。默认值: None ,将传入一个空字典。

  • add_bos_token (bool, 可选) - 是否在序列开始处添加 bos_token 。默认值: True

  • add_eos_token (bool, 可选) - 是否在序列末尾添加 eos_token 。默认值: False

  • clean_up_tokenization_spaces (bool, 可选) - 解码后是否清理空格。清理包括去除如额外空格等潜在的符号。默认值: False

  • use_default_system_prompt (bool, 可选) - 是否使用Llama的默认系统提示。默认值: False

  • spaces_between_special_tokens (bool, 可选) - 是否在特殊词元之间添加空格。默认值: False

  • legacy (bool, 可选) - 是否使用分词器的 legacy 行为。默认值: True

返回:

LlamaTokenizer 实例。

样例:

>>> from mindformers import LlamaTokenizer
>>> tokenizer = LlamaTokenizer.from_pretrained("llama_7b")
>>> res = tokenizer("hello world")
>>> print(res)
{'input_ids': [1, 27701, 924], 'attention_mask': [1, 1, 1]}
>>> res = tokenizer("hello world", padding='max_length', max_length=10)
>>> print(res)
{'input_ids': [1, 27701, 924, 0, 0, 0, 0, 0, 0, 0], 'attention_mask': [1, 1, 1, 0, 0, 0, 0, 0, 0, 0]}
>>> res = tokenizer("hello world", return_tensors='ms')
>>> print(res)
{'input_ids': Tensor(shape=[3], dtype=Int32, value= [    1, 27701,  924]), 'attention_mask': Tensor(shape=[3],
dtype=Int32, value= [1, 1, 1])}
build_inputs_with_special_tokens(token_ids_0: List[int], token_ids_1: Optional[List[int]] = None)[源代码]

当前为将特殊词元插入到输入标识符中。

参数:
  • token_ids_0 (List[int]) - 第一组词元ID。

  • token_ids_1 (List[int], 可选) - 第二组词元ID。默认值: None

返回:

插入特殊词元后的词元ID列表。

create_token_type_ids_from_sequences(token_ids_0: List[int], token_ids_1: Optional[List[int]] = None)[源代码]

使用传递的两个序列创建一个掩码,用于序列对分类任务。一个ALBERT序列对掩码的格式如下:

0 0 0 0 0 0 0 0 0 0 1 1 1 1 1 1 1 1 1 1
|       序列1       |       序列2       |

如果 token_ids_1 为 None,则只返回掩码的第一部分( 0 序列)。

参数:
  • token_ids_0 (List[int]) - 第一个ID列表。

  • token_ids_1 (List[int], 可选) - 序列对的可选第二个ID列表。默认值: None

返回:

一个根据给定序列由整数 01 组成的列表,其中 0 表示词元来自序列 token_ids_01 表示词元来自序列 token_ids_1

get_special_tokens_mask(token_ids_0: List[int], token_ids_1: Optional[List[int]] = None, already_has_special_tokens: bool = False)[源代码]

从还未添加特殊词元的词元列表中检索序列ID。在使用分词器的 prepare_for_model 方法添加特殊词元时调用此方法。

参数:
  • token_ids_0 (List[int]) - ID列表。

  • token_ids_1 (List[int], 可选) - 序列对的可选第二个ID列表。默认值: None

  • already_has_special_tokens (bool, 可选) - 词元列表是否已经按照模型格式添加了特殊词元。默认值: False

返回:

一个由整数 01 组成的列表,其中 1 表示特殊词元, 0 表示序列词元。