`bias_dropout_add_fused_train` drops `grad_fn` in the output tensor
**Describe the bug**

when running p-tuning of T5 model in branch1.8.0, freezing the LM model weights, it raises 
```
Exception has occurred: RuntimeError       (note: full exception trace is shown but execution is paused at: _run_module_as_main)
element 0 of tensors does not require grad and does not have a grad_fn
```

It turns out to be a problem with `bias_dropout_add_fused_train` method.
The `attention_output` has `grad_fun` as arguments for the following code in line717 of `transformer.py`:
```python
            layernorm_input = bias_dropout_add_func(
                attention_output, attention_bias.expand_as(residual), residual, self.hidden_dropout
            )
```           
![image](https://user-images.githubusercontent.com/43824965/165551818-f0e12553-a3c0-48d9-80a1-f869fe51fdee.png)
However, the result doesn't have the `grad_fn` and `requires_grad=False`
![image](https://user-images.githubusercontent.com/43824965/165553101-bad41e8a-bf4e-427b-8744-60cddb0d5410.png)

If use the none-fused version, it works fine.
![image](https://user-images.githubusercontent.com/43824965/165552804-8409ae6d-b865-4666-a5cb-26d1579b87bc.png)

It looks like to be a `pytorch.script` problem. Following is how it is implemented
```python
def bias_dropout_add(x, bias, residual, prob, training):
    # type: (Tensor, Tensor, Tensor, float, bool) -> Tensor
    out = torch.nn.functional.dropout(x + bias, p=prob, training=training)
    out = residual + out
    return out


@torch.jit.script
def bias_dropout_add_fused_train_(
    x: torch.Tensor, bias: torch.Tensor, residual: torch.Tensor, prob: float
) -> torch.Tensor:
    # type: (Tensor, Tensor, Tensor, float) -> Tensor
    return bias_dropout_add(x, bias, residual, prob, True)
```
The work around is to set `bias_dropout_fusion=False`