Skip some export tests on torch 2.7 (#38677)
* skip * fix * better check * Update import_utils.py --------- Co-authored-by: ydshieh <ydshieh@users.noreply.github.com> Co-authored-by: Cyril Vallez <cyril.vallez@gmail.com>
This commit is contained in:
@@ -393,6 +393,13 @@ def get_torch_version():
|
||||
return _torch_version
|
||||
|
||||
|
||||
def get_torch_major_and_minor_version() -> str:
|
||||
if _torch_version == "N/A":
|
||||
return "N/A"
|
||||
parsed_version = version.parse(_torch_version)
|
||||
return str(parsed_version.major) + "." + str(parsed_version.minor)
|
||||
|
||||
|
||||
def is_torch_sdpa_available():
|
||||
if not is_torch_available():
|
||||
return False
|
||||
|
||||
@@ -19,6 +19,7 @@ from transformers import DepthAnythingConfig, Dinov2Config
|
||||
from transformers.file_utils import is_torch_available, is_vision_available
|
||||
from transformers.pytorch_utils import is_torch_greater_or_equal_than_2_4
|
||||
from transformers.testing_utils import require_torch, require_vision, slow, torch_device
|
||||
from transformers.utils.import_utils import get_torch_major_and_minor_version
|
||||
|
||||
from ...test_configuration_common import ConfigTester
|
||||
from ...test_modeling_common import ModelTesterMixin, floats_tensor, ids_tensor
|
||||
@@ -146,6 +147,7 @@ class DepthAnythingModelTest(ModelTesterMixin, PipelineTesterMixin, unittest.Tes
|
||||
test_resize_embeddings = False
|
||||
test_head_masking = False
|
||||
test_torch_exportable = True
|
||||
test_torch_exportable_strictly = not get_torch_major_and_minor_version() == "2.7"
|
||||
|
||||
def setUp(self):
|
||||
self.model_tester = DepthAnythingModelTester(self)
|
||||
@@ -285,8 +287,11 @@ class DepthAnythingModelIntegrationTest(unittest.TestCase):
|
||||
torch.testing.assert_close(predicted_depth[0, :3, :3], expected_slice, rtol=1e-4, atol=1e-4)
|
||||
|
||||
def test_export(self):
|
||||
for strict in [True, False]:
|
||||
for strict in [False, True]:
|
||||
with self.subTest(strict=strict):
|
||||
if strict and get_torch_major_and_minor_version() == "2.7":
|
||||
self.skipTest(reason="`strict=True` is currently failing with torch 2.7.")
|
||||
|
||||
if not is_torch_greater_or_equal_than_2_4:
|
||||
self.skipTest(reason="This test requires torch >= 2.4 to run.")
|
||||
model = (
|
||||
|
||||
@@ -18,6 +18,7 @@ import unittest
|
||||
from transformers import Dinov2Config, DPTConfig
|
||||
from transformers.file_utils import is_torch_available, is_vision_available
|
||||
from transformers.testing_utils import require_torch, require_vision, slow, torch_device
|
||||
from transformers.utils.import_utils import get_torch_major_and_minor_version
|
||||
|
||||
from ...test_configuration_common import ConfigTester
|
||||
from ...test_modeling_common import ModelTesterMixin, _config_zero_init, floats_tensor, ids_tensor
|
||||
@@ -140,6 +141,7 @@ class DPTModelTest(ModelTesterMixin, PipelineTesterMixin, unittest.TestCase):
|
||||
test_resize_embeddings = False
|
||||
test_head_masking = False
|
||||
test_torch_exportable = True
|
||||
test_torch_exportable_strictly = not get_torch_major_and_minor_version() == "2.7"
|
||||
|
||||
def setUp(self):
|
||||
self.model_tester = DPTModelTester(self)
|
||||
|
||||
@@ -21,6 +21,7 @@ from transformers import Dinov2Config, PromptDepthAnythingConfig
|
||||
from transformers.file_utils import is_torch_available, is_vision_available
|
||||
from transformers.pytorch_utils import is_torch_greater_or_equal_than_2_4
|
||||
from transformers.testing_utils import require_torch, require_vision, slow, torch_device
|
||||
from transformers.utils.import_utils import get_torch_major_and_minor_version
|
||||
|
||||
from ...test_configuration_common import ConfigTester
|
||||
from ...test_modeling_common import ModelTesterMixin, floats_tensor, ids_tensor
|
||||
@@ -284,7 +285,10 @@ class PromptDepthAnythingModelIntegrationTest(unittest.TestCase):
|
||||
self.assertTrue(torch.allclose(predicted_depth[0, :3, :3], expected_slice, atol=1e-3))
|
||||
|
||||
def test_export(self):
|
||||
for strict in [True, False]:
|
||||
for strict in [False, True]:
|
||||
if strict and get_torch_major_and_minor_version() == "2.7":
|
||||
self.skipTest(reason="`strict=True` is currently failing with torch 2.7.")
|
||||
|
||||
with self.subTest(strict=strict):
|
||||
if not is_torch_greater_or_equal_than_2_4:
|
||||
self.skipTest(reason="This test requires torch >= 2.4 to run.")
|
||||
|
||||
@@ -27,6 +27,7 @@ from transformers.testing_utils import (
|
||||
torch_device,
|
||||
)
|
||||
from transformers.utils import is_torch_available, is_vision_available
|
||||
from transformers.utils.import_utils import get_torch_major_and_minor_version
|
||||
|
||||
from ...test_configuration_common import ConfigTester
|
||||
from ...test_modeling_common import ModelTesterMixin, _config_zero_init, floats_tensor, ids_tensor
|
||||
@@ -157,6 +158,7 @@ class UperNetModelTest(ModelTesterMixin, PipelineTesterMixin, unittest.TestCase)
|
||||
test_torchscript = False
|
||||
has_attentions = False
|
||||
test_torch_exportable = True
|
||||
test_torch_exportable_strictly = not get_torch_major_and_minor_version() == "2.7"
|
||||
|
||||
def setUp(self):
|
||||
self.model_tester = UperNetModelTester(self)
|
||||
|
||||
@@ -25,6 +25,7 @@ from transformers.testing_utils import (
|
||||
torch_device,
|
||||
)
|
||||
from transformers.utils import is_torch_available, is_vision_available
|
||||
from transformers.utils.import_utils import get_torch_major_and_minor_version
|
||||
|
||||
from ...test_configuration_common import ConfigTester
|
||||
from ...test_modeling_common import ModelTesterMixin, floats_tensor
|
||||
@@ -143,6 +144,7 @@ class VitMatteModelTest(ModelTesterMixin, PipelineTesterMixin, unittest.TestCase
|
||||
test_resize_embeddings = False
|
||||
test_head_masking = False
|
||||
test_torch_exportable = True
|
||||
test_torch_exportable_strictly = not get_torch_major_and_minor_version() == "2.7"
|
||||
|
||||
def setUp(self):
|
||||
self.model_tester = VitMatteModelTester(self)
|
||||
|
||||
@@ -21,6 +21,7 @@ import requests
|
||||
from transformers import VitPoseBackboneConfig, VitPoseConfig
|
||||
from transformers.testing_utils import require_torch, require_vision, slow, torch_device
|
||||
from transformers.utils import cached_property, is_torch_available, is_vision_available
|
||||
from transformers.utils.import_utils import get_torch_major_and_minor_version
|
||||
|
||||
from ...test_configuration_common import ConfigTester
|
||||
from ...test_modeling_common import ModelTesterMixin, floats_tensor, ids_tensor
|
||||
@@ -154,6 +155,7 @@ class VitPoseModelTest(ModelTesterMixin, unittest.TestCase):
|
||||
test_resize_embeddings = False
|
||||
test_head_masking = False
|
||||
test_torch_exportable = True
|
||||
test_torch_exportable_strictly = not get_torch_major_and_minor_version() == "2.7"
|
||||
|
||||
def setUp(self):
|
||||
self.model_tester = VitPoseModelTester(self)
|
||||
|
||||
@@ -20,6 +20,7 @@ import numpy as np
|
||||
from transformers import Dinov2Config, ZoeDepthConfig
|
||||
from transformers.file_utils import is_torch_available, is_vision_available
|
||||
from transformers.testing_utils import require_torch, require_vision, slow, torch_device
|
||||
from transformers.utils.import_utils import get_torch_major_and_minor_version
|
||||
|
||||
from ...test_configuration_common import ConfigTester
|
||||
from ...test_modeling_common import ModelTesterMixin, floats_tensor, ids_tensor
|
||||
@@ -146,7 +147,8 @@ class ZoeDepthModelTest(ModelTesterMixin, PipelineTesterMixin, unittest.TestCase
|
||||
test_pruning = False
|
||||
test_resize_embeddings = False
|
||||
test_head_masking = False
|
||||
test_torch_exportable = True
|
||||
# `strict=True/False` are both failing with torch 2.7, see #38677
|
||||
test_torch_exportable = not get_torch_major_and_minor_version() == "2.7"
|
||||
|
||||
def setUp(self):
|
||||
self.model_tester = ZoeDepthModelTester(self)
|
||||
|
||||
@@ -4569,10 +4569,7 @@ class ModelTesterMixin:
|
||||
|
||||
# Export model
|
||||
exported_model = torch.export.export(
|
||||
model,
|
||||
args=(),
|
||||
kwargs=inputs_dict,
|
||||
strict=True,
|
||||
model, args=(), kwargs=inputs_dict, strict=getattr(self, "test_torch_exportable_strictly", True)
|
||||
)
|
||||
|
||||
# Run exported model and eager model
|
||||
|
||||
Reference in New Issue
Block a user