"vscode:/vscode.git/clone" did not exist on "22bd857cb5270fae906581b0e45af139b9e8e1af"
gpt.rst 6.03 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.

13
OpenAI GPT
Sylvain Gugger's avatar
Sylvain Gugger committed
14
-----------------------------------------------------------------------------------------------------------------------
15

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

Sylvain Gugger's avatar
Sylvain Gugger committed
19
20
OpenAI GPT model was proposed in `Improving Language Understanding by Generative Pre-Training
<https://s3-us-west-2.amazonaws.com/openai-assets/research-covers/language-unsupervised/language_understanding_paper.pdf>`__
Sylvain Gugger's avatar
Sylvain Gugger committed
21
22
by Alec Radford, Karthik Narasimhan, Tim Salimans and Ilya Sutskever. It's a causal (unidirectional) transformer
pre-trained using language modeling on a large corpus will long range dependencies, the Toronto Book Corpus.
Lysandre's avatar
Lysandre committed
23
24
25

The abstract from the paper is the following:

Sylvain Gugger's avatar
Sylvain Gugger committed
26
27
28
*Natural language understanding comprises a wide range of diverse tasks such as textual entailment, question answering,
semantic similarity assessment, and document classification. Although large unlabeled text corpora are abundant,
labeled data for learning these specific tasks is scarce, making it challenging for discriminatively trained models to
29
perform adequately. We demonstrate that large gains on these tasks can be realized by generative pretraining of a
Sylvain Gugger's avatar
Sylvain Gugger committed
30
31
32
33
34
35
language model on a diverse corpus of unlabeled text, followed by discriminative fine-tuning on each specific task. In
contrast to previous approaches, we make use of task-aware input transformations during fine-tuning to achieve
effective transfer while requiring minimal changes to the model architecture. We demonstrate the effectiveness of our
approach on a wide range of benchmarks for natural language understanding. Our general task-agnostic model outperforms
discriminatively trained models that use architectures specifically crafted for each task, significantly improving upon
the state of the art in 9 out of the 12 tasks studied.*
Lysandre's avatar
Lysandre committed
36
37
38

Tips:

Sylvain Gugger's avatar
Sylvain Gugger committed
39
40
- GPT is a model with absolute position embeddings so it's usually advised to pad the inputs on the right rather than
  the left.
Lysandre's avatar
Lysandre committed
41
- GPT was trained with a causal language modeling (CLM) objective and is therefore powerful at predicting the next
Sylvain Gugger's avatar
Sylvain Gugger committed
42
43
  token in a sequence. Leveraging this feature allows GPT-2 to generate syntactically coherent text as it can be
  observed in the `run_generation.py` example script.
Lysandre's avatar
Lysandre committed
44

Sylvain Gugger's avatar
Sylvain Gugger committed
45
46
`Write With Transformer <https://transformer.huggingface.co/doc/gpt>`__ is a webapp created and hosted by Hugging Face
showcasing the generative capabilities of several models. GPT is one of them.
Lysandre's avatar
Lysandre committed
47

Sylvain Gugger's avatar
Sylvain Gugger committed
48
The original code can be found `here <https://github.com/openai/finetune-transformer-lm>`__.
49

50
51
Note:

Sylvain Gugger's avatar
Sylvain Gugger committed
52
53
If you want to reproduce the original tokenization process of the `OpenAI GPT` paper, you will need to install ``ftfy``
and ``SpaCy``::
54

55
56
.. code-block:: bash

57
58
59
    pip install spacy ftfy==4.4.3
    python -m spacy download en

Sylvain Gugger's avatar
Sylvain Gugger committed
60
If you don't install ``ftfy`` and ``SpaCy``, the :class:`~transformers.OpenAIGPTTokenizer` will default to tokenize
Sylvain Gugger's avatar
Sylvain Gugger committed
61
using BERT's :obj:`BasicTokenizer` followed by Byte-Pair Encoding (which should be fine for most usage, don't worry).
62

