🚀 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 |