Fix TFLEDModel
# What does this PR do?

The computation of `diagonal_mask` in `TFLEDEncoderSelfAttention`, and `inputs["attention_mask"]` in `TFLEDEncoder` differ from `LEDEncoderSelfAttention` and `LEDEncoder`.

This cause the `logits` and `decoder hidden states` differs in the range `1e-5 ~ 5e-5`, and `encoder hidden states` differs in the range `1e-2 ~ 1e-1`.

This PR fixes these inconsistency, which reduces the difference to the range `1e-7 ~ 1e-6`. I can provide an example if you prefer to see one.

(#15256) 
_The documentation is not available anymore as the PR was closed or merged._<|||||>@patrickvonplaten was very involved in those two models, but @Rocketknight1 and @gante may also take a look<|||||>> It looks good to me, as it recovers a pattern lost in the transition and lowers the error. I'm assuming this PR is also a dependency of #15256, correct?
> 

Yes!

<|||||>Looks clean - thanks a mille for diving into this complicated code @ydshieh! Could we maybe add a test between PT and TF for LED that would have failed previously without this change? Also Longformer should be affected by this problem as well no? <|||||>> Looks clean - thanks a mille for diving into this complicated code @ydshieh! Could we maybe add a test between PT and TF for LED that would have failed previously without this change? Also Longformer should be affected by this problem as well no?

For Longformer, 

 - about `merge "global_attention_mask" and "attention_mask"`: TF version works correctly in `_merge_to_attention_mask`.
 - about the `diagonal_mask`, it turns out `TFLongformerMainLayer` use something different `extended_attention_mask = tf.cast(tf.math.abs(1 - extended_attention_mask), tf.dtypes.float32) * -10000.0` (note the `tf.math.abs` here), which makes all of masked places negative (including global attn), while in `TFLED`, it uses `_expand_mask`, which make global attn `positive`.
This difference makes `TFLongformer` gives the same results as PT models in the test. (I feel there is something strange of using abs here though!)




<|||||>For the test, I have a more general `test_pt_tf_model_equivalence` in mind (already in another PR), which will make the previous version fail. However, it will also fail (quite a lot) other models/tests. Maybe I can add it specifically to LED model in this PR, and remove it once the more general test could be put into `test_modeling_tf_common.py` (after fixing other tf/pt inconsistency)

