🚀 ByT5 - xxl
ByT5 是 Google 的 T5 无分词器版本,总体遵循 MT5 的架构。它仅在 mC4 上进行预训练,不进行任何监督训练,平均跨度掩码为 20 个 UTF - 8 字符。因此,该模型在下游任务中使用前需要进行微调。ByT5 在处理噪声文本数据方面表现出色,例如,google/byt5-xxl
在 TweetQA 任务上显著优于 mt5-xxl。
🚀 快速开始
ByT5 是 Google 的 T5 的无分词器版本,总体上遵循 MT5 的架构。它仅在 mC4 上进行了预训练,没有进行任何监督训练,平均跨度掩码为 20 个 UTF - 8 字符。所以,这个模型在用于下游任务之前需要进行微调。
✨ 主要特性
- 无分词器:ByT5 是无分词器版本的模型,可直接处理原始 UTF - 8 字节。
- 多语言支持:支持多种语言,包括但不限于英语、中文、法语、德语等众多语言。
- 处理噪声文本能力强:在处理噪声文本数据时表现出色,例如在 TweetQA 任务上显著优于 mt5-xxl。
💻 使用示例
基础用法
from transformers import T5ForConditionalGeneration
import torch
model = T5ForConditionalGeneration.from_pretrained('google/byt5-xxl')
input_ids = torch.tensor([list("Life is like a box of chocolates.".encode("utf-8"))]) + 3
labels = torch.tensor([list("La vie est comme une boîte de chocolat.".encode("utf-8"))]) + 3
loss = model(input_ids, labels=labels).loss
高级用法
from transformers import T5ForConditionalGeneration, AutoTokenizer
model = T5ForConditionalGeneration.from_pretrained('google/byt5-xxl')
tokenizer = AutoTokenizer.from_pretrained('google/byt5-xxl')
model_inputs = tokenizer(["Life is like a box of chocolates.", "Today is Monday."], padding="longest", return_tensors="pt")
labels = tokenizer(["La vie est comme une boîte de chocolat.", "Aujourd'hui c'est lundi."], padding="longest", return_tensors="pt").input_ids
loss = model(**model_inputs, labels=labels).loss
📚 详细文档
模型概述
大多数广泛使用的预训练语言模型处理的是与单词或子词单元对应的标记序列。将文本编码为标记序列需要一个分词器,而分词器通常是独立于模型创建的。无标记模型直接处理原始文本(字节或字符),具有许多优点:它们可以直接处理任何语言的文本,对噪声更具鲁棒性,并且通过去除复杂且容易出错的文本预处理流程,减少了技术负担。由于字节或字符序列比标记序列更长,过去关于无标记模型的工作通常引入了新的模型架构,以分摊直接处理原始文本的成本。在本文中,作者表明可以对标准的 Transformer 架构进行最小的修改来处理字节序列。作者仔细分析了在参数数量、训练浮点运算次数和推理速度方面的权衡,并表明字节级模型与标记级模型具有竞争力。作者还证明了字节级模型对噪声更具鲁棒性,并且在对拼写和发音敏感的任务上表现更好。作为贡献的一部分,作者发布了一组基于 T5 架构的新的预训练字节级 Transformer 模型,以及实验中使用的所有代码和数据。
模型图示

📄 许可证
本项目采用 Apache - 2.0 许可证。
📦 相关信息