[whisper] fix short-form output type (#32178)
* [whisper] fix short-form output type * add test * make style * update long-form tests * fixes * last fix * finalise test
This commit is contained in:
@@ -26,6 +26,7 @@ import unittest
|
||||
import numpy as np
|
||||
import pytest
|
||||
from huggingface_hub import hf_hub_download
|
||||
from parameterized import parameterized
|
||||
|
||||
import transformers
|
||||
from transformers import WhisperConfig
|
||||
@@ -72,6 +73,7 @@ if is_torch_available():
|
||||
BeamSearchEncoderDecoderOutput,
|
||||
GenerateBeamDecoderOnlyOutput,
|
||||
GenerateBeamEncoderDecoderOutput,
|
||||
GenerateEncoderDecoderOutput,
|
||||
PhrasalConstraint,
|
||||
)
|
||||
from transformers.generation.logits_process import LogitsProcessor
|
||||
@@ -1820,6 +1822,26 @@ class WhisperModelTest(ModelTesterMixin, GenerationTesterMixin, PipelineTesterMi
|
||||
normalized_1 = torch.nn.functional.softmax(out_shared_prefix_last_tokens)
|
||||
torch.testing.assert_close(normalized_0, normalized_1, rtol=1e-3, atol=1e-4)
|
||||
|
||||
@parameterized.expand([(True,), (False,)])
|
||||
def test_generate_output_type(self, return_dict_in_generate):
|
||||
expected_output_type = GenerateEncoderDecoderOutput if return_dict_in_generate else torch.Tensor
|
||||
for model_class in self.all_generative_model_classes:
|
||||
config, inputs = self.model_tester.prepare_config_and_inputs()
|
||||
model = model_class(config).to(torch_device).eval()
|
||||
|
||||
# short-form generation without fallback
|
||||
pred_ids = model.generate(**inputs, return_dict_in_generate=return_dict_in_generate)
|
||||
assert isinstance(pred_ids, expected_output_type)
|
||||
|
||||
# short-form generation with fallback
|
||||
pred_ids = model.generate(
|
||||
**inputs,
|
||||
logprob_threshold=-1.0,
|
||||
temperature=[0.0, 0.1],
|
||||
return_dict_in_generate=return_dict_in_generate,
|
||||
)
|
||||
assert isinstance(pred_ids, expected_output_type)
|
||||
|
||||
|
||||
@require_torch
|
||||
@require_torchaudio
|
||||
|
||||
Reference in New Issue
Block a user