"...git@developer.sourcefind.cn:chenpangpang/transformers.git" did not exist on "fdb85be40fa255c015819e711c15117c2aaa5101"
Unverified Commit 0527c1c0 authored by Yih-Dar's avatar Yih-Dar Committed by GitHub
Browse files

Add a check in `ImageToTextPipeline._forward` (#24373)



* fix

* fix

* fix

* Update src/transformers/pipelines/image_to_text.py
Co-authored-by: default avatarNicolas Patry <patry.nicolas@protonmail.com>

* fix

---------
Co-authored-by: default avatarydshieh <ydshieh@users.noreply.github.com>
Co-authored-by: default avatarNicolas Patry <patry.nicolas@protonmail.com>
parent dc444991
...@@ -145,6 +145,15 @@ class ImageToTextPipeline(Pipeline): ...@@ -145,6 +145,15 @@ class ImageToTextPipeline(Pipeline):
return model_inputs return model_inputs
def _forward(self, model_inputs, generate_kwargs=None): def _forward(self, model_inputs, generate_kwargs=None):
# Git model sets `model_inputs["input_ids"] = None` in `preprocess` (when `prompt=None`). In batch model, the
# pipeline will group them into a list of `None`, which fail `_forward`. Avoid this by checking it first.
if (
"input_ids" in model_inputs
and isinstance(model_inputs["input_ids"], list)
and all(x is None for x in model_inputs["input_ids"])
):
model_inputs["input_ids"] = None
if generate_kwargs is None: if generate_kwargs is None:
generate_kwargs = {} generate_kwargs = {}
# FIXME: We need to pop here due to a difference in how `generation.py` and `generation.tf_utils.py` # FIXME: We need to pop here due to a difference in how `generation.py` and `generation.tf_utils.py`
......
...@@ -390,15 +390,6 @@ class GitModelTest(ModelTesterMixin, GenerationTesterMixin, PipelineTesterMixin, ...@@ -390,15 +390,6 @@ class GitModelTest(ModelTesterMixin, GenerationTesterMixin, PipelineTesterMixin,
fx_compatible = False fx_compatible = False
test_torchscript = False test_torchscript = False
# `GitForCausalLM` doesn't fit into image-to-text pipeline. We might need to overwrite its `generate` function.
def is_pipeline_test_to_skip(
self, pipeline_test_casse_name, config_class, model_architecture, tokenizer_name, processor_name
):
if pipeline_test_casse_name == "ImageToTextPipelineTests":
return True
return False
# special case for GitForCausalLM model # special case for GitForCausalLM model
def _prepare_for_class(self, inputs_dict, model_class, return_labels=False): def _prepare_for_class(self, inputs_dict, model_class, return_labels=False):
inputs_dict = super()._prepare_for_class(inputs_dict, model_class, return_labels=return_labels) inputs_dict = super()._prepare_for_class(inputs_dict, model_class, return_labels=return_labels)
......
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