Skip to content
30 changes: 28 additions & 2 deletions src/transformers/models/longformer/modeling_longformer.py
Original file line number Diff line number Diff line change
Expand Up @@ -1407,6 +1407,28 @@ def _set_gradient_checkpointing(self, module, value=False):
module.gradient_checkpointing = value


LONGFORMER_GENERATION_DOCSTRING = r"""

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

This example looks super cool - could you replace it with what's currently written for LongformerForMaskedLM ?

Copy link
Copy Markdown
Collaborator

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Agree with @patrickvonplaten

A few more comments:

  • No more need for LONGFORMER_GENERATION_DOCSTRING, but moving the docstring example to LongformerForMaskedLM directly

  • I think it would be great to add a comment before the line containing * 300, say Let's try a very long input.

Mask filling example:

```python
>>> from transformers import LongformerTokenizer, LongformerForMaskedLM

>>> tokenizer = LongformerTokenizer.from_pretrained("allenai/longformer-base-4096")
>>> model = LongformerForMaskedLM.from_pretrained("allenai/longformer-base-4096")

>>> 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']
```
"""

LONGFORMER_START_DOCSTRING = r"""

This model inherits from [`PreTrainedModel`]. Check the superclass documentation for the generic methods the
Expand Down Expand Up @@ -1852,9 +1874,11 @@ def __init__(self, config):
@add_start_docstrings_to_model_forward(LONGFORMER_INPUTS_DOCSTRING.format("batch_size, sequence_length"))
@add_code_sample_docstrings(
processor_class=_TOKENIZER_FOR_DOC,
checkpoint=_CHECKPOINT_FOR_DOC,
checkpoint="jpelhaw/longformer-base-plagiarism-detection",
output_type=LongformerSequenceClassifierOutput,
config_class=_CONFIG_FOR_DOC,
expected_output=[1, 2],

Copy link
Copy Markdown
Collaborator

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

@KMFODA Is this the expected output? I think it should be something like ORIGINAL, PLAGIARISM, no?

expected_loss=0.08,
)
def forward(
self,
Expand Down Expand Up @@ -2118,9 +2142,11 @@ def __init__(self, config):
@add_start_docstrings_to_model_forward(LONGFORMER_INPUTS_DOCSTRING.format("batch_size, sequence_length"))
@add_code_sample_docstrings(
processor_class=_TOKENIZER_FOR_DOC,
checkpoint=_CHECKPOINT_FOR_DOC,
checkpoint="brad1141/Longformer-finetuned-norm",
output_type=LongformerTokenClassifierOutput,
config_class=_CONFIG_FOR_DOC,
expected_output="['Lead', 'Evidence', 'Lead', 'Evidence', 'Lead']",
expected_loss=0.01,
)
def forward(
self,
Expand Down
10 changes: 9 additions & 1 deletion src/transformers/models/longformer/modeling_tf_longformer.py
Original file line number Diff line number Diff line change
Expand Up @@ -2081,10 +2081,12 @@ def get_prefix_bias_name(self):
@add_start_docstrings_to_model_forward(LONGFORMER_INPUTS_DOCSTRING.format("batch_size, sequence_length"))
@add_code_sample_docstrings(
processor_class=_TOKENIZER_FOR_DOC,
checkpoint=_CHECKPOINT_FOR_DOC,
checkpoint="saibo/legal-longformer-base-4096",
Comment thread
KMFODA marked this conversation as resolved.
Outdated
output_type=TFLongformerMaskedLMOutput,
config_class=_CONFIG_FOR_DOC,
mask="<mask>",
expected_output="' no'",
expected_loss=4.5,
)
def call(
self,
Expand Down Expand Up @@ -2178,6 +2180,8 @@ def __init__(self, config, *inputs, **kwargs):
checkpoint="allenai/longformer-large-4096-finetuned-triviaqa",
output_type=TFLongformerQuestionAnsweringModelOutput,
config_class=_CONFIG_FOR_DOC,
expected_output="' puppet'",
expected_loss=0.96,
)
def call(
self,
Expand Down Expand Up @@ -2325,6 +2329,8 @@ def __init__(self, config, *inputs, **kwargs):
checkpoint=_CHECKPOINT_FOR_DOC,
output_type=TFLongformerSequenceClassifierOutput,
config_class=_CONFIG_FOR_DOC,
expected_output="LABEL_0",
expected_loss=0.58,

Copy link
Copy Markdown
Collaborator

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

I think the checkpoint _CHECKPOINT_FOR_DOC, which is allenai/longformer-base-4096 doesn't contain sequence classification head, and the head is randomly initialized. The result would be random, no?

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

This is correct!

)
def call(
self,
Expand Down Expand Up @@ -2565,6 +2571,8 @@ def __init__(self, config, *inputs, **kwargs):
checkpoint=_CHECKPOINT_FOR_DOC,
output_type=TFLongformerTokenClassifierOutput,
config_class=_CONFIG_FOR_DOC,
expected_output="['LABEL_0', 'LABEL_0', 'LABEL_0', 'LABEL_0', 'LABEL_0', 'LABEL_0', 'LABEL_1', 'LABEL_1', 'LABEL_0', 'LABEL_0', 'LABEL_0', 'LABEL_0']",
expected_loss=0.62,

Copy link
Copy Markdown
Collaborator

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Same comment as I give for sequence classification model.

)
def call(
self,
Expand Down
1 change: 1 addition & 0 deletions utils/documentation_tests.txt
Original file line number Diff line number Diff line change
Expand Up @@ -18,6 +18,7 @@ src/transformers/models/data2vec/modeling_data2vec_audio.py
src/transformers/models/deit/modeling_deit.py
src/transformers/models/glpn/modeling_glpn.py
src/transformers/models/hubert/modeling_hubert.py
src/transformers/models/longformer/modeling_longformer.py
Comment thread
KMFODA marked this conversation as resolved.
src/transformers/models/marian/modeling_marian.py
src/transformers/models/marian/modeling_marian.py
src/transformers/models/mbart/modeling_mbart.py
Expand Down