GPT-2 asking for Padding Token
Author: Marc-Morcos
Pull request: no

## Environment info
<!-- You can run the command `transformers-cli env` and copy-and-paste its output below.
     Don't forget to fill out the missing fields in that output! -->

- `transformers` version: 4.8.2
- Platform: Windows 10 (Google Collab)
- Python version: Python 3.6.9
- PyTorch version (GPU?):1.8.1+cu102
- Tensorflow version (GPU?): NA
- Using GPU in script?: No
- Using distributed or parallel set-up in script?: No

### Who can help

Models:

- gpt2: @patrickvonplaten, @LysandreJik


Library:

- tokenizers: @LysandreJik


## Information

Model I am using (gpt2-medium):

The problem arises when using:
Trainer, DataCollatorForLanguageModeling,GPT2Tokenizer

The tasks I am working on is:
* Triplets is a series of sequences I want gpt2 to train on

The Error:
ValueError: Asking to pad but the tokenizer does not have a padding token. Please select a token to use as `pad_token` `(tokenizer.pad_token = tokenizer.eos_token e.g.)` or add a new pad token via `tokenizer.add_special_tokens({'pad_token': '[PAD]'})`.

I put in this line which seems to fix the issue `tokenizer.pad_token = tokenizer.unk_token ` but I'm not sure if it makes sense for gpt-2

## To reproduce

Steps to reproduce the behavior:
Make a csv with column title "triplet" then anything below


Run the following code in google collab
----------------------------------------------------------------------------------------------------------------
 ```
  !pip install pandas
  !pip install transformers
  !pip install datasets
  !pip3 install torch==1.8.1+cu102 torchvision==0.9.1+cu102 torchaudio===0.8.1 -f https://download.pytorch.org/whl/torch_stable.html
  
  import pandas as pd
  from transformers import GPT2LMHeadModel, GPT2Tokenizer
  import numpy as np
  import random
  import torch
  from torch.utils.data import Dataset, DataLoader
  from transformers import GPT2Tokenizer, GPT2LMHeadModel, AdamW, get_linear_schedule_with_warmup,AutoTokenizer, DataCollatorForLanguageModeling, AutoConfig, Trainer, TrainingArguments,AutoModelForCausalLM
  from tqdm import tqdm, trange
  import torch.nn.functional as F
  import csv
  from datasets import load_dataset,load_metric
  import io
  from google.colab import files

  print("upload 'train.csv'")
  uploaded = files.upload()
  
  #version of gpt we use
  model_version = 'gpt2-medium'
  
  #create the dataset
  raw_datasets = load_dataset('csv', data_files=['train.csv'])
  #raw_datasets["validation"] = (load_dataset('csv', data_files=['validate.csv']))["train"]
  
  print(raw_datasets)
  print(raw_datasets["train"][1])
  
  
  #initialize tokenizer and model
  tokenizer = GPT2Tokenizer.from_pretrained(model_version)
  model = GPT2LMHeadModel.from_pretrained(model_version)
  #vvv this makes the error go away but it doesn't seem to produce a proper attention task
  #tokenizer.pad_token = tokenizer.unk_token #prevents error where there is no token. Doesn't matter since I pad properly in the collator? #https://huggingface.co/patrickvonplaten/bert2gpt2-cnn_dailymail-fp16#training-script
  
  #helper for tokenizing everything
  def tokenize_function(examples):
      return tokenizer(examples["triplet"], truncation=True)
  
  #tokenize all our data
  tokenized_datasets = raw_datasets.map(tokenize_function, batched=True)
  
  #gets rid of original string data
  tokenized_datasets=tokenized_datasets.remove_columns(["triplet"])
  
  print(tokenized_datasets)
  print(tokenized_datasets["train"]["input_ids"][1])
  
  #collate data
  data_collator = DataCollatorForLanguageModeling(tokenizer=tokenizer, mlm=False)
  
  #training args (you can control hyperprarameters from here, I just put output directory)
  training_args = TrainingArguments(("Finetuned"))
  
  trainer = Trainer(
      model,
      training_args,
      train_dataset=tokenized_datasets["train"],
      #eval_dataset=tokenized_datasets["validation"],
      #compute_metrics=compute_metrics,
      data_collator=data_collator,
      tokenizer=tokenizer,
  )
  
  trainer.train()
  trainer.save_model() 
```




Comments:
```python
tokenizer.pad_token = tokenizer.eos_token
```

is the recommended way to fix the warning :-) 

alright thank you, so eos instead of unknown right?

Upon further research, it seems they default to the same thing anyways https://huggingface.co/transformers/model_doc/gpt2.html