Skip to content
Open
Show file tree
Hide file tree
Changes from 12 commits
Commits
Show all changes
27 commits
Select commit Hold shift + click to select a range
6495cfd
add WWB cache dir
akashchi Oct 1, 2025
29a668c
fix lint, use cache for vlm test
akashchi Oct 1, 2025
229ef95
use caches in other tests
akashchi Oct 1, 2025
dd2140f
create if not existing
akashchi Oct 1, 2025
2bc0ada
lint
akashchi Oct 2, 2025
72ab81a
use cache for datasets
akashchi Oct 2, 2025
a6028ee
Revert "use cache for datasets"
akashchi Oct 2, 2025
ffbafd1
verbosity
akashchi Oct 2, 2025
57916ca
use cache for ov models only
akashchi Oct 2, 2025
01a91ed
lint
akashchi Oct 2, 2025
916d33d
merge
akashchi Oct 6, 2025
2dcc9ba
rm unused
akashchi Oct 6, 2025
19e5943
quotes, reuse cache dir setting logic
akashchi Oct 7, 2025
31bc592
use path to hf model
akashchi Oct 7, 2025
f8f7437
Apply suggestions from code review
akashchi Oct 7, 2025
42d1eb0
Update tools/who_what_benchmark/tests/test_cli_vlm.py
as-suvorov Oct 7, 2025
e305656
Merge branch 'master' into ci/gha/ov-cache-wwb
as-suvorov Oct 7, 2025
0470bf1
Merge branch 'master' into ci/gha/ov-cache-wwb
akashchi Oct 8, 2025
404461e
Merge branch 'master' into ci/gha/ov-cache-wwb
as-suvorov Oct 8, 2025
464d2f9
rm cache dir
akashchi Oct 9, 2025
9dfa38b
Merge remote-tracking branch 'upstream/master' into ci/gha/ov-cache-wwb
akashchi Oct 9, 2025
a8d0882
Merge branch 'ci/gha/ov-cache-wwb' of https://github.com/akashchi/ope…
akashchi Oct 9, 2025
a6d802a
merge
akashchi Oct 10, 2025
9c55669
Merge remote-tracking branch 'upstream/master' into ci/gha/ov-cache-wwb
akashchi Oct 13, 2025
af17000
save tokenizer to a separate folder
akashchi Oct 13, 2025
cb3ad5f
do not use save pretrained
akashchi Oct 13, 2025
6674ebf
export tokenizer
akashchi Oct 13, 2025
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
2 changes: 2 additions & 0 deletions .github/workflows/linux.yml
Original file line number Diff line number Diff line change
Expand Up @@ -26,6 +26,8 @@ env:
SCCACHE_AZURE_KEY_PREFIX: genai/ubuntu/22_04/x64
HF_HOME: /mount/caches/huggingface/lin
OV_CACHE: /mount/caches/huggingface/.ov_cache/lin
HF_HUB_VERBOSITY: debug
TRANSFORMERS_VERBOSITY: debug
OPENVINO_LOG_LEVEL: 5
GENAI_ARCHIVE_NAME: genai.tar.gz
GENAI_SAMPLES_NAME: genai_samples.tar.gz
Expand Down
2 changes: 2 additions & 0 deletions .github/workflows/windows.yml
Original file line number Diff line number Diff line change
Expand Up @@ -24,6 +24,8 @@ env:
CCACHE_MAXSIZE: 500Mi
HF_HOME: C:/mount/caches/huggingface/win
OV_CACHE: C:/mount/caches/huggingface/.ov_cache/win/
HF_HUB_VERBOSITY: debug
TRANSFORMERS_VERBOSITY: debug
OPENVINO_LOG_LEVEL: 5
ARTIFACTS_SHARE: '/mount/build-artifacts'
BASE_PRODUCT_TYPE: public_windows_vs2022
Expand Down
7 changes: 7 additions & 0 deletions tools/who_what_benchmark/tests/constants.py
Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Could be a conftest.py. should_cleanup and wwb_cache_path could be session fixtures.

Original file line number Diff line number Diff line change
@@ -0,0 +1,7 @@
from pathlib import Path
import os
import tempfile


