From cd9c0d61caab529d9479bb3978ac77004e180aba Mon Sep 17 00:00:00 2001 From: sayakpaul Date: Thu, 13 Mar 2025 18:11:22 +0530 Subject: [PATCH 1/4] restrict memory tests for quanto for certain schemes. --- src/diffusers/utils/testing_utils.py | 14 ++++++++++++++ tests/quantization/quanto/test_quanto.py | 7 +++++++ 2 files changed, 21 insertions(+) diff --git a/src/diffusers/utils/testing_utils.py b/src/diffusers/utils/testing_utils.py index 7eda13716025..a874693acafd 100644 --- a/src/diffusers/utils/testing_utils.py +++ b/src/diffusers/utils/testing_utils.py @@ -101,6 +101,8 @@ mps_backend_registered = hasattr(torch.backends, "mps") torch_device = "mps" if (mps_backend_registered and torch.backends.mps.is_available()) else torch_device + from .torch_utils import get_torch_cuda_device_capability + def torch_all_close(a, b, *args, **kwargs): if not is_torch_available(): @@ -282,6 +284,18 @@ def require_torch_gpu(test_case): ) +def require_torch_cuda_compatibility(expected_compute_capability): + def decorator(test_case): + if not torch.cuda.is_available(): + return unittest.skip(test_case) + else: + compute_capability = get_torch_cuda_device_capability() + current_compute_capability = f"{compute_capability[0]}.{compute_capability[1]}" + return unittest.skipUnless(float(current_compute_capability) == float(expected_compute_capability)) + + return decorator + + # These decorators are for accelerator-specific behaviours that are not GPU-specific def require_torch_accelerator(test_case): """Decorator marking a test that requires an accelerator backend and PyTorch.""" diff --git a/tests/quantization/quanto/test_quanto.py b/tests/quantization/quanto/test_quanto.py index 51ca0bfdc0ab..b5d2a72975a1 100644 --- a/tests/quantization/quanto/test_quanto.py +++ b/tests/quantization/quanto/test_quanto.py @@ -10,6 +10,7 @@ numpy_cosine_similarity_distance, require_accelerate, require_big_gpu_with_torch_cuda, + require_torch_cuda_compatibility, torch_device, ) @@ -311,6 +312,9 @@ def get_dummy_init_kwargs(self): return {"weights_dtype": "int8"} +require_torch_cuda_compatibility(8.0) + + class FluxTransformerInt4WeightsTest(FluxTransformerQuantoMixin, unittest.TestCase): expected_memory_reduction = 0.55 @@ -318,6 +322,9 @@ def get_dummy_init_kwargs(self): return {"weights_dtype": "int4"} +require_torch_cuda_compatibility(8.0) + + class FluxTransformerInt2WeightsTest(FluxTransformerQuantoMixin, unittest.TestCase): expected_memory_reduction = 0.65 From ed0147b45cfe77360ccefd27932bf836b25aa750 Mon Sep 17 00:00:00 2001 From: Sayak Paul Date: Fri, 14 Mar 2025 08:47:32 +0530 Subject: [PATCH 2/4] Apply suggestions from code review Co-authored-by: Dhruv Nair --- tests/quantization/quanto/test_quanto.py | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/tests/quantization/quanto/test_quanto.py b/tests/quantization/quanto/test_quanto.py index b5d2a72975a1..39debed0b5ab 100644 --- a/tests/quantization/quanto/test_quanto.py +++ b/tests/quantization/quanto/test_quanto.py @@ -312,7 +312,7 @@ def get_dummy_init_kwargs(self): return {"weights_dtype": "int8"} -require_torch_cuda_compatibility(8.0) +@require_torch_cuda_compatibility(8.0) class FluxTransformerInt4WeightsTest(FluxTransformerQuantoMixin, unittest.TestCase): @@ -322,7 +322,7 @@ def get_dummy_init_kwargs(self): return {"weights_dtype": "int4"} -require_torch_cuda_compatibility(8.0) +@require_torch_cuda_compatibility(8.0) class FluxTransformerInt2WeightsTest(FluxTransformerQuantoMixin, unittest.TestCase): From 0c33bcc4e925c7a7f4f7bcfdad58412a70dbfa8f Mon Sep 17 00:00:00 2001 From: sayakpaul Date: Fri, 14 Mar 2025 09:24:28 +0530 Subject: [PATCH 3/4] fixes --- src/diffusers/utils/testing_utils.py | 5 ++--- tests/quantization/quanto/test_quanto.py | 4 ---- 2 files changed, 2 insertions(+), 7 deletions(-) diff --git a/src/diffusers/utils/testing_utils.py b/src/diffusers/utils/testing_utils.py index a874693acafd..0a825ffdce6f 100644 --- a/src/diffusers/utils/testing_utils.py +++ b/src/diffusers/utils/testing_utils.py @@ -289,9 +289,8 @@ def decorator(test_case): if not torch.cuda.is_available(): return unittest.skip(test_case) else: - compute_capability = get_torch_cuda_device_capability() - current_compute_capability = f"{compute_capability[0]}.{compute_capability[1]}" - return unittest.skipUnless(float(current_compute_capability) == float(expected_compute_capability)) + current_compute_capability = get_torch_cuda_device_capability() + return unittest.skipUnless(float(current_compute_capability) == float(expected_compute_capability), "Test not supported for this compute capability.") return decorator diff --git a/tests/quantization/quanto/test_quanto.py b/tests/quantization/quanto/test_quanto.py index 39debed0b5ab..9eb6958d2183 100644 --- a/tests/quantization/quanto/test_quanto.py +++ b/tests/quantization/quanto/test_quanto.py @@ -313,8 +313,6 @@ def get_dummy_init_kwargs(self): @require_torch_cuda_compatibility(8.0) - - class FluxTransformerInt4WeightsTest(FluxTransformerQuantoMixin, unittest.TestCase): expected_memory_reduction = 0.55 @@ -323,8 +321,6 @@ def get_dummy_init_kwargs(self): @require_torch_cuda_compatibility(8.0) - - class FluxTransformerInt2WeightsTest(FluxTransformerQuantoMixin, unittest.TestCase): expected_memory_reduction = 0.65 From 96915a02e332d70c5d02c160ccd291834416d4d6 Mon Sep 17 00:00:00 2001 From: sayakpaul Date: Fri, 14 Mar 2025 09:37:46 +0530 Subject: [PATCH 4/4] style --- src/diffusers/utils/testing_utils.py | 5 ++++- 1 file changed, 4 insertions(+), 1 deletion(-) diff --git a/src/diffusers/utils/testing_utils.py b/src/diffusers/utils/testing_utils.py index 0a825ffdce6f..2a3feae967d7 100644 --- a/src/diffusers/utils/testing_utils.py +++ b/src/diffusers/utils/testing_utils.py @@ -290,7 +290,10 @@ def decorator(test_case): return unittest.skip(test_case) else: current_compute_capability = get_torch_cuda_device_capability() - return unittest.skipUnless(float(current_compute_capability) == float(expected_compute_capability), "Test not supported for this compute capability.") + return unittest.skipUnless( + float(current_compute_capability) == float(expected_compute_capability), + "Test not supported for this compute capability.", + ) return decorator