gpt.rst 5.38 KB
Newer Older
1
OpenAI GPT
Sylvain Gugger's avatar
Sylvain Gugger committed
2
-----------------------------------------------------------------------------------------------------------------------
3

Lysandre's avatar
Lysandre committed
4
Overview
Sylvain Gugger's avatar
Sylvain Gugger committed
5
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
Lysandre's avatar
Lysandre committed
6

Sylvain Gugger's avatar
Sylvain Gugger committed
7
8
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>`__
Lysandre's avatar
Lysandre committed
9
by Alec Radford, Karthik Narasimhan, Tim Salimans and Ilya Sutskever. It's a causal (unidirectional)
Sylvain Gugger's avatar
Sylvain Gugger committed
10
11
transformer pre-trained using language modeling on a large corpus will long range dependencies, the Toronto Book
Corpus.
Lysandre's avatar
Lysandre committed
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40

The abstract from the paper is the following:

*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 perform adequately. We demonstrate that large
gains on these tasks can be realized by generative pre-training of a 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.*

Tips:

- GPT is a model with absolute position embeddings so it's usually advised to pad the inputs on
  the right rather than the left.
- GPT was trained with a causal language modeling (CLM) objective and is therefore powerful at predicting the next
  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.

`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.

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

43
44
45
46
47
48
49
50
Note:

If you want to reproduce the original tokenization process of the `OpenAI GPT` paper, you will need to install 
``ftfy`` and ``SpaCy``::

    pip install spacy ftfy==4.4.3
    python -m spacy download en

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

Lysandre's avatar
Lysandre committed
55
OpenAIGPTConfig
Sylvain Gugger's avatar
Sylvain Gugger committed
56
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
57

58
.. autoclass:: transformers.OpenAIGPTConfig
59
    :members:
60
61


Lysandre's avatar
Lysandre committed
62
OpenAIGPTTokenizer
Sylvain Gugger's avatar
Sylvain Gugger committed
63
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
64

65
.. autoclass:: transformers.OpenAIGPTTokenizer
Lysandre Debut's avatar
Lysandre Debut committed
66
    :members: save_vocabulary
67
68


69
OpenAIGPTTokenizerFast
Sylvain Gugger's avatar
Sylvain Gugger committed
70
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
71
72
73
74
75

.. autoclass:: transformers.OpenAIGPTTokenizerFast
    :members:


76
OpenAI specific outputs
Sylvain Gugger's avatar
Sylvain Gugger committed
77
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
78
79
80
81

.. autoclass:: transformers.modeling_openai.OpenAIGPTDoubleHeadsModelOutput
    :members:

Sylvain Gugger's avatar
Sylvain Gugger committed
82
83
84
.. autoclass:: transformers.modeling_tf_openai.TFOpenAIGPTDoubleHeadsModelOutput
    :members:

85

Lysandre's avatar
Lysandre committed
86
OpenAIGPTModel
Sylvain Gugger's avatar
Sylvain Gugger committed
87
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
88

89
.. autoclass:: transformers.OpenAIGPTModel
Sylvain Gugger's avatar
Sylvain Gugger committed
90
    :members: forward
91
92


Lysandre's avatar
Lysandre committed
93
OpenAIGPTLMHeadModel
Sylvain Gugger's avatar
Sylvain Gugger committed
94
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
95

96
.. autoclass:: transformers.OpenAIGPTLMHeadModel
Sylvain Gugger's avatar
Sylvain Gugger committed
97
    :members: forward
98
99


Lysandre's avatar
Lysandre committed
100
OpenAIGPTDoubleHeadsModel
Sylvain Gugger's avatar
Sylvain Gugger committed
101
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
102

103
.. autoclass:: transformers.OpenAIGPTDoubleHeadsModel
Sylvain Gugger's avatar
Sylvain Gugger committed
104
    :members: forward
LysandreJik's avatar
LysandreJik committed
105
106


107
108
109
110
111
112
113
OpenAIGPTForSequenceClassification
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~

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


Lysandre's avatar
Lysandre committed
114
TFOpenAIGPTModel
Sylvain Gugger's avatar
Sylvain Gugger committed
115
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
LysandreJik's avatar
LysandreJik committed
116

117
.. autoclass:: transformers.TFOpenAIGPTModel
Sylvain Gugger's avatar
Sylvain Gugger committed
118
    :members: call
LysandreJik's avatar
LysandreJik committed
119
120


Lysandre's avatar
Lysandre committed
121
TFOpenAIGPTLMHeadModel
Sylvain Gugger's avatar
Sylvain Gugger committed
122
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
LysandreJik's avatar
LysandreJik committed
123

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


Lysandre's avatar
Lysandre committed
128
TFOpenAIGPTDoubleHeadsModel
Sylvain Gugger's avatar
Sylvain Gugger committed
129
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
LysandreJik's avatar
LysandreJik committed
130

131
.. autoclass:: transformers.TFOpenAIGPTDoubleHeadsModel
Sylvain Gugger's avatar
Sylvain Gugger committed
132
    :members: call