funnel.rst 8.08 KB
Newer Older
Sylvain Gugger's avatar
Sylvain Gugger committed
1
2
3
4
5
6
7
8
9
10
11
12
.. 
    Copyright 2020 The HuggingFace Team. All rights reserved.

    Licensed under the Apache License, Version 2.0 (the "License"); you may not use this file except in compliance with
    the License. You may obtain a copy of the License at

        http://www.apache.org/licenses/LICENSE-2.0

    Unless required by applicable law or agreed to in writing, software distributed under the License is distributed on
    an "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the License for the
    specific language governing permissions and limitations under the License.

Sylvain Gugger's avatar
Sylvain Gugger committed
13
Funnel Transformer
Sylvain Gugger's avatar
Sylvain Gugger committed
14
-----------------------------------------------------------------------------------------------------------------------
Sylvain Gugger's avatar
Sylvain Gugger committed
15
16

Overview
Sylvain Gugger's avatar
Sylvain Gugger committed
17
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
Sylvain Gugger's avatar
Sylvain Gugger committed
18

Sylvain Gugger's avatar
Sylvain Gugger committed
19
20
21
22
The Funnel Transformer model was proposed in the paper `Funnel-Transformer: Filtering out Sequential Redundancy for
Efficient Language Processing <https://arxiv.org/abs/2006.03236>`__. It is a bidirectional transformer model, like
BERT, but with a pooling operation after each block of layers, a bit like in traditional convolutional neural networks
(CNN) in computer vision.
Sylvain Gugger's avatar
Sylvain Gugger committed
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44

The abstract from the paper is the following:

*With the success of language pretraining, it is highly desirable to develop more efficient architectures of good
scalability that can exploit the abundant unlabeled data at a lower cost. To improve the efficiency, we examine the
much-overlooked redundancy in maintaining a full-length token-level presentation, especially for tasks that only
require a single-vector presentation of the sequence. With this intuition, we propose Funnel-Transformer which
gradually compresses the sequence of hidden states to a shorter one and hence reduces the computation cost. More
importantly, by re-investing the saved FLOPs from length reduction in constructing a deeper or wider model, we further
improve the model capacity. In addition, to perform token-level predictions as required by common pretraining
objectives, Funnel-Transformer is able to recover a deep representation for each token from the reduced hidden sequence
via a decoder. Empirically, with comparable or fewer FLOPs, Funnel-Transformer outperforms the standard Transformer on
a wide variety of sequence-level prediction tasks, including text classification, language understanding, and reading
comprehension.*

Tips:

- Since Funnel Transformer uses pooling, the sequence length of the hidden states changes after each block of layers.
  The base model therefore has a final sequence length that is a quarter of the original one. This model can be used
  directly for tasks that just require a sentence summary (like sequence classification or multiple choice). For other
  tasks, the full model is used; this full model has a decoder that upsamples the final hidden states to the same
  sequence length as the input.
Sylvain Gugger's avatar
Sylvain Gugger committed
45
46
- The Funnel Transformer checkpoints are all available with a full version and a base version. The first ones should be
  used for :class:`~transformers.FunnelModel`, :class:`~transformers.FunnelForPreTraining`,
Sylvain Gugger's avatar
Sylvain Gugger committed
47
48
49
50
51
  :class:`~transformers.FunnelForMaskedLM`, :class:`~transformers.FunnelForTokenClassification` and
  class:`~transformers.FunnelForQuestionAnswering`. The second ones should be used for
  :class:`~transformers.FunnelBaseModel`, :class:`~transformers.FunnelForSequenceClassification` and
  :class:`~transformers.FunnelForMultipleChoice`.

52
53
This model was contributed by `sgugger <https://huggingface.co/sgugger>`__. The original code can be found `here
<https://github.com/laiguokun/Funnel-Transformer>`__.
Sylvain Gugger's avatar
Sylvain Gugger committed
54
55
56


FunnelConfig
Sylvain Gugger's avatar
Sylvain Gugger committed
57
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
Sylvain Gugger's avatar
Sylvain Gugger committed
58
59
60
61
62
63

.. autoclass:: transformers.FunnelConfig
    :members:


FunnelTokenizer
Sylvain Gugger's avatar
Sylvain Gugger committed
64
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
Sylvain Gugger's avatar
Sylvain Gugger committed
65
66
67
68
69
70
71

.. autoclass:: transformers.FunnelTokenizer
    :members: build_inputs_with_special_tokens, get_special_tokens_mask,
        create_token_type_ids_from_sequences, save_vocabulary


FunnelTokenizerFast
Sylvain Gugger's avatar
Sylvain Gugger committed
72
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
Sylvain Gugger's avatar
Sylvain Gugger committed
73
74
75
76
77
78

.. autoclass:: transformers.FunnelTokenizerFast
    :members:


Funnel specific outputs
Sylvain Gugger's avatar
Sylvain Gugger committed
79
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
Sylvain Gugger's avatar
Sylvain Gugger committed
80

Sylvain Gugger's avatar
Sylvain Gugger committed
81
.. autoclass:: transformers.models.funnel.modeling_funnel.FunnelForPreTrainingOutput
Sylvain Gugger's avatar
Sylvain Gugger committed
82
83
    :members:

Sylvain Gugger's avatar
Sylvain Gugger committed
84
.. autoclass:: transformers.models.funnel.modeling_tf_funnel.TFFunnelForPreTrainingOutput
85
86
    :members:

Sylvain Gugger's avatar
Sylvain Gugger committed
87
88

