gpt.rst 5.43 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>`__
Sylvain Gugger's avatar
Sylvain Gugger committed
9
10
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
11
12
13

The abstract from the paper is the following:

Sylvain Gugger's avatar
Sylvain Gugger committed
14
15
16
17
18
19
20
21
22
23
*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.*
Lysandre's avatar
Lysandre committed
24
25
26

Tips:

Sylvain Gugger's avatar
Sylvain Gugger committed
27
28
- 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
29
- 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
30
31
  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
32

Sylvain Gugger's avatar
Sylvain Gugger committed
33
34
`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
35

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

38
39
Note:

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

43
44
.. code-block:: bash

45
46
47
    pip install spacy ftfy==4.4.3
    python -m spacy download en

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

Lysandre's avatar
Lysandre committed
51
OpenAIGPTConfig
Sylvain Gugger's avatar
Sylvain Gugger committed
52
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
53

54
.. autoclass:: transformers.OpenAIGPTConfig
55
    :members:
56
57


Lysandre's avatar
Lysandre committed
58
OpenAIGPTTokenizer
Sylvain Gugger's avatar
Sylvain Gugger committed
59
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
60

61
.. autoclass:: transformers.OpenAIGPTTokenizer
Lysandre Debut's avatar
Lysandre Debut committed
62
    :members: save_vocabulary
63
64


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

.. autoclass:: transformers.OpenAIGPTTokenizerFast
    :members:


72
OpenAI specific outputs
Sylvain Gugger's avatar
Sylvain Gugger committed
73
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
74

Sylvain Gugger's avatar
Sylvain Gugger committed
75
.. autoclass:: transformers.models.openai.modeling_openai.OpenAIGPTDoubleHeadsModelOutput
76
77
    :members:

Sylvain Gugger's avatar
Sylvain Gugger committed
78
.. autoclass:: transformers.models.openai.modeling_tf_openai.TFOpenAIGPTDoubleHeadsModelOutput
Sylvain Gugger's avatar
Sylvain Gugger committed
79
80
    :members:

81

Lysandre's avatar
Lysandre committed
82
OpenAIGPTModel
Sylvain Gugger's avatar
Sylvain Gugger committed
83
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
84

85
.. autoclass:: transformers.OpenAIGPTModel
Sylvain Gugger's avatar
Sylvain Gugger committed
86
    :members: forward
87
88


Lysandre's avatar
Lysandre committed
89
OpenAIGPTLMHeadModel
Sylvain Gugger's avatar
Sylvain Gugger committed
90
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
91

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


Lysandre's avatar
Lysandre committed
96
OpenAIGPTDoubleHeadsModel
Sylvain Gugger's avatar
Sylvain Gugger committed
97
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
98

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


103
104
105
106
107
108
109
OpenAIGPTForSequenceClassification
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~

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


Lysandre's avatar
Lysandre committed
110
TFOpenAIGPTModel
Sylvain Gugger's avatar
Sylvain Gugger committed
111
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
LysandreJik's avatar
LysandreJik committed
112

113
.. autoclass:: transformers.TFOpenAIGPTModel
Sylvain Gugger's avatar
Sylvain Gugger committed
114
    :members: call
LysandreJik's avatar
LysandreJik committed
115
116


Lysandre's avatar
Lysandre committed
117
TFOpenAIGPTLMHeadModel
Sylvain Gugger's avatar
Sylvain Gugger committed
118
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
LysandreJik's avatar
LysandreJik committed
119

120
.. autoclass:: transformers.TFOpenAIGPTLMHeadModel
Sylvain Gugger's avatar
Sylvain Gugger committed
121
    :members: call
LysandreJik's avatar
LysandreJik committed
122
123


Lysandre's avatar
Lysandre committed
124
TFOpenAIGPTDoubleHeadsModel
Sylvain Gugger's avatar
Sylvain Gugger committed
125
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
LysandreJik's avatar
LysandreJik committed
126

127
.. autoclass:: transformers.TFOpenAIGPTDoubleHeadsModel
Sylvain Gugger's avatar
Sylvain Gugger committed
128
    :members: call