Lysandre's avatar
Lysandre committed
63
OpenAIGPTConfig
Sylvain Gugger's avatar
Sylvain Gugger committed
64
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
65

66
.. autoclass:: transformers.OpenAIGPTConfig
67
    :members:
68
69


Lysandre's avatar
Lysandre committed
70
OpenAIGPTTokenizer
Sylvain Gugger's avatar
Sylvain Gugger committed
71
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
72

73
.. autoclass:: transformers.OpenAIGPTTokenizer
Lysandre Debut's avatar
Lysandre Debut committed
74
    :members: save_vocabulary
75
76


77
OpenAIGPTTokenizerFast
Sylvain Gugger's avatar
Sylvain Gugger committed
78
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
79
80
81
82
83

.. autoclass:: transformers.OpenAIGPTTokenizerFast
    :members:


84
OpenAI specific outputs
Sylvain Gugger's avatar
Sylvain Gugger committed
85
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
86

Sylvain Gugger's avatar
Sylvain Gugger committed
87
.. autoclass:: transformers.models.openai.modeling_openai.OpenAIGPTDoubleHeadsModelOutput
88
89
    :members:

Sylvain Gugger's avatar
Sylvain Gugger committed
90
.. autoclass:: transformers.models.openai.modeling_tf_openai.TFOpenAIGPTDoubleHeadsModelOutput
Sylvain Gugger's avatar
Sylvain Gugger committed
91
92
    :members:

93

Lysandre's avatar
Lysandre committed
94
OpenAIGPTModel
Sylvain Gugger's avatar
Sylvain Gugger committed
95
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
96

97
.. autoclass:: transformers.OpenAIGPTModel
Sylvain Gugger's avatar
Sylvain Gugger committed
98
    :members: forward
99
100


Lysandre's avatar
Lysandre committed
101
OpenAIGPTLMHeadModel
Sylvain Gugger's avatar
Sylvain Gugger committed
102
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
103

104
.. autoclass:: transformers.OpenAIGPTLMHeadModel
Sylvain Gugger's avatar
Sylvain Gugger committed
105
    :members: forward
106
107


Lysandre's avatar
Lysandre committed
108
OpenAIGPTDoubleHeadsModel
Sylvain Gugger's avatar
Sylvain Gugger committed
109
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
110

111
.. autoclass:: transformers.OpenAIGPTDoubleHeadsModel
Sylvain Gugger's avatar
Sylvain Gugger committed
112
    :members: forward
LysandreJik's avatar
LysandreJik committed
113
114


115
116
117
118
119
120
121
OpenAIGPTForSequenceClassification
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~

.. autoclass:: transformers.OpenAIGPTForSequenceClassification
    :members: forward


Lysandre's avatar
Lysandre committed
122
TFOpenAIGPTModel
Sylvain Gugger's avatar
Sylvain Gugger committed
123
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
LysandreJik's avatar
LysandreJik committed
124

125
.. autoclass:: transformers.TFOpenAIGPTModel
Sylvain Gugger's avatar
Sylvain Gugger committed
126
    :members: call
LysandreJik's avatar
LysandreJik committed
127
128


Lysandre's avatar
Lysandre committed
129
TFOpenAIGPTLMHeadModel
Sylvain Gugger's avatar
Sylvain Gugger committed
130
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
LysandreJik's avatar
LysandreJik committed
131

132
.. autoclass:: transformers.TFOpenAIGPTLMHeadModel
Sylvain Gugger's avatar
Sylvain Gugger committed
133
    :members: call
LysandreJik's avatar
LysandreJik committed
134
135


Lysandre's avatar
Lysandre committed
136
TFOpenAIGPTDoubleHeadsModel
Sylvain Gugger's avatar
Sylvain Gugger committed
137
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
LysandreJik's avatar
LysandreJik committed
138

139
.. autoclass:: transformers.TFOpenAIGPTDoubleHeadsModel
Sylvain Gugger's avatar
Sylvain Gugger committed
140
    :members: call