FunnelBaseModel
Sylvain Gugger's avatar
Sylvain Gugger committed
89
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
Sylvain Gugger's avatar
Sylvain Gugger committed
90
91

.. autoclass:: transformers.FunnelBaseModel
Sylvain Gugger's avatar
Sylvain Gugger committed
92
    :members: forward
Sylvain Gugger's avatar
Sylvain Gugger committed
93
94
95


FunnelModel
Sylvain Gugger's avatar
Sylvain Gugger committed
96
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
Sylvain Gugger's avatar
Sylvain Gugger committed
97
98

.. autoclass:: transformers.FunnelModel
Sylvain Gugger's avatar
Sylvain Gugger committed
99
    :members: forward
Sylvain Gugger's avatar
Sylvain Gugger committed
100
101
102


FunnelModelForPreTraining
Sylvain Gugger's avatar
Sylvain Gugger committed
103
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
Sylvain Gugger's avatar
Sylvain Gugger committed
104
105

.. autoclass:: transformers.FunnelForPreTraining
Sylvain Gugger's avatar
Sylvain Gugger committed
106
    :members: forward
Sylvain Gugger's avatar
Sylvain Gugger committed
107
108
109


FunnelForMaskedLM
Sylvain Gugger's avatar
Sylvain Gugger committed
110
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
Sylvain Gugger's avatar
Sylvain Gugger committed
111
112

.. autoclass:: transformers.FunnelForMaskedLM
Sylvain Gugger's avatar
Sylvain Gugger committed
113
    :members: forward
Sylvain Gugger's avatar
Sylvain Gugger committed
114
115
116


FunnelForSequenceClassification
Sylvain Gugger's avatar
Sylvain Gugger committed
117
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
Sylvain Gugger's avatar
Sylvain Gugger committed
118
119

.. autoclass:: transformers.FunnelForSequenceClassification
Sylvain Gugger's avatar
Sylvain Gugger committed
120
    :members: forward
Sylvain Gugger's avatar
Sylvain Gugger committed
121
122
123


FunnelForMultipleChoice
Sylvain Gugger's avatar
Sylvain Gugger committed
124
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
Sylvain Gugger's avatar
Sylvain Gugger committed
125
126

.. autoclass:: transformers.FunnelForMultipleChoice
Sylvain Gugger's avatar
Sylvain Gugger committed
127
    :members: forward
Sylvain Gugger's avatar
Sylvain Gugger committed
128
129
130


FunnelForTokenClassification
Sylvain Gugger's avatar
Sylvain Gugger committed
131
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
Sylvain Gugger's avatar
Sylvain Gugger committed
132
133

.. autoclass:: transformers.FunnelForTokenClassification
Sylvain Gugger's avatar
Sylvain Gugger committed
134
    :members: forward
Sylvain Gugger's avatar
Sylvain Gugger committed
135
136
137


FunnelForQuestionAnswering
Sylvain Gugger's avatar
Sylvain Gugger committed
138
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
Sylvain Gugger's avatar
Sylvain Gugger committed
139
140

.. autoclass:: transformers.FunnelForQuestionAnswering
Sylvain Gugger's avatar
Sylvain Gugger committed
141
    :members: forward
142
143
144


TFFunnelBaseModel
Sylvain Gugger's avatar
Sylvain Gugger committed
145
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
146
147

.. autoclass:: transformers.TFFunnelBaseModel
Sylvain Gugger's avatar
Sylvain Gugger committed
148
    :members: call
149
150
151


TFFunnelModel
Sylvain Gugger's avatar
Sylvain Gugger committed
152
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
153
154

.. autoclass:: transformers.TFFunnelModel
Sylvain Gugger's avatar
Sylvain Gugger committed
155
    :members: call
156
157
158


TFFunnelModelForPreTraining
Sylvain Gugger's avatar
Sylvain Gugger committed
159
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
160
161

.. autoclass:: transformers.TFFunnelForPreTraining
Sylvain Gugger's avatar
Sylvain Gugger committed
162
    :members: call
163
164
165


TFFunnelForMaskedLM
Sylvain Gugger's avatar
Sylvain Gugger committed
166
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
167
168

.. autoclass:: transformers.TFFunnelForMaskedLM
Sylvain Gugger's avatar
Sylvain Gugger committed
169
    :members: call
170
171
172


TFFunnelForSequenceClassification
Sylvain Gugger's avatar
Sylvain Gugger committed
173
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
174
175

.. autoclass:: transformers.TFFunnelForSequenceClassification
Sylvain Gugger's avatar
Sylvain Gugger committed
176
    :members: call
177
178
179


TFFunnelForMultipleChoice
Sylvain Gugger's avatar
Sylvain Gugger committed
180
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
181
182

.. autoclass:: transformers.TFFunnelForMultipleChoice
Sylvain Gugger's avatar
Sylvain Gugger committed
183
    :members: call
184
185
186


TFFunnelForTokenClassification
Sylvain Gugger's avatar
Sylvain Gugger committed
187
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
188
189

.. autoclass:: transformers.TFFunnelForTokenClassification
Sylvain Gugger's avatar
Sylvain Gugger committed
190
    :members: call
191
192
193


TFFunnelForQuestionAnswering
Sylvain Gugger's avatar
Sylvain Gugger committed
194
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
195
196

.. autoclass:: transformers.TFFunnelForQuestionAnswering
Sylvain Gugger's avatar
Sylvain Gugger committed
197
    :members: call