Add Tensorflow handling of ONNX conversion
Author: Albertobegue
Pull request: yes

Add tf2onnx and onnx packages to setup.py
Use them in convert.py to handle ONNX conversion of TF models.
Add tests of conversion to onnx for tensorflow models

# What does this PR do?
This PR develps the new feature mentioned in https://github.com/huggingface/transformers/issues/13534#issue-994256428

To do so, I had to add two packages to setup.py but I am not sure what the policy is regarding the addition of new packages. Maybe it should me done otherwise but I haven't found any relevant documentation. Therefore, I have decided to add setup.py to my commits but I am aware you might want to do it differently. The two packages are tf2onnx and onnx.

The documentation might also have to be changed but I am not sure how. 

Happy to have any feedback, this is my first PR :)
<!-- Remove if not applicable -->

Fixes # 994256428


## Before submitting
## Who can review?
@LysandreJik 
Anyone in the community is free to review the PR once the tests have passed. Feel free to tag
members/contributors who may be interested in your PR.

Comments:
Hi @Albertobegue thank you for this very nice contribution! We're currently working on a large refactor / enhancement of the ONNX export in #14700 so I'll come back to this PR once that's been merged :)

This issue has been automatically marked as stale because it has not had recent activity. If you think this still needs to be addressed please comment on this thread.

Please note that issues that do not follow the [contributing guidelines](https://github.com/huggingface/transformers/blob/master/CONTRIBUTING.md) are likely to be ignored.

Hey @Albertobegue now that #14358 has been merged, would you mind rebasing your branch on `master` and resolving the merge conflicts in your PR? I'll then be happy to review it and give you some feedback :)

> Also, have you checked that the unit tests pass? You can run them with:
> 
> ```
>  RUN_SLOW=1 pytest tests/test_onnx_v2.py
> ```
> 
> or if you just want to test a single architecture with
> 
> ```
>  RUN_SLOW=1 pytest tests/test_onnx_v2.py -k "distilbert" -rp
> ```

I have, yes, so I don't understand why the .circleci checks fail?



Hey @Albertobegue is this ready for another review? If not, just ping me here when it it :)

> Hey @Albertobegue is this ready for another review? If not, just ping me here when it it :)

It is, yes, but I don't understand why the checks on circleci fail, since I don't think I have modified test_file_utils or anything imported by it. Maybe I'm wrong and I did while rebasing though.

> > Hey @Albertobegue is this ready for another review? If not, just ping me here when it it :)
> 
> It is, yes, but I don't understand why the checks on circleci fail, since I don't think I have modified test_file_utils or anything imported by it. Maybe I'm wrong and I did while rebasing though.

Hey @Albertobegue sorry for the delay. Do you mind if I make a few commit to your branch to get the tests passing?

Of course, not. Thank you!

Hey @Albertobegue I've fixed the merge conflicts and most of the failing unit tests. There's some missing bits in the ONNX unit tests, but I'll ping you once I've added them :)



Thanks for refactoring the export code @Albertobegue - this PR looks good to go on my side 🚀 !

Pinging @LysandreJik @michaelbenayoun and the TensorFlow team @Rocketknight1 @gante for their blessing too 😇 

Great contribution, thanks @Albertobegue !

Merging this now - will tackle the docs in a separate PR :)