Repository navigation
Migrate torchao integration off deleted torchao.dtypes - #47797
Conversation
torchao removed the torchao/dtypes package (AffineQuantizedTensor and the Layout classes). This updates the transformers torchao integration to stop importing from torchao.dtypes so it no longer crashes against current torchao, mirroring the approach in transformers huggingface#45321. Changes: - integrations/torchao.py: drop the `_quantization_type` helper and its `from torchao.dtypes import AffineQuantizedTensor` isinstance branch; `_linear_extra_repr` now detects quantized weights inline via `isinstance(self.weight, TorchAOBaseTensor)` (from torchao.utils). - tests/quantization/torchao_integration/test_torchao.py: replace the `from torchao.dtypes import AffineQuantizedTensor` import with `from torchao.utils import TorchAOBaseTensor` and update the isinstance assertions accordingly. - docs/source/en/quantization/torchao.md: remove the MarlinSparseLayout ("int4-weight-only-24sparse") examples and migrate the Int4CPULayout example to `Int4WeightOnlyConfig(int4_packing_format=PLAIN_INT32)`. Test plan: - `python -c "import transformers.integrations.torchao"` imports cleanly. - `RUN_SLOW=1 pytest tests/quantization/torchao_integration/test_torchao.py`: all 18 TorchAOBaseTensor isinstance / FqnToConfig tests pass. The 3 remaining failures (test_int4wo_quant, test_int4wo_offload, test_serialization_accelerator_*_Int4WeightOnlyConfig) are pre-existing generation-output text comparisons pinned to torchao int4 kernel numerics on the test hardware, unrelated to this change. Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
|
[For maintainers] Suggested jobs to run (before merge) run-slow: torchao_integration |
|
cc @SunMarc , do you know who could help review/merge this? context - making sure transformers follows the torchao deletion in pytorch/ao#4696 |
CI recapDashboard: View test results in Grafana |
SunMarc
left a comment
There was a problem hiding this comment.
Thanks a lot for this update ! I indeed saw a lot of breaking tests due to the latest version of torchao.
| from transformers import TorchAoConfig, AutoModelForCausalLM, AutoTokenizer | ||
| from torchao.quantization import Int4WeightOnlyConfig | ||
| from torchao.dtypes import Int4CPULayout | ||
| from torchao.quantization.quantize_.workflows import Int4PackingFormat |
There was a problem hiding this comment.
is this safe to import even with prior version of torchao ?
There was a problem hiding this comment.
yes, that should work for torchao version 0.15+, which is what is supported by hf
|
The docs for this PR live here. All of your documentation changes will be reflected on that endpoint. The docs are available until 30 days after the last update. |
torchao removed the torchao/dtypes package (AffineQuantizedTensor and the Layout classes). This updates the transformers torchao integration to stop importing from torchao.dtypes so it no longer crashes against current torchao, mirroring the approach in transformers #45321.
Changes:
_quantization_typehelper and itsfrom torchao.dtypes import AffineQuantizedTensorisinstance branch;_linear_extra_reprnow detects quantized weights inline viaisinstance(self.weight, TorchAOBaseTensor)(from torchao.utils).from torchao.dtypes import AffineQuantizedTensorimport withfrom torchao.utils import TorchAOBaseTensorand update the isinstance assertions accordingly.Int4WeightOnlyConfig(int4_packing_format=PLAIN_INT32).Test plan:
python -c "import transformers.integrations.torchao"imports cleanly.RUN_SLOW=1 pytest tests/quantization/torchao_integration/test_torchao.py: all 18 TorchAOBaseTensor isinstance / FqnToConfig tests pass. The 3 remaining failures (test_int4wo_quant, test_int4wo_offload, test_serialization_accelerator_*_Int4WeightOnlyConfig) are pre-existing generation-output text comparisons pinned to torchao int4 kernel numerics on the test hardware, unrelated to this change.(First-time contributors only): I confirm that this PR description and code is not written by an LLM or code agent
Before submitting
Pull Request checks?
to it if that's the case.
Who can review?
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.