Transformers 文档

ByT5

Hugging Face's logo
加入 Hugging Face 社区

并获得增强的文档体验

开始使用

该模型于 2021-05-28 发布在 HF papers 上,并于 2021-06-01 贡献给 Hugging Face Transformers。

ByT5

ByT5T5 模型的无分词器(tokenizer-free)版本,旨在直接处理原始 UTF-8 字节。这意味着它可以处理任何语言,对拼写错误等噪声更具鲁棒性,并且由于不需要预处理管道,使用起来也更简单。

你可以在 Google 组织下找到所有原始的 ByT5 检查点。

关于如何将 ByT5 应用于不同语言任务的更多示例,请参阅 T5 文档。

以下示例演示了如何使用 PipelineAutoModel 以及命令行来生成文本。

自动模型
from transformers import AutoModelForSeq2SeqLM, AutoTokenizer


tokenizer = AutoTokenizer.from_pretrained(
    "google/byt5-small"
)
model = AutoModelForSeq2SeqLM.from_pretrained(
    "google/byt5-small",
    device_map="auto"
)

input_ids = tokenizer("summarize: Photosynthesis is the process by which plants, algae, and some bacteria convert light energy into chemical energy.", return_tensors="pt").to(model.device)

output = model.generate(**input_ids)
print(tokenizer.decode(output[0], skip_special_tokens=True))

量化

量化通过以较低精度表示权重来减少大型模型的内存负担。有关更多可用量化后端,请参阅量化概述。

以下示例使用torchao仅将权重量化为int4。

# pip install torchao
from transformers import AutoModelForSeq2SeqLM, AutoTokenizer, TorchAoConfig


quantization_config = TorchAoConfig("int4_weight_only", group_size=128)

model = AutoModelForSeq2SeqLM.from_pretrained(
    "google/byt5-xl",
    device_map="auto",
    quantization_config=quantization_config
)

tokenizer = AutoTokenizer.from_pretrained("google/byt5-xl")
input_ids = tokenizer("translate English to French: The weather is nice today.", return_tensors="pt").to(model.device)

output = model.generate(**input_ids)
print(tokenizer.decode(output[0], skip_special_tokens=True))

注意事项

  • 建议在批量推理和训练时使用分词器。

  • 下面的示例展示了如何在不使用分词器的情况下使用该模型。

    import torch
    from transformers import AutoModelForSeq2SeqLM
    
    model = AutoModelForSeq2SeqLM.from_pretrained("google/byt5-small", device_map="auto")
    
    num_special_tokens = 3
    
    input_ids = torch.tensor([list("Life is like a box of chocolates.".encode("utf-8"))]) + num_special_tokens
    labels = torch.tensor([list("La vie est comme une boîte de chocolat.".encode("utf-8"))]) + num_special_tokens
    loss = model(input_ids, labels=labels).loss
    loss.item()
  • ByT5 使用高字节值(258、257 等)进行掩码处理,而不是像 {extra_id_0} 这样的哨兵令牌。

    # Example: character-level denoising with mask tokens
    input_ids = tokenizer("The dog chases a ball in the park.").input_ids
    masked_input = torch.tensor([input_ids[:8] + [258] + input_ids[14:21] + [257] + input_ids[28:]])
    output = model.generate(masked_input, max_length=100)

ByT5Tokenizer

class transformers.ByT5Tokenizer

< >

( eos_token = '</s>' unk_token = '<unk>' pad_token = '<pad>' extra_ids = 125 additional_special_tokens = None **kwargs )

参数

  • eos_token (str, 可选, 默认为 "</s>") — 序列结束令牌。

    当使用特殊令牌构建序列时,这不是用于序列结束的令牌。所使用的令牌是 sep_token

  • unk_token (str, 可选, 默认为 "<unk>") — 未知令牌。不在词汇表中的令牌无法转换为 ID,会被设置为该令牌。
  • pad_token (str, 可选, 默认为 "<pad>") — 用于填充的令牌,例如在对不同长度的序列进行批处理时。
  • extra_ids (int, 可选, 默认为 125) — 添加到词汇表末尾的额外 ID 数量,用作哨兵(sentinel)。这些令牌可以通过 “<extra_id_{%d}>” 访问,其中 ”{%d}” 是 0 到 extra_ids-1 之间的数字。额外令牌从词汇表末尾向前索引(“<extra_id_0>” 是词汇表中的最后一个令牌,如 ByT5 预处理所示,见 此处)。
  • additional_special_tokens (list[str], 可选) — 分词器使用的其他特殊令牌。

构建一个 ByT5 分词器。ByT5 仅使用原始字节 utf-8 编码。

该分词器继承自 PreTrainedTokenizer,其中包含大部分主要方法。用户应参考此超类以获取有关这些方法的更多信息。

build_inputs_with_special_tokens

< >

( token_ids_0: list token_ids_1: list[int] | None = None ) list[int]

参数

  • token_ids_0 (list[int]) — 将被添加特殊令牌的 ID 列表。
  • token_ids_1 (list[int], 可选) — 用于序列对的可选第二个 ID 列表。

返回

list[int]

带有适当特殊标记的输入ID列表。

通过连接和添加特殊标记,从序列或序列对构建用于序列分类任务的模型输入。序列格式如下:

  • 单个序列:X </s>
  • 序列对:A </s> B </s>

convert_tokens_to_string

< >

( tokens )

将标记序列(字符串)转换为单个字符串。

create_token_type_ids_from_sequences

< >

( token_ids_0: list token_ids_1: list[int] | None = None ) list[int]

参数

  • token_ids_0 (list[int]) — ID 列表。
  • token_ids_1 (list[int], 可选) — 用于序列对的可选第二个 ID 列表。

返回

list[int]

零列表。

从传入的两个序列创建一个掩码,用于序列对分类任务。ByT5 不使用令牌类型 ID,因此返回零列表。

get_special_tokens_mask

< >

( token_ids_0: list token_ids_1: list[int] | None = None already_has_special_tokens: bool = False ) list[int]

参数

  • token_ids_0 (list[int]) — ID 列表。
  • token_ids_1 (list[int], 可选) — 用于序列对的可选第二个 ID 列表。
  • already_has_special_tokens (bool, 可选, 默认为 False) — 令牌列表是否已经格式化为包含该模型的特殊令牌。

返回

list[int]

一个范围为 [0, 1] 的整数列表:1 表示特殊标记,0 表示序列标记。

从没有添加特殊标记的标记列表中检索序列ID。此方法在使用分词器prepare_for_model方法添加特殊标记时调用。

在 GitHub 上更新

© . This site is unofficial and not affiliated with Hugging Face, Inc.