title: GPT2 on Hugging face(pytorch transformers) RuntimeError: grad can be implicitly created only for scalar outputs
body: <p>I am trying to fine-tune gpt2 with a custom dataset of mine. I created a basic example with the documentation from hugging-face transformers. I receive the mentioned error. I know what it means: (basically it is calling backward on a non-scalar tensor) but since I almost use only API calls, I have no idea how to fix this issue. Any suggestions?</p>
  <pre><code>from pathlib import Path
  from absl import flags, app
  import IPython
  import torch
  from transformers import GPT2LMHeadModel, Trainer,  TrainingArguments
  from data_reader import GetDataAsPython
  
  # this is my custom data, but i get the same error for the basic case below
  # data = GetDataAsPython('data.json')
  # data = [data_point.GetText2Text() for data_point in data]
  # print(&quot;Number of data samples is&quot;, len(data))
  
  data = [&quot;this is a trial text&quot;, &quot;this is another trial text&quot;]
  
  train_texts = data
  
  from transformers import GPT2Tokenizer
  tokenizer = GPT2Tokenizer.from_pretrained('gpt2')
  
  special_tokens_dict = {'pad_token': '&lt;PAD&gt;'}
  num_added_toks = tokenizer.add_special_tokens(special_tokens_dict)
  train_encodigs = tokenizer(train_texts, truncation=True, padding=True)
  
  
  class BugFixDataset(torch.utils.data.Dataset):
      def __init__(self, encodings):
          self.encodings = encodings
      
      def __getitem__(self, index):
          item = {key: torch.tensor(val[index]) for key, val in self.encodings.items()}
          return item
  
      def __len__(self):
          return len(self.encodings['input_ids'])
  
  train_dataset = BugFixDataset(train_encodigs)
  
  training_args = TrainingArguments(
      output_dir='./results',          
      num_train_epochs=3,              
      per_device_train_batch_size=1,  
      per_device_eval_batch_size=1,   
      warmup_steps=500,                
      weight_decay=0.01,               
      logging_dir='./logs',
      logging_steps=10,
  )
  
  model = GPT2LMHeadModel.from_pretrained('gpt2', return_dict=True)
  model.resize_token_embeddings(len(tokenizer))
  
  trainer = Trainer(
      model=model,
      args=training_args,
      train_dataset=train_dataset,
  )
  
  trainer.train()
  </code></pre>