WWB_CACHE_PATH = Path(os.path.join(os.environ.get('OV_CACHE', tempfile.TemporaryDirectory().name), 'wwb_cache'))
SHOULD_CLEANUP = os.environ.get('CLEANUP_CACHE', '').lower() in ('1', 'true', 'yes')
16 changes: 9 additions & 7 deletions tools/who_what_benchmark/tests/test_cli_image.py
Original file line number Diff line number Diff line change
Expand Up @@ -5,14 +5,14 @@
import shutil
import pytest
import logging
import tempfile
import re
from constants import WWB_CACHE_PATH, SHOULD_CLEANUP


logging.basicConfig(level=logging.INFO)
logger = logging.getLogger(__name__)

MODEL_CACHE = tempfile.mkdtemp()
MODEL_CACHE = WWB_CACHE_PATH
OV_IMAGE_MODELS = ["echarlaix/tiny-random-stable-diffusion-xl",
"yujiepan/stable-diffusion-3-tiny-random",
"katuni4ka/tiny-random-flux",
Expand All @@ -38,13 +38,14 @@ def run_wwb(args):

def setup_module():
for model_id in OV_IMAGE_MODELS:
MODEL_PATH = os.path.join(MODEL_CACHE, model_id.replace("/", "--"))
MODEL_PATH = MODEL_CACHE.joinpath(model_id.replace("/", "--"))
subprocess.run(["optimum-cli", "export", "openvino", "--model", model_id, MODEL_PATH], capture_output=True, text=True)


def teardown_module():
logger.info("Remove models")
shutil.rmtree(MODEL_CACHE)
if SHOULD_CLEANUP:
logger.info("Removing models")
shutil.rmtree(MODEL_CACHE)


def get_similarity(output: str) -> float:
Expand Down Expand Up @@ -121,11 +122,12 @@ def test_image_model_genai(model_id, model_type, tmp_path):
pytest.xfail("Ticket 173169")

GT_FILE = tmp_path / "gt.csv"
MODEL_PATH = os.path.join(MODEL_CACHE, model_id.replace("/", "--"))
MODEL_PATH = MODEL_CACHE.joinpath(model_id.replace("/", "--"))
MODEL_PATH = MODEL_PATH if MODEL_PATH.exists() else model_id
Copy link

Copilot AI Oct 6, 2025

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

The fallback logic reassigns MODEL_PATH from a Path object to a string, creating inconsistent types. Consider using str(MODEL_PATH) in the conditional or ensuring consistent Path usage throughout.

Suggested change
MODEL_PATH = MODEL_PATH if MODEL_PATH.exists() else model_id
MODEL_PATH = str(MODEL_PATH) if MODEL_PATH.exists() else model_id

Copilot uses AI. Check for mistakes.

Copy link
Contributor Author

@akashchi akashchi Oct 6, 2025

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

The underlying from_pretrained method accepts both str/Path types, so this should not be an issue.


run_wwb([
"--base-model",
model_id,
MODEL_PATH,
"--num-samples",
"1",
"--gt-data",
Expand Down
42 changes: 23 additions & 19 deletions tools/who_what_benchmark/tests/test_cli_text.py
Original file line number Diff line number Diff line change
@@ -1,12 +1,13 @@
import os
import shutil
import tempfile
import pandas as pd
import pytest
import logging
import json
import sys

from constants import WWB_CACHE_PATH, SHOULD_CLEANUP

from transformers import AutoTokenizer
from optimum.intel.openvino import OVModelForCausalLM, OVWeightQuantizationConfig

Expand All @@ -18,9 +19,9 @@


model_id = "facebook/opt-125m"
tmp_dir = tempfile.mkdtemp()
base_model_path = os.path.join(tmp_dir, "opt125m")
target_model_path = os.path.join(tmp_dir, "opt125m_int8")
cache_dir = WWB_CACHE_PATH
base_model_path = os.path.join(cache_dir, "opt125m")
target_model_path = os.path.join(cache_dir, "opt125m_int8")

gptq_model_id = "ybelkada/opt-125m-gptq-4bit"
awq_model_id = "TitanML/tiny-mixtral-AWQ-4bit"
Expand All @@ -29,24 +30,27 @@
def setup_module():
from optimum.exporters.openvino.convert import export_tokenizer

logger.info("Create models")
tokenizer = AutoTokenizer.from_pretrained(model_id)
base_model = OVModelForCausalLM.from_pretrained(model_id)
base_model.save_pretrained(base_model_path)
tokenizer.save_pretrained(base_model_path)
export_tokenizer(tokenizer, base_model_path)
if not os.path.exists(base_model_path):
logger.info("Create models")
tokenizer = AutoTokenizer.from_pretrained(model_id, cache_dir=WWB_CACHE_PATH)
base_model = OVModelForCausalLM.from_pretrained(model_id, cache_dir=WWB_CACHE_PATH)
base_model.save_pretrained(base_model_path)
tokenizer.save_pretrained(base_model_path)
export_tokenizer(tokenizer, base_model_path)

target_model = OVModelForCausalLM.from_pretrained(
model_id, quantization_config=OVWeightQuantizationConfig(bits=8)
)
target_model.save_pretrained(target_model_path)
tokenizer.save_pretrained(target_model_path)
export_tokenizer(tokenizer, target_model_path)
if not os.path.exists(target_model_path):
target_model = OVModelForCausalLM.from_pretrained(
model_id, quantization_config=OVWeightQuantizationConfig(bits=8), cache_dir=WWB_CACHE_PATH
)
target_model.save_pretrained(target_model_path)
tokenizer.save_pretrained(target_model_path)
export_tokenizer(tokenizer, target_model_path)


def teardown_module():
logger.info("Remove models")
shutil.rmtree(tmp_dir)
if SHOULD_CLEANUP:
logger.info("Removing models")
shutil.rmtree(cache_dir)


@pytest.mark.skipif((sys.platform == "darwin"), reason='173169')
Expand Down Expand Up @@ -145,7 +149,7 @@ def test_text_language(tmp_path):
temp_file_name = tmp_path / "gt.csv"
run_wwb([
"--base-model",
"Qwen/Qwen2-0.5B",
'Qwen/Qwen2-0.5B',
Copy link

Copilot AI Oct 6, 2025

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

[nitpick] Inconsistent quote style. The surrounding code uses double quotes, but this line uses single quotes. Consider using double quotes for consistency.

Suggested change
'Qwen/Qwen2-0.5B',
"Qwen/Qwen2-0.5B",

Copilot uses AI. Check for mistakes.

"--gt-data",
temp_file_name,
"--num-samples",
Expand Down
32 changes: 17 additions & 15 deletions tools/who_what_benchmark/tests/test_cli_vlm.py
Original file line number Diff line number Diff line change
Expand Up @@ -3,6 +3,7 @@
import logging
import sys
from test_cli_image import run_wwb
from constants import WWB_CACHE_PATH


logging.basicConfig(level=logging.INFO)
Expand All @@ -15,26 +16,27 @@
("katuni4ka/tiny-random-llava", "visual-text"),
],
)
def test_vlm_basic(model_id, model_type, tmp_path):
def test_vlm_basic(model_id, model_type):
if sys.platform == 'darwin':
pytest.xfail("Ticket 173169")
GT_FILE = tmp_path / "gt.csv"
MODEL_PATH = tmp_path / model_id.replace("/", "--")
GT_FILE = WWB_CACHE_PATH / "gt.csv"
MODEL_PATH = WWB_CACHE_PATH.joinpath(model_id.replace("/", "--"))

result = subprocess.run(["optimum-cli", "export",
"openvino", "-m", model_id,
MODEL_PATH, "--task",
"image-text-to-text",
"--trust-remote-code"],
capture_output=True,
text=True,
)
assert result.returncode == 0
if not MODEL_PATH.exists():
result = subprocess.run(["optimum-cli", "export",
"openvino", "-m", model_id,
MODEL_PATH, "--task",
"image-text-to-text",
"--trust-remote-code"],
capture_output=True,
text=True,
)
assert result.returncode == 0

# Collect reference with HF model
run_wwb([
"--base-model",
model_id,
MODEL_PATH,
"--num-samples",
"1",
"--gt-data",
Expand Down Expand Up @@ -74,13 +76,13 @@ def test_vlm_basic(model_id, model_type, tmp_path):
model_type,
"--genai",
"--output",
tmp_path,
WWB_CACHE_PATH,
])

# test w/o models
run_wwb([
"--target-data",
tmp_path / "target.csv",
WWB_CACHE_PATH / "target.csv",
"--num-samples",
"1",
"--gt-data",
Expand Down
Loading