Unverified Commit 50378cbf authored by Hz, Ji's avatar Hz, Ji Committed by GitHub
Browse files

device agnostic models testing (#27146)

* device agnostic models testing

* add decorator `require_torch_fp16`

* make style

* apply review suggestion

* Oops, the fp16 decorator was misused
parent 77930f8a
...@@ -22,7 +22,13 @@ import warnings ...@@ -22,7 +22,13 @@ import warnings
import numpy as np import numpy as np
from transformers import is_torch_available, pipeline from transformers import is_torch_available, pipeline
from transformers.testing_utils import require_accelerate, require_torch, require_torch_multi_gpu, slow, torch_device from transformers.testing_utils import (
require_accelerate,
require_torch,
require_torch_multi_accelerator,
slow,
torch_device,
)
from ..test_modeling_common import floats_tensor, ids_tensor from ..test_modeling_common import floats_tensor, ids_tensor
from .test_framework_agnostic import GenerationIntegrationTestsMixin from .test_framework_agnostic import GenerationIntegrationTestsMixin
...@@ -1019,7 +1025,7 @@ class GenerationTesterMixin: ...@@ -1019,7 +1025,7 @@ class GenerationTesterMixin:
) )
@require_accelerate @require_accelerate
@require_torch_multi_gpu @require_torch_multi_accelerator
def test_model_parallel_beam_search(self): def test_model_parallel_beam_search(self):
for model_class in self.all_generative_model_classes: for model_class in self.all_generative_model_classes:
if model_class._no_split_modules is None: if model_class._no_split_modules is None:
......
...@@ -32,7 +32,13 @@ from transformers.models.bark.generation_configuration_bark import ( ...@@ -32,7 +32,13 @@ from transformers.models.bark.generation_configuration_bark import (
BarkFineGenerationConfig, BarkFineGenerationConfig,
BarkSemanticGenerationConfig, BarkSemanticGenerationConfig,
) )
from transformers.testing_utils import require_torch, require_torch_gpu, slow, torch_device from transformers.testing_utils import (
require_torch,
require_torch_fp16,
require_torch_gpu,
slow,
torch_device,
)
from transformers.utils import cached_property from transformers.utils import cached_property
from ...generation.test_utils import GenerationTesterMixin from ...generation.test_utils import GenerationTesterMixin
...@@ -570,12 +576,12 @@ class BarkSemanticModelTest(ModelTesterMixin, GenerationTesterMixin, unittest.Te ...@@ -570,12 +576,12 @@ class BarkSemanticModelTest(ModelTesterMixin, GenerationTesterMixin, unittest.Te
with torch.no_grad(): with torch.no_grad():
model(**inputs)[0] model(**inputs)[0]
@require_torch_fp16
def test_generate_fp16(self): def test_generate_fp16(self):
config, input_dict = self.model_tester.prepare_config_and_inputs() config, input_dict = self.model_tester.prepare_config_and_inputs()
input_ids = input_dict["input_ids"] input_ids = input_dict["input_ids"]
attention_mask = input_ids.ne(1).to(torch_device) attention_mask = input_ids.ne(1).to(torch_device)
model = self.all_generative_model_classes[0](config).eval().to(torch_device) model = self.all_generative_model_classes[0](config).eval().to(torch_device)
if torch_device == "cuda":
model.half() model.half()
model.generate(input_ids, attention_mask=attention_mask) model.generate(input_ids, attention_mask=attention_mask)
model.generate(num_beams=4, do_sample=True, early_stopping=False, num_return_sequences=3) model.generate(num_beams=4, do_sample=True, early_stopping=False, num_return_sequences=3)
...@@ -636,12 +642,12 @@ class BarkCoarseModelTest(ModelTesterMixin, GenerationTesterMixin, unittest.Test ...@@ -636,12 +642,12 @@ class BarkCoarseModelTest(ModelTesterMixin, GenerationTesterMixin, unittest.Test
with torch.no_grad(): with torch.no_grad():
model(**inputs)[0] model(**inputs)[0]
@require_torch_fp16
def test_generate_fp16(self): def test_generate_fp16(self):
config, input_dict = self.model_tester.prepare_config_and_inputs() config, input_dict = self.model_tester.prepare_config_and_inputs()
input_ids = input_dict["input_ids"] input_ids = input_dict["input_ids"]
attention_mask = input_ids.ne(1).to(torch_device) attention_mask = input_ids.ne(1).to(torch_device)
model = self.all_generative_model_classes[0](config).eval().to(torch_device) model = self.all_generative_model_classes[0](config).eval().to(torch_device)
if torch_device == "cuda":
model.half() model.half()
model.generate(input_ids, attention_mask=attention_mask) model.generate(input_ids, attention_mask=attention_mask)
model.generate(num_beams=4, do_sample=True, early_stopping=False, num_return_sequences=3) model.generate(num_beams=4, do_sample=True, early_stopping=False, num_return_sequences=3)
...@@ -700,13 +706,13 @@ class BarkFineModelTest(ModelTesterMixin, unittest.TestCase): ...@@ -700,13 +706,13 @@ class BarkFineModelTest(ModelTesterMixin, unittest.TestCase):
with torch.no_grad(): with torch.no_grad():
model(**inputs)[0] model(**inputs)[0]
@require_torch_fp16
def test_generate_fp16(self): def test_generate_fp16(self):
config, input_dict = self.model_tester.prepare_config_and_inputs() config, input_dict = self.model_tester.prepare_config_and_inputs()
input_ids = input_dict["input_ids"] input_ids = input_dict["input_ids"]
# take first codebook channel # take first codebook channel
model = self.all_model_classes[0](config).eval().to(torch_device) model = self.all_model_classes[0](config).eval().to(torch_device)
if torch_device == "cuda":
model.half() model.half()
# toy generation_configs # toy generation_configs
......
...@@ -22,7 +22,14 @@ import unittest ...@@ -22,7 +22,14 @@ import unittest
import timeout_decorator # noqa import timeout_decorator # noqa
from transformers import BartConfig, is_torch_available from transformers import BartConfig, is_torch_available
from transformers.testing_utils import require_sentencepiece, require_tokenizers, require_torch, slow, torch_device from transformers.testing_utils import (
require_sentencepiece,
require_tokenizers,
require_torch,
require_torch_fp16,
slow,
torch_device,
)
from transformers.utils import cached_property from transformers.utils import cached_property
from ...generation.test_utils import GenerationTesterMixin from ...generation.test_utils import GenerationTesterMixin
...@@ -383,11 +390,11 @@ class BartHeadTests(unittest.TestCase): ...@@ -383,11 +390,11 @@ class BartHeadTests(unittest.TestCase):
bart_toks = tokenizer.encode(ex, return_tensors="pt").squeeze() bart_toks = tokenizer.encode(ex, return_tensors="pt").squeeze()
assert_tensors_close(desired_result.long(), bart_toks, prefix=ex) assert_tensors_close(desired_result.long(), bart_toks, prefix=ex)
@require_torch_fp16
def test_generate_fp16(self): def test_generate_fp16(self):
config, input_ids, batch_size = self._get_config_and_data() config, input_ids, batch_size = self._get_config_and_data()
attention_mask = input_ids.ne(1).to(torch_device) attention_mask = input_ids.ne(1).to(torch_device)
model = BartForConditionalGeneration(config).eval().to(torch_device) model = BartForConditionalGeneration(config).eval().to(torch_device)
if torch_device == "cuda":
model.half() model.half()
model.generate(input_ids, attention_mask=attention_mask) model.generate(input_ids, attention_mask=attention_mask)
model.generate(num_beams=4, do_sample=True, early_stopping=False, num_return_sequences=3) model.generate(num_beams=4, do_sample=True, early_stopping=False, num_return_sequences=3)
...@@ -497,12 +504,12 @@ class BartModelTest(ModelTesterMixin, GenerationTesterMixin, PipelineTesterMixin ...@@ -497,12 +504,12 @@ class BartModelTest(ModelTesterMixin, GenerationTesterMixin, PipelineTesterMixin
with torch.no_grad(): with torch.no_grad():
model(**inputs)[0] model(**inputs)[0]
@require_torch_fp16
def test_generate_fp16(self): def test_generate_fp16(self):
config, input_dict = self.model_tester.prepare_config_and_inputs() config, input_dict = self.model_tester.prepare_config_and_inputs()
input_ids = input_dict["input_ids"] input_ids = input_dict["input_ids"]
attention_mask = input_ids.ne(1).to(torch_device) attention_mask = input_ids.ne(1).to(torch_device)
model = BartForConditionalGeneration(config).eval().to(torch_device) model = BartForConditionalGeneration(config).eval().to(torch_device)
if torch_device == "cuda":
model.half() model.half()
model.generate(input_ids, attention_mask=attention_mask) model.generate(input_ids, attention_mask=attention_mask)
model.generate(num_beams=4, do_sample=True, early_stopping=False, num_return_sequences=3) model.generate(num_beams=4, do_sample=True, early_stopping=False, num_return_sequences=3)
......
...@@ -18,7 +18,7 @@ import unittest ...@@ -18,7 +18,7 @@ import unittest
from transformers import BertConfig, is_torch_available from transformers import BertConfig, is_torch_available
from transformers.models.auto import get_values from transformers.models.auto import get_values
from transformers.testing_utils import CaptureLogger, require_torch, require_torch_gpu, slow, torch_device from transformers.testing_utils import CaptureLogger, require_torch, require_torch_accelerator, slow, torch_device
from ...generation.test_utils import GenerationTesterMixin from ...generation.test_utils import GenerationTesterMixin
from ...test_configuration_common import ConfigTester from ...test_configuration_common import ConfigTester
...@@ -601,7 +601,7 @@ class BertModelTest(ModelTesterMixin, GenerationTesterMixin, PipelineTesterMixin ...@@ -601,7 +601,7 @@ class BertModelTest(ModelTesterMixin, GenerationTesterMixin, PipelineTesterMixin
self.assertIsNotNone(model) self.assertIsNotNone(model)
@slow @slow
@require_torch_gpu @require_torch_accelerator
def test_torchscript_device_change(self): def test_torchscript_device_change(self):
config, inputs_dict = self.model_tester.prepare_config_and_inputs_for_common() config, inputs_dict = self.model_tester.prepare_config_and_inputs_for_common()
for model_class in self.all_model_classes: for model_class in self.all_model_classes:
......
...@@ -20,7 +20,14 @@ import tempfile ...@@ -20,7 +20,14 @@ import tempfile
import unittest import unittest
from transformers import BigBirdPegasusConfig, is_torch_available from transformers import BigBirdPegasusConfig, is_torch_available
from transformers.testing_utils import require_sentencepiece, require_tokenizers, require_torch, slow, torch_device from transformers.testing_utils import (
require_sentencepiece,
require_tokenizers,
require_torch,
require_torch_fp16,
slow,
torch_device,
)
from ...generation.test_utils import GenerationTesterMixin from ...generation.test_utils import GenerationTesterMixin
from ...test_configuration_common import ConfigTester from ...test_configuration_common import ConfigTester
...@@ -376,12 +383,12 @@ class BigBirdPegasusModelTest(ModelTesterMixin, GenerationTesterMixin, PipelineT ...@@ -376,12 +383,12 @@ class BigBirdPegasusModelTest(ModelTesterMixin, GenerationTesterMixin, PipelineT
with torch.no_grad(): with torch.no_grad():
model(**inputs)[0] model(**inputs)[0]
@require_torch_fp16
def test_generate_fp16(self): def test_generate_fp16(self):
config, input_dict = self.model_tester.prepare_config_and_inputs() config, input_dict = self.model_tester.prepare_config_and_inputs()
input_dict.pop("decoder_attention_mask") input_dict.pop("decoder_attention_mask")
input_dict.pop("decoder_input_ids") input_dict.pop("decoder_input_ids")
model = BigBirdPegasusForConditionalGeneration(config).eval().to(torch_device) model = BigBirdPegasusForConditionalGeneration(config).eval().to(torch_device)
if torch_device == "cuda":
model.half() model.half()
model.generate(**input_dict) model.generate(**input_dict)
model.generate(**input_dict, do_sample=True, early_stopping=False, num_return_sequences=3) model.generate(**input_dict, do_sample=True, early_stopping=False, num_return_sequences=3)
......
...@@ -18,7 +18,15 @@ import tempfile ...@@ -18,7 +18,15 @@ import tempfile
import unittest import unittest
from transformers import BlenderbotConfig, is_torch_available from transformers import BlenderbotConfig, is_torch_available
from transformers.testing_utils import require_sentencepiece, require_tokenizers, require_torch, slow, torch_device from transformers.testing_utils import (
backend_empty_cache,
require_sentencepiece,
require_tokenizers,
require_torch,
require_torch_fp16,
slow,
torch_device,
)
from transformers.utils import cached_property from transformers.utils import cached_property
from ...generation.test_utils import GenerationTesterMixin from ...generation.test_utils import GenerationTesterMixin
...@@ -269,12 +277,12 @@ class BlenderbotModelTest(ModelTesterMixin, GenerationTesterMixin, PipelineTeste ...@@ -269,12 +277,12 @@ class BlenderbotModelTest(ModelTesterMixin, GenerationTesterMixin, PipelineTeste
config_and_inputs = self.model_tester.prepare_config_and_inputs_for_common() config_and_inputs = self.model_tester.prepare_config_and_inputs_for_common()
self.model_tester.check_encoder_decoder_model_standalone(*config_and_inputs) self.model_tester.check_encoder_decoder_model_standalone(*config_and_inputs)
@require_torch_fp16
def test_generate_fp16(self): def test_generate_fp16(self):
config, input_dict = self.model_tester.prepare_config_and_inputs() config, input_dict = self.model_tester.prepare_config_and_inputs()
input_ids = input_dict["input_ids"] input_ids = input_dict["input_ids"]
attention_mask = input_ids.ne(1).to(torch_device) attention_mask = input_ids.ne(1).to(torch_device)
model = BlenderbotForConditionalGeneration(config).eval().to(torch_device) model = BlenderbotForConditionalGeneration(config).eval().to(torch_device)
if torch_device == "cuda":
model.half() model.half()
model.generate(input_ids, attention_mask=attention_mask) model.generate(input_ids, attention_mask=attention_mask)
model.generate(num_beams=4, do_sample=True, early_stopping=False, num_return_sequences=3) model.generate(num_beams=4, do_sample=True, early_stopping=False, num_return_sequences=3)
...@@ -315,7 +323,7 @@ class Blenderbot3BIntegrationTests(unittest.TestCase): ...@@ -315,7 +323,7 @@ class Blenderbot3BIntegrationTests(unittest.TestCase):
FASTER_GEN_KWARGS = {"num_beams": 1, "early_stopping": True, "min_length": 15, "max_length": 25} FASTER_GEN_KWARGS = {"num_beams": 1, "early_stopping": True, "min_length": 15, "max_length": 25}
TOK_DECODE_KW = {"skip_special_tokens": True, "clean_up_tokenization_spaces": True} TOK_DECODE_KW = {"skip_special_tokens": True, "clean_up_tokenization_spaces": True}
torch.cuda.empty_cache() backend_empty_cache(torch_device)
model = BlenderbotForConditionalGeneration.from_pretrained(self.ckpt).half().to(torch_device) model = BlenderbotForConditionalGeneration.from_pretrained(self.ckpt).half().to(torch_device)
src_text = ["Sam"] src_text = ["Sam"]
......
...@@ -18,7 +18,12 @@ import tempfile ...@@ -18,7 +18,12 @@ import tempfile
import unittest import unittest
from transformers import BlenderbotSmallConfig, is_torch_available from transformers import BlenderbotSmallConfig, is_torch_available
from transformers.testing_utils import require_torch, slow, torch_device from transformers.testing_utils import (
require_torch,
require_torch_fp16,
slow,
torch_device,
)
from transformers.utils import cached_property from transformers.utils import cached_property
from ...generation.test_utils import GenerationTesterMixin from ...generation.test_utils import GenerationTesterMixin
...@@ -269,12 +274,12 @@ class BlenderbotSmallModelTest(ModelTesterMixin, GenerationTesterMixin, Pipeline ...@@ -269,12 +274,12 @@ class BlenderbotSmallModelTest(ModelTesterMixin, GenerationTesterMixin, Pipeline
config_and_inputs = self.model_tester.prepare_config_and_inputs_for_common() config_and_inputs = self.model_tester.prepare_config_and_inputs_for_common()
self.model_tester.check_encoder_decoder_model_standalone(*config_and_inputs) self.model_tester.check_encoder_decoder_model_standalone(*config_and_inputs)
@require_torch_fp16
def test_generate_fp16(self): def test_generate_fp16(self):
config, input_dict = self.model_tester.prepare_config_and_inputs() config, input_dict = self.model_tester.prepare_config_and_inputs()
input_ids = input_dict["input_ids"] input_ids = input_dict["input_ids"]
attention_mask = input_ids.ne(1).to(torch_device) attention_mask = input_ids.ne(1).to(torch_device)
model = BlenderbotSmallForConditionalGeneration(config).eval().to(torch_device) model = BlenderbotSmallForConditionalGeneration(config).eval().to(torch_device)
if torch_device == "cuda":
model.half() model.half()
model.generate(input_ids, attention_mask=attention_mask) model.generate(input_ids, attention_mask=attention_mask)
model.generate(num_beams=4, do_sample=True, early_stopping=False, num_return_sequences=3) model.generate(num_beams=4, do_sample=True, early_stopping=False, num_return_sequences=3)
......
...@@ -24,7 +24,14 @@ import numpy as np ...@@ -24,7 +24,14 @@ import numpy as np
import requests import requests
from transformers import BlipConfig, BlipTextConfig, BlipVisionConfig from transformers import BlipConfig, BlipTextConfig, BlipVisionConfig
from transformers.testing_utils import require_torch, require_torch_gpu, require_vision, slow, torch_device from transformers.testing_utils import (
require_torch,
require_torch_accelerator,
require_torch_fp16,
require_vision,
slow,
torch_device,
)
from transformers.utils import is_torch_available, is_vision_available from transformers.utils import is_torch_available, is_vision_available
from ...test_configuration_common import ConfigTester from ...test_configuration_common import ConfigTester
...@@ -1280,7 +1287,8 @@ class BlipModelIntegrationTest(unittest.TestCase): ...@@ -1280,7 +1287,8 @@ class BlipModelIntegrationTest(unittest.TestCase):
[30522, 1037, 3861, 1997, 1037, 2450, 1998, 2014, 3899, 2006, 1996, 3509, 102], [30522, 1037, 3861, 1997, 1037, 2450, 1998, 2014, 3899, 2006, 1996, 3509, 102],
) )
@require_torch_gpu @require_torch_accelerator
@require_torch_fp16
def test_inference_image_captioning_fp16(self): def test_inference_image_captioning_fp16(self):
model = BlipForConditionalGeneration.from_pretrained( model = BlipForConditionalGeneration.from_pretrained(
"Salesforce/blip-image-captioning-base", torch_dtype=torch.float16 "Salesforce/blip-image-captioning-base", torch_dtype=torch.float16
......
...@@ -23,7 +23,13 @@ import numpy as np ...@@ -23,7 +23,13 @@ import numpy as np
import requests import requests
from transformers import CONFIG_MAPPING, Blip2Config, Blip2QFormerConfig, Blip2VisionConfig from transformers import CONFIG_MAPPING, Blip2Config, Blip2QFormerConfig, Blip2VisionConfig
from transformers.testing_utils import require_torch, require_torch_multi_gpu, require_vision, slow, torch_device from transformers.testing_utils import (
require_torch,
require_torch_multi_accelerator,
require_vision,
slow,
torch_device,
)
from transformers.utils import is_torch_available, is_vision_available from transformers.utils import is_torch_available, is_vision_available
from ...test_configuration_common import ConfigTester from ...test_configuration_common import ConfigTester
...@@ -934,8 +940,8 @@ class Blip2ModelIntegrationTest(unittest.TestCase): ...@@ -934,8 +940,8 @@ class Blip2ModelIntegrationTest(unittest.TestCase):
self.assertEqual(predictions[0].tolist(), [0, 2335, 1556, 28, 1782, 30, 8, 2608, 1]) self.assertEqual(predictions[0].tolist(), [0, 2335, 1556, 28, 1782, 30, 8, 2608, 1])
self.assertEqual(predictions[1].tolist(), [0, 2335, 1556, 28, 1782, 30, 8, 2608, 1]) self.assertEqual(predictions[1].tolist(), [0, 2335, 1556, 28, 1782, 30, 8, 2608, 1])
@require_torch_multi_gpu @require_torch_multi_accelerator
def test_inference_opt_multi_gpu(self): def test_inference_opt_multi_accelerator(self):
processor = Blip2Processor.from_pretrained("Salesforce/blip2-opt-2.7b") processor = Blip2Processor.from_pretrained("Salesforce/blip2-opt-2.7b")
model = Blip2ForConditionalGeneration.from_pretrained( model = Blip2ForConditionalGeneration.from_pretrained(
"Salesforce/blip2-opt-2.7b", torch_dtype=torch.float16, device_map="balanced" "Salesforce/blip2-opt-2.7b", torch_dtype=torch.float16, device_map="balanced"
...@@ -966,8 +972,8 @@ class Blip2ModelIntegrationTest(unittest.TestCase): ...@@ -966,8 +972,8 @@ class Blip2ModelIntegrationTest(unittest.TestCase):
) )
self.assertEqual(generated_text, "it's not a city, it's a beach") self.assertEqual(generated_text, "it's not a city, it's a beach")
@require_torch_multi_gpu @require_torch_multi_accelerator
def test_inference_t5_multi_gpu(self): def test_inference_t5_multi_accelerator(self):
processor = Blip2Processor.from_pretrained("Salesforce/blip2-flan-t5-xl") processor = Blip2Processor.from_pretrained("Salesforce/blip2-flan-t5-xl")
device_map = device_map = { device_map = device_map = {
"query_tokens": 0, "query_tokens": 0,
......
...@@ -19,7 +19,7 @@ import unittest ...@@ -19,7 +19,7 @@ import unittest
from transformers import ConvBertConfig, is_torch_available from transformers import ConvBertConfig, is_torch_available
from transformers.models.auto import get_values from transformers.models.auto import get_values
from transformers.testing_utils import require_torch, require_torch_gpu, slow, torch_device from transformers.testing_utils import require_torch, require_torch_accelerator, slow, torch_device
from ...test_configuration_common import ConfigTester from ...test_configuration_common import ConfigTester
from ...test_modeling_common import ModelTesterMixin, floats_tensor, ids_tensor, random_attention_mask from ...test_modeling_common import ModelTesterMixin, floats_tensor, ids_tensor, random_attention_mask
...@@ -427,7 +427,7 @@ class ConvBertModelTest(ModelTesterMixin, PipelineTesterMixin, unittest.TestCase ...@@ -427,7 +427,7 @@ class ConvBertModelTest(ModelTesterMixin, PipelineTesterMixin, unittest.TestCase
) )
@slow @slow
@require_torch_gpu @require_torch_accelerator
def test_torchscript_device_change(self): def test_torchscript_device_change(self):
config, inputs_dict = self.model_tester.prepare_config_and_inputs_for_common() config, inputs_dict = self.model_tester.prepare_config_and_inputs_for_common()
for model_class in self.all_model_classes: for model_class in self.all_model_classes:
......
...@@ -17,7 +17,7 @@ import gc ...@@ -17,7 +17,7 @@ import gc
import unittest import unittest
from transformers import CTRLConfig, is_torch_available from transformers import CTRLConfig, is_torch_available
from transformers.testing_utils import require_torch, slow, torch_device from transformers.testing_utils import backend_empty_cache, require_torch, slow, torch_device
from ...generation.test_utils import GenerationTesterMixin from ...generation.test_utils import GenerationTesterMixin
from ...test_configuration_common import ConfigTester from ...test_configuration_common import ConfigTester
...@@ -230,7 +230,7 @@ class CTRLModelTest(ModelTesterMixin, GenerationTesterMixin, PipelineTesterMixin ...@@ -230,7 +230,7 @@ class CTRLModelTest(ModelTesterMixin, GenerationTesterMixin, PipelineTesterMixin
super().tearDown() super().tearDown()
# clean-up as much as possible GPU memory occupied by PyTorch # clean-up as much as possible GPU memory occupied by PyTorch
gc.collect() gc.collect()
torch.cuda.empty_cache() backend_empty_cache(torch_device)
def test_config(self): def test_config(self):
self.config_tester.run_common_tests() self.config_tester.run_common_tests()
...@@ -260,7 +260,7 @@ class CTRLModelLanguageGenerationTest(unittest.TestCase): ...@@ -260,7 +260,7 @@ class CTRLModelLanguageGenerationTest(unittest.TestCase):
super().tearDown() super().tearDown()
# clean-up as much as possible GPU memory occupied by PyTorch # clean-up as much as possible GPU memory occupied by PyTorch
gc.collect() gc.collect()
torch.cuda.empty_cache() backend_empty_cache(torch_device)
@slow @slow
def test_lm_generate_ctrl(self): def test_lm_generate_ctrl(self):
......
...@@ -25,7 +25,7 @@ from transformers.file_utils import cached_property ...@@ -25,7 +25,7 @@ from transformers.file_utils import cached_property
from transformers.testing_utils import ( from transformers.testing_utils import (
require_timm, require_timm,
require_torch, require_torch,
require_torch_gpu, require_torch_accelerator,
require_vision, require_vision,
slow, slow,
torch_device, torch_device,
...@@ -648,7 +648,7 @@ class DeformableDetrModelIntegrationTests(unittest.TestCase): ...@@ -648,7 +648,7 @@ class DeformableDetrModelIntegrationTests(unittest.TestCase):
self.assertEqual(outputs.pred_boxes.shape, expected_shape_boxes) self.assertEqual(outputs.pred_boxes.shape, expected_shape_boxes)
self.assertTrue(torch.allclose(outputs.pred_boxes[0, :3, :3], expected_boxes, atol=1e-4)) self.assertTrue(torch.allclose(outputs.pred_boxes[0, :3, :3], expected_boxes, atol=1e-4))
@require_torch_gpu @require_torch_accelerator
def test_inference_object_detection_head_equivalence_cpu_gpu(self): def test_inference_object_detection_head_equivalence_cpu_gpu(self):
image_processor = self.default_image_processor image_processor = self.default_image_processor
image = prepare_img() image = prepare_img()
...@@ -663,10 +663,10 @@ class DeformableDetrModelIntegrationTests(unittest.TestCase): ...@@ -663,10 +663,10 @@ class DeformableDetrModelIntegrationTests(unittest.TestCase):
cpu_outputs = model(pixel_values, pixel_mask) cpu_outputs = model(pixel_values, pixel_mask)
# 2. run model on GPU # 2. run model on GPU
model.to("cuda") model.to(torch_device)
with torch.no_grad(): with torch.no_grad():
gpu_outputs = model(pixel_values.to("cuda"), pixel_mask.to("cuda")) gpu_outputs = model(pixel_values.to(torch_device), pixel_mask.to(torch_device))
# 3. assert equivalence # 3. assert equivalence
for key in cpu_outputs.keys(): for key in cpu_outputs.keys():
......
...@@ -24,7 +24,8 @@ from transformers.models.auto import get_values ...@@ -24,7 +24,8 @@ from transformers.models.auto import get_values
from transformers.testing_utils import ( from transformers.testing_utils import (
require_accelerate, require_accelerate,
require_torch, require_torch,
require_torch_gpu, require_torch_accelerator,
require_torch_fp16,
require_vision, require_vision,
slow, slow,
torch_device, torch_device,
...@@ -424,7 +425,8 @@ class DeiTModelIntegrationTest(unittest.TestCase): ...@@ -424,7 +425,8 @@ class DeiTModelIntegrationTest(unittest.TestCase):
@slow @slow
@require_accelerate @require_accelerate
@require_torch_gpu @require_torch_accelerator
@require_torch_fp16
def test_inference_fp16(self): def test_inference_fp16(self):
r""" r"""
A small test to make sure that inference work in half precision without any problem. A small test to make sure that inference work in half precision without any problem.
......
...@@ -17,7 +17,7 @@ import tempfile ...@@ -17,7 +17,7 @@ import tempfile
import unittest import unittest
from transformers import DistilBertConfig, is_torch_available from transformers import DistilBertConfig, is_torch_available
from transformers.testing_utils import require_torch, require_torch_gpu, slow, torch_device from transformers.testing_utils import require_torch, require_torch_accelerator, slow, torch_device
from ...test_configuration_common import ConfigTester from ...test_configuration_common import ConfigTester
from ...test_modeling_common import ModelTesterMixin, ids_tensor, random_attention_mask from ...test_modeling_common import ModelTesterMixin, ids_tensor, random_attention_mask
...@@ -264,7 +264,7 @@ class DistilBertModelTest(ModelTesterMixin, PipelineTesterMixin, unittest.TestCa ...@@ -264,7 +264,7 @@ class DistilBertModelTest(ModelTesterMixin, PipelineTesterMixin, unittest.TestCa
self.assertIsNotNone(model) self.assertIsNotNone(model)
@slow @slow
@require_torch_gpu @require_torch_accelerator
def test_torchscript_device_change(self): def test_torchscript_device_change(self):
config, inputs_dict = self.model_tester.prepare_config_and_inputs_for_common() config, inputs_dict = self.model_tester.prepare_config_and_inputs_for_common()
for model_class in self.all_model_classes: for model_class in self.all_model_classes:
......
...@@ -18,7 +18,7 @@ import unittest ...@@ -18,7 +18,7 @@ import unittest
from transformers import ErnieConfig, is_torch_available from transformers import ErnieConfig, is_torch_available
from transformers.models.auto import get_values from transformers.models.auto import get_values
from transformers.testing_utils import require_torch, require_torch_gpu, slow, torch_device from transformers.testing_utils import require_torch, require_torch_accelerator, slow, torch_device
from ...generation.test_utils import GenerationTesterMixin from ...generation.test_utils import GenerationTesterMixin
from ...test_configuration_common import ConfigTester from ...test_configuration_common import ConfigTester
...@@ -574,7 +574,7 @@ class ErnieModelTest(ModelTesterMixin, GenerationTesterMixin, PipelineTesterMixi ...@@ -574,7 +574,7 @@ class ErnieModelTest(ModelTesterMixin, GenerationTesterMixin, PipelineTesterMixi
self.assertIsNotNone(model) self.assertIsNotNone(model)
@slow @slow
@require_torch_gpu @require_torch_accelerator
def test_torchscript_device_change(self): def test_torchscript_device_change(self):
config, inputs_dict = self.model_tester.prepare_config_and_inputs_for_common() config, inputs_dict = self.model_tester.prepare_config_and_inputs_for_common()
for model_class in self.all_model_classes: for model_class in self.all_model_classes:
......
...@@ -17,7 +17,7 @@ import tempfile ...@@ -17,7 +17,7 @@ import tempfile
import unittest import unittest
from transformers import FlaubertConfig, is_torch_available from transformers import FlaubertConfig, is_torch_available
from transformers.testing_utils import require_torch, require_torch_gpu, slow, torch_device from transformers.testing_utils import require_torch, require_torch_accelerator, slow, torch_device
from ...test_configuration_common import ConfigTester from ...test_configuration_common import ConfigTester
from ...test_modeling_common import ModelTesterMixin, ids_tensor, random_attention_mask from ...test_modeling_common import ModelTesterMixin, ids_tensor, random_attention_mask
...@@ -463,7 +463,7 @@ class FlaubertModelTest(ModelTesterMixin, PipelineTesterMixin, unittest.TestCase ...@@ -463,7 +463,7 @@ class FlaubertModelTest(ModelTesterMixin, PipelineTesterMixin, unittest.TestCase
self.assertIsNotNone(model) self.assertIsNotNone(model)
@slow @slow
@require_torch_gpu @require_torch_accelerator
def test_torchscript_device_change(self): def test_torchscript_device_change(self):
config, inputs_dict = self.model_tester.prepare_config_and_inputs_for_common() config, inputs_dict = self.model_tester.prepare_config_and_inputs_for_common()
for model_class in self.all_model_classes: for model_class in self.all_model_classes:
......
...@@ -20,7 +20,14 @@ import timeout_decorator # noqa ...@@ -20,7 +20,14 @@ import timeout_decorator # noqa
from parameterized import parameterized from parameterized import parameterized
from transformers import FSMTConfig, is_torch_available from transformers import FSMTConfig, is_torch_available
from transformers.testing_utils import require_sentencepiece, require_tokenizers, require_torch, slow, torch_device from transformers.testing_utils import (
require_sentencepiece,
require_tokenizers,
require_torch,
require_torch_fp16,
slow,
torch_device,
)
from transformers.utils import cached_property from transformers.utils import cached_property
from ...generation.test_utils import GenerationTesterMixin from ...generation.test_utils import GenerationTesterMixin
...@@ -398,11 +405,11 @@ class FSMTHeadTests(unittest.TestCase): ...@@ -398,11 +405,11 @@ class FSMTHeadTests(unittest.TestCase):
self.assertEqual(n_pad_after, n_pad_before - 1) self.assertEqual(n_pad_after, n_pad_before - 1)
self.assertTrue(torch.eq(shifted[:, 0], 2).all()) self.assertTrue(torch.eq(shifted[:, 0], 2).all())
@require_torch_fp16
def test_generate_fp16(self): def test_generate_fp16(self):
config, input_ids, batch_size = self._get_config_and_data() config, input_ids, batch_size = self._get_config_and_data()
attention_mask = input_ids.ne(1).to(torch_device) attention_mask = input_ids.ne(1).to(torch_device)
model = FSMTForConditionalGeneration(config).eval().to(torch_device) model = FSMTForConditionalGeneration(config).eval().to(torch_device)
if torch_device == "cuda":
model.half() model.half()
model.generate(input_ids, attention_mask=attention_mask) model.generate(input_ids, attention_mask=attention_mask)
model.generate(num_beams=4, do_sample=True, early_stopping=False, num_return_sequences=3) model.generate(num_beams=4, do_sample=True, early_stopping=False, num_return_sequences=3)
...@@ -538,8 +545,7 @@ class FSMTModelIntegrationTests(unittest.TestCase): ...@@ -538,8 +545,7 @@ class FSMTModelIntegrationTests(unittest.TestCase):
@slow @slow
def test_translation_pipeline(self, pair): def test_translation_pipeline(self, pair):
tokenizer, model, src_text, tgt_text = self.translation_setup(pair) tokenizer, model, src_text, tgt_text = self.translation_setup(pair)
device = 0 if torch_device == "cuda" else -1 pipeline = TranslationPipeline(model, tokenizer, framework="pt", device=torch_device)
pipeline = TranslationPipeline(model, tokenizer, framework="pt", device=device)
output = pipeline([src_text]) output = pipeline([src_text])
self.assertEqual([tgt_text], [x["translation_text"] for x in output]) self.assertEqual([tgt_text], [x["translation_text"] for x in output])
......
...@@ -4,7 +4,7 @@ import unittest ...@@ -4,7 +4,7 @@ import unittest
import requests import requests
from transformers import AutoTokenizer, FuyuConfig, is_torch_available, is_vision_available from transformers import AutoTokenizer, FuyuConfig, is_torch_available, is_vision_available
from transformers.testing_utils import require_torch, require_torch_gpu, slow, torch_device from transformers.testing_utils import require_torch, require_torch_accelerator, slow, torch_device
from ...test_modeling_common import ids_tensor, random_attention_mask from ...test_modeling_common import ids_tensor, random_attention_mask
...@@ -257,7 +257,7 @@ class FuyuModelTester: ...@@ -257,7 +257,7 @@ class FuyuModelTester:
@require_torch @require_torch
@require_torch_gpu @require_torch_accelerator
@slow @slow
class FuyuIntegrationTest(unittest.TestCase): # , ModelTesterMixin) class FuyuIntegrationTest(unittest.TestCase): # , ModelTesterMixin)
""" """
...@@ -279,7 +279,6 @@ class FuyuIntegrationTest(unittest.TestCase): # , ModelTesterMixin) ...@@ -279,7 +279,6 @@ class FuyuIntegrationTest(unittest.TestCase): # , ModelTesterMixin)
self.bus_image_pil = Image.open(io.BytesIO(requests.get(self.bus_image_url).content)) self.bus_image_pil = Image.open(io.BytesIO(requests.get(self.bus_image_url).content))
@slow @slow
@require_torch_gpu
def test_model_8b_chat_greedy_generation_bus_captioning(self): def test_model_8b_chat_greedy_generation_bus_captioning(self):
EXPECTED_TEXT_COMPLETION = """A bus parked on the side of a road.|ENDOFTEXT|""" EXPECTED_TEXT_COMPLETION = """A bus parked on the side of a road.|ENDOFTEXT|"""
text_prompt_coco_captioning = "Generate a coco-style caption.\n" text_prompt_coco_captioning = "Generate a coco-style caption.\n"
......
...@@ -20,7 +20,7 @@ import math ...@@ -20,7 +20,7 @@ import math
import unittest import unittest
from transformers import GPT2Config, is_torch_available from transformers import GPT2Config, is_torch_available
from transformers.testing_utils import require_torch, slow, torch_device from transformers.testing_utils import backend_empty_cache, require_torch, slow, torch_device
from ...generation.test_utils import GenerationTesterMixin from ...generation.test_utils import GenerationTesterMixin
from ...test_configuration_common import ConfigTester from ...test_configuration_common import ConfigTester
...@@ -505,7 +505,7 @@ class GPT2ModelTest(ModelTesterMixin, GenerationTesterMixin, PipelineTesterMixin ...@@ -505,7 +505,7 @@ class GPT2ModelTest(ModelTesterMixin, GenerationTesterMixin, PipelineTesterMixin
super().tearDown() super().tearDown()
# clean-up as much as possible GPU memory occupied by PyTorch # clean-up as much as possible GPU memory occupied by PyTorch
gc.collect() gc.collect()
torch.cuda.empty_cache() backend_empty_cache(torch_device)
def test_config(self): def test_config(self):
self.config_tester.run_common_tests() self.config_tester.run_common_tests()
...@@ -712,7 +712,7 @@ class GPT2ModelLanguageGenerationTest(unittest.TestCase): ...@@ -712,7 +712,7 @@ class GPT2ModelLanguageGenerationTest(unittest.TestCase):
super().tearDown() super().tearDown()
# clean-up as much as possible GPU memory occupied by PyTorch # clean-up as much as possible GPU memory occupied by PyTorch
gc.collect() gc.collect()
torch.cuda.empty_cache() backend_empty_cache(torch_device)
def _test_lm_generate_gpt2_helper( def _test_lm_generate_gpt2_helper(
self, self,
......
...@@ -562,7 +562,8 @@ class GPTJModelLanguageGenerationTest(unittest.TestCase): ...@@ -562,7 +562,8 @@ class GPTJModelLanguageGenerationTest(unittest.TestCase):
output_seq_strs = tokenizer.batch_decode(output_seq, skip_special_tokens=True) output_seq_strs = tokenizer.batch_decode(output_seq, skip_special_tokens=True)
output_seq_tt_strs = tokenizer.batch_decode(output_seq_tt, skip_special_tokens=True) output_seq_tt_strs = tokenizer.batch_decode(output_seq_tt, skip_special_tokens=True)
if torch_device == "cuda": if torch_device != "cpu":
# currently this expect value is only for `cuda`
EXPECTED_OUTPUT_STR = ( EXPECTED_OUTPUT_STR = (
"Today is a nice day and I've already been enjoying it. I walked to work with my wife" "Today is a nice day and I've already been enjoying it. I walked to work with my wife"
) )
......
Markdown is supported
0% or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment