From 7eba007b5bef014fd8b5d4b4f6e5e5f3c2dad340 Mon Sep 17 00:00:00 2001 From: Alvaro Bartolome <36760800+alvarobartt@users.noreply.github.com> Date: Mon, 16 Dec 2024 16:05:35 +0100 Subject: [PATCH 1/3] Skip `task` for `diffusers` and `sentence-transformers` in `HuggingFaceHandler` --- src/huggingface_inference_toolkit/handler.py | 10 +++++++--- 1 file changed, 7 insertions(+), 3 deletions(-) diff --git a/src/huggingface_inference_toolkit/handler.py b/src/huggingface_inference_toolkit/handler.py index 66f4acdc..33cfa011 100644 --- a/src/huggingface_inference_toolkit/handler.py +++ b/src/huggingface_inference_toolkit/handler.py @@ -36,9 +36,13 @@ def __call__(self, data: Dict[str, Any]) -> Dict[str, Any]: inputs = data.pop("inputs", data) parameters = data.pop("parameters", {}) - # sentence transformers pipelines do not have the `task` arg - if any(isinstance(self.pipeline, v) for v in SENTENCE_TRANSFORMERS_TASKS.values()): - return self.pipeline(**inputs) if isinstance(inputs, dict) else self.pipeline(inputs) # type: ignore + # diffusers and sentence transformers pipelines do not have the `task` arg + if not hasattr(self.pipeline, "task"): + return ( # type: ignore + self.pipeline(**inputs, **parameters) + if isinstance(inputs, dict) + else self.pipeline(inputs, **parameters) + ) if self.pipeline.task == "question-answering": if not isinstance(inputs, dict): From 111b90007706cc492f4858ee344c69654b5f3667 Mon Sep 17 00:00:00 2001 From: Alvaro Bartolome <36760800+alvarobartt@users.noreply.github.com> Date: Mon, 16 Dec 2024 16:33:56 +0100 Subject: [PATCH 2/3] Remove unused `SENTENCE_TRANSFORMERS_TASKS` import --- src/huggingface_inference_toolkit/handler.py | 1 - 1 file changed, 1 deletion(-) diff --git a/src/huggingface_inference_toolkit/handler.py b/src/huggingface_inference_toolkit/handler.py index 33cfa011..e241f727 100644 --- a/src/huggingface_inference_toolkit/handler.py +++ b/src/huggingface_inference_toolkit/handler.py @@ -3,7 +3,6 @@ from typing import Any, Dict, Literal, Optional, Union from huggingface_inference_toolkit.const import HF_TRUST_REMOTE_CODE -from huggingface_inference_toolkit.sentence_transformers_utils import SENTENCE_TRANSFORMERS_TASKS from huggingface_inference_toolkit.utils import ( check_and_register_custom_pipeline_from_directory, get_pipeline, From 8b7321ae212c819639a55ccbad9d4dfe4e610096 Mon Sep 17 00:00:00 2001 From: Alvaro Bartolome <36760800+alvarobartt@users.noreply.github.com> Date: Mon, 16 Dec 2024 16:51:13 +0100 Subject: [PATCH 3/3] Fix `HuggingFaceHandler` for `diffusers` and `sentence-transformers` --- src/huggingface_inference_toolkit/handler.py | 7 +++++++ 1 file changed, 7 insertions(+) diff --git a/src/huggingface_inference_toolkit/handler.py b/src/huggingface_inference_toolkit/handler.py index e241f727..e3c721d1 100644 --- a/src/huggingface_inference_toolkit/handler.py +++ b/src/huggingface_inference_toolkit/handler.py @@ -3,6 +3,7 @@ from typing import Any, Dict, Literal, Optional, Union from huggingface_inference_toolkit.const import HF_TRUST_REMOTE_CODE +from huggingface_inference_toolkit.sentence_transformers_utils import SENTENCE_TRANSFORMERS_TASKS from huggingface_inference_toolkit.utils import ( check_and_register_custom_pipeline_from_directory, get_pipeline, @@ -37,6 +38,12 @@ def __call__(self, data: Dict[str, Any]) -> Dict[str, Any]: # diffusers and sentence transformers pipelines do not have the `task` arg if not hasattr(self.pipeline, "task"): + # sentence transformers paramters not supported yet + if any(isinstance(self.pipeline, v) for v in SENTENCE_TRANSFORMERS_TASKS.values()): + return ( # type: ignore + self.pipeline(**inputs) if isinstance(inputs, dict) else self.pipeline(inputs) + ) + # diffusers does support kwargs return ( # type: ignore self.pipeline(**inputs, **parameters) if isinstance(inputs, dict)