Avoid pipeline test failing related to Hub call (#37170)

* cls

* cls

* cls

---------

Co-authored-by: ydshieh <ydshieh@users.noreply.github.com>
This commit is contained in:
Yih-Dar
2025-04-01 18:22:45 +02:00
committed by GitHub
parent bf41e54fc8
commit 35253076f4
7 changed files with 69 additions and 38 deletions

View File

@@ -171,6 +171,7 @@ class CircleCIJob:
"command": f"TESTS=$(circleci tests split --split-by=timings {self.job_name}_test_list.txt) && echo $TESTS > splitted_tests.txt && echo $TESTS | tr ' ' '\n'" if self.parallelism else f"awk '{{printf \"%s \", $0}}' {self.job_name}_test_list.txt > splitted_tests.txt" "command": f"TESTS=$(circleci tests split --split-by=timings {self.job_name}_test_list.txt) && echo $TESTS > splitted_tests.txt && echo $TESTS | tr ' ' '\n'" if self.parallelism else f"awk '{{printf \"%s \", $0}}' {self.job_name}_test_list.txt > splitted_tests.txt"
} }
}, },
{"run": {"name": "fetch hub objects before pytest", "command": "python3 utils/fetch_hub_objects_for_ci.py"}},
{"run": { {"run": {
"name": "Run tests", "name": "Run tests",
"command": f"({timeout_cmd} python3 -m pytest {marker_cmd} -n {self.pytest_num_workers} {junit_flags} {repeat_on_failure_flags} {' '.join(pytest_flags)} $(cat splitted_tests.txt) | tee tests_output.txt)"} "command": f"({timeout_cmd} python3 -m pytest {marker_cmd} -n {self.pytest_num_workers} {junit_flags} {repeat_on_failure_flags} {' '.join(pytest_flags)} $(cat splitted_tests.txt) | tee tests_output.txt)"}

View File

@@ -14,6 +14,7 @@
import unittest import unittest
import datasets
import numpy as np import numpy as np
from huggingface_hub import AudioClassificationOutputElement from huggingface_hub import AudioClassificationOutputElement
@@ -24,6 +25,7 @@ from transformers import (
) )
from transformers.pipelines import AudioClassificationPipeline, pipeline from transformers.pipelines import AudioClassificationPipeline, pipeline
from transformers.testing_utils import ( from transformers.testing_utils import (
_run_pipeline_tests,
compare_pipeline_output_to_hub_spec, compare_pipeline_output_to_hub_spec,
is_pipeline_test, is_pipeline_test,
nested_simplify, nested_simplify,
@@ -45,6 +47,9 @@ class AudioClassificationPipelineTests(unittest.TestCase):
model_mapping = MODEL_FOR_AUDIO_CLASSIFICATION_MAPPING model_mapping = MODEL_FOR_AUDIO_CLASSIFICATION_MAPPING
tf_model_mapping = TF_MODEL_FOR_AUDIO_CLASSIFICATION_MAPPING tf_model_mapping = TF_MODEL_FOR_AUDIO_CLASSIFICATION_MAPPING
if _run_pipeline_tests:
_dataset = datasets.load_dataset("hf-internal-testing/librispeech_asr_dummy", "clean", split="validation")
def get_test_pipeline( def get_test_pipeline(
self, self,
model, model,
@@ -94,11 +99,8 @@ class AudioClassificationPipelineTests(unittest.TestCase):
@require_torchaudio @require_torchaudio
def run_torchaudio(self, audio_classifier): def run_torchaudio(self, audio_classifier):
import datasets
# test with a local file # test with a local file
dataset = datasets.load_dataset("hf-internal-testing/librispeech_asr_dummy", "clean", split="validation") audio = self._dataset[0]["audio"]["array"]
audio = dataset[0]["audio"]["array"]
output = audio_classifier(audio) output = audio_classifier(audio)
self.assertEqual( self.assertEqual(
output, output,
@@ -168,8 +170,6 @@ class AudioClassificationPipelineTests(unittest.TestCase):
@require_torch @require_torch
@slow @slow
def test_large_model_pt(self): def test_large_model_pt(self):
import datasets
model = "superb/wav2vec2-base-superb-ks" model = "superb/wav2vec2-base-superb-ks"
audio_classifier = pipeline("audio-classification", model=model) audio_classifier = pipeline("audio-classification", model=model)

View File

@@ -14,12 +14,14 @@
import unittest import unittest
import datasets
from huggingface_hub import DepthEstimationOutput from huggingface_hub import DepthEstimationOutput
from huggingface_hub.utils import insecure_hashlib from huggingface_hub.utils import insecure_hashlib
from transformers import MODEL_FOR_DEPTH_ESTIMATION_MAPPING, is_torch_available, is_vision_available from transformers import MODEL_FOR_DEPTH_ESTIMATION_MAPPING, is_torch_available, is_vision_available
from transformers.pipelines import DepthEstimationPipeline, pipeline from transformers.pipelines import DepthEstimationPipeline, pipeline
from transformers.testing_utils import ( from transformers.testing_utils import (
_run_pipeline_tests,
compare_pipeline_output_to_hub_spec, compare_pipeline_output_to_hub_spec,
is_pipeline_test, is_pipeline_test,
nested_simplify, nested_simplify,
@@ -58,6 +60,13 @@ def hashimage(image: Image) -> str:
class DepthEstimationPipelineTests(unittest.TestCase): class DepthEstimationPipelineTests(unittest.TestCase):
model_mapping = MODEL_FOR_DEPTH_ESTIMATION_MAPPING model_mapping = MODEL_FOR_DEPTH_ESTIMATION_MAPPING
if _run_pipeline_tests:
# we use revision="refs/pr/1" until the PR is merged
# https://hf.co/datasets/hf-internal-testing/fixtures_image_utils/discussions/1
_dataset = datasets.load_dataset(
"hf-internal-testing/fixtures_image_utils", split="test", revision="refs/pr/1"
)
def get_test_pipeline( def get_test_pipeline(
self, self,
model, model,
@@ -83,21 +92,17 @@ class DepthEstimationPipelineTests(unittest.TestCase):
def run_pipeline_test(self, depth_estimator, examples): def run_pipeline_test(self, depth_estimator, examples):
outputs = depth_estimator("./tests/fixtures/tests_samples/COCO/000000039769.png") outputs = depth_estimator("./tests/fixtures/tests_samples/COCO/000000039769.png")
self.assertEqual({"predicted_depth": ANY(torch.Tensor), "depth": ANY(Image.Image)}, outputs) self.assertEqual({"predicted_depth": ANY(torch.Tensor), "depth": ANY(Image.Image)}, outputs)
import datasets
# we use revision="refs/pr/1" until the PR is merged
# https://hf.co/datasets/hf-internal-testing/fixtures_image_utils/discussions/1
dataset = datasets.load_dataset("hf-internal-testing/fixtures_image_utils", split="test", revision="refs/pr/1")
outputs = depth_estimator( outputs = depth_estimator(
[ [
Image.open("./tests/fixtures/tests_samples/COCO/000000039769.png"), Image.open("./tests/fixtures/tests_samples/COCO/000000039769.png"),
"http://images.cocodataset.org/val2017/000000039769.jpg", "http://images.cocodataset.org/val2017/000000039769.jpg",
# RGBA # RGBA
dataset[0]["image"], self._dataset[0]["image"],
# LA # LA
dataset[1]["image"], self._dataset[1]["image"],
# L # L
dataset[2]["image"], self._dataset[2]["image"],
] ]
) )
self.assertEqual( self.assertEqual(

View File

@@ -14,6 +14,7 @@
import unittest import unittest
import datasets
from huggingface_hub import ImageClassificationOutputElement from huggingface_hub import ImageClassificationOutputElement
from transformers import ( from transformers import (
@@ -25,6 +26,7 @@ from transformers import (
) )
from transformers.pipelines import ImageClassificationPipeline, pipeline from transformers.pipelines import ImageClassificationPipeline, pipeline
from transformers.testing_utils import ( from transformers.testing_utils import (
_run_pipeline_tests,
compare_pipeline_output_to_hub_spec, compare_pipeline_output_to_hub_spec,
is_pipeline_test, is_pipeline_test,
nested_simplify, nested_simplify,
@@ -58,6 +60,13 @@ class ImageClassificationPipelineTests(unittest.TestCase):
model_mapping = MODEL_FOR_IMAGE_CLASSIFICATION_MAPPING model_mapping = MODEL_FOR_IMAGE_CLASSIFICATION_MAPPING
tf_model_mapping = TF_MODEL_FOR_IMAGE_CLASSIFICATION_MAPPING tf_model_mapping = TF_MODEL_FOR_IMAGE_CLASSIFICATION_MAPPING
if _run_pipeline_tests:
# we use revision="refs/pr/1" until the PR is merged
# https://hf.co/datasets/hf-internal-testing/fixtures_image_utils/discussions/1
_dataset = datasets.load_dataset(
"hf-internal-testing/fixtures_image_utils", split="test", revision="refs/pr/1"
)
def get_test_pipeline( def get_test_pipeline(
self, self,
model, model,
@@ -93,23 +102,17 @@ class ImageClassificationPipelineTests(unittest.TestCase):
], ],
) )
import datasets
# we use revision="refs/pr/1" until the PR is merged
# https://hf.co/datasets/hf-internal-testing/fixtures_image_utils/discussions/1
dataset = datasets.load_dataset("hf-internal-testing/fixtures_image_utils", split="test", revision="refs/pr/1")
# Accepts URL + PIL.Image + lists # Accepts URL + PIL.Image + lists
outputs = image_classifier( outputs = image_classifier(
[ [
Image.open("./tests/fixtures/tests_samples/COCO/000000039769.png"), Image.open("./tests/fixtures/tests_samples/COCO/000000039769.png"),
"http://images.cocodataset.org/val2017/000000039769.jpg", "http://images.cocodataset.org/val2017/000000039769.jpg",
# RGBA # RGBA
dataset[0]["image"], self._dataset[0]["image"],
# LA # LA
dataset[1]["image"], self._dataset[1]["image"],
# L # L
dataset[2]["image"], self._dataset[2]["image"],
] ]
) )
self.assertEqual( self.assertEqual(

View File

@@ -37,6 +37,7 @@ from transformers import (
pipeline, pipeline,
) )
from transformers.testing_utils import ( from transformers.testing_utils import (
_run_pipeline_tests,
compare_pipeline_output_to_hub_spec, compare_pipeline_output_to_hub_spec,
is_pipeline_test, is_pipeline_test,
nested_simplify, nested_simplify,
@@ -89,6 +90,13 @@ class ImageSegmentationPipelineTests(unittest.TestCase):
+ (MODEL_FOR_INSTANCE_SEGMENTATION_MAPPING.items() if MODEL_FOR_INSTANCE_SEGMENTATION_MAPPING else []) + (MODEL_FOR_INSTANCE_SEGMENTATION_MAPPING.items() if MODEL_FOR_INSTANCE_SEGMENTATION_MAPPING else [])
) )
if _run_pipeline_tests:
# we use revision="refs/pr/1" until the PR is merged
# https://hf.co/datasets/hf-internal-testing/fixtures_image_utils/discussions/1
_dataset = datasets.load_dataset(
"hf-internal-testing/fixtures_image_utils", split="test", revision="refs/pr/1"
)
def get_test_pipeline( def get_test_pipeline(
self, self,
model, model,
@@ -130,20 +138,22 @@ class ImageSegmentationPipelineTests(unittest.TestCase):
# to make it work # to make it work
self.assertEqual([{"score": ANY(float, type(None)), "label": ANY(str), "mask": ANY(Image.Image)}] * n, outputs) self.assertEqual([{"score": ANY(float, type(None)), "label": ANY(str), "mask": ANY(Image.Image)}] * n, outputs)
# we use revision="refs/pr/1" until the PR is merged
# https://hf.co/datasets/hf-internal-testing/fixtures_image_utils/discussions/1
dataset = datasets.load_dataset("hf-internal-testing/fixtures_image_utils", split="test", revision="refs/pr/1")
# RGBA # RGBA
outputs = image_segmenter(dataset[0]["image"], threshold=0.0, mask_threshold=0, overlap_mask_area_threshold=0) outputs = image_segmenter(
self._dataset[0]["image"], threshold=0.0, mask_threshold=0, overlap_mask_area_threshold=0
)
m = len(outputs) m = len(outputs)
self.assertEqual([{"score": ANY(float, type(None)), "label": ANY(str), "mask": ANY(Image.Image)}] * m, outputs) self.assertEqual([{"score": ANY(float, type(None)), "label": ANY(str), "mask": ANY(Image.Image)}] * m, outputs)
# LA # LA
outputs = image_segmenter(dataset[1]["image"], threshold=0.0, mask_threshold=0, overlap_mask_area_threshold=0) outputs = image_segmenter(
self._dataset[1]["image"], threshold=0.0, mask_threshold=0, overlap_mask_area_threshold=0
)
m = len(outputs) m = len(outputs)
self.assertEqual([{"score": ANY(float, type(None)), "label": ANY(str), "mask": ANY(Image.Image)}] * m, outputs) self.assertEqual([{"score": ANY(float, type(None)), "label": ANY(str), "mask": ANY(Image.Image)}] * m, outputs)
# L # L
outputs = image_segmenter(dataset[2]["image"], threshold=0.0, mask_threshold=0, overlap_mask_area_threshold=0) outputs = image_segmenter(
self._dataset[2]["image"], threshold=0.0, mask_threshold=0, overlap_mask_area_threshold=0
)
m = len(outputs) m = len(outputs)
self.assertEqual([{"score": ANY(float, type(None)), "label": ANY(str), "mask": ANY(Image.Image)}] * m, outputs) self.assertEqual([{"score": ANY(float, type(None)), "label": ANY(str), "mask": ANY(Image.Image)}] * m, outputs)

View File

@@ -14,6 +14,7 @@
import unittest import unittest
import datasets
from huggingface_hub import ObjectDetectionOutputElement from huggingface_hub import ObjectDetectionOutputElement
from transformers import ( from transformers import (
@@ -25,6 +26,7 @@ from transformers import (
pipeline, pipeline,
) )
from transformers.testing_utils import ( # from transformers.testing_utils import ( #
_run_pipeline_tests,
compare_pipeline_output_to_hub_spec, compare_pipeline_output_to_hub_spec,
is_pipeline_test, is_pipeline_test,
nested_simplify, nested_simplify,
@@ -56,6 +58,13 @@ else:
class ObjectDetectionPipelineTests(unittest.TestCase): class ObjectDetectionPipelineTests(unittest.TestCase):
model_mapping = MODEL_FOR_OBJECT_DETECTION_MAPPING model_mapping = MODEL_FOR_OBJECT_DETECTION_MAPPING
if _run_pipeline_tests:
# we use revision="refs/pr/1" until the PR is merged
# https://hf.co/datasets/hf-internal-testing/fixtures_image_utils/discussions/1
_dataset = datasets.load_dataset(
"hf-internal-testing/fixtures_image_utils", split="test", revision="refs/pr/1"
)
def get_test_pipeline( def get_test_pipeline(
self, self,
model, model,
@@ -89,21 +98,15 @@ class ObjectDetectionPipelineTests(unittest.TestCase):
}, },
) )
import datasets
# we use revision="refs/pr/1" until the PR is merged
# https://hf.co/datasets/hf-internal-testing/fixtures_image_utils/discussions/1
dataset = datasets.load_dataset("hf-internal-testing/fixtures_image_utils", split="test", revision="refs/pr/1")
batch = [ batch = [
Image.open("./tests/fixtures/tests_samples/COCO/000000039769.png"), Image.open("./tests/fixtures/tests_samples/COCO/000000039769.png"),
"http://images.cocodataset.org/val2017/000000039769.jpg", "http://images.cocodataset.org/val2017/000000039769.jpg",
# RGBA # RGBA
dataset[0]["image"], self._dataset[0]["image"],
# LA # LA
dataset[1]["image"], self._dataset[1]["image"],
# L # L
dataset[2]["image"], self._dataset[2]["image"],
] ]
batch_outputs = object_detector(batch, threshold=0.0) batch_outputs = object_detector(batch, threshold=0.0)

View File

@@ -0,0 +1,9 @@
from transformers.testing_utils import _run_pipeline_tests
if __name__ == "__main__":
if _run_pipeline_tests:
import datasets
_ = datasets.load_dataset("hf-internal-testing/librispeech_asr_dummy", "clean", split="validation")
_ = datasets.load_dataset("hf-internal-testing/fixtures_image_utils", split="test", revision="refs/pr/1")