模型概述
模型特點
模型能力
使用案例
🚀 用於語言處理的Perceiver IO模型
Perceiver IO是一種預訓練模型,它基於BERT中提出的掩碼語言建模(MLM)任務進行訓練。訓練使用的大型文本語料庫由英文維基百科和C4組合而成。該模型由Jaegle等人在論文Perceiver IO: A General Architecture for Structured Inputs & Outputs中提出,並首次在這個倉庫發佈。
聲明:發佈Perceiver IO的團隊並未為該模型撰寫模型卡片,此模型卡片由Hugging Face團隊編寫。
✨ 主要特性
Perceiver IO是一種Transformer編碼器模型,可應用於任何模態(文本、圖像、音頻、視頻等)。其核心思想是在一組規模不大的潛在向量(如256或512個)上應用自注意力機制,僅使用輸入與潛在向量進行交叉注意力計算。這使得自注意力機制的時間和內存需求不依賴於輸入的大小。
在解碼時,作者採用了所謂的解碼器查詢,它可以靈活地對潛在向量的最終隱藏狀態進行解碼,以生成任意大小和語義的輸出。對於掩碼語言建模,輸出是一個張量,包含語言建模頭的預測分數,形狀為(batch_size, seq_length, vocab_size)。
由於自注意力機制的時間和內存需求不依賴於輸入大小,Perceiver IO的作者直接在原始UTF - 8字節上訓練模型,而不是像BERT、RoBERTa和GPT - 2等模型那樣在子詞上訓練。這樣做有很多好處:訓練模型前無需訓練分詞器,無需維護(固定的)詞彙文件,並且如Bostrom等人,2020所示,這也不會損害模型性能。
通過預訓練,模型學習到語言的內部表示,可用於提取對下游任務有用的特徵。例如,如果有一個帶標籤的句子數據集,可以使用Perceiver模型生成的特徵作為輸入來訓練一個標準分類器。
🚀 快速開始
預期用途和限制
可以使用原始模型進行掩碼語言建模,但該模型旨在在帶標籤的數據集上進行微調。請查看模型中心,尋找針對感興趣任務的微調版本。
如何使用
以下是在PyTorch中使用該模型的示例:
from transformers import PerceiverTokenizer, PerceiverForMaskedLM
tokenizer = PerceiverTokenizer.from_pretrained("deepmind/language-perceiver")
model = PerceiverForMaskedLM.from_pretrained("deepmind/language-perceiver")
text = "This is an incomplete sentence where some words are missing."
# prepare input
encoding = tokenizer(text, padding="max_length", return_tensors="pt")
# mask " missing.". Note that the model performs much better if the masked span starts with a space.
encoding.input_ids[0, 52:61] = tokenizer.mask_token_id
inputs, input_mask = encoding.input_ids.to(device), encoding.attention_mask.to(device)
# forward pass
outputs = model(inputs=inputs, attention_mask=input_mask)
logits = outputs.logits
masked_tokens_predictions = logits[0, 51:61].argmax(dim=-1)
print(tokenizer.decode(masked_tokens_predictions))
>>> should print " missing."
📦 安裝指南
文檔未提及安裝步驟,故跳過此章節。
💻 使用示例
基礎用法
from transformers import PerceiverTokenizer, PerceiverForMaskedLM
tokenizer = PerceiverTokenizer.from_pretrained("deepmind/language-perceiver")
model = PerceiverForMaskedLM.from_pretrained("deepmind/language-perceiver")
text = "This is an incomplete sentence where some words are missing."
# prepare input
encoding = tokenizer(text, padding="max_length", return_tensors="pt")
# mask " missing.". Note that the model performs much better if the masked span starts with a space.
encoding.input_ids[0, 52:61] = tokenizer.mask_token_id
inputs, input_mask = encoding.input_ids.to(device), encoding.attention_mask.to(device)
# forward pass
outputs = model(inputs=inputs, attention_mask=input_mask)
logits = outputs.logits
masked_tokens_predictions = logits[0, 51:61].argmax(dim=-1)
print(tokenizer.decode(masked_tokens_predictions))
>>> should print " missing."
📚 詳細文檔
訓練數據
該模型在英文維基百科和C4的組合數據集上進行預訓練。訓練令牌的70%從C4數據集中採樣,其餘30%從維基百科中採樣。作者在分割成作物之前將10個文檔連接起來,以減少對填充令牌的浪費計算。
訓練過程
預處理
文本預處理很簡單:僅涉及將文本編碼為UTF - 8字節,並將它們填充到相同的長度(2048)。
預訓練
超參數的詳細信息可以在論文的表9中找到。
評估結果
該模型在GLUE上能夠達到平均81.8分。更多詳細信息,請參考原論文的表3。
BibTeX引用和引用信息
@article{DBLP:journals/corr/abs-2107-14795,
author = {Andrew Jaegle and
Sebastian Borgeaud and
Jean{-}Baptiste Alayrac and
Carl Doersch and
Catalin Ionescu and
David Ding and
Skanda Koppula and
Daniel Zoran and
Andrew Brock and
Evan Shelhamer and
Olivier J. H{\'{e}}naff and
Matthew M. Botvinick and
Andrew Zisserman and
Oriol Vinyals and
Jo{\~{a}}o Carreira},
title = {Perceiver {IO:} {A} General Architecture for Structured Inputs {\&}
Outputs},
journal = {CoRR},
volume = {abs/2107.14795},
year = {2021},
url = {https://arxiv.org/abs/2107.14795},
eprinttype = {arXiv},
eprint = {2107.14795},
timestamp = {Tue, 03 Aug 2021 14:53:34 +0200},
biburl = {https://dblp.org/rec/journals/corr/abs-2107-14795.bib},
bibsource = {dblp computer science bibliography, https://dblp.org}
}
📄 許可證
本模型採用Apache - 2.0許可證。
屬性 | 詳情 |
---|---|
模型類型 | Transformer編碼器模型 |
訓練數據 | 結合了英文維基百科和C4數據集,70%的訓練令牌來自C4數據集,30%來自維基百科 |



