🚀 ByT5 - large
ByT5是谷歌T5的无分词器版本,总体上遵循MT5的架构。它能直接处理原始文本,无需分词器,对各种语言的文本处理具有良好的通用性和对噪声文本的鲁棒性。
🚀 快速开始
ByT5是谷歌T5的无分词器版本,总体上遵循MT5的架构。
ByT5仅在多语言C4数据集(mC4)上进行了预训练,平均跨度掩码为20个UTF - 8字符,且未进行任何有监督训练。因此,该模型在用于下游任务之前需要进行微调。
ByT5在处理噪声文本数据时表现出色,例如,google/byt5-large
在TweetQA任务上的表现显著优于mt5-large。
论文:ByT5: Towards a token-free future with pre-trained byte-to-byte models
作者:Linting Xue, Aditya Barua, Noah Constant, Rami Al - Rfou, Sharan Narang, Mihir Kale, Adam Roberts, Colin Raffel
💻 使用示例
基础用法
ByT5可以直接处理原始的UTF - 8字节数据,无需使用分词器:
from transformers import T5ForConditionalGeneration
import torch
model = T5ForConditionalGeneration.from_pretrained('google/byt5-large')
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-large')
tokenizer = AutoTokenizer.from_pretrained('google/byt5-large')
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许可证。
📦 相关信息
属性 |
详情 |
支持语言 |
多语言,包括af、am、ar等众多语言 |
数据集 |
mC4 |
许可证 |
apache - 2.0 |