Fix dtype casting in swinv2 and swinv2sr to allow non-FP32 inference (#31589)
* Fix dtype casting in modeling_swin2sr to allow non-FP32 inference * Fix formattting * Fix for swinv2 too * Update src/transformers/models/swin2sr/modeling_swin2sr.py Co-authored-by: amyeroberts <22614925+amyeroberts@users.noreply.github.com> * Update src/transformers/models/swinv2/modeling_swinv2.py Co-authored-by: amyeroberts <22614925+amyeroberts@users.noreply.github.com> * Add FP16 tests for swin2sr and swinv2 * [run_slow] swin2sr, swinv2 * [run_slow] swin2sr, swinv2 --------- Co-authored-by: amyeroberts <22614925+amyeroberts@users.noreply.github.com>
This commit is contained in:
@@ -333,3 +333,24 @@ class Swin2SRModelIntegrationTest(unittest.TestCase):
|
||||
[[0.5458, 0.5546, 0.5638], [0.5526, 0.5565, 0.5651], [0.5396, 0.5426, 0.5621]]
|
||||
).to(torch_device)
|
||||
self.assertTrue(torch.allclose(outputs.reconstruction[0, 0, :3, :3], expected_slice, atol=1e-4))
|
||||
|
||||
def test_inference_fp16(self):
|
||||
processor = Swin2SRImageProcessor()
|
||||
model = Swin2SRForImageSuperResolution.from_pretrained(
|
||||
"caidas/swin2SR-classical-sr-x2-64", torch_dtype=torch.float16
|
||||
).to(torch_device)
|
||||
|
||||
image = Image.open("./tests/fixtures/tests_samples/COCO/000000039769.png")
|
||||
inputs = processor(images=image, return_tensors="pt").to(model.dtype).to(torch_device)
|
||||
|
||||
# forward pass
|
||||
with torch.no_grad():
|
||||
outputs = model(**inputs)
|
||||
|
||||
# verify the logits
|
||||
expected_shape = torch.Size([1, 3, 976, 1296])
|
||||
self.assertEqual(outputs.reconstruction.shape, expected_shape)
|
||||
expected_slice = torch.tensor(
|
||||
[[0.5454, 0.5542, 0.5640], [0.5518, 0.5562, 0.5649], [0.5391, 0.5425, 0.5620]], dtype=model.dtype
|
||||
).to(torch_device)
|
||||
self.assertTrue(torch.allclose(outputs.reconstruction[0, 0, :3, :3], expected_slice, atol=1e-4))
|
||||
|
||||
Reference in New Issue
Block a user