Transformers documentation
Longformer
Bu model 2020-04-10 tarihinde HF papers'ta yayımlandı ve 2020-11-16 tarihinde Hugging Face Transformers'a katkıda bulunuldu.
Longformer
Longformer, uzun belgeleri işleme amacıyla tasarlanmış bir transformer modelidir. Kendi kendine dikkat (self-attention) işlemi genellikle dizi uzunluğuyla karesel olarak ölçeklenir; bu durum, transformer'ların daha uzun dizileri işlemesini engeller. Longformer dikkat mekanizması, dizi uzunluğuyla doğrusal olarak ölçeklenerek bu sorunu aşar. Yerel pencereli dikkat ile görev bazlı global dikketi birleştirerek, binlerce token içeren belgelerin verimli bir şekilde işlenmesini sağlar.
Tüm orijinal Longformer kontrol noktalarını Ai2 kuruluşu altında bulabilirsiniz.
Longformer'ı farklı dil görevlerine nasıl uygulayacağınızla ilgili daha fazla örnek için sağ kenar çubuğundaki Longformer modellerine tıklayın.
Aşağıdaki örnek, <mask> token'ını Pipeline, AutoModel ve komut satırından nasıl dolduracağınızı göstermektedir.
from transformers import pipeline
pipeline = pipeline(
task="fill-mask",
model="allenai/longformer-base-4096",
device=0
)
pipeline("""San Francisco 49ers cornerback Shawntae Spencer will miss the rest of the <mask> with a torn ligament in his left knee.
Spencer, a fifth-year pro, will be placed on injured reserve soon after undergoing surgery Wednesday to repair the ligament. He injured his knee late in the 49ers’ road victory at Seattle on Sept. 14, and missed last week’s victory over Detroit.
Tarell Brown and Donald Strickland will compete to replace Spencer with the 49ers, who kept 12 defensive backs on their 53-man roster to start the season. Brown, a second-year pro, got his first career interception last weekend while filling in for Strickland, who also sat out with a knee injury.""")from transformers import AutoModelForMaskedLM, AutoTokenizer
tokenizer = AutoTokenizer.from_pretrained("allenai/longformer-base-4096")
model = AutoModelForMaskedLM.from_pretrained("allenai/longformer-base-4096", device_map="auto")
text = (
"""
San Francisco 49ers cornerback Shawntae Spencer will miss the rest of the <mask> with a torn ligament in his left knee.
Spencer, a fifth-year pro, will be placed on injured reserve soon after undergoing surgery Wednesday to repair the ligament. He injured his knee late in the 49ers’ road victory at Seattle on Sept. 14, and missed last week’s victory over Detroit.
Tarell Brown and Donald Strickland will compete to replace Spencer with the 49ers, who kept 12 defensive backs on their 53-man roster to start the season. Brown, a second-year pro, got his first career interception last weekend while filling in for Strickland, who also sat out with a knee injury.
"""
)
input_ids = tokenizer([text], return_tensors="pt").to(model.device)["input_ids"]
logits = model(input_ids).logits
masked_index = (input_ids[0] == tokenizer.mask_token_id).nonzero().item()
probs = logits[0, masked_index].softmax(dim=0)
values, predictions = probs.topk(5)
tokenizer.decode(predictions).split()Notlar
Longformer, RoBERTa tabanlıdır ve
token_type_idsiçermez. Hangi token'ın hangi segmente ait olduğunu belirtmeniz gerekmez. Segmentleri yalnızca</s>veyatokenizer.sep_tokenayırma token'ı ile ayırmanız yeterlidir.örnekte ayrıntıları görebileceğiniz
global_attention_maskile çıkarım sırasında hangi tokenların yerel olarak, hangilerinin küresel olarak dikkat edeceğini belirleyebilirsiniz.0değeri bir tokenın yerel olarak dikkat ettiğini,1değeri ise bir tokenın küresel olarak dikkat ettiğini ifade eder.LongformerForMaskedLM, RobertaForMaskedLM gibi eğitilir ve aşağıda gösterildiği gibi kullanılmalıdır.
input_ids = tokenizer.encode("This is a sentence from [MASK] training data", return_tensors="pt").to(model.device) mlm_labels = tokenizer.encode("This is a sentence from the training data", return_tensors="pt").to(model.device) loss = model(input_ids, labels=input_ids, masked_lm_labels=mlm_labels)[0]
LongformerConfig
sınıf transformers.LongformerConfig
< source >( transformers_version: str | None = Nonearchitectures: list[str] | None = Noneoutput_hidden_states: bool | None = Falsereturn_dict: bool | None = Truedtype: str | torch.dtype | None = Nonechunk_size_feed_forward: int = 0is_encoder_decoder: bool = Falseid2label: dict[int, str] | dict[str, str] | None = Nonelabel2id: dict[str, int] | dict[str, str] | None = Noneproblem_type: Literal['regression', 'single_label_classification', 'multi_label_classification'] | None = Noneattention_window: list[int] | int = 512sep_token_id: int | None = 2pad_token_id: int | None = 1bos_token_id: int | None = 0eos_token_id: int | list[int] | None = 2vocab_size: int = 30522hidden_size: int = 768num_hidden_layers: int = 12num_attention_heads: int = 12intermediate_size: int = 3072hidden_act: str = 'gelu'hidden_dropout_prob: float | int = 0.1attention_probs_dropout_prob: float | int = 0.1max_position_embeddings: int = 512type_vocab_size: int = 2initializer_range: float = 0.02layer_norm_eps: float = 1e-12onnx_export: bool = Falsetie_word_embeddings: bool = True )
Parametreler
- attention_window (
intveyalist[int], isteğe bağlı, varsayılan 512) — Her token etrafındaki dikkat penceresinin boyutu.intise, tüm katmanlar için aynı boyutu kullanır. Her katman için farklı bir pencere boyutu belirtmek için,len(attention_window) == num_hidden_layersolacak şekilde birlist[int]kullanın. - sep_token_id (
int, isteğe bağlı, varsayılan2) — Sözlükte ayırıcı olarak kullanılan token kimliği. - pad_token_id (
int, isteğe bağlı, varsayılan1) — Sözlükte dolgu için kullanılan token kimliği. - bos_token_id (
int, isteğe bağlı, varsayılan0) — Sözlükte akış başlangıcı için kullanılan token kimliği. - eos_token_id (
Union[int, list[int]], isteğe bağlı, varsayılan2) — Sözlükte akış sonu için kullanılan token kimliği. - vocab_size (
int, isteğe bağlı, varsayılan30522) — Modelin sözlük boyutu.input_idstarafından temsil edilebilecek farklı token sayısını tanımlar. - hidden_size (
int, isteğe bağlı, varsayılan768) — Gizli temsillerin boyutu. - num_hidden_layers (
int, isteğe bağlı, varsayılan12) — Transformer çözücüdeki gizli katman sayısı. - num_attention_heads (
int, isteğe bağlı, varsayılan12) — Transformer decoder'ındaki her dikkat katmanı için dikkat başı sayısı. - intermediate_size (
int, isteğe bağlı, varsayılan3072) — MLP temsillerinin boyutu. - hidden_act (
str, isteğe bağlı, varsayılangelu) — Çözücüdeki doğrusal olmayan aktivasyon fonksiyonu (fonksiyon veya dize). Örneğin,"gelu","relu","silu"vb. - hidden_dropout_prob (
Union[float, int], isteğe bağlı, varsayılan0.1) — Gömme, kodlayıcı ve havuzlayıcıdaki tüm tam bağlı katmanlar için dropout olasılığı. - attention_probs_dropout_prob (
Union[float, int], isteğe bağlı, varsayılan0.1) — Dikkat olasılıkları için dropout oranı. - max_position_embeddings (
int, isteğe bağlı, varsayılan512) — Bu modelin kullanılabileceği en uzun dizi uzunluğu. - type_vocab_size (
int, isteğe bağlı, varsayılan2) —token_type_idsiçin sözlük boyutu. - initializer_range (
float, isteğe bağlı, varsayılan0.02) — Tüm ağırlık matrislerini başlatmak için kullanılan truncated_normal_initializer'ın standart sapması. - layer_norm_eps (
float, isteğe bağlı, varsayılan1e-12) — Katman normalizasyon katmanları tarafından kullanılan epsilon. - onnx_export (
bool, isteğe bağlı, varsayılan: False) — Modelin ONNX dışa aktarılabilir olacak şekilde oluşturulup oluşturulmayacağını belirtir. - tie_word_embeddings (
bool, isteğe bağlı, varsayılanTrue) — Modelintied_weights_keyseşlemesine göre ağırlık gömme bağlamalarının yapılıp yapılmayacağı.
Bu, bir LongformerModel yapılandırmasını depolamak için kullanılan yapılandırma sınıfıdır. Belirtilen argümanlara göre bir Longformer modelinin örneklenmesinde, model mimarisini tanımlamak için kullanılır. Varsayılan değerlerle bir yapılandırma örneklendiğinde, allenai/longformer-base-4096 ile benzer bir yapılandırma elde edilir.
Yapılandırma nesneleri PreTrainedConfig sınıfından devralır ve model çıktılarını kontrol etmek için kullanılabilir. Daha fazla bilgi için PreTrainedConfig belgesini okuyun.
Örnek:
>>> from transformers import LongformerConfig, LongformerModel
>>> # Initializing a Longformer configuration
>>> configuration = LongformerConfig()
>>> # Initializing a model from the configuration
>>> model = LongformerModel(configuration)
>>> # Accessing the model configuration
>>> configuration = model.configLongformerTokenizer
sınıf transformers.RobertaTokenizer
< source >( vocab: str | dict[str, int] | None = Nonemerges: str | list[str] | None = Noneerrors: str = 'replace'bos_token: str = '<s>'eos_token: str = '</s>'sep_token: str = '</s>'cls_token: str = '<s>'unk_token: str = '<unk>'pad_token: str = '<pad>'mask_token: str = '<mask>'add_prefix_space: bool = Falsetrim_offsets: bool = True**kwargs )
Parametreler
- vocab (
str,dictveyalist, isteğe bağlı) — Özel sözlük. Sağlanmazsa, sözlük vocab_file'den yüklenir. - merges (
strveyalist, isteğe bağlı) — Özel birleştirmeler listesi. Sağlanmazsa, birleştirmeler merges_file'den yüklenir. - errors (
str, isteğe bağlı, varsayılan"replace") — Baytların UTF-8'e çözümlenirken izlenecek paradigma. Daha fazla bilgi için bytes.decode'e bakın. - bos_token (
str, isteğe bağlı, varsayılan olarak"<s>") — Ön eğitim sırasında kullanılan dizinin başlangıç token'ı. Bir dizi sınıflandırıcı token'ı olarak kullanılabilir. Özel token'lar kullanılarak bir dizi oluşturulduğunda, dizinin başlangıcı için kullanılan token bu değildir. Kullanılan token, cls_token'dır.Özel jetonlar kullanılarak bir dizi oluşturulduğunda, dizinin başlangıcı için kullanılan jeton bu değildir. Kullanılan jeton
cls_token'dir. - eos_token (
str, isteğe bağlı, varsayılan olarak"</s>") — Dizi sonu belirteci. Özel belirteçler kullanılarak bir dizi oluşturulduğunda, dizi sonu için kullanılan belirteç bu değildir. Kullanılan belirteç sep_token'dir.Özel jetonlar kullanılarak bir dizi oluşturulduğunda, dizinin sonu için kullanılan jeton bu değildir. Kullanılan jeton
sep_token'dir. - sep_token (
str, isteğe bağlı, varsayılan"</s>") — Ayrıştırıcı belirteci; birden fazla diziden bir dizi oluşturulurken kullanılır, örneğin dizi sınıflandırma için iki dizi veya soru cevaplamada bir metin ve bir soru için. Özel belirteçlerle oluşturulan bir dizinin son belirteci olarak da kullanılır. - cls_token (
str, isteğe bağlı, varsayılan"<s>") — Dizilim sınıflandırması yapılırken (token başına sınıflandırma yerine tüm dizilimin sınıflandırılması) kullanılan sınıflandırıcı tokenıdır. Özel tokenlarla oluşturulduğunda dizilimin ilk tokenıdır. - unk_token (
str, isteğe bağlı, varsayılan"<unk>") — Bilinmeyen token. Sözlükte yer almayan bir token, bir kimliğe dönüştürülemez ve bunun yerine bu token olarak ayarlanır. - pad_token (
str, isteğe bağlı, varsayılan"<pad>") — Doldurma için kullanılan jeton, örneğin farklı uzunluklardaki dizileri toplu işleme (batching) sırasında. - mask_token (
str, isteğe bağlı, varsayılan"<mask>") — Değerleri maskelemek için kullanılan belirteç. Bu, modelin maskeli dil modelleme ile eğitildiğinde kullanılan belirteçtir. Modelin tahmin etmeye çalışacağı belirteç budur. - add_prefix_space (
bool, isteğe bağlı, varsayılanFalse) — Girişe başlangıçta bir boşluk eklenip eklenmeyeceğini belirtir. Bu, baştaki kelimenin diğer herhangi bir kelime gibi ele alınmasını sağlar. (RoBERTa tokenizer, kelimelerin başlangıcını önceki boşlukla tespit eder). - trim_offsets (
bool, isteğe bağlı, varsayılanTrue) — Son işleme adımının, boşlukların dahil edilmesini önlemek için ofsetleri kırpıp kırmayacağı.
Bir RoBERTa tokenizer'ı oluşturun (HuggingFace'in tokenizers kütüphanesi tarafından desteklenir). Byte-Pair-Encoding tabanlıdır.
Bu tokenizer, boşlukları tokenların parçaları gibi işlemek üzere eğitilmiştir (biraz da sentencepiece gibi) bu yüzden bir kelime
cümle başında (boşluksuz) mı yoksa değil mi olduğuna göre farklı kodlanabilir:
>>> from transformers import RobertaTokenizer
>>> tokenizer = RobertaTokenizer.from_pretrained("FacebookAI/roberta-base")
>>> tokenizer("Hello world")["input_ids"]
[0, 31414, 232, 2]
>>> tokenizer(" Hello world")["input_ids"]
[0, 20920, 232, 2]Bu davranışın etrafından dolaşmak için bu tokenizer'ı örneklerken veya bazı metinler üzerinde çağırdığınızda add_prefix_space=True parametresini geçebilirsiniz; ancak model bu şekilde ön eğitilmediğinden, performans düşüşüne yol açabilir.
is_split_into_words=Trueile kullanıldığında, bu tokenizer'ınadd_prefix_space=Trueile örneklenmesi gerekir.
Bu tokenizer, ana yöntemlerin çoğunu içeren TokenizersBackend sınıfından devralır. Kullanıcıların bu yöntemlerle ilgili daha fazla bilgi için bu üst sınıfa başvurması gerekir.
Longformer'a özgü çıktılar
sınıf transformers.models.longformer.modeling_longformer.LongformerBaseModelOutput
< source >( last_hidden_state: Tensorhidden_states: tuple[torch.Tensor, ...] | None = Noneattentions: tuple[torch.Tensor, ...] | None = Noneglobal_attentions: tuple[torch.Tensor, ...] | None = None )
Parametreler
- last_hidden_state (
torch.Tensor, şekli(batch_size, sequence_length, hidden_size)) — Modelin son katmanının çıktısındaki gizli durumlar dizisi. - hidden_states (
tuple[torch.Tensor, ...], isteğe bağlı, geri döndürülüroutput_hidden_states=Truegeçildiğinde veyaconfig.output_hidden_states=True) — şu türden bir demet:torch.Tensor(gömme katmanı varsa gömme katmanının çıktısı için bir tane + her katmanın çıktısı için bir tane) ve şekli(batch_size, sequence_length, hidden_size).Her katmanın çıktısında modelin gizli durumları ve isteğe bağlı başlangıç gömme çıktıları.
- attentions (
tuple(torch.Tensor), isteğe bağlı, geri döndürülüroutput_attentions=Truegeçildiğinde veyaconfig.output_attentions=True) — şu şeklindeki bir demettorch.Tensor(katman başına bir adet) ve boyutu(batch_size, num_heads, sequence_length, x + attention_window + 1), buradaxglobal dikkat maskesine sahip token sayısıdır.Dikkat softmax'ı sonrası yerel dikkat ağırlıkları, öz-dikkat kafalarında ağırlıklı ortalamanın hesaplanmasında kullanılır. Bunlar, dizideki her token'dan global dikkate sahip her token'a (ilk
xdeğerleri) ve dikkat penceresindeki her token'a (kalan `attention_window- 1
values). Note that the firstxvalues refer to tokens with fixed positions in the text, but the remainingattention_window + 1values refer to tokens with relative positions: the attention weight of a token to itself is located at indexx + attention_window / 2and theattention_window / 2preceding (succeeding) values are the attention weights to theattention_window / 2preceding (succeeding) tokens. If the attention window contains a token with global attention, the attention weight at the corresponding index is set to 0; the value should be accessed from the firstxattention weights. If a token has global attention, the attention weights to all other tokens inattentionsis set to 0, the values should be accessed fromglobal_attentions`.
- 1
- global_attentions (
tuple(torch.Tensor), isteğe bağlı, geri döndürülüroutput_attentions=Truegeçildiğinde veyaconfig.output_attentions=True) — şu şeklindeki bir demettorch.Tensor(her katman için bir adet) boyutu(batch_size, num_heads, sequence_length, x), buradaxküresel dikkat maskesine sahip jeton sayısıdır.Dikkat softmax'ı sonrası global dikkat ağırlıkları, kendine dikkat (self-attention) kafalarında ağırlıklı ortalamanın hesaplanmasında kullanılır. Bunlar, global dikkate sahip her bir token'ın dizideki her token'a olan dikkat ağırlıklarıdır.
Longformer çıktılarının taban sınıfı; potansiyel gizli durumlar, yerel ve global dikkatler içerir.
sınıf transformers.models.longformer.modeling_longformer.LongformerBaseModelOutputWithPooling
< source >( last_hidden_state: Tensorpooler_output: typing.Optional[torch.Tensor] = Nonehidden_states: tuple[torch.Tensor, ...] | None = Noneattentions: tuple[torch.Tensor, ...] | None = Noneglobal_attentions: tuple[torch.Tensor, ...] | None = None )
Parametreler
- last_hidden_state (
torch.Tensor, şekli(batch_size, sequence_length, hidden_size)) — Modelin son katmanının çıktısındaki gizli durumlar dizisi. - pooler_output (
torch.Tensor, şekli(batch_size, hidden_size)) — Sıranın ilk token'ının (sınıflandırma token'ı) son katman gizli durumu, ayrıca bir Linear katmanı ve Tanh aktivasyon fonksiyonu ile işlenir. Linear katman ağırlıkları, ön eğitim sırasında sonraki cümle tahmini (sınıflandırma) hedefinden eğitilir. - hidden_states (
tuple[torch.Tensor, ...], isteğe bağlı, geri döndürülüroutput_hidden_states=Truegeçildiğinde veyaconfig.output_hidden_states=True) — şu türden bir demet:torch.Tensor(gömme katmanı varsa gömme katmanının çıktısı için bir tane + her katmanın çıktısı için bir tane) ve şekli(batch_size, sequence_length, hidden_size).Her katmanın çıktısında modelin gizli durumları ve isteğe bağlı başlangıç gömme çıktıları.
- attentions (
tuple(torch.Tensor), isteğe bağlı, geri döndürülüroutput_attentions=Truegeçildiğinde veyaconfig.output_attentions=True) — şu şeklindeki bir demettorch.Tensor(katman başına bir adet) ve boyutu(batch_size, num_heads, sequence_length, x + attention_window + 1), buradaxglobal dikkat maskesine sahip token sayısıdır.Dikkat softmax'ı sonrası yerel dikkat ağırlıkları, öz-dikkat kafalarında ağırlıklı ortalamanın hesaplanmasında kullanılır. Bunlar, dizideki her token'dan global dikkate sahip her token'a (ilk
xdeğerleri) ve dikkat penceresindeki her token'a (kalan `attention_window- 1
values). Note that the firstxvalues refer to tokens with fixed positions in the text, but the remainingattention_window + 1values refer to tokens with relative positions: the attention weight of a token to itself is located at indexx + attention_window / 2and theattention_window / 2preceding (succeeding) values are the attention weights to theattention_window / 2preceding (succeeding) tokens. If the attention window contains a token with global attention, the attention weight at the corresponding index is set to 0; the value should be accessed from the firstxattention weights. If a token has global attention, the attention weights to all other tokens inattentionsis set to 0, the values should be accessed fromglobal_attentions`.
- 1
- global_attentions (
tuple(torch.Tensor), isteğe bağlı, geri döndürülüroutput_attentions=Truegeçildiğinde veyaconfig.output_attentions=True) — şu şeklindeki bir demettorch.Tensor(her katman için bir adet) boyutu(batch_size, num_heads, sequence_length, x), buradaxküresel dikkat maskesine sahip jeton sayısıdır.Dikkat softmax'ı sonrası global dikkat ağırlıkları, kendine dikkat (self-attention) kafalarında ağırlıklı ortalamanın hesaplanmasında kullanılır. Bunlar, global dikkate sahip her bir token'ın dizideki her token'a olan dikkat ağırlıklarıdır.
Son gizli durumların bir havuzlamasını da içeren Longformer çıktılarının temel sınıfı.
sınıf transformers.models.longformer.modeling_longformer.LongformerMaskedLMOutput
< source >( loss: typing.Optional[torch.Tensor] = Nonelogits: typing.Optional[torch.Tensor] = Nonehidden_states: tuple[torch.Tensor, ...] | None = Noneattentions: tuple[torch.Tensor, ...] | None = Noneglobal_attentions: tuple[torch.Tensor, ...] | None = None )
Parametreler
- loss (
torch.Tensor, şekli(1,), isteğe bağlı,labelssağlandığında döndürülür) — Maskeli dil modelleme (MLM) kaybı. - logits (
torch.Tensor, şekli(batch_size, sequence_length, config.vocab_size)) — Dil modelleme başlığının tahmin puanları (SoftMax öncesi her sözlük jetonu için puanlar). - hidden_states (
tuple[torch.Tensor, ...], isteğe bağlı, geri döndürülüroutput_hidden_states=Truegeçildiğinde veyaconfig.output_hidden_states=True) — şu türden bir demet:torch.Tensor(gömme katmanı varsa gömme katmanının çıktısı için bir tane + her katmanın çıktısı için bir tane) ve şekli(batch_size, sequence_length, hidden_size).Her katmanın çıktısında modelin gizli durumları ve isteğe bağlı başlangıç gömme çıktıları.
- attentions (
tuple(torch.Tensor), isteğe bağlı, geri döndürülüroutput_attentions=Truegeçildiğinde veyaconfig.output_attentions=True) — şu şeklindeki bir demettorch.Tensor(katman başına bir adet) ve boyutu(batch_size, num_heads, sequence_length, x + attention_window + 1), buradaxglobal dikkat maskesine sahip token sayısıdır.Dikkat softmax'ı sonrası yerel dikkat ağırlıkları, öz-dikkat kafalarında ağırlıklı ortalamanın hesaplanmasında kullanılır. Bunlar, dizideki her token'dan global dikkate sahip her token'a (ilk
xdeğerleri) ve dikkat penceresindeki her token'a (kalan `attention_window- 1
values). Note that the firstxvalues refer to tokens with fixed positions in the text, but the remainingattention_window + 1values refer to tokens with relative positions: the attention weight of a token to itself is located at indexx + attention_window / 2and theattention_window / 2preceding (succeeding) values are the attention weights to theattention_window / 2preceding (succeeding) tokens. If the attention window contains a token with global attention, the attention weight at the corresponding index is set to 0; the value should be accessed from the firstxattention weights. If a token has global attention, the attention weights to all other tokens inattentionsis set to 0, the values should be accessed fromglobal_attentions`.
- 1
- global_attentions (
tuple(torch.Tensor), isteğe bağlı, geri döndürülüroutput_attentions=Truegeçildiğinde veyaconfig.output_attentions=True) — şu şeklindeki bir demettorch.Tensor(her katman için bir adet) boyutu(batch_size, num_heads, sequence_length, x), buradaxküresel dikkat maskesine sahip jeton sayısıdır.Dikkat softmax'ı sonrası global dikkat ağırlıkları, kendine dikkat (self-attention) kafalarında ağırlıklı ortalamanın hesaplanmasında kullanılır. Bunlar, global dikkate sahip her bir token'ın dizideki her token'a olan dikkat ağırlıklarıdır.
Maskeli dil modelleri çıktıları için temel sınıf.
sınıf transformers.models.longformer.modeling_longformer.LongformerQuestionAnsweringModelOutput
< source >( loss: typing.Optional[torch.Tensor] = Nonestart_logits: typing.Optional[torch.Tensor] = Noneend_logits: typing.Optional[torch.Tensor] = Nonehidden_states: tuple[torch.Tensor, ...] | None = Noneattentions: tuple[torch.Tensor, ...] | None = Noneglobal_attentions: tuple[torch.Tensor, ...] | None = None )
Parametreler
- loss (
torch.Tensor, şekli(1,), isteğe bağlı,labelssağlandığında döndürülür) — Toplam span çıkarım kaybı, başlangıç ve bitiş konumları için Çapraz Entropinin (Cross-Entropy) toplamıdır. - start_logits (
torch.Tensor, şekli(batch_size, sequence_length), isteğe bağlı) — SoftMax öncesi span başlangıç puanları. - end_logits (
torch.Tensor, şekli(batch_size, sequence_length), isteğe bağlı) — Span sonu puanları (SoftMax öncesi). - hidden_states (
tuple[torch.Tensor, ...], isteğe bağlı, geri döndürülüroutput_hidden_states=Truegeçildiğinde veyaconfig.output_hidden_states=True) — şu türden bir demet:torch.Tensor(gömme katmanı varsa gömme katmanının çıktısı için bir tane + her katmanın çıktısı için bir tane) ve şekli(batch_size, sequence_length, hidden_size).Her katmanın çıktısında modelin gizli durumları ve isteğe bağlı başlangıç gömme çıktıları.
- attentions (
tuple(torch.Tensor), isteğe bağlı, geri döndürülüroutput_attentions=Truegeçildiğinde veyaconfig.output_attentions=True) — şu şeklindeki bir demettorch.Tensor(katman başına bir adet) ve boyutu(batch_size, num_heads, sequence_length, x + attention_window + 1), buradaxglobal dikkat maskesine sahip token sayısıdır.Dikkat softmax'ı sonrası yerel dikkat ağırlıkları, öz-dikkat kafalarında ağırlıklı ortalamanın hesaplanmasında kullanılır. Bunlar, dizideki her token'dan global dikkate sahip her token'a (ilk
xdeğerleri) ve dikkat penceresindeki her token'a (kalan `attention_window- 1
values). Note that the firstxvalues refer to tokens with fixed positions in the text, but the remainingattention_window + 1values refer to tokens with relative positions: the attention weight of a token to itself is located at indexx + attention_window / 2and theattention_window / 2preceding (succeeding) values are the attention weights to theattention_window / 2preceding (succeeding) tokens. If the attention window contains a token with global attention, the attention weight at the corresponding index is set to 0; the value should be accessed from the firstxattention weights. If a token has global attention, the attention weights to all other tokens inattentionsis set to 0, the values should be accessed fromglobal_attentions`.
- 1
- global_attentions (
tuple(torch.Tensor), isteğe bağlı, geri döndürülüroutput_attentions=Truegeçildiğinde veyaconfig.output_attentions=True) — şu şeklindeki bir demettorch.Tensor(her katman için bir adet) boyutu(batch_size, num_heads, sequence_length, x), buradaxküresel dikkat maskesine sahip jeton sayısıdır.Dikkat softmax'ı sonrası global dikkat ağırlıkları, kendine dikkat (self-attention) kafalarında ağırlıklı ortalamanın hesaplanmasında kullanılır. Bunlar, global dikkate sahip her bir token'ın dizideki her token'a olan dikkat ağırlıklarıdır.
Soru yanıtlama Longformer modellerinin çıktıları için temel sınıf.
sınıf transformers.models.longformer.modeling_longformer.LongformerSequenceClassifierOutput
< source >( loss: typing.Optional[torch.Tensor] = Nonelogits: typing.Optional[torch.Tensor] = Nonehidden_states: tuple[torch.Tensor, ...] | None = Noneattentions: tuple[torch.Tensor, ...] | None = Noneglobal_attentions: tuple[torch.Tensor, ...] | None = None )
Parametreler
- loss (
torch.Tensor, şekli(1,), isteğe bağlı,labelssağlandığında döndürülür) — Sınıflandırma (config.num_labels==1 ise regresyon) kaybı. - logits (
torch.Tensor, şekli(batch_size, config.num_labels)) — Sınıflandırma (veya config.num_labels==1 ise regresyon) puanları (SoftMax öncesi). - hidden_states (
tuple[torch.Tensor, ...], isteğe bağlı, geri döndürülüroutput_hidden_states=Truegeçildiğinde veyaconfig.output_hidden_states=True) — şu türden bir demet:torch.Tensor(gömme katmanı varsa gömme katmanının çıktısı için bir tane + her katmanın çıktısı için bir tane) ve şekli(batch_size, sequence_length, hidden_size).Her katmanın çıktısında modelin gizli durumları ve isteğe bağlı başlangıç gömme çıktıları.
- attentions (
tuple(torch.Tensor), isteğe bağlı, geri döndürülüroutput_attentions=Truegeçildiğinde veyaconfig.output_attentions=True) — şu şeklindeki bir demettorch.Tensor(katman başına bir adet) ve boyutu(batch_size, num_heads, sequence_length, x + attention_window + 1), buradaxglobal dikkat maskesine sahip token sayısıdır.Dikkat softmax'ı sonrası yerel dikkat ağırlıkları, öz-dikkat kafalarında ağırlıklı ortalamanın hesaplanmasında kullanılır. Bunlar, dizideki her token'dan global dikkate sahip her token'a (ilk
xdeğerleri) ve dikkat penceresindeki her token'a (kalan `attention_window- 1
values). Note that the firstxvalues refer to tokens with fixed positions in the text, but the remainingattention_window + 1values refer to tokens with relative positions: the attention weight of a token to itself is located at indexx + attention_window / 2and theattention_window / 2preceding (succeeding) values are the attention weights to theattention_window / 2preceding (succeeding) tokens. If the attention window contains a token with global attention, the attention weight at the corresponding index is set to 0; the value should be accessed from the firstxattention weights. If a token has global attention, the attention weights to all other tokens inattentionsis set to 0, the values should be accessed fromglobal_attentions`.
- 1
- global_attentions (
tuple(torch.Tensor), isteğe bağlı, geri döndürülüroutput_attentions=Truegeçildiğinde veyaconfig.output_attentions=True) — şu şeklindeki bir demettorch.Tensor(her katman için bir adet) boyutu(batch_size, num_heads, sequence_length, x), buradaxküresel dikkat maskesine sahip jeton sayısıdır.Dikkat softmax'ı sonrası global dikkat ağırlıkları, kendine dikkat (self-attention) kafalarında ağırlıklı ortalamanın hesaplanmasında kullanılır. Bunlar, global dikkate sahip her bir token'ın dizideki her token'a olan dikkat ağırlıklarıdır.
Cümle sınıflandırma modellerinin çıktıları için temel sınıf.
sınıf transformers.models.longformer.modeling_longformer.LongformerMultipleChoiceModelOutput
< source >( loss: typing.Optional[torch.Tensor] = Nonelogits: typing.Optional[torch.Tensor] = Nonehidden_states: tuple[torch.Tensor, ...] | None = Noneattentions: tuple[torch.Tensor, ...] | None = Noneglobal_attentions: tuple[torch.Tensor, ...] | None = None )
Parametreler
- loss (
torch.Tensor, şekli (1,), isteğe bağlı,labelssağlandığında döndürülür) — Sınıflandırma kaybı. - logits (
torch.Tensorşeklinde(batch_size, num_choices)) — num_choices girdi tensörlerinin ikinci boyutudur. (bkz. input_ids yukarıda).Sınıflandırma puanları (SoftMax öncesi).
- hidden_states (
tuple[torch.Tensor, ...], isteğe bağlı, geri döndürülüroutput_hidden_states=Truegeçildiğinde veyaconfig.output_hidden_states=True) — şu türden bir demet:torch.Tensor(gömme katmanı varsa gömme katmanının çıktısı için bir tane + her katmanın çıktısı için bir tane) ve şekli(batch_size, sequence_length, hidden_size).Her katmanın çıktısında modelin gizli durumları ve isteğe bağlı başlangıç gömme çıktıları.
- attentions (
tuple(torch.Tensor), isteğe bağlı, geri döndürülüroutput_attentions=Truegeçildiğinde veyaconfig.output_attentions=True) — şu şeklindeki bir demettorch.Tensor(katman başına bir adet) ve boyutu(batch_size, num_heads, sequence_length, x + attention_window + 1), buradaxglobal dikkat maskesine sahip token sayısıdır.Dikkat softmax'ı sonrası yerel dikkat ağırlıkları, öz-dikkat kafalarında ağırlıklı ortalamanın hesaplanmasında kullanılır. Bunlar, dizideki her token'dan global dikkate sahip her token'a (ilk
xdeğerleri) ve dikkat penceresindeki her token'a (kalan `attention_window- 1
values). Note that the firstxvalues refer to tokens with fixed positions in the text, but the remainingattention_window + 1values refer to tokens with relative positions: the attention weight of a token to itself is located at indexx + attention_window / 2and theattention_window / 2preceding (succeeding) values are the attention weights to theattention_window / 2preceding (succeeding) tokens. If the attention window contains a token with global attention, the attention weight at the corresponding index is set to 0; the value should be accessed from the firstxattention weights. If a token has global attention, the attention weights to all other tokens inattentionsis set to 0, the values should be accessed fromglobal_attentions`.
- 1
- global_attentions (
tuple(torch.Tensor), isteğe bağlı, geri döndürülüroutput_attentions=Truegeçildiğinde veyaconfig.output_attentions=True) — şu şeklindeki bir demettorch.Tensor(her katman için bir adet) boyutu(batch_size, num_heads, sequence_length, x), buradaxküresel dikkat maskesine sahip jeton sayısıdır.Dikkat softmax'ı sonrası global dikkat ağırlıkları, kendine dikkat (self-attention) kafalarında ağırlıklı ortalamanın hesaplanmasında kullanılır. Bunlar, global dikkate sahip her bir token'ın dizideki her token'a olan dikkat ağırlıklarıdır.
Çoklu seçim Longformer modellerinin çıktıları için temel sınıf.
sınıf transformers.models.longformer.modeling_longformer.LongformerTokenClassifierOutput
< source >( loss: typing.Optional[torch.Tensor] = Nonelogits: typing.Optional[torch.Tensor] = Nonehidden_states: tuple[torch.Tensor, ...] | None = Noneattentions: tuple[torch.Tensor, ...] | None = Noneglobal_attentions: tuple[torch.Tensor, ...] | None = None )
Parametreler
- loss (
torch.Tensor, şekli(1,), isteğe bağlı,labelssağlandığında döndürülür) — Sınıflandırma kaybı. - logits (
torch.Tensor, şekli(batch_size, sequence_length, config.num_labels)) — Sınıflandırma puanları (SoftMax öncesi). - hidden_states (
tuple[torch.Tensor, ...], isteğe bağlı, geri döndürülüroutput_hidden_states=Truegeçildiğinde veyaconfig.output_hidden_states=True) — şu türden bir demet:torch.Tensor(gömme katmanı varsa gömme katmanının çıktısı için bir tane + her katmanın çıktısı için bir tane) ve şekli(batch_size, sequence_length, hidden_size).Her katmanın çıktısında modelin gizli durumları ve isteğe bağlı başlangıç gömme çıktıları.
- attentions (
tuple(torch.Tensor), isteğe bağlı, geri döndürülüroutput_attentions=Truegeçildiğinde veyaconfig.output_attentions=True) — şu şeklindeki bir demettorch.Tensor(katman başına bir adet) ve boyutu(batch_size, num_heads, sequence_length, x + attention_window + 1), buradaxglobal dikkat maskesine sahip token sayısıdır.Dikkat softmax'ı sonrası yerel dikkat ağırlıkları, öz-dikkat kafalarında ağırlıklı ortalamanın hesaplanmasında kullanılır. Bunlar, dizideki her token'dan global dikkate sahip her token'a (ilk
xdeğerleri) ve dikkat penceresindeki her token'a (kalan `attention_window- 1
values). Note that the firstxvalues refer to tokens with fixed positions in the text, but the remainingattention_window + 1values refer to tokens with relative positions: the attention weight of a token to itself is located at indexx + attention_window / 2and theattention_window / 2preceding (succeeding) values are the attention weights to theattention_window / 2preceding (succeeding) tokens. If the attention window contains a token with global attention, the attention weight at the corresponding index is set to 0; the value should be accessed from the firstxattention weights. If a token has global attention, the attention weights to all other tokens inattentionsis set to 0, the values should be accessed fromglobal_attentions`.
- 1
- global_attentions (
tuple(torch.Tensor), isteğe bağlı, geri döndürülüroutput_attentions=Truegeçildiğinde veyaconfig.output_attentions=True) — şu şeklindeki bir demettorch.Tensor(her katman için bir adet) boyutu(batch_size, num_heads, sequence_length, x), buradaxküresel dikkat maskesine sahip jeton sayısıdır.Dikkat softmax'ı sonrası global dikkat ağırlıkları, kendine dikkat (self-attention) kafalarında ağırlıklı ortalamanın hesaplanmasında kullanılır. Bunlar, global dikkate sahip her bir token'ın dizideki her token'a olan dikkat ağırlıklarıdır.
Token sınıflandırma modellerinin çıktıları için temel sınıf.
LongformerModel
sınıf transformers.LongformerModel
< source >( config: LongformerConfigadd_pooling_layer = True )
Parametreler
- config (LongformerConfig) — Modelin tüm parametrelerini içeren model yapılandırma sınıfı. Bir yapılandırma dosyasıyla başlatmak, modelle ilişkili ağırlıkları yüklemez, yalnızca yapılandırmayı yükler. Model ağırlıklarını yüklemek için from_pretrained() yöntemine bakın.
- add_pooling_layer (
bool, isteğe bağlı, varsayılanTrue) — Bir havuzlama katmanı eklenip eklenmeyeceği
Üzerinde herhangi bir özel başlık olmadan ham gizli durumları (hidden-states) üreten çıplak Longformer Modeli.
Bu model PreTrainedModel sınıfından devralır. Kütüphanenin tüm modelleri için uyguladığı genel yöntemler (indirme veya kaydetme, giriş gömme boyutlarını yeniden boyutlandırma, başları budama vb.) için üst sınıf belgelendirmesine bakın.
Bu model aynı zamanda bir PyTorch torch.nn.Module alt sınıfıdır. Bunu standart bir PyTorch Module olarak kullanın ve genel kullanım ve davranışla ilgili tüm konular için PyTorch dokümantasyonuna başvurun.
forward
< source >( input_ids: typing.Optional[torch.Tensor] = Noneattention_mask: typing.Optional[torch.Tensor] = Noneglobal_attention_mask: typing.Optional[torch.Tensor] = Nonetoken_type_ids: typing.Optional[torch.Tensor] = Noneposition_ids: typing.Optional[torch.Tensor] = Noneinputs_embeds: typing.Optional[torch.Tensor] = Noneoutput_attentions: bool | None = Noneoutput_hidden_states: bool | None = Nonereturn_dict: bool | None = None**kwargs ) → LongformerBaseModelOutputWithPooling or tuple(torch.Tensor)
Parametreler
- input_ids (
torch.Tensorşeklinde(batch_size, sequence_length), isteğe bağlı) — Sözlükteki girdi dizisi belirteçlerinin (token) indeksleri. Varsayılan olarak dolgu (padding) yok sayılır.Dizinler AutoTokenizer kullanılarak elde edilebilir. Ayrıntılar için PreTrainedTokenizer.encode() ve PreTrainedTokenizer.call() konularına bakın.
- attention_mask (
torch.Tensorşeklinde(batch_size, sequence_length), isteğe bağlı) — Doldurma (padding) token indekslerinde dikkat (attention) işlemi yapmaktan kaçınmak için kullanılan maske. Seçilen maske değerleri[0, 1]:- 1, maskelenmemiş jetonlar için,
- maskelenmiş jetonlar için 0.
- global_attention_mask (
torch.Tensorşeklinde(batch_size, sequence_length), isteğe bağlı) — Her token'a verilecek dikkati belirlemek için maske: yerel dikkat veya global dikkat. Global dikkate sahip tokenlar diğer tüm tokenlara dikkat eder ve diğer tüm tokenlar da onlara dikkat eder. Bu, modelin görevi temsil etmede daha esnek hale gelmesini sağladığı için görev bazlı ince ayar için önemlidir. Örneğin, sınıflandırma içintoken'ına global dikkat verilmelidir. Soru-cevap için tüm soru tokenları da global dikkate sahip olmalıdır. Daha fazla Longformer makalesine bakın. Mask değerleri[0, 1]:- yerel dikkat için 0 (kayan pencere dikkati),
- 1, küresel dikkat için (tüm diğer token'lara dikkat eden ve tüm diğer token'ların da onlara dikkat ettiği token'lar).
- token_type_ids (
torch.Tensorşeklinde(batch_size, sequence_length), isteğe bağlı) — Girdilerin ilk ve ikinci bölümlerini belirtmek için segment token dizinleri. Dizinler[0, 1]:- 0, sentence A belirteci ile eşleşir,
- 1, sentence B belirteçlerine karşılık gelir.
- position_ids (
torch.Tensorşeklinde(batch_size, sequence_length), isteğe bağlı) — Girdi dizilerindeki her token'ın konum gömme (position embedding) içindeki konum indeksleri. Seçim aralığı[0, config.n_positions - 1]. - inputs_embeds (
torch.Tensor, şekli(batch_size, sequence_length, hidden_size), isteğe bağlı) — İsteğe bağlı olarak,input_idsyerine gömülü bir temsil doğrudan geçmeyi tercih edebilirsiniz. Bu,input_idsdizinlerini ilgili vektörlere dönüştürme biçimi üzerinde modelin dahili gömme arama matrisinden daha fazla kontrol sahibi olmak istiyorsanız faydalıdır. - output_attentions (
bool, isteğe bağlı) — Tüm dikkat katmanlarının dikkat tensörlerinin döndürülüp döndürülmeyeceğini belirtir. Daha fazla ayrıntı için döndürülen tensörler altındakiattentionsbölümüne bakın. - output_hidden_states (
bool, isteğe bağlı) — Tüm katmanların gizli durumlarının (hidden states) döndürülüp döndürülmeyeceğini belirtir. Daha fazla ayrıntı için döndürülen tensörler altındakihidden_statesbölümüne bakın. - return_dict (
bool, isteğe bağlı) — Düz bir tuple yerine ModelOutput döndürülecek mi?
Dönüş değeri
LongformerBaseModelOutputWithPooling veya tuple(torch.Tensor)
A LongformerBaseModelOutputWithPooling veya bir torch.Tensor demeti (eğer return_dict=False geçirildiyse veya config.return_dict=False ise), yapılandırmaya (LongformerConfig) ve girdilere bağlı olarak çeşitli öğelerden oluşur.
LongformerModel forward metodu, __call__ özel metodunu geçersiz kılar.
İleri geçiş tarifi bu fonksiyon içinde tanımlanmalı olsa da, sonrasında bunun yerine
Moduleörneğini çağırmak gerekir; çünkü önceki, ön ve son işleme adımlarını çalıştırmaktan sorumluyken ikincisi bunları sessizce yok sayar.
last_hidden_state (
torch.Tensor, şekli(batch_size, sequence_length, hidden_size)) — Modelin son katmanının çıktısındaki gizli durumlar dizisi.pooler_output (
torch.Tensor, şekli(batch_size, hidden_size)) — Sıranın ilk token'ının (sınıflandırma token'ı) son katman gizli durumu, daha sonra bir Linear katmanı ve Tanh aktivasyon fonksiyonu ile işlenir. Linear katman ağırlıkları, ön eğitim sırasında bir sonraki cümle tahmini (sınıflandırma) hedefinden eğitilir.hidden_states (
tuple[torch.Tensor, ...], isteğe bağlı,output_hidden_states=Truegeçirildiğinde veyaconfig.output_hidden_states=Trueolduğunda döndürülür) —torch.Tensor(modelin bir gömme katmanı varsa gömme katmanının çıktısı için bir tane + her katmanın çıktısı için birer tane) içeren,(batch_size, sequence_length, hidden_size)biçiminde bir demet.Her katmanın çıktısında modelin gizli durumları ve isteğe bağlı başlangıç gömme çıktıları.
attentions (
tuple(torch.Tensor), isteğe bağlı,output_attentions=Truegeçirildiğinde veyaconfig.output_attentions=Trueolduğunda döndürülür) —torch.Tensor(katman başına bir tane) içeren bir tuple, şekli(batch_size, num_heads, sequence_length, x + attention_window + 1), buradaxküresel dikkat maskesine sahip jeton sayısıdır.Dikkat softmax'ı sonrası yerel dikkat ağırlıkları, öz-dikkat kafalarında ağırlıklı ortalamanın hesaplanmasında kullanılır. Bunlar, dizideki her token'dan global dikkate sahip her token'a (ilk
xdeğerleri) ve dikkat penceresindeki her token'a (kalan `attention_window- 1
values). Note that the firstxvalues refer to tokens with fixed positions in the text, but the remainingattention_window + 1values refer to tokens with relative positions: the attention weight of a token to itself is located at indexx + attention_window / 2and theattention_window / 2preceding (succeeding) values are the attention weights to theattention_window / 2preceding (succeeding) tokens. If the attention window contains a token with global attention, the attention weight at the corresponding index is set to 0; the value should be accessed from the firstxattention weights. If a token has global attention, the attention weights to all other tokens inattentionsis set to 0, the values should be accessed fromglobal_attentions`.
- 1
global_attentions (
tuple(torch.Tensor), isteğe bağlı,output_attentions=Truegeçirildiğinde veyaconfig.output_attentions=Trueolduğunda döndürülür) —torch.Tensor(katman başına bir tane) içeren bir tuple, şekli(batch_size, num_heads, sequence_length, x), buradax, global dikkat maskesine sahip jeton sayısıdır.Dikkat softmax'ı sonrası global dikkat ağırlıkları, kendine dikkat (self-attention) kafalarında ağırlıklı ortalamanın hesaplanmasında kullanılır. Bunlar, global dikkate sahip her bir token'ın dizideki her token'a olan dikkat ağırlıklarıdır.
Örnekler:
>>> import torch
>>> from transformers import LongformerModel, AutoTokenizer
>>> model = LongformerModel.from_pretrained("allenai/longformer-base-4096")
>>> tokenizer = AutoTokenizer.from_pretrained("allenai/longformer-base-4096")
>>> SAMPLE_TEXT = " ".join(["Hello world! "] * 1000) # long input document
>>> input_ids = torch.tensor(tokenizer.encode(SAMPLE_TEXT)).unsqueeze(0) # batch of size 1
>>> attention_mask = torch.ones(
... input_ids.shape, dtype=torch.long, device=input_ids.device
... ) # initialize to local attention
>>> global_attention_mask = torch.zeros(
... input_ids.shape, dtype=torch.long, device=input_ids.device
... ) # initialize to global attention to be deactivated for all tokens
>>> global_attention_mask[
... :,
... [
... 1,
... 4,
... 21,
... ],
... ] = 1 # Set global attention to random tokens for the sake of this example
>>> # Usually, set global attention based on the task. For example,
>>> # classification: the <s> token
>>> # QA: question tokens
>>> # LM: potentially on the beginning of sentences and paragraphs
>>> outputs = model(input_ids, attention_mask=attention_mask, global_attention_mask=global_attention_mask)
>>> sequence_output = outputs.last_hidden_state
>>> pooled_output = outputs.pooler_outputLongformerForMaskedLM
sınıf transformers.LongformerForMaskedLM
< source >( config: LongformerConfig )
Parametreler
- config (LongformerConfig) — Modelin tüm parametrelerini içeren model yapılandırma sınıfı. Bir yapılandırma dosyasıyla başlatmak, modelle ilişkili ağırlıkları yüklemez, yalnızca yapılandırmayı yükler. Model ağırlıklarını yüklemek için from_pretrained() yöntemine bakın.
Üstünde language modeling başlığı bulunan Longformer Modeli.”
Bu model PreTrainedModel sınıfından devralır. Kütüphanenin tüm modelleri için uyguladığı genel yöntemler (indirme veya kaydetme, giriş gömme boyutlarını yeniden boyutlandırma, başları budama vb.) için üst sınıf belgelendirmesine bakın.
Bu model aynı zamanda bir PyTorch torch.nn.Module alt sınıfıdır. Bunu standart bir PyTorch Module olarak kullanın ve genel kullanım ve davranışla ilgili tüm konular için PyTorch dokümantasyonuna başvurun.
forward
< source >( input_ids: typing.Optional[torch.Tensor] = Noneattention_mask: typing.Optional[torch.Tensor] = Noneglobal_attention_mask: typing.Optional[torch.Tensor] = Nonetoken_type_ids: typing.Optional[torch.Tensor] = Noneposition_ids: typing.Optional[torch.Tensor] = Noneinputs_embeds: typing.Optional[torch.Tensor] = Nonelabels: typing.Optional[torch.Tensor] = Noneoutput_attentions: bool | None = Noneoutput_hidden_states: bool | None = Nonereturn_dict: bool | None = None**kwargs ) → LongformerMaskedLMOutput or tuple(torch.Tensor)
Parametreler
- input_ids (
torch.Tensorşeklinde(batch_size, sequence_length), isteğe bağlı) — Sözlükteki girdi dizisi belirteçlerinin (token) indeksleri. Varsayılan olarak dolgu (padding) yok sayılır.Dizinler AutoTokenizer kullanılarak elde edilebilir. Ayrıntılar için PreTrainedTokenizer.encode() ve PreTrainedTokenizer.call() konularına bakın.
- attention_mask (
torch.Tensorşeklinde(batch_size, sequence_length), isteğe bağlı) — Doldurma (padding) token indekslerinde dikkat (attention) işlemi yapmaktan kaçınmak için kullanılan maske. Seçilen maske değerleri[0, 1]:- 1, maskelenmemiş jetonlar için,
- maskelenmiş jetonlar için 0.
- global_attention_mask (
torch.Tensorşeklinde(batch_size, sequence_length), isteğe bağlı) — Her token'a verilecek dikkati belirlemek için maske: yerel dikkat veya global dikkat. Global dikkate sahip tokenlar diğer tüm tokenlara dikkat eder ve diğer tüm tokenlar da onlara dikkat eder. Bu, modelin görevi temsil etmede daha esnek hale gelmesini sağladığı için görev bazlı ince ayar için önemlidir. Örneğin, sınıflandırma içintoken'ına global dikkat verilmelidir. Soru-cevap için tüm soru tokenları da global dikkate sahip olmalıdır. Daha fazla Longformer makalesine bakın. Mask değerleri[0, 1]:- yerel dikkat için 0 (kayan pencere dikkati),
- 1, küresel dikkat için (tüm diğer token'lara dikkat eden ve tüm diğer token'ların da onlara dikkat ettiği token'lar).
- token_type_ids (
torch.Tensorşeklinde(batch_size, sequence_length), isteğe bağlı) — Girdilerin ilk ve ikinci bölümlerini belirtmek için segment token dizinleri. Dizinler[0, 1]:- 0, sentence A belirteci ile eşleşir,
- 1, sentence B belirteçlerine karşılık gelir.
- position_ids (
torch.Tensorşeklinde(batch_size, sequence_length), isteğe bağlı) — Girdi dizilerindeki her token'ın konum gömme (position embedding) içindeki konum indeksleri. Seçim aralığı[0, config.n_positions - 1]. - inputs_embeds (
torch.Tensor, şekli(batch_size, sequence_length, hidden_size), isteğe bağlı) — İsteğe bağlı olarak,input_idsyerine gömülü bir temsil doğrudan geçmeyi tercih edebilirsiniz. Bu,input_idsdizinlerini ilgili vektörlere dönüştürme biçimi üzerinde modelin dahili gömme arama matrisinden daha fazla kontrol sahibi olmak istiyorsanız faydalıdır. - labels (
torch.LongTensor, şekli(batch_size, sequence_length), isteğe bağlı) — Maskeli dil modelleme kaybını hesaplamak için etiketler. Endeksler[-100, 0, ..., config.vocab_size]aralığında olmalıdır (bkz.input_idsdocstring). Endeksleri-100olarak ayarlanan jetonlar yok sayılır (maskelenir), kayıp yalnızca etiketleri[0, ..., config.vocab_size]aralığında olan jetonlar için hesaplanır. - output_attentions (
bool, isteğe bağlı) — Tüm dikkat katmanlarının dikkat tensörlerinin döndürülüp döndürülmeyeceğini belirtir. Daha fazla ayrıntı için döndürülen tensörler altındakiattentionsbölümüne bakın. - output_hidden_states (
bool, isteğe bağlı) — Tüm katmanların gizli durumlarının (hidden states) döndürülüp döndürülmeyeceğini belirtir. Daha fazla ayrıntı için döndürülen tensörler altındakihidden_statesbölümüne bakın. - return_dict (
bool, isteğe bağlı) — Düz bir tuple yerine ModelOutput döndürülecek mi?
Dönüş değeri
LongformerMaskedLMOutput veya tuple(torch.Tensor)
A LongformerMaskedLMOutput veya bir torch.Tensor demeti (eğer return_dict=False geçirildiyse veya config.return_dict=False ise), yapılandırmaya (LongformerConfig) ve girdilere bağlı olarak çeşitli öğelerden oluşur.
LongformerForMaskedLM forward metodu, __call__ özel metodunu geçersiz kılar.
İleri geçiş tarifi bu fonksiyon içinde tanımlanmalı olsa da, sonrasında bunun yerine
Moduleörneğini çağırmak gerekir; çünkü önceki, ön ve son işleme adımlarını çalıştırmaktan sorumluyken ikincisi bunları sessizce yok sayar.
loss (
torch.Tensor, şekli(1,), isteğe bağlı,labelssağlandığında döndürülür) — Maskeli dil modelleme (MLM) kaybı.logits (
torch.Tensor, şekli(batch_size, sequence_length, config.vocab_size)) — Dil modelleme başlığının tahmin puanları (SoftMax öncesi her sözlük jetonu için puanlar).hidden_states (
tuple[torch.Tensor, ...], isteğe bağlı,output_hidden_states=Truegeçirildiğinde veyaconfig.output_hidden_states=Trueolduğunda döndürülür) —torch.Tensor(modelin bir gömme katmanı varsa gömme katmanının çıktısı için bir tane + her katmanın çıktısı için birer tane) içeren,(batch_size, sequence_length, hidden_size)biçiminde bir demet.Her katmanın çıktısında modelin gizli durumları ve isteğe bağlı başlangıç gömme çıktıları.
attentions (
tuple(torch.Tensor), isteğe bağlı,output_attentions=Truegeçirildiğinde veyaconfig.output_attentions=Trueolduğunda döndürülür) —torch.Tensor(katman başına bir tane) içeren bir tuple, şekli(batch_size, num_heads, sequence_length, x + attention_window + 1), buradaxküresel dikkat maskesine sahip jeton sayısıdır.Dikkat softmax'ı sonrası yerel dikkat ağırlıkları, öz-dikkat kafalarında ağırlıklı ortalamanın hesaplanmasında kullanılır. Bunlar, dizideki her token'dan global dikkate sahip her token'a (ilk
xdeğerleri) ve dikkat penceresindeki her token'a (kalan `attention_window- 1
values). Note that the firstxvalues refer to tokens with fixed positions in the text, but the remainingattention_window + 1values refer to tokens with relative positions: the attention weight of a token to itself is located at indexx + attention_window / 2and theattention_window / 2preceding (succeeding) values are the attention weights to theattention_window / 2preceding (succeeding) tokens. If the attention window contains a token with global attention, the attention weight at the corresponding index is set to 0; the value should be accessed from the firstxattention weights. If a token has global attention, the attention weights to all other tokens inattentionsis set to 0, the values should be accessed fromglobal_attentions`.
- 1
global_attentions (
tuple(torch.Tensor), isteğe bağlı,output_attentions=Truegeçirildiğinde veyaconfig.output_attentions=Trueolduğunda döndürülür) —torch.Tensor(katman başına bir tane) içeren bir tuple, şekli(batch_size, num_heads, sequence_length, x), buradax, global dikkat maskesine sahip jeton sayısıdır.Dikkat softmax'ı sonrası global dikkat ağırlıkları, kendine dikkat (self-attention) kafalarında ağırlıklı ortalamanın hesaplanmasında kullanılır. Bunlar, global dikkate sahip her bir token'ın dizideki her token'a olan dikkat ağırlıklarıdır.
Örnek Mask doldurma:
>>> from transformers import AutoTokenizer, LongformerForMaskedLM
>>> tokenizer = AutoTokenizer.from_pretrained("allenai/longformer-base-4096")
>>> model = LongformerForMaskedLM.from_pretrained("allenai/longformer-base-4096")Çok uzun bir girdi deneyelim.
>>> TXT = (
... "My friends are <mask> but they eat too many carbs."
... + " That's why I decide not to eat with them." * 300
... )
>>> input_ids = tokenizer([TXT], return_tensors="pt")["input_ids"]
>>> logits = model(input_ids).logits
>>> masked_index = (input_ids[0] == tokenizer.mask_token_id).nonzero().item()
>>> probs = logits[0, masked_index].softmax(dim=0)
>>> values, predictions = probs.topk(5)
>>> tokenizer.decode(predictions).split()
['healthy', 'skinny', 'thin', 'good', 'vegetarian']LongformerForSequenceClassification
sınıf transformers.LongformerForSequenceClassification
< source >( config: LongformerConfig )
Parametreler
- config (LongformerConfig) — Modelin tüm parametrelerini içeren model yapılandırma sınıfı. Bir yapılandırma dosyasıyla başlatmak, modelle ilişkili ağırlıkları yüklemez, yalnızca yapılandırmayı yükler. Model ağırlıklarını yüklemek için from_pretrained() yöntemine bakın.
Longformer Model, üstünde bir dınıflandırma/geri dönüş (regression) başlığı (toplanmış çıktının üzerinde doğrusal bir katman) bulunan transformer modeli, örneğin GLUE görevleri için.
Bu model PreTrainedModel sınıfından devralır. Kütüphanenin tüm modelleri için uyguladığı genel yöntemler (indirme veya kaydetme, giriş gömme boyutlarını yeniden boyutlandırma, başları budama vb.) için üst sınıf belgelendirmesine bakın.
Bu model aynı zamanda bir PyTorch torch.nn.Module alt sınıfıdır. Bunu standart bir PyTorch Module olarak kullanın ve genel kullanım ve davranışla ilgili tüm konular için PyTorch dokümantasyonuna başvurun.
forward
< source >( input_ids: typing.Optional[torch.Tensor] = Noneattention_mask: typing.Optional[torch.Tensor] = Noneglobal_attention_mask: typing.Optional[torch.Tensor] = Nonetoken_type_ids: typing.Optional[torch.Tensor] = Noneposition_ids: typing.Optional[torch.Tensor] = Noneinputs_embeds: typing.Optional[torch.Tensor] = Nonelabels: typing.Optional[torch.Tensor] = Noneoutput_attentions: bool | None = Noneoutput_hidden_states: bool | None = Nonereturn_dict: bool | None = None**kwargs ) → LongformerSequenceClassifierOutput or tuple(torch.Tensor)
Parametreler
- input_ids (
torch.Tensorşeklinde(batch_size, sequence_length), isteğe bağlı) — Sözlükteki girdi dizisi belirteçlerinin (token) indeksleri. Varsayılan olarak dolgu (padding) yok sayılır.Dizinler AutoTokenizer kullanılarak elde edilebilir. Ayrıntılar için PreTrainedTokenizer.encode() ve PreTrainedTokenizer.call() konularına bakın.
- attention_mask (
torch.Tensorşeklinde(batch_size, sequence_length), isteğe bağlı) — Doldurma (padding) token indekslerinde dikkat (attention) işlemi yapmaktan kaçınmak için kullanılan maske. Seçilen maske değerleri[0, 1]:- 1, maskelenmemiş jetonlar için,
- maskelenmiş jetonlar için 0.
- global_attention_mask (
torch.Tensorşeklinde(batch_size, sequence_length), isteğe bağlı) — Her token'a verilecek dikkati belirlemek için maske: yerel dikkat veya global dikkat. Global dikkate sahip tokenlar diğer tüm tokenlara dikkat eder ve diğer tüm tokenlar da onlara dikkat eder. Bu, modelin görevi temsil etmede daha esnek hale gelmesini sağladığı için görev bazlı ince ayar için önemlidir. Örneğin, sınıflandırma içintoken'ına global dikkat verilmelidir. Soru-cevap için tüm soru tokenları da global dikkate sahip olmalıdır. Daha fazla Longformer makalesine bakın. Mask değerleri[0, 1]:- yerel dikkat için 0 (kayan pencere dikkati),
- 1, küresel dikkat için (tüm diğer token'lara dikkat eden ve tüm diğer token'ların da onlara dikkat ettiği token'lar).
- token_type_ids (
torch.Tensorşeklinde(batch_size, sequence_length), isteğe bağlı) — Girdilerin ilk ve ikinci bölümlerini belirtmek için segment token dizinleri. Dizinler[0, 1]:- 0, sentence A belirteci ile eşleşir,
- 1, sentence B belirteçlerine karşılık gelir.
- position_ids (
torch.Tensorşeklinde(batch_size, sequence_length), isteğe bağlı) — Girdi dizilerindeki her token'ın konum gömme (position embedding) içindeki konum indeksleri. Seçim aralığı[0, config.n_positions - 1]. - inputs_embeds (
torch.Tensor, şekli(batch_size, sequence_length, hidden_size), isteğe bağlı) — İsteğe bağlı olarak,input_idsyerine gömülü bir temsil doğrudan geçmeyi tercih edebilirsiniz. Bu,input_idsdizinlerini ilgili vektörlere dönüştürme biçimi üzerinde modelin dahili gömme arama matrisinden daha fazla kontrol sahibi olmak istiyorsanız faydalıdır. - labels (
torch.LongTensor, şekli(batch_size,), isteğe bağlı) — Sınıflandırma/geri dönüş kaybını hesaplamak için etiketler. Endeksler[0, ..., config.num_labels - 1]aralığında olmalıdır.config.num_labels == 1ise bir geri dönüş kaybı (Ortalama Kare kaybı) hesaplanır,config.num_labels > 1ise bir sınıflandırma kaybı (Çapraz Entropi) hesaplanır. - output_attentions (
bool, isteğe bağlı) — Tüm dikkat katmanlarının dikkat tensörlerinin döndürülüp döndürülmeyeceğini belirtir. Daha fazla ayrıntı için döndürülen tensörler altındakiattentionsbölümüne bakın. - output_hidden_states (
bool, isteğe bağlı) — Tüm katmanların gizli durumlarının (hidden states) döndürülüp döndürülmeyeceğini belirtir. Daha fazla ayrıntı için döndürülen tensörler altındakihidden_statesbölümüne bakın. - return_dict (
bool, isteğe bağlı) — Düz bir tuple yerine ModelOutput döndürülecek mi?
Dönüş değeri
LongformerSequenceClassifierOutput veya tuple(torch.Tensor)
A LongformerSequenceClassifierOutput veya bir torch.Tensor demeti (eğer return_dict=False geçirildiyse veya config.return_dict=False ise), yapılandırmaya (LongformerConfig) ve girdilere bağlı olarak çeşitli öğelerden oluşur.
LongformerForSequenceClassification forward metodu, __call__ özel metodunu geçersiz kılar.
İleri geçiş tarifi bu fonksiyon içinde tanımlanmalı olsa da, sonrasında bunun yerine
Moduleörneğini çağırmak gerekir; çünkü önceki, ön ve son işleme adımlarını çalıştırmaktan sorumluyken ikincisi bunları sessizce yok sayar.
loss (
torch.Tensor, şekli(1,), isteğe bağlı,labelssağlandığında döndürülür) — Sınıflandırma (config.num_labels==1 ise regresyon) kaybı.logits (
torch.Tensor, şekli(batch_size, config.num_labels)) — Sınıflandırma (veya config.num_labels==1 ise regresyon) puanları (SoftMax öncesi).hidden_states (
tuple[torch.Tensor, ...], isteğe bağlı,output_hidden_states=Truegeçirildiğinde veyaconfig.output_hidden_states=Trueolduğunda döndürülür) —torch.Tensor(modelin bir gömme katmanı varsa gömme katmanının çıktısı için bir tane + her katmanın çıktısı için birer tane) içeren,(batch_size, sequence_length, hidden_size)biçiminde bir demet.Her katmanın çıktısında modelin gizli durumları ve isteğe bağlı başlangıç gömme çıktıları.
attentions (
tuple(torch.Tensor), isteğe bağlı,output_attentions=Truegeçirildiğinde veyaconfig.output_attentions=Trueolduğunda döndürülür) —torch.Tensor(katman başına bir tane) içeren bir tuple, şekli(batch_size, num_heads, sequence_length, x + attention_window + 1), buradaxküresel dikkat maskesine sahip jeton sayısıdır.Dikkat softmax'ı sonrası yerel dikkat ağırlıkları, öz-dikkat kafalarında ağırlıklı ortalamanın hesaplanmasında kullanılır. Bunlar, dizideki her token'dan global dikkate sahip her token'a (ilk
xdeğerleri) ve dikkat penceresindeki her token'a (kalan `attention_window- 1
values). Note that the firstxvalues refer to tokens with fixed positions in the text, but the remainingattention_window + 1values refer to tokens with relative positions: the attention weight of a token to itself is located at indexx + attention_window / 2and theattention_window / 2preceding (succeeding) values are the attention weights to theattention_window / 2preceding (succeeding) tokens. If the attention window contains a token with global attention, the attention weight at the corresponding index is set to 0; the value should be accessed from the firstxattention weights. If a token has global attention, the attention weights to all other tokens inattentionsis set to 0, the values should be accessed fromglobal_attentions`.
- 1
global_attentions (
tuple(torch.Tensor), isteğe bağlı,output_attentions=Truegeçirildiğinde veyaconfig.output_attentions=Trueolduğunda döndürülür) —torch.Tensor(katman başına bir tane) içeren bir tuple, şekli(batch_size, num_heads, sequence_length, x), buradax, global dikkat maskesine sahip jeton sayısıdır.Dikkat softmax'ı sonrası global dikkat ağırlıkları, kendine dikkat (self-attention) kafalarında ağırlıklı ortalamanın hesaplanmasında kullanılır. Bunlar, global dikkate sahip her bir token'ın dizideki her token'a olan dikkat ağırlıklarıdır.
Tek etiketli sınıflandırma örneği:
>>> import torch
>>> from transformers import AutoTokenizer, LongformerForSequenceClassification
>>> tokenizer = AutoTokenizer.from_pretrained("allenai/longformer-base-4096")
>>> model = LongformerForSequenceClassification.from_pretrained("allenai/longformer-base-4096")
>>> inputs = tokenizer("Hello, my dog is cute", return_tensors="pt")
>>> with torch.no_grad():
... logits = model(**inputs).logits
>>> predicted_class_id = logits.argmax().item()
>>> model.config.id2label[predicted_class_id]
...
>>> # To train a model on `num_labels` classes, you can pass `num_labels=num_labels` to `.from_pretrained(...)`
>>> num_labels = len(model.config.id2label)
>>> model = LongformerForSequenceClassification.from_pretrained("allenai/longformer-base-4096", num_labels=num_labels)
>>> labels = torch.tensor([1])
>>> loss = model(**inputs, labels=labels).loss
>>> round(loss.item(), 2)
...Çok etiketli sınıflandırma örneği:
>>> import torch
>>> from transformers import AutoTokenizer, LongformerForSequenceClassification
>>> tokenizer = AutoTokenizer.from_pretrained("allenai/longformer-base-4096")
>>> model = LongformerForSequenceClassification.from_pretrained("allenai/longformer-base-4096", problem_type="multi_label_classification")
>>> inputs = tokenizer("Hello, my dog is cute", return_tensors="pt")
>>> with torch.no_grad():
... logits = model(**inputs).logits
>>> predicted_class_ids = torch.arange(0, logits.shape[-1])[torch.sigmoid(logits).squeeze(dim=0) > 0.5]
>>> # To train a model on `num_labels` classes, you can pass `num_labels=num_labels` to `.from_pretrained(...)`
>>> num_labels = len(model.config.id2label)
>>> model = LongformerForSequenceClassification.from_pretrained(
... "allenai/longformer-base-4096", num_labels=num_labels, problem_type="multi_label_classification"
... )
>>> labels = torch.sum(
... torch.nn.functional.one_hot(predicted_class_ids[None, :].clone(), num_classes=num_labels), dim=1
... ).to(torch.float)
>>> loss = model(**inputs, labels=labels).lossLongformerForMultipleChoice
sınıf transformers.LongformerForMultipleChoice
< source >( config: LongformerConfig )
Parametreler
- config (LongformerConfig) — Modelin tüm parametrelerini içeren model yapılandırma sınıfı. Bir yapılandırma dosyasıyla başlatmak, modelle ilişkili ağırlıkları yüklemez, yalnızca yapılandırmayı yükler. Model ağırlıklarını yüklemek için from_pretrained() yöntemine bakın.
Üstünde çoklu seçim sınıflandırma başlığı (pooled çıktı üzerinde doğrusal bir katman ve softmax) bulunan Longformer modeli, örneğin RocStories/SWAG görevleri için.
Bu model PreTrainedModel sınıfından devralır. Kütüphanenin tüm modelleri için uyguladığı genel yöntemler (indirme veya kaydetme, giriş gömme boyutlarını yeniden boyutlandırma, başları budama vb.) için üst sınıf belgelendirmesine bakın.
Bu model aynı zamanda bir PyTorch torch.nn.Module alt sınıfıdır. Bunu standart bir PyTorch Module olarak kullanın ve genel kullanım ve davranışla ilgili tüm konular için PyTorch dokümantasyonuna başvurun.
forward
< source >( input_ids: typing.Optional[torch.Tensor] = Nonetoken_type_ids: typing.Optional[torch.Tensor] = Noneattention_mask: typing.Optional[torch.Tensor] = Noneglobal_attention_mask: typing.Optional[torch.Tensor] = Nonelabels: typing.Optional[torch.Tensor] = Noneposition_ids: typing.Optional[torch.Tensor] = Noneinputs_embeds: typing.Optional[torch.Tensor] = Noneoutput_attentions: bool | None = Noneoutput_hidden_states: bool | None = Nonereturn_dict: bool | None = None**kwargs ) → LongformerMultipleChoiceModelOutput or tuple(torch.Tensor)
Parametreler
- input_ids (
torch.LongTensorşeklinde(batch_size, num_choices, sequence_length)) — Girdi dizisi belirteçlerinin sözlükteki indeksleri.Dizinler AutoTokenizer kullanılarak elde edilebilir. Ayrıntılar için PreTrainedTokenizer.encode() ve PreTrainedTokenizer.call() konularına bakın.
- token_type_ids (
torch.LongTensorşeklinde(batch_size, num_choices, sequence_length), isteğe bağlı) — Girdilerin ilk ve ikinci bölümlerini belirtmek için segment token dizinleri. Dizinler[0, 1]:- 0, sentence A belirteci ile eşleşir,
- 1, sentence B belirteçlerine karşılık gelir.
- attention_mask (
torch.Tensorşeklinde(batch_size, sequence_length), isteğe bağlı) — Doldurma (padding) token indekslerinde dikkat (attention) işlemi yapmaktan kaçınmak için kullanılan maske. Seçilen maske değerleri[0, 1]:- 1, maskelenmemiş jetonlar için,
- maskelenmiş jetonlar için 0.
- global_attention_mask (
torch.Tensorşeklinde(batch_size, num_choices, sequence_length), isteğe bağlı) — Her token'a verilecek dikkati belirlemek için maske: yerel dikkat veya global dikkat. Global dikkate sahip tokenlar diğer tüm tokenlara dikkat eder ve diğer tüm tokenlar da onlara dikkat eder. Bu, modelin görevi temsil etmede daha esnek hale gelmesini sağladığı için görev bazlı ince ayar için önemlidir. Örneğin, sınıflandırma içintoken'ına global dikkat verilmelidir. Soru-cevap için tüm soru tokenları da global dikkate sahip olmalıdır. Daha fazla Longformer makalesine bakın. Mask değerleri[0, 1]:- yerel dikkat için 0 (kayan pencere dikkati),
- 1, küresel dikkat için (tüm diğer token'lara dikkat eden ve tüm diğer token'ların da onlara dikkat ettiği token'lar).
- labels (
torch.LongTensor, şekli(batch_size,), isteğe bağlı) — Çoklu seçim sınıflandırma kaybını hesaplamak için etiketler. İndisler,num_choices'in giriş tensörlerinin ikinci boyutunun boyutu olduğu[0, ..., num_choices-1]aralığında olmalıdır. (Bkz. yukarıdakiinput_ids) - position_ids (
torch.LongTensorşeklinde(batch_size, num_choices, sequence_length), isteğe bağlı) — Girdi dizilerindeki her token'ın konum gömme (position embedding) içindeki konum indeksleri. Seçim aralığı[0, config.max_position_embeddings - 1]. - inputs_embeds (
torch.Tensor, şekli(batch_size, num_choices, sequence_length, hidden_size), isteğe bağlı) — İsteğe bağlı olarak,input_idsyerine gömülü bir temsil doğrudan geçmeyi tercih edebilirsiniz. Bu,input_idsdizinlerini ilgili vektörlere dönüştürme biçimi üzerinde modelin dahili gömme arama matrisinden daha fazla kontrol sahibi olmak istiyorsanız faydalıdır. - output_attentions (
bool, isteğe bağlı) — Tüm dikkat katmanlarının dikkat tensörlerinin döndürülüp döndürülmeyeceğini belirtir. Daha fazla ayrıntı için döndürülen tensörler altındakiattentionsbölümüne bakın. - output_hidden_states (
bool, isteğe bağlı) — Tüm katmanların gizli durumlarının (hidden states) döndürülüp döndürülmeyeceğini belirtir. Daha fazla ayrıntı için döndürülen tensörler altındakihidden_statesbölümüne bakın. - return_dict (
bool, isteğe bağlı) — Düz bir tuple yerine ModelOutput döndürülecek mi?
Dönüş değeri
LongformerMultipleChoiceModelOutput veya tuple(torch.Tensor)
A LongformerMultipleChoiceModelOutput veya bir torch.Tensor demeti (eğer return_dict=False geçirildiyse veya config.return_dict=False ise), yapılandırmaya (LongformerConfig) ve girdilere bağlı olarak çeşitli öğelerden oluşur.
LongformerForMultipleChoice forward metodu, __call__ özel metodunu geçersiz kılar.
İleri geçiş tarifi bu fonksiyon içinde tanımlanmalı olsa da, sonrasında bunun yerine
Moduleörneğini çağırmak gerekir; çünkü önceki, ön ve son işleme adımlarını çalıştırmaktan sorumluyken ikincisi bunları sessizce yok sayar.
loss (
torch.Tensor, şekli (1,), opsiyonel,labelssağlandığında döndürülür) — Sınıflandırma kaybı.logits (
torch.Tensor, şekli(batch_size, num_choices)) — num_choices, girdi tensörlerinin ikinci boyutudur (bkz. yukarıdaki input_ids).Sınıflandırma puanları (SoftMax öncesi).
hidden_states (
tuple[torch.Tensor, ...], isteğe bağlı,output_hidden_states=Truegeçirildiğinde veyaconfig.output_hidden_states=Trueolduğunda döndürülür) —torch.Tensor(modelin bir gömme katmanı varsa gömme katmanının çıktısı için bir tane + her katmanın çıktısı için birer tane) içeren,(batch_size, sequence_length, hidden_size)biçiminde bir demet.Her katmanın çıktısında modelin gizli durumları ve isteğe bağlı başlangıç gömme çıktıları.
attentions (
tuple(torch.Tensor), isteğe bağlı,output_attentions=Truegeçirildiğinde veyaconfig.output_attentions=Trueolduğunda döndürülür) —torch.Tensor(katman başına bir tane) içeren bir tuple, şekli(batch_size, num_heads, sequence_length, x + attention_window + 1), buradaxküresel dikkat maskesine sahip jeton sayısıdır.Dikkat softmax'ı sonrası yerel dikkat ağırlıkları, öz-dikkat kafalarında ağırlıklı ortalamanın hesaplanmasında kullanılır. Bunlar, dizideki her token'dan global dikkate sahip her token'a (ilk
xdeğerleri) ve dikkat penceresindeki her token'a (kalan `attention_window- 1
values). Note that the firstxvalues refer to tokens with fixed positions in the text, but the remainingattention_window + 1values refer to tokens with relative positions: the attention weight of a token to itself is located at indexx + attention_window / 2and theattention_window / 2preceding (succeeding) values are the attention weights to theattention_window / 2preceding (succeeding) tokens. If the attention window contains a token with global attention, the attention weight at the corresponding index is set to 0; the value should be accessed from the firstxattention weights. If a token has global attention, the attention weights to all other tokens inattentionsis set to 0, the values should be accessed fromglobal_attentions`.
- 1
global_attentions (
tuple(torch.Tensor), isteğe bağlı,output_attentions=Truegeçirildiğinde veyaconfig.output_attentions=Trueolduğunda döndürülür) —torch.Tensor(katman başına bir tane) içeren bir tuple, şekli(batch_size, num_heads, sequence_length, x), buradax, global dikkat maskesine sahip jeton sayısıdır.Dikkat softmax'ı sonrası global dikkat ağırlıkları, kendine dikkat (self-attention) kafalarında ağırlıklı ortalamanın hesaplanmasında kullanılır. Bunlar, global dikkate sahip her bir token'ın dizideki her token'a olan dikkat ağırlıklarıdır.
Örnek:
>>> from transformers import AutoTokenizer, LongformerForMultipleChoice
>>> import torch
>>> tokenizer = AutoTokenizer.from_pretrained("allenai/longformer-base-4096")
>>> model = LongformerForMultipleChoice.from_pretrained("allenai/longformer-base-4096")
>>> prompt = "In Italy, pizza served in formal settings, such as at a restaurant, is presented unsliced."
>>> choice0 = "It is eaten with a fork and a knife."
>>> choice1 = "It is eaten while held in the hand."
>>> labels = torch.tensor(0).unsqueeze(0) # choice0 is correct (according to Wikipedia ;)), batch size 1
>>> encoding = tokenizer([prompt, prompt], [choice0, choice1], return_tensors="pt", padding=True)
>>> outputs = model(**{k: v.unsqueeze(0) for k, v in encoding.items()}, labels=labels) # batch size is 1
>>> # the linear classifier still needs to be trained
>>> loss = outputs.loss
>>> logits = outputs.logitsLongformerForTokenClassification
sınıf transformers.LongformerForTokenClassification
< source >( config: LongformerConfig )
Parametreler
- config (LongformerConfig) — Modelin tüm parametrelerini içeren model yapılandırma sınıfı. Bir yapılandırma dosyasıyla başlatmak, modelle ilişkili ağırlıkları yüklemez, yalnızca yapılandırmayı yükler. Model ağırlıklarını yüklemek için from_pretrained() yöntemine bakın.
Üstünde bir token sınıflandırma başlığı (gizli durumlar çıktısının üzerine yerleştirilmiş doğrusal bir katman) bulunan Longformer transformer'ı, örneğin Adlandırılmış Varlık Tanıma (NER) görevleri için.
Bu model PreTrainedModel sınıfından devralır. Kütüphanenin tüm modelleri için uyguladığı genel yöntemler (indirme veya kaydetme, giriş gömme boyutlarını yeniden boyutlandırma, başları budama vb.) için üst sınıf belgelendirmesine bakın.
Bu model aynı zamanda bir PyTorch torch.nn.Module alt sınıfıdır. Bunu standart bir PyTorch Module olarak kullanın ve genel kullanım ve davranışla ilgili tüm konular için PyTorch dokümantasyonuna başvurun.
forward
< source >( input_ids: typing.Optional[torch.Tensor] = Noneattention_mask: typing.Optional[torch.Tensor] = Noneglobal_attention_mask: typing.Optional[torch.Tensor] = Nonetoken_type_ids: typing.Optional[torch.Tensor] = Noneposition_ids: typing.Optional[torch.Tensor] = Noneinputs_embeds: typing.Optional[torch.Tensor] = Nonelabels: typing.Optional[torch.Tensor] = Noneoutput_attentions: bool | None = Noneoutput_hidden_states: bool | None = Nonereturn_dict: bool | None = None**kwargs ) → LongformerTokenClassifierOutput or tuple(torch.Tensor)
Parametreler
- input_ids (
torch.Tensorşeklinde(batch_size, sequence_length), isteğe bağlı) — Sözlükteki girdi dizisi belirteçlerinin (token) indeksleri. Varsayılan olarak dolgu (padding) yok sayılır.Dizinler AutoTokenizer kullanılarak elde edilebilir. Ayrıntılar için PreTrainedTokenizer.encode() ve PreTrainedTokenizer.call() konularına bakın.
- attention_mask (
torch.Tensorşeklinde(batch_size, sequence_length), isteğe bağlı) — Doldurma (padding) token indekslerinde dikkat (attention) işlemi yapmaktan kaçınmak için kullanılan maske. Seçilen maske değerleri[0, 1]:- 1, maskelenmemiş jetonlar için,
- maskelenmiş jetonlar için 0.
- global_attention_mask (
torch.Tensorşeklinde(batch_size, sequence_length), isteğe bağlı) — Her token'a verilecek dikkati belirlemek için maske: yerel dikkat veya global dikkat. Global dikkate sahip tokenlar diğer tüm tokenlara dikkat eder ve diğer tüm tokenlar da onlara dikkat eder. Bu, modelin görevi temsil etmede daha esnek hale gelmesini sağladığı için görev bazlı ince ayar için önemlidir. Örneğin, sınıflandırma içintoken'ına global dikkat verilmelidir. Soru-cevap için tüm soru tokenları da global dikkate sahip olmalıdır. Daha fazla Longformer makalesine bakın. Mask değerleri[0, 1]:- yerel dikkat için 0 (kayan pencere dikkati),
- 1, küresel dikkat için (tüm diğer token'lara dikkat eden ve tüm diğer token'ların da onlara dikkat ettiği token'lar).
- token_type_ids (
torch.Tensorşeklinde(batch_size, sequence_length), isteğe bağlı) — Girdilerin ilk ve ikinci bölümlerini belirtmek için segment token dizinleri. Dizinler[0, 1]:- 0, sentence A belirteci ile eşleşir,
- 1, sentence B belirteçlerine karşılık gelir.
- position_ids (
torch.Tensorşeklinde(batch_size, sequence_length), isteğe bağlı) — Girdi dizilerindeki her token'ın konum gömme (position embedding) içindeki konum indeksleri. Seçim aralığı[0, config.n_positions - 1]. - inputs_embeds (
torch.Tensor, şekli(batch_size, sequence_length, hidden_size), isteğe bağlı) — İsteğe bağlı olarak,input_idsyerine gömülü bir temsil doğrudan geçmeyi tercih edebilirsiniz. Bu,input_idsdizinlerini ilgili vektörlere dönüştürme biçimi üzerinde modelin dahili gömme arama matrisinden daha fazla kontrol sahibi olmak istiyorsanız faydalıdır. - labels (
torch.LongTensor, şekli(batch_size, sequence_length), isteğe bağlı) — Token sınıflandırma kaybını hesaplamak için etiketler. Endeksler[0, ..., config.num_labels - 1]aralığında olmalıdır. - output_attentions (
bool, isteğe bağlı) — Tüm dikkat katmanlarının dikkat tensörlerinin döndürülüp döndürülmeyeceğini belirtir. Daha fazla ayrıntı için döndürülen tensörler altındakiattentionsbölümüne bakın. - output_hidden_states (
bool, isteğe bağlı) — Tüm katmanların gizli durumlarının (hidden states) döndürülüp döndürülmeyeceğini belirtir. Daha fazla ayrıntı için döndürülen tensörler altındakihidden_statesbölümüne bakın. - return_dict (
bool, isteğe bağlı) — Düz bir tuple yerine ModelOutput döndürülecek mi?
Dönüş değeri
LongformerTokenClassifierOutput veya tuple(torch.Tensor)
A LongformerTokenClassifierOutput veya bir torch.Tensor demeti (eğer return_dict=False geçirildiyse veya config.return_dict=False ise), yapılandırmaya (LongformerConfig) ve girdilere bağlı olarak çeşitli öğelerden oluşur.
LongformerForTokenClassification forward metodu, __call__ özel metodunu geçersiz kılar.
İleri geçiş tarifi bu fonksiyon içinde tanımlanmalı olsa da, sonrasında bunun yerine
Moduleörneğini çağırmak gerekir; çünkü önceki, ön ve son işleme adımlarını çalıştırmaktan sorumluyken ikincisi bunları sessizce yok sayar.
loss (
torch.Tensor, şekli(1,), isteğe bağlı,labelssağlandığında döndürülür) — Sınıflandırma kaybı.logits (
torch.Tensor, şekli(batch_size, sequence_length, config.num_labels)) — Sınıflandırma puanları (SoftMax öncesi).hidden_states (
tuple[torch.Tensor, ...], isteğe bağlı,output_hidden_states=Truegeçirildiğinde veyaconfig.output_hidden_states=Trueolduğunda döndürülür) —torch.Tensor(modelin bir gömme katmanı varsa gömme katmanının çıktısı için bir tane + her katmanın çıktısı için birer tane) içeren,(batch_size, sequence_length, hidden_size)biçiminde bir demet.Her katmanın çıktısında modelin gizli durumları ve isteğe bağlı başlangıç gömme çıktıları.
attentions (
tuple(torch.Tensor), isteğe bağlı,output_attentions=Truegeçirildiğinde veyaconfig.output_attentions=Trueolduğunda döndürülür) —torch.Tensor(katman başına bir tane) içeren bir tuple, şekli(batch_size, num_heads, sequence_length, x + attention_window + 1), buradaxküresel dikkat maskesine sahip jeton sayısıdır.Dikkat softmax'ı sonrası yerel dikkat ağırlıkları, öz-dikkat kafalarında ağırlıklı ortalamanın hesaplanmasında kullanılır. Bunlar, dizideki her token'dan global dikkate sahip her token'a (ilk
xdeğerleri) ve dikkat penceresindeki her token'a (kalan `attention_window- 1
values). Note that the firstxvalues refer to tokens with fixed positions in the text, but the remainingattention_window + 1values refer to tokens with relative positions: the attention weight of a token to itself is located at indexx + attention_window / 2and theattention_window / 2preceding (succeeding) values are the attention weights to theattention_window / 2preceding (succeeding) tokens. If the attention window contains a token with global attention, the attention weight at the corresponding index is set to 0; the value should be accessed from the firstxattention weights. If a token has global attention, the attention weights to all other tokens inattentionsis set to 0, the values should be accessed fromglobal_attentions`.
- 1
global_attentions (
tuple(torch.Tensor), isteğe bağlı,output_attentions=Truegeçirildiğinde veyaconfig.output_attentions=Trueolduğunda döndürülür) —torch.Tensor(katman başına bir tane) içeren bir tuple, şekli(batch_size, num_heads, sequence_length, x), buradax, global dikkat maskesine sahip jeton sayısıdır.Dikkat softmax'ı sonrası global dikkat ağırlıkları, kendine dikkat (self-attention) kafalarında ağırlıklı ortalamanın hesaplanmasında kullanılır. Bunlar, global dikkate sahip her bir token'ın dizideki her token'a olan dikkat ağırlıklarıdır.
Örnek:
>>> from transformers import AutoTokenizer, LongformerForTokenClassification
>>> import torch
>>> tokenizer = AutoTokenizer.from_pretrained("allenai/longformer-base-4096")
>>> model = LongformerForTokenClassification.from_pretrained("allenai/longformer-base-4096")
>>> inputs = tokenizer(
... "HuggingFace is a company based in Paris and New York", add_special_tokens=False, return_tensors="pt"
... )
>>> with torch.no_grad():
... logits = model(**inputs).logits
>>> predicted_token_class_ids = logits.argmax(-1)
>>> # Note that tokens are classified rather then input words which means that
>>> # there might be more predicted token classes than words.
>>> # Multiple token classes might account for the same word
>>> predicted_tokens_classes = [model.config.id2label[t.item()] for t in predicted_token_class_ids[0]]
>>> predicted_tokens_classes
...
>>> labels = predicted_token_class_ids
>>> loss = model(**inputs, labels=labels).loss
>>> round(loss.item(), 2)
...LongformerForQuestionAnswering
sınıf transformers.LongformerForQuestionAnswering
< source >( config: LongformerConfig )
Parametreler
- config (LongformerConfig) — Modelin tüm parametrelerini içeren model yapılandırma sınıfı. Bir yapılandırma dosyasıyla başlatmak, modelle ilişkili ağırlıkları yüklemez, yalnızca yapılandırmayı yükler. Model ağırlıklarını yüklemek için from_pretrained() yöntemine bakın.
SQuAD gibi çıkarımsal soru-cevap görevleri için üstünde bir aralık sınıflandırma başlığı bulunan Longformer transformer (gizli durum çıktısının üzerine, span start logits ve span end logits hesaplamak için bir doğrusal katman).
Bu model PreTrainedModel sınıfından devralır. Kütüphanenin tüm modelleri için uyguladığı genel yöntemler (indirme veya kaydetme, giriş gömme boyutlarını yeniden boyutlandırma, başları budama vb.) için üst sınıf belgelendirmesine bakın.
Bu model aynı zamanda bir PyTorch torch.nn.Module alt sınıfıdır. Bunu standart bir PyTorch Module olarak kullanın ve genel kullanım ve davranışla ilgili tüm konular için PyTorch dokümantasyonuna başvurun.
forward
< source >( input_ids: typing.Optional[torch.Tensor] = Noneattention_mask: typing.Optional[torch.Tensor] = Noneglobal_attention_mask: typing.Optional[torch.Tensor] = Nonetoken_type_ids: typing.Optional[torch.Tensor] = Noneposition_ids: typing.Optional[torch.Tensor] = Noneinputs_embeds: typing.Optional[torch.Tensor] = Nonestart_positions: typing.Optional[torch.Tensor] = Noneend_positions: typing.Optional[torch.Tensor] = Noneoutput_attentions: bool | None = Noneoutput_hidden_states: bool | None = Nonereturn_dict: bool | None = None**kwargs ) → LongformerQuestionAnsweringModelOutput or tuple(torch.Tensor)
Parametreler
- input_ids (
torch.Tensorşeklinde(batch_size, sequence_length), isteğe bağlı) — Sözlükteki girdi dizisi belirteçlerinin (token) indeksleri. Varsayılan olarak dolgu (padding) yok sayılır.Dizinler AutoTokenizer kullanılarak elde edilebilir. Ayrıntılar için PreTrainedTokenizer.encode() ve PreTrainedTokenizer.call() konularına bakın.
- attention_mask (
torch.Tensorşeklinde(batch_size, sequence_length), isteğe bağlı) — Doldurma (padding) token indekslerinde dikkat (attention) işlemi yapmaktan kaçınmak için kullanılan maske. Seçilen maske değerleri[0, 1]:- 1, maskelenmemiş jetonlar için,
- maskelenmiş jetonlar için 0.
- global_attention_mask (
torch.Tensorşeklinde(batch_size, sequence_length), isteğe bağlı) — Her token'a verilecek dikkati belirlemek için maske: yerel dikkat veya global dikkat. Global dikkate sahip tokenlar diğer tüm tokenlara dikkat eder ve diğer tüm tokenlar da onlara dikkat eder. Bu, modelin görevi temsil etmede daha esnek hale gelmesini sağladığı için görev bazlı ince ayar için önemlidir. Örneğin, sınıflandırma içintoken'ına global dikkat verilmelidir. Soru-cevap için tüm soru tokenları da global dikkate sahip olmalıdır. Daha fazla Longformer makalesine bakın. Mask değerleri[0, 1]:- yerel dikkat için 0 (kayan pencere dikkati),
- 1, küresel dikkat için (tüm diğer token'lara dikkat eden ve tüm diğer token'ların da onlara dikkat ettiği token'lar).
- token_type_ids (
torch.Tensorşeklinde(batch_size, sequence_length), isteğe bağlı) — Girdilerin ilk ve ikinci bölümlerini belirtmek için segment token dizinleri. Dizinler[0, 1]:- 0, sentence A belirteci ile eşleşir,
- 1, sentence B belirteçlerine karşılık gelir.
- position_ids (
torch.Tensorşeklinde(batch_size, sequence_length), isteğe bağlı) — Girdi dizilerindeki her token'ın konum gömme (position embedding) içindeki konum indeksleri. Seçim aralığı[0, config.n_positions - 1]. - inputs_embeds (
torch.Tensor, şekli(batch_size, sequence_length, hidden_size), isteğe bağlı) — İsteğe bağlı olarak,input_idsyerine gömülü bir temsil doğrudan geçmeyi tercih edebilirsiniz. Bu,input_idsdizinlerini ilgili vektörlere dönüştürme biçimi üzerinde modelin dahili gömme arama matrisinden daha fazla kontrol sahibi olmak istiyorsanız faydalıdır. - start_positions (
torch.Tensor, şekli(batch_size,), isteğe bağlı) — Token sınıflandırma kaybını hesaplamak için etiketli aralığın başlangıç konumunun (indeksinin) etiketleri. Konumlar, dizinin uzunluğuna (sequence_length) göre sınırlandırılır. Dizi dışındaki konumlar, kayıp hesabında dikkate alınmaz. - end_positions (
torch.Tensor, şekli(batch_size,), isteğe bağlı) — Token sınıflandırma kaybını hesaplamak için etiketli aralığın sonundaki konumun (indeksin) etiketleri. Konumlar, dizinin uzunluğuna (sequence_length) göre sınırlandırılır. Dizi dışındaki konumlar, kayıp hesabında dikkate alınmaz. - output_attentions (
bool, isteğe bağlı) — Tüm dikkat katmanlarının dikkat tensörlerinin döndürülüp döndürülmeyeceğini belirtir. Daha fazla ayrıntı için döndürülen tensörler altındakiattentionsbölümüne bakın. - output_hidden_states (
bool, isteğe bağlı) — Tüm katmanların gizli durumlarının (hidden states) döndürülüp döndürülmeyeceğini belirtir. Daha fazla ayrıntı için döndürülen tensörler altındakihidden_statesbölümüne bakın. - return_dict (
bool, isteğe bağlı) — Düz bir tuple yerine ModelOutput döndürülecek mi?
Dönüş değeri
LongformerQuestionAnsweringModelOutput veya tuple(torch.Tensor)
A LongformerQuestionAnsweringModelOutput veya bir torch.Tensor demeti (eğer return_dict=False geçirildiyse veya config.return_dict=False ise), yapılandırmaya (LongformerConfig) ve girdilere bağlı olarak çeşitli öğelerden oluşur.
LongformerForQuestionAnswering forward metodu, __call__ özel metodunu geçersiz kılar.
İleri geçiş tarifi bu fonksiyon içinde tanımlanmalı olsa da, sonrasında bunun yerine
Moduleörneğini çağırmak gerekir; çünkü önceki, ön ve son işleme adımlarını çalıştırmaktan sorumluyken ikincisi bunları sessizce yok sayar.
loss (
torch.Tensor, şekli(1,), isteğe bağlı,labelssağlandığında döndürülür) — Toplam span çıkarım kaybı, başlangıç ve bitiş konumları için Çapraz Entropinin (Cross-Entropy) toplamıdır.start_logits (
torch.Tensor, şekli(batch_size, sequence_length), isteğe bağlı) — Aralık başlangıç puanları (SoftMax öncesi).end_logits (
torch.Tensor, şekli(batch_size, sequence_length), isteğe bağlı) — Aralık sonu puanları (SoftMax öncesi).hidden_states (
tuple[torch.Tensor, ...], isteğe bağlı,output_hidden_states=Truegeçirildiğinde veyaconfig.output_hidden_states=Trueolduğunda döndürülür) —torch.Tensor(modelin bir gömme katmanı varsa gömme katmanının çıktısı için bir tane + her katmanın çıktısı için birer tane) içeren,(batch_size, sequence_length, hidden_size)biçiminde bir demet.Her katmanın çıktısında modelin gizli durumları ve isteğe bağlı başlangıç gömme çıktıları.
attentions (
tuple(torch.Tensor), isteğe bağlı,output_attentions=Truegeçirildiğinde veyaconfig.output_attentions=Trueolduğunda döndürülür) —torch.Tensor(katman başına bir tane) içeren bir tuple, şekli(batch_size, num_heads, sequence_length, x + attention_window + 1), buradaxküresel dikkat maskesine sahip jeton sayısıdır.Dikkat softmax'ı sonrası yerel dikkat ağırlıkları, öz-dikkat kafalarında ağırlıklı ortalamanın hesaplanmasında kullanılır. Bunlar, dizideki her token'dan global dikkate sahip her token'a (ilk
xdeğerleri) ve dikkat penceresindeki her token'a (kalan `attention_window- 1
values). Note that the firstxvalues refer to tokens with fixed positions in the text, but the remainingattention_window + 1values refer to tokens with relative positions: the attention weight of a token to itself is located at indexx + attention_window / 2and theattention_window / 2preceding (succeeding) values are the attention weights to theattention_window / 2preceding (succeeding) tokens. If the attention window contains a token with global attention, the attention weight at the corresponding index is set to 0; the value should be accessed from the firstxattention weights. If a token has global attention, the attention weights to all other tokens inattentionsis set to 0, the values should be accessed fromglobal_attentions`.
- 1
global_attentions (
tuple(torch.Tensor), isteğe bağlı,output_attentions=Truegeçirildiğinde veyaconfig.output_attentions=Trueolduğunda döndürülür) —torch.Tensor(katman başına bir tane) içeren bir tuple, şekli(batch_size, num_heads, sequence_length, x), buradax, global dikkat maskesine sahip jeton sayısıdır.Dikkat softmax'ı sonrası global dikkat ağırlıkları, kendine dikkat (self-attention) kafalarında ağırlıklı ortalamanın hesaplanmasında kullanılır. Bunlar, global dikkate sahip her bir token'ın dizideki her token'a olan dikkat ağırlıklarıdır.
Örnekler:
>>> from transformers import AutoTokenizer, LongformerForQuestionAnswering
>>> import torch
>>> tokenizer = AutoTokenizer.from_pretrained("allenai/longformer-large-4096-finetuned-triviaqa")
>>> model = LongformerForQuestionAnswering.from_pretrained("allenai/longformer-large-4096-finetuned-triviaqa")
>>> question, text = "Who was Jim Henson?", "Jim Henson was a nice puppet"
>>> encoding = tokenizer(question, text, return_tensors="pt")
>>> input_ids = encoding["input_ids"]
>>> # default is local attention everywhere
>>> # the forward method will automatically set global attention on question tokens
>>> attention_mask = encoding["attention_mask"]
>>> outputs = model(input_ids, attention_mask=attention_mask)
>>> start_logits = outputs.start_logits
>>> end_logits = outputs.end_logits
>>> all_tokens = tokenizer.convert_ids_to_tokens(input_ids[0].tolist())
>>> answer_tokens = all_tokens[torch.argmax(start_logits) : torch.argmax(end_logits) + 1]
>>> answer = tokenizer.decode(
... tokenizer.convert_tokens_to_ids(answer_tokens)
... ) # remove space prepending space token