CodeGen Fix causal mask for half precision
# What does this PR do? 

This PR forces the causal mask to stay in `torch.uint8`. An error occurs when loading a model in half precision since `torch_dtype=torch.float16` casts also the buffers in fp16. Here is a minimal script to reproduce the error:
```
import torch
from transformers import AutoTokenizer, AutoModelForCausalLM

tokenizer = AutoTokenizer.from_pretrained("Salesforce/codegen-2B-mono")
model = AutoModelForCausalLM.from_pretrained("Salesforce/codegen-2B-mono", device_map="auto", torch_dtype=torch.float16)

text = "def quicksort(l):"

encoded_input = tokenizer(text, return_tensors='pt')
output_sequences = model.generate(input_ids=encoded_input['input_ids'], attention_mask=encoded_input['attention_mask'])
print(tokenizer.decode(output_sequences[0], skip_special_tokens=True))
```

In a future PR we could address non-casting the buffers (aka keeping them in their native `dtype`)

Can also confirm the slow tests pass!

cc @ydshieh 
_The documentation is not available anymore as the PR was closed or merged._<|||||>Yeah let's move the discussion to: https://github.com/huggingface/transformers/pull/18471