gpt.rst 5.15 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


Lysandre's avatar
Lysandre committed
107
TFOpenAIGPTModel
Sylvain Gugger's avatar
Sylvain Gugger committed
108
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
LysandreJik's avatar
LysandreJik committed
109

110
.. autoclass:: transformers.TFOpenAIGPTModel
Sylvain Gugger's avatar
Sylvain Gugger committed
111
    :members: call
LysandreJik's avatar
LysandreJik committed
112
113


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

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


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

124
.. autoclass:: transformers.TFOpenAIGPTDoubleHeadsModel
Sylvain Gugger's avatar
Sylvain Gugger committed
125
    :members: call