[CI] Quantization workflow
Author: SunMarc
Pull request: yes

# What does this PR do ? 
This PR adds a workflow for quantization tests + related dockerfile. Since we merged the [HfQuantizer PR](https://github.com/huggingface/transformers/pull/26610), the community started integrating their own quantizers into transformers (e.g. [AQML](https://github.com/huggingface/transformers/pull/28928) and much more in the future). This will lead to many third party libraries in the Dockerfile `huggingface/transformers-all-latest-gpu`. To limit the impact of these libraries on transformers tests, I propose to create a seperate dockerfile + workflow.

Comments:
The docs for this PR live [here](https://moon-ci-docs.huggingface.co/docs/transformers/pr_29046). All of your documentation changes will be reflected on that endpoint. The docs are available until 30 days after the last update.

I see that  `transformers-all-latest-gpu` docker image is not being updated for the last two days since the [installation](https://github.com/huggingface/transformers/actions/runs/7924158967/job/21635225922) fails because of aqml library that requires python 3.10 at least and we uses 3.8 for now. We will have to change that in the quantization dockerfile. 

Edit: I tried to install python 3.10 but it didn't [work](https://github.com/huggingface/transformers/actions/runs/7937198668/job/21673966243) (`1.030 E: Unable to locate package python3.10`). I found this [tutorial](https://computingforgeeks.com/how-to-install-python-on-ubuntu-linux-system/) but not sure if it is the best way to install it. 

The only reason `aqlm` requires `python>=3.10` is a single `match-case` statement in a non-critical place.

I was able to run `aqlm` on `python 3.8` no problem otherwise. I can replace the statement with an `if-else` statement and lower the requirement if necessary.

@SunMarc thanks! 
in trl i build a docker image with python 3.10: https://github.com/huggingface/trl/blob/main/docker/trl-source-gpu/Dockerfile maybe you can take some inspiration from that dockerfile? 🙏 I am not sure why you are getting that error currently as the commands looks correct. 
@BlackSamorez yes that would be great if you can also support python 3.8 for AQLM 🙏 Thanks ! 

> I was able to run aqlm on python 3.8 no problem otherwise. I can replace the statement with an if-else statement and lower the requirement if necessary.

Yes that would be for the best ! I prefer to keep running the quantization tests with python 3.8 since this is what we are actually doing for all transformers tests ! Moreover, it will be better for the users since we keep the requirement low. LMK when it is done ! @BlackSamorez 
Otherwise, I will modify the dockerfile and use conda to install python 3.10 as suggested by @younesbelkada. 

@SunMarc `aqlm` will support python `>=3.8` starting version `1.0.2`. I'm [1 PR](https://github.com/Vahe1994/AQLM/pull/26) away from releasing it.

Perfect ! I will wait for your PR to be merged then + release then if it doesn't take too much time. Please keep me updated ! Otherwise, I can first merge this PR without aqlm and add it afterwards. 

@SunMarc `aqlm==1.0.2` is out. May I ask you to please update the docker images?

I was able to build the image but I don't have the permission to push the image cc @ydshieh 

`#22 ERROR: failed to push huggingface/transformers-quantization-latest-gpu: push access denied, repository does not exist or may require authorization: server message: insufficient_scope: authorization failed`

@SunMarc  Do you builded/pushed via transformers' github actions? If so, do you have a job run link?

Yes ! Here's the link to the [job](https://github.com/huggingface/transformers/actions/runs/7979164961) 

it's quite strange because the workflow was indeed able to login: https://github.com/huggingface/transformers/actions/runs/7979164961/job/21802381289#step:5:1 but fails to push ...

In TRL and PEFT I can confirm the build & push works fine :  https://github.com/huggingface/peft/actions/workflows/build_docker_images.yml / https://github.com/huggingface/trl/actions/workflows/docker-build.yml so it's not a token issue as we use the same except if the token has expired for transformers cc @glegendre01 

Hi @SunMarc it's because there is some change in the infra team on docker hub stuff.

The repository `huggingface/transformers-quantization-latest-gpu` has to be created on docker Hub first, then only after this, you can push to it.

I will ask for it.

BTW, I will review this PR tomorrow or Friday 🙏 

Hi @ydshieh, i was able to run the tests and get the slack notification. See job [here](https://github.com/huggingface/transformers/actions/runs/7992001453).  Thx for your help ! 

@SunMarc I am going to merge #29208. Once done, there might be a conflict with this PR, but it should be easy to resolve. Ping me otherwise.

I've addressed all comments. I think that we are good to merge after I checked that the docker image is built correctly with torch 2.2.0 (currently facing some issues with login into dockerhub)

EDIT: The image was built successfully [here](https://github.com/huggingface/transformers/actions/runs/8050929543) cc @ydshieh 

I would love to see the newly added `job` could be run successfully (having failing tests are fine), but I don't enforce it here.