"git@developer.sourcefind.cn:chenpangpang/transformers.git" did not exist on "c82b74b996b309bb1334ebcc5ffca1fa96cb00e1"
Unverified Commit e3e65173 authored by Sam Shleifer's avatar Sam Shleifer Committed by GitHub
Browse files

Fix 3 failing slow bart/blender tests (#7652)

parent 960faaaf
...@@ -368,7 +368,7 @@ class BartHeadTests(unittest.TestCase): ...@@ -368,7 +368,7 @@ class BartHeadTests(unittest.TestCase):
torch.Tensor([0, 11349, 495, 4040, 571, 2]), torch.Tensor([0, 11349, 495, 4040, 571, 2]),
] ]
for ex, desired_result in zip(examples, fairseq_results): for ex, desired_result in zip(examples, fairseq_results):
bart_toks = tokenizer.encode(ex, return_tensors="pt") 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)
def test_generate_fp16(self): def test_generate_fp16(self):
...@@ -417,11 +417,9 @@ class BartHeadTests(unittest.TestCase): ...@@ -417,11 +417,9 @@ class BartHeadTests(unittest.TestCase):
def assert_tensors_close(a, b, atol=1e-12, prefix=""): def assert_tensors_close(a, b, atol=1e-12, prefix=""):
"""If tensors not close, or a and b aren't both tensors, raise a nice Assertion error.""" """If tensors have different shapes, different values or a and b are not both tensors, raise a nice Assertion error."""
if a is None and b is None: if a is None and b is None:
return True return True
assert a.shape == b.shape
try: try:
if torch.allclose(a, b, atol=atol): if torch.allclose(a, b, atol=atol):
return True return True
...@@ -506,7 +504,7 @@ class BartModelIntegrationTests(unittest.TestCase): ...@@ -506,7 +504,7 @@ class BartModelIntegrationTests(unittest.TestCase):
inputs_dict = prepare_bart_inputs_dict(model.config, input_ids=input_ids_no_pad) inputs_dict = prepare_bart_inputs_dict(model.config, input_ids=input_ids_no_pad)
with torch.no_grad(): with torch.no_grad():
logits2 = model(**inputs_dict)[0] logits2 = model(**inputs_dict)[0].squeeze()
assert_tensors_close(batched_logits[1], logits2, atol=TOLERANCE) assert_tensors_close(batched_logits[1], logits2, atol=TOLERANCE)
assert_tensors_close(expected_slice, logits_arr, atol=TOLERANCE) assert_tensors_close(expected_slice, logits_arr, atol=TOLERANCE)
......
...@@ -134,38 +134,31 @@ class BlenderbotTesterMixin(ModelTesterMixin, unittest.TestCase): ...@@ -134,38 +134,31 @@ class BlenderbotTesterMixin(ModelTesterMixin, unittest.TestCase):
class Blenderbot3BIntegrationTests(unittest.TestCase): class Blenderbot3BIntegrationTests(unittest.TestCase):
ckpt = "facebook/blenderbot-3B" ckpt = "facebook/blenderbot-3B"
@cached_property
def model(self):
model = BlenderbotForConditionalGeneration.from_pretrained(self.ckpt).to(torch_device)
if torch_device == "cuda":
model = model.half()
return model
@cached_property @cached_property
def tokenizer(self): def tokenizer(self):
return BlenderbotTokenizer.from_pretrained(self.ckpt) return BlenderbotTokenizer.from_pretrained(self.ckpt)
@slow @slow
def test_generation_from_short_input_same_as_parlai_3B(self): def test_generation_from_short_input_same_as_parlai_3B(self):
torch.cuda.empty_cache()
model = BlenderbotForConditionalGeneration.from_pretrained(self.ckpt).half().to(torch_device)
src_text = ["Sam"] src_text = ["Sam"]
model_inputs = self.tokenizer(src_text, return_tensors="pt").to(torch_device) model_inputs = self.tokenizer(src_text, return_tensors="pt").to(torch_device)
generated_utterances = self.model.generate(**model_inputs, **FASTER_GEN_KWARGS) generated_utterances = model.generate(**model_inputs, **FASTER_GEN_KWARGS)
tgt_text = 'Sam is a great name. It means "sun" in Gaelic.' tgt_text = 'Sam is a great name. It means "sun" in Gaelic.'
generated_txt = self.tokenizer.batch_decode(generated_utterances, **TOK_DECODE_KW) generated_txt = self.tokenizer.batch_decode(generated_utterances, **TOK_DECODE_KW)
assert generated_txt[0].strip() == tgt_text assert generated_txt[0].strip() == tgt_text
@slow
def test_generation_from_long_input_same_as_parlai_3B(self):
src_text = "Social anxiety\nWow, I am never shy. Do you have anxiety?\nYes. I end up sweating and blushing and feel like i'm going to throw up.\nand why is that?" src_text = "Social anxiety\nWow, I am never shy. Do you have anxiety?\nYes. I end up sweating and blushing and feel like i'm going to throw up.\nand why is that?"
model_inputs = self.tokenizer([src_text], return_tensors="pt").to(torch_device) model_inputs = self.tokenizer([src_text], return_tensors="pt").to(torch_device)
generated_ids = self.model.generate(**model_inputs, **FASTER_GEN_KWARGS)[0] generated_ids = model.generate(**model_inputs, **FASTER_GEN_KWARGS)[0]
reply = self.tokenizer.decode(generated_ids, **TOK_DECODE_KW) reply = self.tokenizer.decode(generated_ids, **TOK_DECODE_KW)
assert "I think it's because we are so worried about what people think of us." == reply.strip() assert "I think it's because we are so worried about what people think of us." == reply.strip()
del model
@require_torch @require_torch
...@@ -193,7 +186,6 @@ class Blenderbot90MIntegrationTests(unittest.TestCase): ...@@ -193,7 +186,6 @@ class Blenderbot90MIntegrationTests(unittest.TestCase):
model_inputs = self.tokenizer(src_text, return_tensors="pt").to(torch_device) model_inputs = self.tokenizer(src_text, return_tensors="pt").to(torch_device)
assert isinstance(self.tokenizer, BlenderbotSmallTokenizer) assert isinstance(self.tokenizer, BlenderbotSmallTokenizer)
assert self.model.config.do
generated_ids = self.model.generate(**model_inputs)[0] generated_ids = self.model.generate(**model_inputs)[0]
reply = self.tokenizer.decode(generated_ids, **TOK_DECODE_KW) reply = self.tokenizer.decode(generated_ids, **TOK_DECODE_KW)
......
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