🚀 ByT5 - xl
ByT5是谷歌T5的无分词器版本,总体遵循MT5的架构。它能直接处理原始文本,无需分词器,可开箱即用处理任何语言的文本,对噪声更具鲁棒性,还能减少复杂易错的文本预处理流程。
🚀 快速开始
ByT5是谷歌T5的无分词器版本,总体遵循MT5的架构。
ByT5仅在多语言C4数据集(mC4)上进行了预训练,平均跨度掩码为20个UTF - 8字符,未进行任何有监督训练。因此,该模型在用于下游任务之前必须进行微调。
ByT5在处理有噪声的文本数据时表现出色。例如,在TweetQA任务中,google/byt5 - xl
的表现明显优于mt5 - xl。
论文:ByT5:借助预训练的字节到字节模型迈向无分词器的未来
作者:Linting Xue, Aditya Barua, Noah Constant, Rami Al - Rfou, Sharan Narang, Mihir Kale, Adam Roberts, Colin Raffel
💻 使用示例
基础用法
from transformers import T5ForConditionalGeneration
import torch
model = T5ForConditionalGeneration.from_pretrained('google/byt5-xl')
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-xl')
tokenizer = AutoTokenizer.from_pretrained('google/byt5-xl')
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 |