From 3e8fa8f1ac9eb5bde1506fa517e0aa08fe815080 Mon Sep 17 00:00:00 2001 From: Yang Wang Date: Mon, 16 Jun 2025 11:27:02 -0700 Subject: [PATCH 01/46] final Signed-off-by: Yang Wang --- .../execu_torch_read_data.py | 75 +++++++++++++++ .../query_torch_analysis_data.py | 94 +++++++++++++++++++ .../benchmark_tooling/read_benchmark_data.py | 83 ++++++++++++++++ .../benchmark_tooling/requirements.txt | 1 + 4 files changed, 253 insertions(+) create mode 100644 .ci/scripts/benchmark_tooling/execu_torch_read_data.py create mode 100644 .ci/scripts/benchmark_tooling/query_torch_analysis_data.py create mode 100644 .ci/scripts/benchmark_tooling/read_benchmark_data.py create mode 100644 .ci/scripts/benchmark_tooling/requirements.txt diff --git a/.ci/scripts/benchmark_tooling/execu_torch_read_data.py b/.ci/scripts/benchmark_tooling/execu_torch_read_data.py new file mode 100644 index 00000000000..0be8089bf24 --- /dev/null +++ b/.ci/scripts/benchmark_tooling/execu_torch_read_data.py @@ -0,0 +1,75 @@ + +import requests +import pandas as pd +import json +from datetime import datetime +from read_benchmark_data import build_query_params + +def fetch_llm_data(payload: dict) -> list: + url = "https://hud.pytorch.org/api/clickhouse/oss_ci_benchmark_llms" + headers = {"Content-Type": "application/json"} + response = requests.post(url, headers=headers, data=json.dumps(payload)) + response.raise_for_status() + return response.json() + +def flatten_record(record): + flat = { + "timestamp": record.get("metadata_info", {}).get("timestamp"), + "workflow_id": record.get("workflow_id"), + "job_id": record.get("job_id"), + "model": record.get("model"), + "backend": record.get("backend"), + "mode": record.get("mode"), + "dtype": record.get("dtype"), + "device": record.get("device"), + "arch": record.get("arch"), + "granularity_bucket": record.get("granularity_bucket"), + } + if "extra" in record: + for k, v in record["extra"].items(): + flat[f"extra_{k}"] = v + metric_name = record["metric"] + flat[metric_name] = record["actual"] + return flat + +def process_records(data: list) -> pd.DataFrame: + flattened = [flatten_record(entry) for entry in data] + df = pd.DataFrame(flattened) + id_cols = [ + "timestamp", "workflow_id", "job_id", "model", "backend", "mode", "dtype", + "device", "arch", "granularity_bucket", + "extra_use_torch_compile", "extra_is_dynamic", + "extra_request_rate", "extra_tensor_parallel_size" + ] + df = df.groupby(id_cols, dropna=False).first().reset_index() + return df + +def main(): + props = { + "archName": "All Platforms", + "deviceName": "Samsung Galaxy S22 5G (private) (Android 13)", + "modeName": "inference", + "modelName": "mv3", + "backendName": "qnn_q8", + "benchmarkName": "", # fallback to repo default + "repoName": "pytorch/executorch", + "granularity": "hour", + "startTime": datetime(2025, 5, 23, 1, 1, 22), + "stopTime": datetime(2025, 6, 6, 1, 1, 22), + "branch": "main", + "commit": "098c58e1adc082ad98ffd6efb41151736fbc1a12" + } + dtypes = [""] + + payload = build_query_params(props, dtypes) + print("Query payload:") + print(json.dumps(payload, indent=2)) + + data = fetch_llm_data(payload) + df = process_records(data) + + df.to_csv("llm_benchmark_result.csv", index=False) + print(df.head()) + +if __name__ == "__main__": + main() diff --git a/.ci/scripts/benchmark_tooling/query_torch_analysis_data.py b/.ci/scripts/benchmark_tooling/query_torch_analysis_data.py new file mode 100644 index 00000000000..1cdaf0e3e53 --- /dev/null +++ b/.ci/scripts/benchmark_tooling/query_torch_analysis_data.py @@ -0,0 +1,94 @@ +import datetime +from pprint import pprint +from typing import Any +from dataclasses import dataclass, asdict +import json +import requests +from urllib.parse import urlencode +import argparse + +@dataclass +class BenchmarkQueryGroupDataParams: + repo: str + benchmark_name: str + start_time: str + end_time: str + group_table_by_fields: list + group_row_by_fields: list + +BASE_URLS = { + "local": "http://localhost:3000", + "prod": "https://hud.pytorch.org", +} + +def validate_iso8601_no_ms(value): + try: + # Only allow format without milliseconds + return datetime.datetime.strptime(value, "%Y-%m-%dT%H:%M:%S").strftime("%Y-%m-%dT%H:%M:%S") + except ValueError: + raise argparse.ArgumentTypeError( + f"Invalid datetime format for '{value}'. Expected: YYYY-MM-DDTHH:MM:SS" + ) + +def argparser(): + parser = argparse.ArgumentParser() + parser.add_argument( + "--env", choices=["local", "prod"], default="prod", help="Choose environment" + ) + parser.add_argument( + "--startTime", + type=validate_iso8601_no_ms, + required=True, + help="Start time in ISO format (e.g. 2025-06-01T00:00:00)", + ) + parser.add_argument( + "--endTime", + type=validate_iso8601_no_ms, + required=True, + help="End time in ISO format (e.g. 2025-06-06T00:00:00)", + ) + return parser.parse_args() + + +BASE_URLS = { + "local": "http://localhost:3000", + "prod": "https://hud.pytorch.org", +} + + +def fetch_execu_torch_data(startTime: str, endTime: str, env: str = 'prod'): + url = f"{BASE_URLS[env]}/api/benchmark/group_data/execuTorch" + # Convert back to string in the same format 2025-06-01T00:00:00 + start_time_str = startTime + end_time_str = endTime + + params_object = BenchmarkQueryGroupDataParams( + repo="pytorch/executorch", + benchmark_name="ExecuTorch", + start_time=start_time_str, + end_time=end_time_str, + group_table_by_fields=["device", "backend", "arch", "model"], + group_row_by_fields=["workflow_id", "job_id", "granularity_bucket"], + ) + + # Convert to JSON string + params = json.dumps(asdict(params_object)) + response = requests.get(url, params=params) + if response.status_code == 200: + print("Successfully fetched benchmark data") + resp = response.json() + print(f"fetched {len(resp)} table views") + print(f"peeking first table view, peeking.... {resp[0]} ") + else: + print(f"Failed to fetch benchmark data ({response.status_code})") + print(response.text) + + + + +def main(): + args = argparser() + fetch_execu_torch_data(args.startTime, args.endTime, args.env) + +if __name__ == "__main__": + main() diff --git a/.ci/scripts/benchmark_tooling/read_benchmark_data.py b/.ci/scripts/benchmark_tooling/read_benchmark_data.py new file mode 100644 index 00000000000..07ecedc9d06 --- /dev/null +++ b/.ci/scripts/benchmark_tooling/read_benchmark_data.py @@ -0,0 +1,83 @@ +import pandas as pd + +DEFAULT_ARCH_NAME = "All Platforms" +DEFAULT_DEVICE_NAME = "All Devices" +DEFAULT_MODE_NAME = "All Modes" +DEFAULT_MODEL_NAME = "All Models" +DEFAULT_BACKEND_NAME = "All Backends" + +EXCLUDED_METRICS = [ + "load_status", "mean_itl_ms", "mean_tpot_ms", "mean_ttft_ms", + "std_itl_ms", "std_tpot_ms", "std_ttft_ms", + "cold_compile_time(s)", "warm_compile_time(s)", + "speedup_pct", "generate_time(ms)" +] + +REPO_TO_BENCHMARKS = { + "pytorch/executorch": ["ExecuTorch"], + # 其他 repo 可继续加 +} + +from datetime import datetime + +def format_time(dt: datetime) -> str: + return dt.strftime("%Y-%m-%dT%H:%M:%S.%f")[:-3] + +from typing import Dict, Any + +def build_query_params(props: Dict[str, Any], dtypes: list) -> dict: + return { + "arch": "" if props["archName"] == DEFAULT_ARCH_NAME else props["archName"], + "device": "" if props["deviceName"] == DEFAULT_DEVICE_NAME else props["deviceName"], + "mode": "" if props["modeName"] == DEFAULT_MODE_NAME else props["modeName"], + "dtypes": dtypes, + "excludedMetrics": EXCLUDED_METRICS, + "benchmarks": [props["benchmarkName"]] if props.get("benchmarkName") else REPO_TO_BENCHMARKS.get(props["repoName"], []), + "granularity": props["granularity"], + "models": [] if props["modelName"] == DEFAULT_MODEL_NAME else [props["modelName"]], + "backends": [] if props["backendName"] == DEFAULT_BACKEND_NAME else [props["backendName"]], + "repo": props["repoName"], + "startTime": format_time(props["startTime"]), + "stopTime": format_time(props["stopTime"]), + } + +def flatten_record(record): + flat = { + "timestamp": record.get("metadata_info", {}).get("timestamp"), + "workflow_id": record.get("workflow_id"), + "job_id": record.get("job_id"), + "model": record.get("model"), + "backend": record.get("backend"), + "mode": record.get("mode"), + "dtype": record.get("dtype"), + "device": record.get("device"), + "arch": record.get("arch"), + "granularity_bucket": record.get("granularity_bucket"), + } + + # Flatten extra + if "extra" in record: + for k, v in record["extra"].items(): + flat[f"extra_{k}"] = v + + # Add metric-specific value + metric_name = record["metric"] + flat[metric_name] = record["actual"] + + return flat + +def process_records(data: list) -> pd.DataFrame: + flattened = [flatten_record(entry) for entry in data] + df = pd.DataFrame(flattened) + + # Group by workflow_id, job_id, timestamp + id_cols = [ + "timestamp", "workflow_id", "job_id", "model", "backend", "mode", "dtype", + "device", "arch", "granularity_bucket", + "extra_use_torch_compile", "extra_is_dynamic", + "extra_request_rate", "extra_tensor_parallel_size" + ] + + df = df.groupby(id_cols, dropna=False).first().reset_index() + + return df diff --git a/.ci/scripts/benchmark_tooling/requirements.txt b/.ci/scripts/benchmark_tooling/requirements.txt new file mode 100644 index 00000000000..d86a09d236e --- /dev/null +++ b/.ci/scripts/benchmark_tooling/requirements.txt @@ -0,0 +1 @@ +requests>=2.32.3 From 07896ea0826a4ffa10f0671552cac5780e83692b Mon Sep 17 00:00:00 2001 From: Yang Wang Date: Mon, 16 Jun 2025 17:20:05 -0700 Subject: [PATCH 02/46] final Signed-off-by: Yang Wang --- .ci/scripts/benchmark_tooling/README.md | 38 ++ .../execu_torch_read_data.py | 75 ---- .../query_torch_analysis_data.py | 94 ----- .../benchmark_tooling/read_benchamark_data.py | 395 ++++++++++++++++++ .../benchmark_tooling/read_benchmark_data.py | 83 ---- .../benchmark_tooling/requirements.txt | 2 + .../benchmark_tooling/res_private.xlsx | Bin 0 -> 19325 bytes .ci/scripts/benchmark_tooling/res_public.xlsx | Bin 0 -> 26216 bytes 8 files changed, 435 insertions(+), 252 deletions(-) create mode 100644 .ci/scripts/benchmark_tooling/README.md delete mode 100644 .ci/scripts/benchmark_tooling/execu_torch_read_data.py delete mode 100644 .ci/scripts/benchmark_tooling/query_torch_analysis_data.py create mode 100644 .ci/scripts/benchmark_tooling/read_benchamark_data.py delete mode 100644 .ci/scripts/benchmark_tooling/read_benchmark_data.py create mode 100644 .ci/scripts/benchmark_tooling/res_private.xlsx create mode 100644 .ci/scripts/benchmark_tooling/res_public.xlsx diff --git a/.ci/scripts/benchmark_tooling/README.md b/.ci/scripts/benchmark_tooling/README.md new file mode 100644 index 00000000000..995492c4bc9 --- /dev/null +++ b/.ci/scripts/benchmark_tooling/README.md @@ -0,0 +1,38 @@ +# Benchmark tooling +a lib providing tools for benchmarking +# read_benchmark_data.py +read benchmar data from HUD open api, the api returns grouped benchmark data based on execuTorch group values +## How to use it +install requirement packages +``` +pip install benchamrk_tooling/requirements.txt +``` + +### run script manually +the script has fixed list of group settings. +Notice startTime and endTime must be UTC datetime string: "yyyy-mm-ddThh:mm:ss" + +To run and display json format +```bash +python3 read_benchamark_data.py --startTime "2025-06-11T00:00:00" --endTime "2025-06-17T18:00:00" +``` + +To run and display df format +```bash +python3 read_benchamark_data.py --startTime "2025-06-11T00:00:00" --endTime "2025-06-17T18:00:00" --outputType 'df' +``` + +To run and generate execel sheets (this generated two excel file, one for private devices, and one for pulic devices): +``` +python3 read_benchamark_data.py --startTime "2025-06-11T00:00:00" --endTime "2025-06-17T18:00:00" --outputType 'excel' --excelDir "." + +``` + +To use the class as part your script +``` +fetcher = ExecutorchBenchmarkFetcher() +# must call run first +fetch.run() +private,public = fetcher.toDataFrame() + +``` diff --git a/.ci/scripts/benchmark_tooling/execu_torch_read_data.py b/.ci/scripts/benchmark_tooling/execu_torch_read_data.py deleted file mode 100644 index 0be8089bf24..00000000000 --- a/.ci/scripts/benchmark_tooling/execu_torch_read_data.py +++ /dev/null @@ -1,75 +0,0 @@ - -import requests -import pandas as pd -import json -from datetime import datetime -from read_benchmark_data import build_query_params - -def fetch_llm_data(payload: dict) -> list: - url = "https://hud.pytorch.org/api/clickhouse/oss_ci_benchmark_llms" - headers = {"Content-Type": "application/json"} - response = requests.post(url, headers=headers, data=json.dumps(payload)) - response.raise_for_status() - return response.json() - -def flatten_record(record): - flat = { - "timestamp": record.get("metadata_info", {}).get("timestamp"), - "workflow_id": record.get("workflow_id"), - "job_id": record.get("job_id"), - "model": record.get("model"), - "backend": record.get("backend"), - "mode": record.get("mode"), - "dtype": record.get("dtype"), - "device": record.get("device"), - "arch": record.get("arch"), - "granularity_bucket": record.get("granularity_bucket"), - } - if "extra" in record: - for k, v in record["extra"].items(): - flat[f"extra_{k}"] = v - metric_name = record["metric"] - flat[metric_name] = record["actual"] - return flat - -def process_records(data: list) -> pd.DataFrame: - flattened = [flatten_record(entry) for entry in data] - df = pd.DataFrame(flattened) - id_cols = [ - "timestamp", "workflow_id", "job_id", "model", "backend", "mode", "dtype", - "device", "arch", "granularity_bucket", - "extra_use_torch_compile", "extra_is_dynamic", - "extra_request_rate", "extra_tensor_parallel_size" - ] - df = df.groupby(id_cols, dropna=False).first().reset_index() - return df - -def main(): - props = { - "archName": "All Platforms", - "deviceName": "Samsung Galaxy S22 5G (private) (Android 13)", - "modeName": "inference", - "modelName": "mv3", - "backendName": "qnn_q8", - "benchmarkName": "", # fallback to repo default - "repoName": "pytorch/executorch", - "granularity": "hour", - "startTime": datetime(2025, 5, 23, 1, 1, 22), - "stopTime": datetime(2025, 6, 6, 1, 1, 22), - "branch": "main", - "commit": "098c58e1adc082ad98ffd6efb41151736fbc1a12" - } - dtypes = [""] - - payload = build_query_params(props, dtypes) - print("Query payload:") - print(json.dumps(payload, indent=2)) - - data = fetch_llm_data(payload) - df = process_records(data) - - df.to_csv("llm_benchmark_result.csv", index=False) - print(df.head()) - -if __name__ == "__main__": - main() diff --git a/.ci/scripts/benchmark_tooling/query_torch_analysis_data.py b/.ci/scripts/benchmark_tooling/query_torch_analysis_data.py deleted file mode 100644 index 1cdaf0e3e53..00000000000 --- a/.ci/scripts/benchmark_tooling/query_torch_analysis_data.py +++ /dev/null @@ -1,94 +0,0 @@ -import datetime -from pprint import pprint -from typing import Any -from dataclasses import dataclass, asdict -import json -import requests -from urllib.parse import urlencode -import argparse - -@dataclass -class BenchmarkQueryGroupDataParams: - repo: str - benchmark_name: str - start_time: str - end_time: str - group_table_by_fields: list - group_row_by_fields: list - -BASE_URLS = { - "local": "http://localhost:3000", - "prod": "https://hud.pytorch.org", -} - -def validate_iso8601_no_ms(value): - try: - # Only allow format without milliseconds - return datetime.datetime.strptime(value, "%Y-%m-%dT%H:%M:%S").strftime("%Y-%m-%dT%H:%M:%S") - except ValueError: - raise argparse.ArgumentTypeError( - f"Invalid datetime format for '{value}'. Expected: YYYY-MM-DDTHH:MM:SS" - ) - -def argparser(): - parser = argparse.ArgumentParser() - parser.add_argument( - "--env", choices=["local", "prod"], default="prod", help="Choose environment" - ) - parser.add_argument( - "--startTime", - type=validate_iso8601_no_ms, - required=True, - help="Start time in ISO format (e.g. 2025-06-01T00:00:00)", - ) - parser.add_argument( - "--endTime", - type=validate_iso8601_no_ms, - required=True, - help="End time in ISO format (e.g. 2025-06-06T00:00:00)", - ) - return parser.parse_args() - - -BASE_URLS = { - "local": "http://localhost:3000", - "prod": "https://hud.pytorch.org", -} - - -def fetch_execu_torch_data(startTime: str, endTime: str, env: str = 'prod'): - url = f"{BASE_URLS[env]}/api/benchmark/group_data/execuTorch" - # Convert back to string in the same format 2025-06-01T00:00:00 - start_time_str = startTime - end_time_str = endTime - - params_object = BenchmarkQueryGroupDataParams( - repo="pytorch/executorch", - benchmark_name="ExecuTorch", - start_time=start_time_str, - end_time=end_time_str, - group_table_by_fields=["device", "backend", "arch", "model"], - group_row_by_fields=["workflow_id", "job_id", "granularity_bucket"], - ) - - # Convert to JSON string - params = json.dumps(asdict(params_object)) - response = requests.get(url, params=params) - if response.status_code == 200: - print("Successfully fetched benchmark data") - resp = response.json() - print(f"fetched {len(resp)} table views") - print(f"peeking first table view, peeking.... {resp[0]} ") - else: - print(f"Failed to fetch benchmark data ({response.status_code})") - print(response.text) - - - - -def main(): - args = argparser() - fetch_execu_torch_data(args.startTime, args.endTime, args.env) - -if __name__ == "__main__": - main() diff --git a/.ci/scripts/benchmark_tooling/read_benchamark_data.py b/.ci/scripts/benchmark_tooling/read_benchamark_data.py new file mode 100644 index 00000000000..9a002fe18db --- /dev/null +++ b/.ci/scripts/benchmark_tooling/read_benchamark_data.py @@ -0,0 +1,395 @@ +import argparse +import json +from typing import Tuple, List, Any +import requests +from dataclasses import dataclass +from datetime import datetime +import pandas as pd +import logging +import os + +logging.basicConfig(level=logging.INFO) + +# Default private_device_matching_list +private_device_matching_list = [ + ["llama3", "qlora", "s22_5g", "android_13"], + ["llama3", "spinq", "s22_5g", "android_13"], + ["mv3", "qnn", "s22_5g", "android_13"], + ["mv3", "xnnpack_q8", "s22_5g", "android_13"], + ["llama3", "qlora", "s22_ultra_5g", "android_14"], + ["llama3", "spinq", "s22_ultra_5g", "android_14"], + ["mv3", "qnn", "s22_ultra_5g", "android_14"], + ["mv3", "xnnpack_q8", "s22_ultra_5g", "android_14"], + ["mv3", "xnnpack_q8", "pixel3_rooted", "android"], + ["llama3", "qlora", "iphone_15_pro_max", "ios_17"], + ["llama3", "spinq", "iphone_15_pro_max", "ios_17"], + ["mv3", "xnnpack_q8", "iphone_15_pro_max", "ios_17"], + ["mv3", "coreml", "iphone_15_pro_max", "ios_17"], + ["mv3", "mps", "iphone_15_pro_max", "ios_17"], + ["llama3", "qlora", "iphone_15", "ios_18.0"], + ["llama3", "spinq", "iphone_15", "ios_18.0"], + ["mv3", "xnnpack_q8", "iphone_15", "ios_18.0"], + ["mv3", "coreml", "iphone_15", "ios_18.0"], + ["mv3", "mps", "iphone_15", "ios_18.0"], +] + +# Default public_device_matching_list +public_device_matching_list = [ + ["llama3", "qlora", "s22_5g", "android_13"], + ["llama3", "spinq", "s22_5g", "android_13"], + ["mv3", "qnn", "s22_5g", "android_13"], + ["mv3", "xnnpack_q8", "s22_5g", "android_13"], + ["llama3", "spinq", "s22_5g", "android_12"], + ["llama3", "qlora", "s22_ultra_5g", "android"], + ["llama3", "spinq", "s22_ultra_5g", "android_12"], + ["mv3", "xnnpack_q8", "s22_ultra_5g", "android_12"], + ["mv3", "qnn", "s22_ultra_5g", "android_12"], + ["llama3", "qlora", "iphone_15_pro_max", "ios_17"], + ["llama3", "spinq", "iphone_15_pro_max", "ios_17"], + ["mv3", "xnnpack_q8", "iphone_15_pro_max", "ios_17"], + ["mv3", "coreml", "iphone_15_pro_max", "ios_17"], + ["mv3", "mps", "iphone_15_pro_max", "ios_17"], + ["llama3", "qlora", "iphone_15", "ios_18.0"], + ["llama3", "spinq", "iphone_15", "ios_18.0"], + ["mv3", "xnnpack_q8", "iphone_15", "ios_18.0"], + ["mv3", "coreml", "iphone_15", "ios_18.0"], + ["mv3", "mps", "iphone_15", "ios_18.0"], +] + +ABBREVIATIONS = { + "samsung": "smg", + "galaxy": "gx", + "ultra": "ul", + "android": "and", + "iphone": "ip", + "xnnpackq8": "xnnq8", +} + + +def abbreviate(s): + for full, abbr in ABBREVIATIONS.items(): + s = s.replace(full, abbr) + return s + + +@dataclass +class BenchmarkQueryGroupDataParams: + repo: str + benchmark_name: str + start_time: str + end_time: str + group_table_by_fields: list + group_row_by_fields: list + + +BASE_URLS = { + "local": "http://localhost:3000", + "prod": "https://hud.pytorch.org", +} + + +def validate_iso8601_no_ms(value): + try: + return datetime.strptime(value, "%Y-%m-%dT%H:%M:%S").strftime( + "%Y-%m-%dT%H:%M:%S" + ) + except ValueError: + raise argparse.ArgumentTypeError( + f"Invalid datetime format for '{value}'. Expected: YYYY-MM-DDTHH:MM:SS" + ) + + +def argparser(): + parser = argparse.ArgumentParser() + parser.add_argument( + "--env", choices=["local", "prod"], default="prod", help="Choose environment" + ) + parser.add_argument( + "--startTime", + type=validate_iso8601_no_ms, + required=True, + help="Start time in ISO format (e.g. 2025-06-01T00:00:00)", + ) + parser.add_argument( + "--endTime", + type=validate_iso8601_no_ms, + required=True, + help="End time in ISO format (e.g. 2025-06-06T00:00:00)", + ) + parser.add_argument( + "--silent", + action="store_true", + help="disable all loggings", + ) + parser.add_argument( + "--outputType", + choices=["json", "excel", "df"], + default="print", + help="Choose output type for your run", + ) + parser.add_argument( + "--outputDir", + default=".", + help="Only used when output-type is excel, default to current directory", + ) + + return parser.parse_args() + + +class ExecutorchBenchmarkFetcher: + """ + Fetch benchmark data from HUD + Usage: + fetcher = ExecutorchBenchmarkFetcher() + fetcher.get_data(start_time, end_time) + + fetcher.toDataFrame() -> return a list of dataframes, one for private devices, one for public devices + fetcher.toExcelSheet(output_dir=".") -> write to excel files, one for private devices, one for public devices + """ + + def __init__(self, env="prod", disable_logging=False): + self.env = env + self.base_url = self._get_base_url() + self.query_group_table_by_fields = ["device", "backend", "arch", "model"] + self.query_group_row_by_fields = ["workflow_id", "job_id", "granularity_bucket"] + self.data = None + self.disable_logging = disable_logging + self.results_private = [] + self.results_public = [] + + def run( + self, start_time, end_time, privateDeviceMatchings, publicDeviceMatchings + ) -> Tuple[List[Any], List[Any]]: + + self.data = self._fetch_data(start_time, end_time) + if not self.disable_logging: + self.print_all_names() + + if not self.disable_logging: + logging.info( + f"\n ========= Search tables specific for matching keywords ========= \n" + ) + self.results_private = self.find_target_tables(privateDeviceMatchings, True) + self.results_public = self.find_target_tables(publicDeviceMatchings, False) + + logging.info( + f"Found {len(self.results_private)} private device benchmark results, and {len(self.results_public)} public device benchmark results" + ) + return (self.results_private, self.results_public) + + def toDataFrame(self): + private_dfs = [ + {"groupInfo": item["groupInfo"], "df": pd.DataFrame(item["rows"])} + for item in self.results_private + ] + public_dfs = [ + {"groupInfo": item["groupInfo"], "df": pd.DataFrame(item["rows"])} + for item in self.results_public + ] + return (private_dfs, public_dfs) + + def toExcelSheet(self, output_dir="."): + if not os.path.exists(output_dir): + os.makedirs(output_dir) + logging.info(f"Created output directory: {output_dir}") + else: + logging.info(f"Using existing output directory: {output_dir}") + private_path = os.path.join(output_dir, "res_private.xlsx") + public_path = os.path.join(output_dir, "res_public.xlsx") + self._write_multi_sheet_excel(self.results_private, private_path) + self._write_multi_sheet_excel(self.results_public, public_path) + + def _write_multi_sheet_excel(self, data_list, output_path): + logging.info( + f"\n ========= Generate excel file with multiple sheets for {output_path}========= \n" + ) + with pd.ExcelWriter(output_path, engine="xlsxwriter") as writer: + for idx, entry in enumerate(data_list): + sheet_name = entry.get("short_name", f"sheet{idx+1}") + logging.info(f"sheet_name: {sheet_name} with length: {len(sheet_name)}") + if len(sheet_name) > 31: + logging.warning( + f"sheet name {sheet_name} is too long, truncating to 31 characters with prefix idx" + ) + sheet_name += f"{idx+1}_{sheet_name}" + sheet_name = sheet_name[:31] + rows = entry.get("rows", []) + + logging.info(f"Writing {sheet_name} to excel: {output_path}") + df = pd.DataFrame(rows) + df.to_excel(writer, sheet_name=sheet_name or "Sheet", index=False) + + def _fetch_data(self, start_time, end_time): + data = self._fetch_execu_torch_data(start_time, end_time) + if data is None: + return None + self.data = self._process(data) + return self.data + + def _get_base_url(self): + base_urls = { + "local": "http://localhost:3000", + "prod": "https://hud.pytorch.org", + } + return base_urls[self.env] + + def print_all_names(self): + if not self.data: + return + logging.info("peeking table result:") + logging.info(json.dumps(self.data[0], indent=2)) + public_ones = [ + item["table_name"] + for item in self.data + if item["groupInfo"]["aws_type"] == "public" + ] + private_ones = [ + item["table_name"] + for item in self.data + if item["groupInfo"]["aws_type"] == "private" + ] + # Print all found benchmark table names + logging.info( + f"\n============List all benchmark result table names (Public and Private) below =================\n" + ) + logging.info( + f"\n============ public device benchmark results({len(public_ones)})=================\n" + ) + for name in public_ones: + logging.info(name) + logging.info( + f"\n======= private device benchmark results({len(private_ones)})=======\n" + ) + for name in private_ones: + logging.info(name) + + def _process(self, data): + for item in data: + group = item.get("groupInfo", {}) + item["groupInfo"] = { + k: self.normalize_string(v) + for k, v in group.items() + if v is not None and isinstance(v, str) + } + name = ( + f"{group['model']}|{group['backend']}|{group['device']}|{group['arch']}" + ) + name = self.normalize_string(name) + item["table_name"] = name + if group.get("device", "").find("private") != -1: + item["groupInfo"]["aws_type"] = "private" + else: + item["groupInfo"]["aws_type"] = "public" + data.sort(key=lambda x: x["table_name"]) + logging.info(f"fetched {len(data)} table views") + return data + + def _fetch_execu_torch_data(self, start_time, end_time): + url = f"{self.base_url}/api/benchmark/group_data" + params_object = BenchmarkQueryGroupDataParams( + repo="pytorch/executorch", + benchmark_name="ExecuTorch", + start_time=start_time, + end_time=end_time, + group_table_by_fields=self.query_group_table_by_fields, + group_row_by_fields=self.query_group_row_by_fields, + ) + params = {k: v for k, v in params_object.__dict__.items() if v is not None} + response = requests.get(url, params=params) + if response.status_code == 200: + return response.json() + else: + logging.info(f"Failed to fetch benchmark data ({response.status_code})") + logging.info(response.text) + return None + + def generate_short_name(self, words, size): + shortKeys = [k.replace("_", "") for k in words] + s = "_".join(shortKeys) + if size > 0: + logging.warning( + f"we found more than one table matches the keywords, adding size to distinguish: {s}" + ) + s += s + "_" + str(size) + for full, abbr in ABBREVIATIONS.items(): + s = s.replace(full, abbr) + return s + + def find_target_tables(self, keywords, is_private) -> List[Any]: + if not self.data: + logging.info("No data found, please call get_data() first") + return [] + matchings = [] + results = {} + for keyword_list in keywords: + norm_keywords = [kw.lower().replace(" ", "_") for kw in keyword_list] + match = [] + for item in self.data: + key = item.get("table_name", "") + if not key: + continue + if all(kw in key for kw in norm_keywords): + is_item_private = ( + item.get("groupInfo", {}).get("aws_type", "") == "private" + ) + if is_private is not is_item_private: + continue + item["short_name"] = self.generate_short_name( + norm_keywords, len(match) + ) + match.append(key) + # avoid duplicates + results[key] = item + matchings.append((keyword_list, match)) + if not self.disable_logging: + logging.info( + f"\n============ MATCHING Found results: {len(results)}=========\n" + ) + for keywords, match in matchings: + logging.info(f"Keywords: {keywords}: matchings: {match}") + return list(results.values()) + + def normalize_string(self, s, replace="_"): + return s.lower().replace(" ", replace) + + +if __name__ == "__main__": + args = argparser() + fetcher = ExecutorchBenchmarkFetcher(args.env, args.silent) + private, public = fetcher.run( + args.startTime, + args.endTime, + private_device_matching_list, + public_device_matching_list, + ) + + if args.outputType == "df": + private, public = fetcher.toDataFrame() + logging.info( + f"=====================Printing private device benchmark results in dataframe=====================" + ) + for item in private: + logging.info(item["groupInfo"]) + logging.info(item["df"]) + logging.info("\n") + logging.info( + f"======================Printing public device benchmark results in dataframe=====================" + ) + for item in public: + logging.info(item["groupInfo"]) + logging.info(item["df"]) + logging.info("\n") + elif args.outputType == "excel": + logging.info( + f"Writing benchmark results to excel file: {args.outputDir}/res_private.xlsx" + ) + fetcher.toExcelSheet(args.outputDir) + else: + logging.info( + f"======================Printing private device benchmark results in json format======================" + ) + print(json.dumps(private, indent=2)) + logging.info( + f"======================Printing public device benchmark results in json format======================" + ) + print(json.dumps(public, indent=2)) diff --git a/.ci/scripts/benchmark_tooling/read_benchmark_data.py b/.ci/scripts/benchmark_tooling/read_benchmark_data.py deleted file mode 100644 index 07ecedc9d06..00000000000 --- a/.ci/scripts/benchmark_tooling/read_benchmark_data.py +++ /dev/null @@ -1,83 +0,0 @@ -import pandas as pd - -DEFAULT_ARCH_NAME = "All Platforms" -DEFAULT_DEVICE_NAME = "All Devices" -DEFAULT_MODE_NAME = "All Modes" -DEFAULT_MODEL_NAME = "All Models" -DEFAULT_BACKEND_NAME = "All Backends" - -EXCLUDED_METRICS = [ - "load_status", "mean_itl_ms", "mean_tpot_ms", "mean_ttft_ms", - "std_itl_ms", "std_tpot_ms", "std_ttft_ms", - "cold_compile_time(s)", "warm_compile_time(s)", - "speedup_pct", "generate_time(ms)" -] - -REPO_TO_BENCHMARKS = { - "pytorch/executorch": ["ExecuTorch"], - # 其他 repo 可继续加 -} - -from datetime import datetime - -def format_time(dt: datetime) -> str: - return dt.strftime("%Y-%m-%dT%H:%M:%S.%f")[:-3] - -from typing import Dict, Any - -def build_query_params(props: Dict[str, Any], dtypes: list) -> dict: - return { - "arch": "" if props["archName"] == DEFAULT_ARCH_NAME else props["archName"], - "device": "" if props["deviceName"] == DEFAULT_DEVICE_NAME else props["deviceName"], - "mode": "" if props["modeName"] == DEFAULT_MODE_NAME else props["modeName"], - "dtypes": dtypes, - "excludedMetrics": EXCLUDED_METRICS, - "benchmarks": [props["benchmarkName"]] if props.get("benchmarkName") else REPO_TO_BENCHMARKS.get(props["repoName"], []), - "granularity": props["granularity"], - "models": [] if props["modelName"] == DEFAULT_MODEL_NAME else [props["modelName"]], - "backends": [] if props["backendName"] == DEFAULT_BACKEND_NAME else [props["backendName"]], - "repo": props["repoName"], - "startTime": format_time(props["startTime"]), - "stopTime": format_time(props["stopTime"]), - } - -def flatten_record(record): - flat = { - "timestamp": record.get("metadata_info", {}).get("timestamp"), - "workflow_id": record.get("workflow_id"), - "job_id": record.get("job_id"), - "model": record.get("model"), - "backend": record.get("backend"), - "mode": record.get("mode"), - "dtype": record.get("dtype"), - "device": record.get("device"), - "arch": record.get("arch"), - "granularity_bucket": record.get("granularity_bucket"), - } - - # Flatten extra - if "extra" in record: - for k, v in record["extra"].items(): - flat[f"extra_{k}"] = v - - # Add metric-specific value - metric_name = record["metric"] - flat[metric_name] = record["actual"] - - return flat - -def process_records(data: list) -> pd.DataFrame: - flattened = [flatten_record(entry) for entry in data] - df = pd.DataFrame(flattened) - - # Group by workflow_id, job_id, timestamp - id_cols = [ - "timestamp", "workflow_id", "job_id", "model", "backend", "mode", "dtype", - "device", "arch", "granularity_bucket", - "extra_use_torch_compile", "extra_is_dynamic", - "extra_request_rate", "extra_tensor_parallel_size" - ] - - df = df.groupby(id_cols, dropna=False).first().reset_index() - - return df diff --git a/.ci/scripts/benchmark_tooling/requirements.txt b/.ci/scripts/benchmark_tooling/requirements.txt index d86a09d236e..5dd88532b6e 100644 --- a/.ci/scripts/benchmark_tooling/requirements.txt +++ b/.ci/scripts/benchmark_tooling/requirements.txt @@ -1 +1,3 @@ requests>=2.32.3 +xlsxwriter>=3.2.3 +pandas>=2.3.0 diff --git a/.ci/scripts/benchmark_tooling/res_private.xlsx b/.ci/scripts/benchmark_tooling/res_private.xlsx new file mode 100644 index 0000000000000000000000000000000000000000..8e58c76a25eb8bb44fef63be7d521bae1d54abab GIT binary patch literal 19325 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 G|NaLYROD{} literal 0 HcmV?d00001 From 79f7788f0f6c976796c6cd5029121e09bb7cd794 Mon Sep 17 00:00:00 2001 From: Yang Wang Date: Mon, 16 Jun 2025 17:21:05 -0700 Subject: [PATCH 03/46] final Signed-off-by: Yang Wang --- .ci/scripts/benchmark_tooling/res_private.xlsx | Bin 19325 -> 0 bytes .ci/scripts/benchmark_tooling/res_public.xlsx | Bin 26216 -> 0 bytes 2 files changed, 0 insertions(+), 0 deletions(-) delete mode 100644 .ci/scripts/benchmark_tooling/res_private.xlsx delete mode 100644 .ci/scripts/benchmark_tooling/res_public.xlsx diff --git a/.ci/scripts/benchmark_tooling/res_private.xlsx b/.ci/scripts/benchmark_tooling/res_private.xlsx deleted file mode 100644 index 8e58c76a25eb8bb44fef63be7d521bae1d54abab..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 19325 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 G|NaLYROD{} From 101d631689647e86cdb150758aaa8c3d43054609 Mon Sep 17 00:00:00 2001 From: Yang Wang Date: Mon, 16 Jun 2025 17:42:04 -0700 Subject: [PATCH 04/46] final Signed-off-by: Yang Wang --- .ci/scripts/benchmark_tooling/README.md | 49 +++-- .ci/scripts/benchmark_tooling/__init__.py | 0 ...data.py => get_benchmark_analysis_data.py} | 175 +++++++++++++++--- .../benchmark_tooling/res_private.xlsx | Bin 0 -> 19326 bytes .ci/scripts/benchmark_tooling/res_public.xlsx | Bin 0 -> 26217 bytes .../benchmark_tooling/~$res_private.xlsx | Bin 0 -> 165 bytes 6 files changed, 173 insertions(+), 51 deletions(-) create mode 100644 .ci/scripts/benchmark_tooling/__init__.py rename .ci/scripts/benchmark_tooling/{read_benchamark_data.py => get_benchmark_analysis_data.py} (71%) create mode 100644 .ci/scripts/benchmark_tooling/res_private.xlsx create mode 100644 .ci/scripts/benchmark_tooling/res_public.xlsx create mode 100644 .ci/scripts/benchmark_tooling/~$res_private.xlsx diff --git a/.ci/scripts/benchmark_tooling/README.md b/.ci/scripts/benchmark_tooling/README.md index 995492c4bc9..b81a2eaee25 100644 --- a/.ci/scripts/benchmark_tooling/README.md +++ b/.ci/scripts/benchmark_tooling/README.md @@ -1,38 +1,35 @@ -# Benchmark tooling -a lib providing tools for benchmarking -# read_benchmark_data.py -read benchmar data from HUD open api, the api returns grouped benchmark data based on execuTorch group values -## How to use it -install requirement packages -``` -pip install benchamrk_tooling/requirements.txt -``` +# Benchmark Tooling + +A library providing tools for benchmarking ExecutorchBenchmark data. -### run script manually -the script has fixed list of group settings. -Notice startTime and endTime must be UTC datetime string: "yyyy-mm-ddThh:mm:ss" +## Read Benchmark Data +`get_benchmark_analysis_data.py` fetches benchmark data from HUD Open API and processes it, grouping metrics by private and public devices. -To run and display json format +### Quick Start + +Install dependencies: ```bash -python3 read_benchamark_data.py --startTime "2025-06-11T00:00:00" --endTime "2025-06-17T18:00:00" +pip install -r requirements.txt ``` -To run and display df format +Run with default output (CLI): ```bash -python3 read_benchamark_data.py --startTime "2025-06-11T00:00:00" --endTime "2025-06-17T18:00:00" --outputType 'df' +python3 get_benchmark_analysis_data.py --startTime "2025-06-11T00:00:00" --endTime "2025-06-17T18:00:00" ``` -To run and generate execel sheets (this generated two excel file, one for private devices, and one for pulic devices): -``` -python3 read_benchamark_data.py --startTime "2025-06-11T00:00:00" --endTime "2025-06-17T18:00:00" --outputType 'excel' --excelDir "." +Additional options: +- `--silent`: Hide processing logs, show only results +- `--outputType df`: Display results in DataFrame format +- `--outputType excel --excelDir "{YOUR_LOCAL_DIRECTORY}"`: Generate Excel files (`res_private.xlsx` and `res_public.xlsx`) -``` +### Python API Usage -To use the class as part your script -``` -fetcher = ExecutorchBenchmarkFetcher() -# must call run first -fetch.run() -private,public = fetcher.toDataFrame() +To use the benchmark fetcher in your own scripts: +```python +import ExecutorchBenchmarkFetcher from benchmark_tooling.get_benchmark_analysis_data +fetcher = ExecutorchBenchmarkFetcher() +# Must call run first +fetcher.run() +private, public = fetcher.to_df() ``` diff --git a/.ci/scripts/benchmark_tooling/__init__.py b/.ci/scripts/benchmark_tooling/__init__.py new file mode 100644 index 00000000000..e69de29bb2d diff --git a/.ci/scripts/benchmark_tooling/read_benchamark_data.py b/.ci/scripts/benchmark_tooling/get_benchmark_analysis_data.py similarity index 71% rename from .ci/scripts/benchmark_tooling/read_benchamark_data.py rename to .ci/scripts/benchmark_tooling/get_benchmark_analysis_data.py index 9a002fe18db..642a8299777 100644 --- a/.ci/scripts/benchmark_tooling/read_benchamark_data.py +++ b/.ci/scripts/benchmark_tooling/get_benchmark_analysis_data.py @@ -1,12 +1,13 @@ import argparse import json -from typing import Tuple, List, Any -import requests +import logging +import os from dataclasses import dataclass from datetime import datetime +from typing import Any, Dict, List, Optional, Tuple + import pandas as pd -import logging -import os +import requests logging.basicConfig(level=logging.INFO) @@ -56,6 +57,9 @@ ["mv3", "mps", "iphone_15", "ios_18.0"], ] + +# The abbreviations used to generate the short name for the benchmark result table +# this is used to avoid the long table name issue when generating excel file (<=31 characters) ABBREVIATIONS = { "samsung": "smg", "galaxy": "gx", @@ -65,7 +69,6 @@ "xnnpackq8": "xnnq8", } - def abbreviate(s): for full, abbr in ABBREVIATIONS.items(): s = s.replace(full, abbr) @@ -138,29 +141,74 @@ def argparser(): class ExecutorchBenchmarkFetcher: """ - Fetch benchmark data from HUD + Fetch and process benchmark data from HUD API for ExecutorchBenchmark. + Usage: fetcher = ExecutorchBenchmarkFetcher() - fetcher.get_data(start_time, end_time) - - fetcher.toDataFrame() -> return a list of dataframes, one for private devices, one for public devices - fetcher.toExcelSheet(output_dir=".") -> write to excel files, one for private devices, one for public devices + fetcher.run(start_time, end_time, private_device_matching_list, public_device_matching_list) + # Convert results to DataFrames + private_dfs, public_dfs = fetcher.to_df() + # Export results to Excel files + fetcher.to_excel(output_dir=".") """ - def __init__(self, env="prod", disable_logging=False): + def __init__( + self, + env="prod", + disable_logging=False, + group_table_fields=None, + group_row_fields=None, + ): + """ + Initialize the ExecutorchBenchmarkFetcher. + + Args: + env: Environment to use ("local" or "prod") + disable_logging: Whether to suppress log output + group_table_fields: Custom fields to group tables by (defaults to device, backend, arch, model) + group_row_fields: Custom fields to group rows by (defaults to workflow_id, job_id, granularity_bucket) + """ self.env = env self.base_url = self._get_base_url() - self.query_group_table_by_fields = ["device", "backend", "arch", "model"] - self.query_group_row_by_fields = ["workflow_id", "job_id", "granularity_bucket"] + self.query_group_table_by_fields = ( + group_table_fields + if group_table_fields + else ["device", "backend", "arch", "model"] + ) + self.query_group_row_by_fields = ( + group_row_fields + if group_row_fields + else ["workflow_id", "job_id", "granularity_bucket"] + ) self.data = None self.disable_logging = disable_logging self.results_private = [] self.results_public = [] def run( - self, start_time, end_time, privateDeviceMatchings, publicDeviceMatchings - ) -> Tuple[List[Any], List[Any]]: - + self, + start_time: str, + end_time: str, + privateDeviceMatchings: List[List[str]], + publicDeviceMatchings: List[List[str]], + ) -> Tuple[List[Dict[str, Any]], List[Dict[str, Any]]]: + """ + Execute the benchmark data fetching and processing workflow. + + This method orchestrates the entire process: + 1. Fetches raw data from the HUD API for the specified time range + 2. Processes and normalizes the data + 3. Filters results based on device matching criteria for both private and public devices + + Args: + start_time: ISO8601 formatted start time (YYYY-MM-DDTHH:MM:SS) + end_time: ISO8601 formatted end time (YYYY-MM-DDTHH:MM:SS) + privateDeviceMatchings: List of keyword lists for matching private devices + publicDeviceMatchings: List of keyword lists for matching public devices + + Returns: + Tuple containing (private_device_results, public_device_results) + """ self.data = self._fetch_data(start_time, end_time) if not self.disable_logging: self.print_all_names() @@ -177,7 +225,17 @@ def run( ) return (self.results_private, self.results_public) - def toDataFrame(self): + def to_df(self) -> Tuple[Any, Any]: + """ + Convert benchmark results to pandas DataFrames. + + Transforms the raw benchmark results into DataFrames for easier analysis + and manipulation. + + Returns: + Tuple containing (private_device_dataframes, public_device_dataframes) + Each item is a list of dictionaries with 'groupInfo' and 'df' keys + """ private_dfs = [ {"groupInfo": item["groupInfo"], "df": pd.DataFrame(item["rows"])} for item in self.results_private @@ -188,7 +246,19 @@ def toDataFrame(self): ] return (private_dfs, public_dfs) - def toExcelSheet(self, output_dir="."): + def to_excel(self, output_dir: str = ".") -> None: + """ + Export benchmark results to Excel files. + + Creates two Excel files: + - res_private.xlsx: Results for private devices + - res_public.xlsx: Results for public devices + + Each file contains multiple sheets, one per benchmark configuration. + + Args: + output_dir: Directory to save Excel files + """ if not os.path.exists(output_dir): os.makedirs(output_dir) logging.info(f"Created output directory: {output_dir}") @@ -199,7 +269,19 @@ def toExcelSheet(self, output_dir="."): self._write_multi_sheet_excel(self.results_private, private_path) self._write_multi_sheet_excel(self.results_public, public_path) - def _write_multi_sheet_excel(self, data_list, output_path): + def _write_multi_sheet_excel( + self, data_list: List[Dict[str, Any]], output_path: str + ) -> None: + """ + Write multiple benchmark results to sheets in an Excel file. + + Creates an Excel file with multiple sheets, one for each benchmark configuration. + Handles sheet name length limitations and truncates names if necessary. + + Args: + data_list: List of benchmark result dictionaries + output_path: Path to save the Excel file + """ logging.info( f"\n ========= Generate excel file with multiple sheets for {output_path}========= \n" ) @@ -219,21 +301,45 @@ def _write_multi_sheet_excel(self, data_list, output_path): df = pd.DataFrame(rows) df.to_excel(writer, sheet_name=sheet_name or "Sheet", index=False) - def _fetch_data(self, start_time, end_time): + def _fetch_data( + self, start_time: str, end_time: str + ) -> Optional[List[Dict[str, Any]]]: + """ + Fetch and process benchmark data for the specified time range. + + Args: + start_time: ISO8601 formatted start time + end_time: ISO8601 formatted end time + + Returns: + Processed benchmark data or None if fetch failed + """ data = self._fetch_execu_torch_data(start_time, end_time) if data is None: return None self.data = self._process(data) return self.data - def _get_base_url(self): + def _get_base_url(self) -> str: + """ + Get the base URL for API requests based on environment. + + Returns: + Base URL string for the configured environment + """ base_urls = { "local": "http://localhost:3000", "prod": "https://hud.pytorch.org", } return base_urls[self.env] - def print_all_names(self): + def print_all_names(self) -> None: + """ + Print all benchmark table names found in the data. + + Separates results by device type (public/private) and displays counts. + This is useful for debugging and understanding what data is available. + """ if not self.data: return logging.info("peeking table result:") @@ -263,7 +369,22 @@ def print_all_names(self): for name in private_ones: logging.info(name) - def _process(self, data): + def _process(self, data: List[Dict[str, Any]]) -> List[Dict[str, Any]]: + """ + Process raw benchmark data. + + This method: + 1. Normalizes string values in groupInfo + 2. Creates table_name from group info components + 3. Determines aws_type (public/private) based on device name + 4. Sorts results by table_name + + Args: + data: Raw benchmark data from API + + Returns: + Processed benchmark data + """ for item in data: group = item.get("groupInfo", {}) item["groupInfo"] = { @@ -275,11 +396,15 @@ def _process(self, data): f"{group['model']}|{group['backend']}|{group['device']}|{group['arch']}" ) name = self.normalize_string(name) + # Add full name joined by the group key fields item["table_name"] = name + + # Mark aws_type: private or public if group.get("device", "").find("private") != -1: item["groupInfo"]["aws_type"] = "private" else: item["groupInfo"]["aws_type"] = "public" + # Sort by table name data.sort(key=lambda x: x["table_name"]) logging.info(f"fetched {len(data)} table views") return data @@ -364,7 +489,7 @@ def normalize_string(self, s, replace="_"): ) if args.outputType == "df": - private, public = fetcher.toDataFrame() + private, public = fetcher.to_df() logging.info( f"=====================Printing private device benchmark results in dataframe=====================" ) @@ -383,7 +508,7 @@ def normalize_string(self, s, replace="_"): logging.info( f"Writing benchmark results to excel file: {args.outputDir}/res_private.xlsx" ) - fetcher.toExcelSheet(args.outputDir) + fetcher.to_excel(args.outputDir) else: logging.info( f"======================Printing private device benchmark results in json format======================" diff --git a/.ci/scripts/benchmark_tooling/res_private.xlsx b/.ci/scripts/benchmark_tooling/res_private.xlsx new file mode 100644 index 0000000000000000000000000000000000000000..a53b56512a1e0e94f6e77959aaff618f662ea32c GIT binary patch literal 19326 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 W1s&kc$_7#)283sTz27;mARYi_()Mfs literal 0 HcmV?d00001 diff --git a/.ci/scripts/benchmark_tooling/res_public.xlsx b/.ci/scripts/benchmark_tooling/res_public.xlsx new file mode 100644 index 0000000000000000000000000000000000000000..0df3a963ae1ee538a12d55397cb0ef8dcdfb830a GIT binary patch literal 26217 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

3Nj z_r55*+m@|C-ek%P*bKzp1~SD&b=a5_42Z zQM>S!a-xsC*n9P=Sd7c~c#Ms;8c*JAKFc0cej#(f6E$?mH5%gsMsRBE1+*=^GRm5^ z+FuL59~*{GR?jd&zqgdySL2*m(yhpbKUannW)3HS%=!phN zeUA^>u|EhUDxAOTiFMibi#e07Y9{efMvEneR=p_Mb>R2om;I@}9ge)Vo-jRVf^4>X zSCOWUDW!qY`#G5A0y7vkoi^WMo;`QeVhS{=pl;o+n2QYZX@J+NGJ8SCAEacRb7B@3 zr5-}5I)<65jGjDiFaQU1<@iho%vC?43CCH=Q2Y98cu};b@j$0+Nm;01ym5F|#B)d^ zs(!1c@wlmfxjv~PiS_=tQRX1iDcd2A$Yl1b@6`Qg*~unhcif;s@uOSmOwH6^6Q8&& zLqM=`XnK+;PKV8j*VKttOyuI;sO(;f@j>ZK86w|CMI%Q4zqjNgG;;Oh_xjJD8+PU+ z1CY10{}qmc;`h24p}W8BY)1}6US@tBID&Wq{NJn1kvYigxUV@{h%+Dv&W+2tktxWF zQ?Dt9*f&zHMv{;z$ZPGcDXEAz+6~|3YAytsg1js0ni5HJBju_mk4!<{s&Y-qLpbOg zzROj26Pbd16#kkbNOvRUszZcKK|Zp0O_^l5k#bd_N2Va3>$#?!-oKG@RV78HAkWHQ zQ?__-q+CtTBU6y4kFP1;AKpmextc{r#vqSvUSoD1-Hf?PbdWK~Gj!LO&w@8&Zj>+b zB-1s Date: Mon, 16 Jun 2025 17:42:22 -0700 Subject: [PATCH 05/46] final Signed-off-by: Yang Wang --- .ci/scripts/benchmark_tooling/res_private.xlsx | Bin 19326 -> 0 bytes .ci/scripts/benchmark_tooling/res_public.xlsx | Bin 26217 -> 0 bytes 2 files changed, 0 insertions(+), 0 deletions(-) delete mode 100644 .ci/scripts/benchmark_tooling/res_private.xlsx delete mode 100644 .ci/scripts/benchmark_tooling/res_public.xlsx diff --git a/.ci/scripts/benchmark_tooling/res_private.xlsx b/.ci/scripts/benchmark_tooling/res_private.xlsx deleted file mode 100644 index a53b56512a1e0e94f6e77959aaff618f662ea32c..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 19326 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 W1s&kc$_7#)283sTz27;mARYi_()Mfs diff --git a/.ci/scripts/benchmark_tooling/res_public.xlsx b/.ci/scripts/benchmark_tooling/res_public.xlsx deleted file mode 100644 index 0df3a963ae1ee538a12d55397cb0ef8dcdfb830a..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 26217 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

3Nj z_r55*+m@|C-ek%P*bKzp1~SD&b=a5_42Z zQM>S!a-xsC*n9P=Sd7c~c#Ms;8c*JAKFc0cej#(f6E$?mH5%gsMsRBE1+*=^GRm5^ z+FuL59~*{GR?jd&zqgdySL2*m(yhpbKUannW)3HS%=!phN zeUA^>u|EhUDxAOTiFMibi#e07Y9{efMvEneR=p_Mb>R2om;I@}9ge)Vo-jRVf^4>X zSCOWUDW!qY`#G5A0y7vkoi^WMo;`QeVhS{=pl;o+n2QYZX@J+NGJ8SCAEacRb7B@3 zr5-}5I)<65jGjDiFaQU1<@iho%vC?43CCH=Q2Y98cu};b@j$0+Nm;01ym5F|#B)d^ zs(!1c@wlmfxjv~PiS_=tQRX1iDcd2A$Yl1b@6`Qg*~unhcif;s@uOSmOwH6^6Q8&& zLqM=`XnK+;PKV8j*VKttOyuI;sO(;f@j>ZK86w|CMI%Q4zqjNgG;;Oh_xjJD8+PU+ z1CY10{}qmc;`h24p}W8BY)1}6US@tBID&Wq{NJn1kvYigxUV@{h%+Dv&W+2tktxWF zQ?Dt9*f&zHMv{;z$ZPGcDXEAz+6~|3YAytsg1js0ni5HJBju_mk4!<{s&Y-qLpbOg zzROj26Pbd16#kkbNOvRUszZcKK|Zp0O_^l5k#bd_N2Va3>$#?!-oKG@RV78HAkWHQ zQ?__-q+CtTBU6y4kFP1;AKpmextc{r#vqSvUSoD1-Hf?PbdWK~Gj!LO&w@8&Zj>+b zB-1s Date: Mon, 16 Jun 2025 17:42:34 -0700 Subject: [PATCH 06/46] final Signed-off-by: Yang Wang --- .ci/scripts/benchmark_tooling/~$res_private.xlsx | Bin 165 -> 0 bytes 1 file changed, 0 insertions(+), 0 deletions(-) delete mode 100644 .ci/scripts/benchmark_tooling/~$res_private.xlsx diff --git a/.ci/scripts/benchmark_tooling/~$res_private.xlsx b/.ci/scripts/benchmark_tooling/~$res_private.xlsx deleted file mode 100644 index fa6fcc63a2e553318c80b11e4a71d2cfc746bc2e..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 165 lcmd;#Ow3DH2nP|Q08WNThD3%uhI9r6hHyAb0m!2T1OP$m5z7Do From 1da3e8746e7398991721da8c3c5354e6ea71fcda Mon Sep 17 00:00:00 2001 From: Yang Wang Date: Mon, 16 Jun 2025 18:02:28 -0700 Subject: [PATCH 07/46] final Signed-off-by: Yang Wang --- .../get_benchmark_analysis_data.py | 24 ++++++++++--------- 1 file changed, 13 insertions(+), 11 deletions(-) diff --git a/.ci/scripts/benchmark_tooling/get_benchmark_analysis_data.py b/.ci/scripts/benchmark_tooling/get_benchmark_analysis_data.py index 642a8299777..08822c62332 100644 --- a/.ci/scripts/benchmark_tooling/get_benchmark_analysis_data.py +++ b/.ci/scripts/benchmark_tooling/get_benchmark_analysis_data.py @@ -68,7 +68,6 @@ "iphone": "ip", "xnnpackq8": "xnnq8", } - def abbreviate(s): for full, abbr in ABBREVIATIONS.items(): s = s.replace(full, abbr) @@ -205,7 +204,6 @@ def run( end_time: ISO8601 formatted end time (YYYY-MM-DDTHH:MM:SS) privateDeviceMatchings: List of keyword lists for matching private devices publicDeviceMatchings: List of keyword lists for matching public devices - Returns: Tuple containing (private_device_results, public_device_results) """ @@ -369,6 +367,10 @@ def print_all_names(self) -> None: for name in private_ones: logging.info(name) + def _generate_table_name(self, group_info:dict, fields: list[str]) -> str: + name = "|".join(group_info[k] for k in fields if k in group_info and group_info[k]) + return self.normalize_string(name) + def _process(self, data: List[Dict[str, Any]]) -> List[Dict[str, Any]]: """ Process raw benchmark data. @@ -386,16 +388,15 @@ def _process(self, data: List[Dict[str, Any]]) -> List[Dict[str, Any]]: Processed benchmark data """ for item in data: - group = item.get("groupInfo", {}) + # normalized string values in groupInfo item["groupInfo"] = { k: self.normalize_string(v) - for k, v in group.items() + for k, v in item.get("groupInfo", {}).items() if v is not None and isinstance(v, str) } - name = ( - f"{group['model']}|{group['backend']}|{group['device']}|{group['arch']}" - ) - name = self.normalize_string(name) + group = item.get("groupInfo", {}) + name = self._generate_table_name(group, self.query_group_table_by_fields) + # Add full name joined by the group key fields item["table_name"] = name @@ -404,7 +405,7 @@ def _process(self, data: List[Dict[str, Any]]) -> List[Dict[str, Any]]: item["groupInfo"]["aws_type"] = "private" else: item["groupInfo"]["aws_type"] = "public" - # Sort by table name + data.sort(key=lambda x: x["table_name"]) logging.info(f"fetched {len(data)} table views") return data @@ -458,12 +459,13 @@ def find_target_tables(self, keywords, is_private) -> List[Any]: item.get("groupInfo", {}).get("aws_type", "") == "private" ) if is_private is not is_item_private: - continue + continue # skip if not matching private/public device + + # generate short name for each table data item["short_name"] = self.generate_short_name( norm_keywords, len(match) ) match.append(key) - # avoid duplicates results[key] = item matchings.append((keyword_list, match)) if not self.disable_logging: From 2f604a0e806e261bb9ccc54ecf805a08fe2e8a5c Mon Sep 17 00:00:00 2001 From: Yang Wang Date: Tue, 17 Jun 2025 10:58:51 -0700 Subject: [PATCH 08/46] final Signed-off-by: Yang Wang --- .../get_benchmark_analysis_data.py | 93 ++++++++++++++++--- 1 file changed, 82 insertions(+), 11 deletions(-) diff --git a/.ci/scripts/benchmark_tooling/get_benchmark_analysis_data.py b/.ci/scripts/benchmark_tooling/get_benchmark_analysis_data.py index 08822c62332..25ea36e9120 100644 --- a/.ci/scripts/benchmark_tooling/get_benchmark_analysis_data.py +++ b/.ci/scripts/benchmark_tooling/get_benchmark_analysis_data.py @@ -68,6 +68,8 @@ "iphone": "ip", "xnnpackq8": "xnnq8", } + + def abbreviate(s): for full, abbr in ABBREVIATIONS.items(): s = s.replace(full, abbr) @@ -125,14 +127,14 @@ def argparser(): ) parser.add_argument( "--outputType", - choices=["json", "excel", "df"], + choices=["json", "excel", "df", "csv"], default="print", help="Choose output type for your run", ) parser.add_argument( "--outputDir", default=".", - help="Only used when output-type is excel, default to current directory", + help="Only used when output-type is excel and csv, default to current directory", ) return parser.parse_args() @@ -252,7 +254,7 @@ def to_excel(self, output_dir: str = ".") -> None: - res_private.xlsx: Results for private devices - res_public.xlsx: Results for public devices - Each file contains multiple sheets, one per benchmark configuration. + Each file contains multiple sheets, one per benchmark configuration for private and public. Args: output_dir: Directory to save Excel files @@ -299,6 +301,66 @@ def _write_multi_sheet_excel( df = pd.DataFrame(rows) df.to_excel(writer, sheet_name=sheet_name or "Sheet", index=False) + def to_csv(self, output_dir: str = ".") -> None: + """ + Export benchmark results to CSV files. + + Creates two CSV files: + - res_private.csv: Results for private devices + - res_public.csv: Results for public devices + + Each file contains multiple CSV files, one per benchmark configuration for private and public. + + Args: + output_dir: Directory to save CSV files + """ + if not os.path.exists(output_dir): + os.makedirs(output_dir) + logging.info(f"Created output directory: {output_dir}") + else: + logging.info(f"Using existing output directory: {output_dir}") + private_path = os.path.join(output_dir, "private/") + public_path = os.path.join(output_dir, "public") + self._write_multiple_csv_files( + self.results_private, private_path, file_prefix="private_" + ) + self._write_multiple_csv_files( + self.results_public, public_path, file_prefix="public_" + ) + + def _write_multiple_csv_files( + self, data_list: List[Dict[str, Any]], output_dir: str, file_prefix="" + ) -> None: + """ + Write multiple benchmark results to separate CSV files. + + Each entry in `data_list` becomes its own CSV file. + + Args: + data_list: List of benchmark result dictionaries + output_dir: Directory to save the CSV files + """ + os.makedirs(output_dir, exist_ok=True) + logging.info( + f"\n ========= Generating multiple CSV files in {output_dir} ========= \n" + ) + for idx, entry in enumerate(data_list): + file_name = entry.get("short_name", f"file{idx+1}") + + if file_prefix: + file_name = file_prefix + file_name + if len(file_name) > 100: + logging.warning( + f"File name '{file_name}' is too long, truncating to 100 characters" + ) + file_name = file_name[:100] + file_path = os.path.join(output_dir, f"{file_name}.csv") + + rows = entry.get("rows", []) + logging.info(f"Writing CSV: {file_path} with {len(rows)} rows") + df = pd.DataFrame(rows) + df.to_csv(file_path, index=False) + def _fetch_data( self, start_time: str, end_time: str ) -> Optional[List[Dict[str, Any]]]: @@ -367,8 +429,10 @@ def print_all_names(self) -> None: for name in private_ones: logging.info(name) - def _generate_table_name(self, group_info:dict, fields: list[str]) -> str: - name = "|".join(group_info[k] for k in fields if k in group_info and group_info[k]) + def _generate_table_name(self, group_info: dict, fields: list[str]) -> str: + name = "|".join( + group_info[k] for k in fields if k in group_info and group_info[k] + ) return self.normalize_string(name) def _process(self, data: List[Dict[str, Any]]) -> List[Dict[str, Any]]: @@ -405,7 +469,7 @@ def _process(self, data: List[Dict[str, Any]]) -> List[Dict[str, Any]]: item["groupInfo"]["aws_type"] = "private" else: item["groupInfo"]["aws_type"] = "public" - + data.sort(key=lambda x: x["table_name"]) logging.info(f"fetched {len(data)} table views") return data @@ -429,7 +493,7 @@ def _fetch_execu_torch_data(self, start_time, end_time): logging.info(response.text) return None - def generate_short_name(self, words, size): + def generate_short_name(self, words, size, enable_abbreviation=True): shortKeys = [k.replace("_", "") for k in words] s = "_".join(shortKeys) if size > 0: @@ -437,8 +501,10 @@ def generate_short_name(self, words, size): f"we found more than one table matches the keywords, adding size to distinguish: {s}" ) s += s + "_" + str(size) - for full, abbr in ABBREVIATIONS.items(): - s = s.replace(full, abbr) + + if enable_abbreviation: + for full, abbr in ABBREVIATIONS.items(): + s = s.replace(full, abbr) return s def find_target_tables(self, keywords, is_private) -> List[Any]: @@ -459,7 +525,7 @@ def find_target_tables(self, keywords, is_private) -> List[Any]: item.get("groupInfo", {}).get("aws_type", "") == "private" ) if is_private is not is_item_private: - continue # skip if not matching private/public device + continue # skip if not matching private/public device # generate short name for each table data item["short_name"] = self.generate_short_name( @@ -508,9 +574,14 @@ def normalize_string(self, s, replace="_"): logging.info("\n") elif args.outputType == "excel": logging.info( - f"Writing benchmark results to excel file: {args.outputDir}/res_private.xlsx" + f"Writing benchmark results to excel file as sheets: res_private.xlsx & res_public.xlsx under {args.outputDir}" ) fetcher.to_excel(args.outputDir) + elif args.outputType == "csv": + logging.info( + f"Writing benchmark results to csv files under folders private/ & public/ under {args.outputDir}" + ) + fetcher.to_csv(args.outputDir) else: logging.info( f"======================Printing private device benchmark results in json format======================" From 9fa50a49214c5b870c30a29f7d11128b73af82a5 Mon Sep 17 00:00:00 2001 From: Yang Wang Date: Tue, 17 Jun 2025 11:07:47 -0700 Subject: [PATCH 09/46] final Signed-off-by: Yang Wang --- .ci/scripts/benchmark_tooling/README.md | 18 +++++++++++++++++- .../analyze_benchmark_stability.py | 0 .../get_benchmark_analysis_data.py | 11 +++++------ .../benchmark_tooling/requirements.txt | 3 +++ .../benchmark_tooling/res_private.xlsx | Bin 0 -> 19343 bytes .ci/scripts/benchmark_tooling/res_public.xlsx | Bin 0 -> 28126 bytes .../benchmark_tooling/~$res_private.xlsx | Bin 0 -> 165 bytes 7 files changed, 25 insertions(+), 7 deletions(-) rename .ci/scripts/{ => benchmark_tooling}/analyze_benchmark_stability.py (100%) create mode 100644 .ci/scripts/benchmark_tooling/res_private.xlsx create mode 100644 .ci/scripts/benchmark_tooling/res_public.xlsx create mode 100644 .ci/scripts/benchmark_tooling/~$res_private.xlsx diff --git a/.ci/scripts/benchmark_tooling/README.md b/.ci/scripts/benchmark_tooling/README.md index b81a2eaee25..b22b99ed7e7 100644 --- a/.ci/scripts/benchmark_tooling/README.md +++ b/.ci/scripts/benchmark_tooling/README.md @@ -14,13 +14,14 @@ pip install -r requirements.txt Run with default output (CLI): ```bash -python3 get_benchmark_analysis_data.py --startTime "2025-06-11T00:00:00" --endTime "2025-06-17T18:00:00" +python3 .ci/scripts/benchmark_tooling/get_benchmark_analysis_data.py --startTime "2025-06-11T00:00:00" --endTime "2025-06-17T18:00:00" ``` Additional options: - `--silent`: Hide processing logs, show only results - `--outputType df`: Display results in DataFrame format - `--outputType excel --excelDir "{YOUR_LOCAL_DIRECTORY}"`: Generate Excel files (`res_private.xlsx` and `res_public.xlsx`) +- `--outputDir "{YOUR_LOCAL_DIRECTORY}"`: Specify a custom output directory for Excel/CSV files ### Python API Usage @@ -33,3 +34,18 @@ fetcher = ExecutorchBenchmarkFetcher() fetcher.run() private, public = fetcher.to_df() ``` + +## analyze_benchmark_stability.py +`analyze_benchmark_stability.py` analyzes the stability of benchmark data, comparing the results of private and public devices. + +### Quick Start +Install dependencies: +```bash +pip install -r requirements.txt +``` + +``` +python .ci/scripts/benchmark_tooling/analyze_benchmark_stability.py \ + Benchmark\ Dataset\ with\ Private\ AWS\ Devices.xlsx \ + --reference_file Benchmark\ Dataset\ with\ Public\ AWS\ Devices.xlsx +``` diff --git a/.ci/scripts/analyze_benchmark_stability.py b/.ci/scripts/benchmark_tooling/analyze_benchmark_stability.py similarity index 100% rename from .ci/scripts/analyze_benchmark_stability.py rename to .ci/scripts/benchmark_tooling/analyze_benchmark_stability.py diff --git a/.ci/scripts/benchmark_tooling/get_benchmark_analysis_data.py b/.ci/scripts/benchmark_tooling/get_benchmark_analysis_data.py index 25ea36e9120..a060ec32636 100644 --- a/.ci/scripts/benchmark_tooling/get_benchmark_analysis_data.py +++ b/.ci/scripts/benchmark_tooling/get_benchmark_analysis_data.py @@ -61,12 +61,11 @@ # The abbreviations used to generate the short name for the benchmark result table # this is used to avoid the long table name issue when generating excel file (<=31 characters) ABBREVIATIONS = { - "samsung": "smg", - "galaxy": "gx", - "ultra": "ul", - "android": "and", - "iphone": "ip", + "samsung": "", + "galaxy": "", + "5g": "", "xnnpackq8": "xnnq8", + "iphone15promax": "iphone15max", } @@ -539,7 +538,7 @@ def find_target_tables(self, keywords, is_private) -> List[Any]: f"\n============ MATCHING Found results: {len(results)}=========\n" ) for keywords, match in matchings: - logging.info(f"Keywords: {keywords}: matchings: {match}") + logging.info(f"Keywords: {keywords} {len(match)} matchings: {match}") return list(results.values()) def normalize_string(self, s, replace="_"): diff --git a/.ci/scripts/benchmark_tooling/requirements.txt b/.ci/scripts/benchmark_tooling/requirements.txt index 5dd88532b6e..20cd46acdff 100644 --- a/.ci/scripts/benchmark_tooling/requirements.txt +++ b/.ci/scripts/benchmark_tooling/requirements.txt @@ -1,3 +1,6 @@ requests>=2.32.3 xlsxwriter>=3.2.3 pandas>=2.3.0 +openpyxl +tabulate +matplotlib diff --git a/.ci/scripts/benchmark_tooling/res_private.xlsx b/.ci/scripts/benchmark_tooling/res_private.xlsx new file mode 100644 index 0000000000000000000000000000000000000000..bd58c3154dff4c9246eabdb158b07bf60abc4776 GIT binary patch literal 19343 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 literal 0 HcmV?d00001 diff --git a/.ci/scripts/benchmark_tooling/res_public.xlsx b/.ci/scripts/benchmark_tooling/res_public.xlsx new file mode 100644 index 0000000000000000000000000000000000000000..e9d7c356b1eef4ae4e17072171b1a2dfdcb600bb GIT binary patch literal 28126 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 Date: Tue, 17 Jun 2025 11:08:02 -0700 Subject: [PATCH 10/46] final Signed-off-by: Yang Wang --- .ci/scripts/benchmark_tooling/res_private.xlsx | Bin 19343 -> 0 bytes .ci/scripts/benchmark_tooling/res_public.xlsx | Bin 28126 -> 0 bytes 2 files changed, 0 insertions(+), 0 deletions(-) delete mode 100644 .ci/scripts/benchmark_tooling/res_private.xlsx delete mode 100644 .ci/scripts/benchmark_tooling/res_public.xlsx diff --git a/.ci/scripts/benchmark_tooling/res_private.xlsx b/.ci/scripts/benchmark_tooling/res_private.xlsx deleted file mode 100644 index bd58c3154dff4c9246eabdb158b07bf60abc4776..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 19343 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 diff --git a/.ci/scripts/benchmark_tooling/res_public.xlsx b/.ci/scripts/benchmark_tooling/res_public.xlsx deleted file mode 100644 index e9d7c356b1eef4ae4e17072171b1a2dfdcb600bb..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 28126 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 Date: Tue, 17 Jun 2025 11:08:27 -0700 Subject: [PATCH 11/46] final Signed-off-by: Yang Wang --- .ci/scripts/benchmark_tooling/~$res_private.xlsx | Bin 165 -> 0 bytes 1 file changed, 0 insertions(+), 0 deletions(-) delete mode 100644 .ci/scripts/benchmark_tooling/~$res_private.xlsx diff --git a/.ci/scripts/benchmark_tooling/~$res_private.xlsx b/.ci/scripts/benchmark_tooling/~$res_private.xlsx deleted file mode 100644 index fa6fcc63a2e553318c80b11e4a71d2cfc746bc2e..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 165 lcmd;#Ow3DH2nP|Q08WNThD3%uhI9r6hHyAb0m!2T1OP$m5z7Do From 4aced2486b965e5c9227e63400bea9120bfaadc7 Mon Sep 17 00:00:00 2001 From: Yang Wang Date: Tue, 17 Jun 2025 11:11:08 -0700 Subject: [PATCH 12/46] final Signed-off-by: Yang Wang --- .ci/scripts/benchmark_tooling/README.md | 5 +++-- 1 file changed, 3 insertions(+), 2 deletions(-) diff --git a/.ci/scripts/benchmark_tooling/README.md b/.ci/scripts/benchmark_tooling/README.md index b22b99ed7e7..869cc1a8301 100644 --- a/.ci/scripts/benchmark_tooling/README.md +++ b/.ci/scripts/benchmark_tooling/README.md @@ -20,8 +20,9 @@ python3 .ci/scripts/benchmark_tooling/get_benchmark_analysis_data.py --startTime Additional options: - `--silent`: Hide processing logs, show only results - `--outputType df`: Display results in DataFrame format -- `--outputType excel --excelDir "{YOUR_LOCAL_DIRECTORY}"`: Generate Excel files (`res_private.xlsx` and `res_public.xlsx`) -- `--outputDir "{YOUR_LOCAL_DIRECTORY}"`: Specify a custom output directory for Excel/CSV files +- `--outputType excel --outputDir "{YOUR_LOCAL_DIRECTORY}"`: Generate Excel file with multiple sheets (`res_private.xlsx` and `res_public.xlsx`) +- `--outputType csv --outputDir "{YOUR_LOCAL_DIRECTORY}"`: Generate CSV files in folders (`private` and `public`) + ### Python API Usage From ab6e6cfed2f684a517b2695b3d00d64a2d0aea44 Mon Sep 17 00:00:00 2001 From: Yang Wang Date: Tue, 17 Jun 2025 11:38:07 -0700 Subject: [PATCH 13/46] final Signed-off-by: Yang Wang --- .../get_benchmark_analysis_data.py | 208 ++++++++++++++++-- 1 file changed, 188 insertions(+), 20 deletions(-) diff --git a/.ci/scripts/benchmark_tooling/get_benchmark_analysis_data.py b/.ci/scripts/benchmark_tooling/get_benchmark_analysis_data.py index a060ec32636..66248f243b3 100644 --- a/.ci/scripts/benchmark_tooling/get_benchmark_analysis_data.py +++ b/.ci/scripts/benchmark_tooling/get_benchmark_analysis_data.py @@ -4,6 +4,7 @@ import os from dataclasses import dataclass from datetime import datetime +from sre_compile import REPEAT_ONE from typing import Any, Dict, List, Optional, Tuple import pandas as pd @@ -139,6 +140,187 @@ def argparser(): return parser.parse_args() +class BenchmarkFetcher: + def __init__( + self, + env="prod", + repo="pytorch/pytorch", + benchmark_name="", + disable_logging=False, + group_table_fields=None, + group_row_fields=None, + processor_funcs=None, + ): + """ + Initialize the ExecutorchBenchmarkFetcher. + + Args: + env: Environment to use ("local" or "prod") + disable_logging: Whether to suppress log output + group_table_fields: Custom fields to group tables by (defaults to device, backend, arch, model) + group_row_fields: Custom fields to group rows by (defaults to workflow_id, job_id, granularity_bucket) + """ + self.env = env + self.base_url = self._get_base_url() + self.query_group_table_by_fields = ( + group_table_fields + if group_table_fields + else ["device", "backend", "arch", "model"] + ) + self.query_group_row_by_fields = ( + group_row_fields + if group_row_fields + else ["workflow_id", "job_id", "granularity_bucket"] + ) + self.data = None + self.disable_logging = disable_logging + self.processor_funcs = processor_funcs if processor_funcs else [] + + self.repo = repo + self.benchmark_name = benchmark_name + + def _get_base_url(self) -> str: + """ + Get the base URL for API requests based on environment. + + Returns: + Base URL string for the configured environment + """ + base_urls = { + "local": "http://localhost:3000", + "prod": "https://hud.pytorch.org", + } + return base_urls[self.env] + + def _fetch_data( + self, start_time: str, end_time: str + ) -> Optional[List[Dict[str, Any]]]: + """ + Fetch and process benchmark data for the specified time range. + + Args: + start_time: ISO8601 formatted start time + end_time: ISO8601 formatted end time + + Returns: + Processed benchmark data or None if fetch failed + """ + data = self._fetch_data(start_time, end_time) + if data is None: + return None + self.data = self._process(data) + return self.data + + def to_df(self) -> Any: + if not self.data: + return + dfs = [ + {"groupInfo": item["groupInfo"], "df": pd.DataFrame(item["rows"])} + for item in self.data + ] + return dfs + + def _process(self, data: List[Dict[str, Any]]) -> List[Dict[str, Any]]: + """ + Process raw benchmark data. + + This method: + 1. Normalizes string values in groupInfo + 2. Creates table_name from group info components + 3. Determines aws_type (public/private) based on device name + 4. Sorts results by table_name + + Args: + data: Raw benchmark data from API + + Returns: + Processed benchmark data + """ + for item in data: + # normalized string values in groupInfo + item["groupInfo"] = { + k: self.normalize_string(v) + for k, v in item.get("groupInfo", {}).items() + if v is not None and isinstance(v, str) + } + group = item.get("groupInfo", {}) + name = self._generate_table_name(group, self.query_group_table_by_fields) + + # Add full name joined by the group key fields + item["table_name"] = name + + # Mark aws_type: private or public + if group.get("device", "").find("private") != -1: + item["groupInfo"]["aws_type"] = "private" + else: + item["groupInfo"]["aws_type"] = "public" + + data.sort(key=lambda x: x["table_name"]) + logging.info(f"fetched {len(data)} table views") + return data + + def normalize_string(self, s, replace="_"): + return s.lower().replace(" ", replace) + + def _generate_table_name(self, group_info: dict, fields: list[str]) -> str: + name = "|".join( + group_info[k] for k in fields if k in group_info and group_info[k] + ) + return self.normalize_string(name) + + def _call_api(self, start_time, end_time): + url = f"{self.base_url}/api/benchmark/group_data" + params_object = BenchmarkQueryGroupDataParams( + repo="pytorch/executorch", + benchmark_name="ExecuTorch", + start_time=start_time, + end_time=end_time, + group_table_by_fields=self.query_group_table_by_fields, + group_row_by_fields=self.query_group_row_by_fields, + ) + params = {k: v for k, v in params_object.__dict__.items() if v is not None} + response = requests.get(url, params=params) + if response.status_code == 200: + return response.json() + else: + logging.info(f"Failed to fetch benchmark data ({response.status_code})") + logging.info(response.text) + return None + + def _write_multiple_csv_files( + self, data_list: List[Dict[str, Any]], output_dir: str, file_prefix="" + ) -> None: + """ + Write multiple benchmark results to separate CSV files. + + Each entry in `data_list` becomes its own CSV file. + + Args: + data_list: List of benchmark result dictionaries + output_dir: Directory to save the CSV files + """ + os.makedirs(output_dir, exist_ok=True) + logging.info( + f"\n ========= Generating multiple CSV files in {output_dir} ========= \n" + ) + for idx, entry in enumerate(data_list): + file_name = entry.get("short_name", f"file{idx+1}") + + if file_prefix: + file_name = file_prefix + file_name + if len(file_name) > 100: + logging.warning( + f"File name '{file_name}' is too long, truncating to 100 characters" + ) + file_name = file_name[:100] + file_path = os.path.join(output_dir, f"{file_name}.csv") + + rows = entry.get("rows", []) + logging.info(f"Writing CSV: {file_path} with {len(rows)} rows") + df = pd.DataFrame(rows) + df.to_csv(file_path, index=False) + + class ExecutorchBenchmarkFetcher: """ Fetch and process benchmark data from HUD API for ExecutorchBenchmark. @@ -214,7 +396,7 @@ def run( if not self.disable_logging: logging.info( - f"\n ========= Search tables specific for matching keywords ========= \n" + "\n ========= Search tables specific for matching keywords ========= \n" ) self.results_private = self.find_target_tables(privateDeviceMatchings, True) self.results_public = self.find_target_tables(publicDeviceMatchings, False) @@ -282,7 +464,7 @@ def _write_multi_sheet_excel( output_path: Path to save the Excel file """ logging.info( - f"\n ========= Generate excel file with multiple sheets for {output_path}========= \n" + "\n ========= Generate excel file with multiple sheets for {output_path}========= \n" ) with pd.ExcelWriter(output_path, engine="xlsxwriter") as writer: for idx, entry in enumerate(data_list): @@ -403,29 +585,15 @@ def print_all_names(self) -> None: return logging.info("peeking table result:") logging.info(json.dumps(self.data[0], indent=2)) - public_ones = [ - item["table_name"] - for item in self.data - if item["groupInfo"]["aws_type"] == "public" - ] - private_ones = [ - item["table_name"] - for item in self.data - if item["groupInfo"]["aws_type"] == "private" - ] + names = [item["table_name"] for item in self.data] # Print all found benchmark table names logging.info( - f"\n============List all benchmark result table names (Public and Private) below =================\n" + "\n============List all benchmark result table names =================\n" ) logging.info( - f"\n============ public device benchmark results({len(public_ones)})=================\n" - ) - for name in public_ones: - logging.info(name) - logging.info( - f"\n======= private device benchmark results({len(private_ones)})=======\n" + f"\n============ public device benchmark results({len(names)})=================\n" ) - for name in private_ones: + for name in names: logging.info(name) def _generate_table_name(self, group_info: dict, fields: list[str]) -> str: From 8e6956d42e3c199278a1f81e11425e2567c6bcfc Mon Sep 17 00:00:00 2001 From: Yang Wang Date: Tue, 17 Jun 2025 11:38:36 -0700 Subject: [PATCH 14/46] final Signed-off-by: Yang Wang --- .../get_benchmark_analysis_data.py | 182 ------------------ 1 file changed, 182 deletions(-) diff --git a/.ci/scripts/benchmark_tooling/get_benchmark_analysis_data.py b/.ci/scripts/benchmark_tooling/get_benchmark_analysis_data.py index 66248f243b3..803d69a8e3d 100644 --- a/.ci/scripts/benchmark_tooling/get_benchmark_analysis_data.py +++ b/.ci/scripts/benchmark_tooling/get_benchmark_analysis_data.py @@ -139,188 +139,6 @@ def argparser(): return parser.parse_args() - -class BenchmarkFetcher: - def __init__( - self, - env="prod", - repo="pytorch/pytorch", - benchmark_name="", - disable_logging=False, - group_table_fields=None, - group_row_fields=None, - processor_funcs=None, - ): - """ - Initialize the ExecutorchBenchmarkFetcher. - - Args: - env: Environment to use ("local" or "prod") - disable_logging: Whether to suppress log output - group_table_fields: Custom fields to group tables by (defaults to device, backend, arch, model) - group_row_fields: Custom fields to group rows by (defaults to workflow_id, job_id, granularity_bucket) - """ - self.env = env - self.base_url = self._get_base_url() - self.query_group_table_by_fields = ( - group_table_fields - if group_table_fields - else ["device", "backend", "arch", "model"] - ) - self.query_group_row_by_fields = ( - group_row_fields - if group_row_fields - else ["workflow_id", "job_id", "granularity_bucket"] - ) - self.data = None - self.disable_logging = disable_logging - self.processor_funcs = processor_funcs if processor_funcs else [] - - self.repo = repo - self.benchmark_name = benchmark_name - - def _get_base_url(self) -> str: - """ - Get the base URL for API requests based on environment. - - Returns: - Base URL string for the configured environment - """ - base_urls = { - "local": "http://localhost:3000", - "prod": "https://hud.pytorch.org", - } - return base_urls[self.env] - - def _fetch_data( - self, start_time: str, end_time: str - ) -> Optional[List[Dict[str, Any]]]: - """ - Fetch and process benchmark data for the specified time range. - - Args: - start_time: ISO8601 formatted start time - end_time: ISO8601 formatted end time - - Returns: - Processed benchmark data or None if fetch failed - """ - data = self._fetch_data(start_time, end_time) - if data is None: - return None - self.data = self._process(data) - return self.data - - def to_df(self) -> Any: - if not self.data: - return - dfs = [ - {"groupInfo": item["groupInfo"], "df": pd.DataFrame(item["rows"])} - for item in self.data - ] - return dfs - - def _process(self, data: List[Dict[str, Any]]) -> List[Dict[str, Any]]: - """ - Process raw benchmark data. - - This method: - 1. Normalizes string values in groupInfo - 2. Creates table_name from group info components - 3. Determines aws_type (public/private) based on device name - 4. Sorts results by table_name - - Args: - data: Raw benchmark data from API - - Returns: - Processed benchmark data - """ - for item in data: - # normalized string values in groupInfo - item["groupInfo"] = { - k: self.normalize_string(v) - for k, v in item.get("groupInfo", {}).items() - if v is not None and isinstance(v, str) - } - group = item.get("groupInfo", {}) - name = self._generate_table_name(group, self.query_group_table_by_fields) - - # Add full name joined by the group key fields - item["table_name"] = name - - # Mark aws_type: private or public - if group.get("device", "").find("private") != -1: - item["groupInfo"]["aws_type"] = "private" - else: - item["groupInfo"]["aws_type"] = "public" - - data.sort(key=lambda x: x["table_name"]) - logging.info(f"fetched {len(data)} table views") - return data - - def normalize_string(self, s, replace="_"): - return s.lower().replace(" ", replace) - - def _generate_table_name(self, group_info: dict, fields: list[str]) -> str: - name = "|".join( - group_info[k] for k in fields if k in group_info and group_info[k] - ) - return self.normalize_string(name) - - def _call_api(self, start_time, end_time): - url = f"{self.base_url}/api/benchmark/group_data" - params_object = BenchmarkQueryGroupDataParams( - repo="pytorch/executorch", - benchmark_name="ExecuTorch", - start_time=start_time, - end_time=end_time, - group_table_by_fields=self.query_group_table_by_fields, - group_row_by_fields=self.query_group_row_by_fields, - ) - params = {k: v for k, v in params_object.__dict__.items() if v is not None} - response = requests.get(url, params=params) - if response.status_code == 200: - return response.json() - else: - logging.info(f"Failed to fetch benchmark data ({response.status_code})") - logging.info(response.text) - return None - - def _write_multiple_csv_files( - self, data_list: List[Dict[str, Any]], output_dir: str, file_prefix="" - ) -> None: - """ - Write multiple benchmark results to separate CSV files. - - Each entry in `data_list` becomes its own CSV file. - - Args: - data_list: List of benchmark result dictionaries - output_dir: Directory to save the CSV files - """ - os.makedirs(output_dir, exist_ok=True) - logging.info( - f"\n ========= Generating multiple CSV files in {output_dir} ========= \n" - ) - for idx, entry in enumerate(data_list): - file_name = entry.get("short_name", f"file{idx+1}") - - if file_prefix: - file_name = file_prefix + file_name - if len(file_name) > 100: - logging.warning( - f"File name '{file_name}' is too long, truncating to 100 characters" - ) - file_name = file_name[:100] - file_path = os.path.join(output_dir, f"{file_name}.csv") - - rows = entry.get("rows", []) - logging.info(f"Writing CSV: {file_path} with {len(rows)} rows") - df = pd.DataFrame(rows) - df.to_csv(file_path, index=False) - - class ExecutorchBenchmarkFetcher: """ Fetch and process benchmark data from HUD API for ExecutorchBenchmark. From 87ba460a2e1d7a529e15a82feb1f76cd762e3209 Mon Sep 17 00:00:00 2001 From: Yang Wang Date: Tue, 17 Jun 2025 11:41:34 -0700 Subject: [PATCH 15/46] final Signed-off-by: Yang Wang --- .../get_benchmark_analysis_data.py | 25 ++++++++++++++----- 1 file changed, 19 insertions(+), 6 deletions(-) diff --git a/.ci/scripts/benchmark_tooling/get_benchmark_analysis_data.py b/.ci/scripts/benchmark_tooling/get_benchmark_analysis_data.py index 803d69a8e3d..60039952b8a 100644 --- a/.ci/scripts/benchmark_tooling/get_benchmark_analysis_data.py +++ b/.ci/scripts/benchmark_tooling/get_benchmark_analysis_data.py @@ -4,7 +4,6 @@ import os from dataclasses import dataclass from datetime import datetime -from sre_compile import REPEAT_ONE from typing import Any, Dict, List, Optional, Tuple import pandas as pd @@ -139,6 +138,7 @@ def argparser(): return parser.parse_args() + class ExecutorchBenchmarkFetcher: """ Fetch and process benchmark data from HUD API for ExecutorchBenchmark. @@ -395,7 +395,6 @@ def _get_base_url(self) -> str: def print_all_names(self) -> None: """ Print all benchmark table names found in the data. - Separates results by device type (public/private) and displays counts. This is useful for debugging and understanding what data is available. """ @@ -403,15 +402,29 @@ def print_all_names(self) -> None: return logging.info("peeking table result:") logging.info(json.dumps(self.data[0], indent=2)) - names = [item["table_name"] for item in self.data] + public_ones = [ + item["table_name"] + for item in self.data + if item["groupInfo"]["aws_type"] == "public" + ] + private_ones = [ + item["table_name"] + for item in self.data + if item["groupInfo"]["aws_type"] == "private" + ] # Print all found benchmark table names logging.info( - "\n============List all benchmark result table names =================\n" + "\n============List all benchmark result table names (Public and Private) below =================\n" ) logging.info( - f"\n============ public device benchmark results({len(names)})=================\n" + f"\n============ public device benchmark results({len(public_ones)})=================\n" + ) + for name in public_ones: + logging.info(name) + logging.info( + f"\n======= private device benchmark results({len(private_ones)})=======\n" ) - for name in names: + for name in private_ones: logging.info(name) def _generate_table_name(self, group_info: dict, fields: list[str]) -> str: From 5d225673f4e980d82ded2953bf4fe3892fb707a8 Mon Sep 17 00:00:00 2001 From: Yang Wang Date: Tue, 17 Jun 2025 11:46:32 -0700 Subject: [PATCH 16/46] final Signed-off-by: Yang Wang --- .ci/scripts/benchmark_tooling/get_benchmark_analysis_data.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.ci/scripts/benchmark_tooling/get_benchmark_analysis_data.py b/.ci/scripts/benchmark_tooling/get_benchmark_analysis_data.py index 60039952b8a..7cc3d8f77e8 100644 --- a/.ci/scripts/benchmark_tooling/get_benchmark_analysis_data.py +++ b/.ci/scripts/benchmark_tooling/get_benchmark_analysis_data.py @@ -173,7 +173,7 @@ def __init__( self.query_group_table_by_fields = ( group_table_fields if group_table_fields - else ["device", "backend", "arch", "model"] + else ["model", "backend", "arch", "device"] ) self.query_group_row_by_fields = ( group_row_fields From 7a032e131ca259c2b550fce85f7d7b9a94b40945 Mon Sep 17 00:00:00 2001 From: Yang Wang Date: Wed, 18 Jun 2025 00:44:14 -0700 Subject: [PATCH 17/46] final Signed-off-by: Yang Wang --- .ci/scripts/benchmark_tooling/README.md | 141 +- .ci/scripts/benchmark_tooling/all.json | 1778 +++++++++++++++++ .../get_benchmark_analysis_data.py | 639 +++--- ...m-spda-kv-cache-8da4w_-s22-_android-13.csv | 30 + ...kv-cache-8da4w_-s22-private_android-13.csv | 30 + ...-kv-cache-8da4w_-s22-ultra-_android-14.csv | 30 + ...he-8da4w_-s22-ultra-private_android-14.csv | 30 + ...-cache-8da4w_apple-iphone-15-_ios-18.0.csv | 28 + ...8da4w_apple-iphone-15-plus-_ios-17.4.1.csv | 28 + ...pple-iphone-15-plus-private_ios-17.4.1.csv | 28 + ...8da4w_apple-iphone-15-private_ios-18.0.csv | 28 + ...-8da4w_apple-iphone-15-pro-_ios-18.4.1.csv | 28 + ...apple-iphone-15-pro-private_ios-18.4.1.csv | 28 + ...m-spda-kv-cache-8da4w_-s22-_android-13.csv | 29 + ...kv-cache-8da4w_-s22-private_android-13.csv | 29 + ...-kv-cache-8da4w_-s22-ultra-_android-14.csv | 29 + ...he-8da4w_-s22-ultra-private_android-14.csv | 29 + ...-cache-8da4w_apple-iphone-15-_ios-18.0.csv | 29 + ...8da4w_apple-iphone-15-plus-_ios-17.4.1.csv | 28 + ...pple-iphone-15-plus-private_ios-17.4.1.csv | 28 + ...8da4w_apple-iphone-15-private_ios-18.0.csv | 29 + ...-8da4w_apple-iphone-15-pro-_ios-18.4.1.csv | 29 + ...apple-iphone-15-pro-private_ios-18.4.1.csv | 29 + ...int4-eo8_llama3-qlora_-s22-_android-13.csv | 11 + ...8_llama3-qlora_-s22-private_android-13.csv | 11 + ...o8_llama3-qlora_-s22-ultra-_android-14.csv | 11 + ...a3-qlora_-s22-ultra-private_android-14.csv | 11 + ...llama3-qlora_apple-iphone-15-_ios-18.0.csv | 11 + ...qlora_apple-iphone-15-plus-_ios-17.4.1.csv | 11 + ...pple-iphone-15-plus-private_ios-17.4.1.csv | 11 + ...qlora_apple-iphone-15-private_ios-18.0.csv | 11 + ...-qlora_apple-iphone-15-pro-_ios-18.4.1.csv | 11 + ...apple-iphone-15-pro-private_ios-18.4.1.csv | 11 + ...-eo8_llama3-spinquant_-s22-_android-13.csv | 12 + ...ama3-spinquant_-s22-private_android-13.csv | 12 + ...lama3-spinquant_-s22-ultra-_android-14.csv | 12 + ...pinquant_-s22-ultra-private_android-14.csv | 12 + ...a3-spinquant_apple-iphone-15-_ios-18.0.csv | 11 + ...quant_apple-iphone-15-plus-_ios-17.4.1.csv | 11 + ...pple-iphone-15-plus-private_ios-17.4.1.csv | 11 + ...quant_apple-iphone-15-private_ios-18.0.csv | 11 + ...nquant_apple-iphone-15-pro-_ios-18.4.1.csv | 11 + ...apple-iphone-15-pro-private_ios-18.4.1.csv | 11 + ...m-spda-kv-cache-8da4w_-s22-_android-13.csv | 29 + ...kv-cache-8da4w_-s22-private_android-13.csv | 29 + ...-kv-cache-8da4w_-s22-ultra-_android-14.csv | 29 + ...he-8da4w_-s22-ultra-private_android-14.csv | 29 + ...-cache-8da4w_apple-iphone-15-_ios-18.0.csv | 29 + ...8da4w_apple-iphone-15-plus-_ios-17.4.1.csv | 29 + ...pple-iphone-15-plus-private_ios-17.4.1.csv | 29 + ...8da4w_apple-iphone-15-private_ios-18.0.csv | 29 + ...-8da4w_apple-iphone-15-pro-_ios-18.4.1.csv | 29 + ...apple-iphone-15-pro-private_ios-18.4.1.csv | 29 + ...m-spda-kv-cache-8da4w_-s22-_android-13.csv | 28 + ...kv-cache-8da4w_-s22-private_android-13.csv | 28 + ...-kv-cache-8da4w_-s22-ultra-_android-14.csv | 28 + ...he-8da4w_-s22-ultra-private_android-14.csv | 28 + ...-cache-8da4w_apple-iphone-15-_ios-18.0.csv | 28 + ...8da4w_apple-iphone-15-plus-_ios-17.4.1.csv | 28 + ...pple-iphone-15-plus-private_ios-17.4.1.csv | 28 + ...8da4w_apple-iphone-15-private_ios-18.0.csv | 28 + ...-8da4w_apple-iphone-15-pro-_ios-18.4.1.csv | 28 + ...apple-iphone-15-pro-private_ios-18.4.1.csv | 28 + ..._llama3-fb16_apple-iphone-15-_ios-18.0.csv | 29 + ....2-1b_llama3-fb16_apple-iphone-15-_ios.csv | 2 + ...-fb16_apple-iphone-15-plus-_ios-17.4.1.csv | 29 + ...pple-iphone-15-plus-private_ios-17.4.1.csv | 29 + ...-fb16_apple-iphone-15-private_ios-18.0.csv | 29 + ...lama3-fb16_apple-iphone-15-private_ios.csv | 2 + ...3-fb16_apple-iphone-15-pro-_ios-18.4.1.csv | 29 + ...apple-iphone-15-pro-private_ios-18.4.1.csv | 29 + ..._coreml-fp16_apple-iphone-15-_ios-18.0.csv | 11 + .../mv3_coreml-fp16_apple-iphone-15-_ios.csv | 2 + ...-fp16_apple-iphone-15-plus-_ios-17.4.1.csv | 11 + ...pple-iphone-15-plus-private_ios-17.4.1.csv | 11 + ...-fp16_apple-iphone-15-private_ios-18.0.csv | 11 + ...oreml-fp16_apple-iphone-15-private_ios.csv | 2 + ...l-fp16_apple-iphone-15-pro-_ios-18.4.1.csv | 11 + ...apple-iphone-15-pro-private_ios-18.4.1.csv | 11 + .../mv3_mps_apple-iphone-15-_ios-18.0.csv | 9 + .../private/mv3_mps_apple-iphone-15-_ios.csv | 2 + ...3_mps_apple-iphone-15-plus-_ios-17.4.1.csv | 9 + ...pple-iphone-15-plus-private_ios-17.4.1.csv | 9 + ...3_mps_apple-iphone-15-private_ios-18.0.csv | 9 + .../mv3_mps_apple-iphone-15-private_ios.csv | 2 + ...v3_mps_apple-iphone-15-pro-_ios-18.4.1.csv | 9 + ...apple-iphone-15-pro-private_ios-18.4.1.csv | 9 + .../private/mv3_qnn-q8_-s22-_android-13.csv | 12 + .../mv3_qnn-q8_-s22-private_android-13.csv | 12 + .../mv3_qnn-q8_-s22-ultra-_android-14.csv | 12 + ...3_qnn-q8_-s22-ultra-private_android-14.csv | 12 + .../mv3_xnnpack-q8_-s22-_android-13.csv | 11 + ...mv3_xnnpack-q8_-s22-private_android-13.csv | 11 + .../mv3_xnnpack-q8_-s22-ultra-_android-14.csv | 11 + ...npack-q8_-s22-ultra-private_android-14.csv | 11 + ...3_xnnpack-q8_apple-iphone-15-_ios-18.0.csv | 11 + .../mv3_xnnpack-q8_apple-iphone-15-_ios.csv | 2 + ...ck-q8_apple-iphone-15-plus-_ios-17.4.1.csv | 11 + ...pple-iphone-15-plus-private_ios-17.4.1.csv | 11 + ...ck-q8_apple-iphone-15-private_ios-18.0.csv | 11 + ...xnnpack-q8_apple-iphone-15-private_ios.csv | 2 + ...ack-q8_apple-iphone-15-pro-_ios-18.4.1.csv | 11 + ...apple-iphone-15-pro-private_ios-18.4.1.csv | 11 + ...m-spda-kv-cache-8da4w_-s22-_android-13.csv | 37 + ...kv-cache-8da4w_-s22-private_android-13.csv | 37 + ...-kv-cache-8da4w_-s22-ultra-_android-14.csv | 37 + ...he-8da4w_-s22-ultra-private_android-14.csv | 37 + ...-cache-8da4w_apple-iphone-15-_ios-18.0.csv | 36 + ...8da4w_apple-iphone-15-plus-_ios-17.4.1.csv | 35 + ...pple-iphone-15-plus-private_ios-17.4.1.csv | 35 + ...8da4w_apple-iphone-15-private_ios-18.0.csv | 36 + ...-8da4w_apple-iphone-15-pro-_ios-18.4.1.csv | 36 + ...apple-iphone-15-pro-private_ios-18.4.1.csv | 36 + ...m-spda-kv-cache-8da4w_-s22-_android-13.csv | 38 + ...kv-cache-8da4w_-s22-private_android-13.csv | 38 + ...-kv-cache-8da4w_-s22-ultra-_android-14.csv | 38 + ...he-8da4w_-s22-ultra-private_android-14.csv | 38 + ...-cache-8da4w_apple-iphone-15-_ios-18.0.csv | 34 + ...8da4w_apple-iphone-15-plus-_ios-17.4.1.csv | 34 + ...pple-iphone-15-plus-private_ios-17.4.1.csv | 34 + ...8da4w_apple-iphone-15-private_ios-18.0.csv | 34 + ...-8da4w_apple-iphone-15-pro-_ios-18.4.1.csv | 34 + ...apple-iphone-15-pro-private_ios-18.4.1.csv | 34 + 123 files changed, 4806 insertions(+), 308 deletions(-) create mode 100644 .ci/scripts/benchmark_tooling/all.json create mode 100644 .ci/scripts/benchmark_tooling/private/allenai-olmo-1b-hf_hf-xnnpack-custom-spda-kv-cache-8da4w_-s22-_android-13.csv create mode 100644 .ci/scripts/benchmark_tooling/private/allenai-olmo-1b-hf_hf-xnnpack-custom-spda-kv-cache-8da4w_-s22-private_android-13.csv create mode 100644 .ci/scripts/benchmark_tooling/private/allenai-olmo-1b-hf_hf-xnnpack-custom-spda-kv-cache-8da4w_-s22-ultra-_android-14.csv create mode 100644 .ci/scripts/benchmark_tooling/private/allenai-olmo-1b-hf_hf-xnnpack-custom-spda-kv-cache-8da4w_-s22-ultra-private_android-14.csv create mode 100644 .ci/scripts/benchmark_tooling/private/allenai-olmo-1b-hf_hf-xnnpack-custom-spda-kv-cache-8da4w_apple-iphone-15-_ios-18.0.csv create mode 100644 .ci/scripts/benchmark_tooling/private/allenai-olmo-1b-hf_hf-xnnpack-custom-spda-kv-cache-8da4w_apple-iphone-15-plus-_ios-17.4.1.csv create mode 100644 .ci/scripts/benchmark_tooling/private/allenai-olmo-1b-hf_hf-xnnpack-custom-spda-kv-cache-8da4w_apple-iphone-15-plus-private_ios-17.4.1.csv create mode 100644 .ci/scripts/benchmark_tooling/private/allenai-olmo-1b-hf_hf-xnnpack-custom-spda-kv-cache-8da4w_apple-iphone-15-private_ios-18.0.csv create mode 100644 .ci/scripts/benchmark_tooling/private/allenai-olmo-1b-hf_hf-xnnpack-custom-spda-kv-cache-8da4w_apple-iphone-15-pro-_ios-18.4.1.csv create mode 100644 .ci/scripts/benchmark_tooling/private/allenai-olmo-1b-hf_hf-xnnpack-custom-spda-kv-cache-8da4w_apple-iphone-15-pro-private_ios-18.4.1.csv create mode 100644 .ci/scripts/benchmark_tooling/private/huggingfacetb-smollm2-135m_hf-xnnpack-custom-spda-kv-cache-8da4w_-s22-_android-13.csv create mode 100644 .ci/scripts/benchmark_tooling/private/huggingfacetb-smollm2-135m_hf-xnnpack-custom-spda-kv-cache-8da4w_-s22-private_android-13.csv create mode 100644 .ci/scripts/benchmark_tooling/private/huggingfacetb-smollm2-135m_hf-xnnpack-custom-spda-kv-cache-8da4w_-s22-ultra-_android-14.csv create mode 100644 .ci/scripts/benchmark_tooling/private/huggingfacetb-smollm2-135m_hf-xnnpack-custom-spda-kv-cache-8da4w_-s22-ultra-private_android-14.csv create mode 100644 .ci/scripts/benchmark_tooling/private/huggingfacetb-smollm2-135m_hf-xnnpack-custom-spda-kv-cache-8da4w_apple-iphone-15-_ios-18.0.csv create mode 100644 .ci/scripts/benchmark_tooling/private/huggingfacetb-smollm2-135m_hf-xnnpack-custom-spda-kv-cache-8da4w_apple-iphone-15-plus-_ios-17.4.1.csv create mode 100644 .ci/scripts/benchmark_tooling/private/huggingfacetb-smollm2-135m_hf-xnnpack-custom-spda-kv-cache-8da4w_apple-iphone-15-plus-private_ios-17.4.1.csv create mode 100644 .ci/scripts/benchmark_tooling/private/huggingfacetb-smollm2-135m_hf-xnnpack-custom-spda-kv-cache-8da4w_apple-iphone-15-private_ios-18.0.csv create mode 100644 .ci/scripts/benchmark_tooling/private/huggingfacetb-smollm2-135m_hf-xnnpack-custom-spda-kv-cache-8da4w_apple-iphone-15-pro-_ios-18.4.1.csv create mode 100644 .ci/scripts/benchmark_tooling/private/huggingfacetb-smollm2-135m_hf-xnnpack-custom-spda-kv-cache-8da4w_apple-iphone-15-pro-private_ios-18.4.1.csv create mode 100644 .ci/scripts/benchmark_tooling/private/meta-llama-llama-3.2-1b-instruct-qlora-int4-eo8_llama3-qlora_-s22-_android-13.csv create mode 100644 .ci/scripts/benchmark_tooling/private/meta-llama-llama-3.2-1b-instruct-qlora-int4-eo8_llama3-qlora_-s22-private_android-13.csv create mode 100644 .ci/scripts/benchmark_tooling/private/meta-llama-llama-3.2-1b-instruct-qlora-int4-eo8_llama3-qlora_-s22-ultra-_android-14.csv create mode 100644 .ci/scripts/benchmark_tooling/private/meta-llama-llama-3.2-1b-instruct-qlora-int4-eo8_llama3-qlora_-s22-ultra-private_android-14.csv create mode 100644 .ci/scripts/benchmark_tooling/private/meta-llama-llama-3.2-1b-instruct-qlora-int4-eo8_llama3-qlora_apple-iphone-15-_ios-18.0.csv create mode 100644 .ci/scripts/benchmark_tooling/private/meta-llama-llama-3.2-1b-instruct-qlora-int4-eo8_llama3-qlora_apple-iphone-15-plus-_ios-17.4.1.csv create mode 100644 .ci/scripts/benchmark_tooling/private/meta-llama-llama-3.2-1b-instruct-qlora-int4-eo8_llama3-qlora_apple-iphone-15-plus-private_ios-17.4.1.csv create mode 100644 .ci/scripts/benchmark_tooling/private/meta-llama-llama-3.2-1b-instruct-qlora-int4-eo8_llama3-qlora_apple-iphone-15-private_ios-18.0.csv create mode 100644 .ci/scripts/benchmark_tooling/private/meta-llama-llama-3.2-1b-instruct-qlora-int4-eo8_llama3-qlora_apple-iphone-15-pro-_ios-18.4.1.csv create mode 100644 .ci/scripts/benchmark_tooling/private/meta-llama-llama-3.2-1b-instruct-qlora-int4-eo8_llama3-qlora_apple-iphone-15-pro-private_ios-18.4.1.csv create mode 100644 .ci/scripts/benchmark_tooling/private/meta-llama-llama-3.2-1b-instruct-spinquant-int4-eo8_llama3-spinquant_-s22-_android-13.csv create mode 100644 .ci/scripts/benchmark_tooling/private/meta-llama-llama-3.2-1b-instruct-spinquant-int4-eo8_llama3-spinquant_-s22-private_android-13.csv create mode 100644 .ci/scripts/benchmark_tooling/private/meta-llama-llama-3.2-1b-instruct-spinquant-int4-eo8_llama3-spinquant_-s22-ultra-_android-14.csv create mode 100644 .ci/scripts/benchmark_tooling/private/meta-llama-llama-3.2-1b-instruct-spinquant-int4-eo8_llama3-spinquant_-s22-ultra-private_android-14.csv create mode 100644 .ci/scripts/benchmark_tooling/private/meta-llama-llama-3.2-1b-instruct-spinquant-int4-eo8_llama3-spinquant_apple-iphone-15-_ios-18.0.csv create mode 100644 .ci/scripts/benchmark_tooling/private/meta-llama-llama-3.2-1b-instruct-spinquant-int4-eo8_llama3-spinquant_apple-iphone-15-plus-_ios-17.4.1.csv create mode 100644 .ci/scripts/benchmark_tooling/private/meta-llama-llama-3.2-1b-instruct-spinquant-int4-eo8_llama3-spinquant_apple-iphone-15-plus-private_ios-17.4.1.csv create mode 100644 .ci/scripts/benchmark_tooling/private/meta-llama-llama-3.2-1b-instruct-spinquant-int4-eo8_llama3-spinquant_apple-iphone-15-private_ios-18.0.csv create mode 100644 .ci/scripts/benchmark_tooling/private/meta-llama-llama-3.2-1b-instruct-spinquant-int4-eo8_llama3-spinquant_apple-iphone-15-pro-_ios-18.4.1.csv create mode 100644 .ci/scripts/benchmark_tooling/private/meta-llama-llama-3.2-1b-instruct-spinquant-int4-eo8_llama3-spinquant_apple-iphone-15-pro-private_ios-18.4.1.csv create mode 100644 .ci/scripts/benchmark_tooling/private/meta-llama-llama-3.2-1b_et-xnnpack-custom-spda-kv-cache-8da4w_-s22-_android-13.csv create mode 100644 .ci/scripts/benchmark_tooling/private/meta-llama-llama-3.2-1b_et-xnnpack-custom-spda-kv-cache-8da4w_-s22-private_android-13.csv create mode 100644 .ci/scripts/benchmark_tooling/private/meta-llama-llama-3.2-1b_et-xnnpack-custom-spda-kv-cache-8da4w_-s22-ultra-_android-14.csv create mode 100644 .ci/scripts/benchmark_tooling/private/meta-llama-llama-3.2-1b_et-xnnpack-custom-spda-kv-cache-8da4w_-s22-ultra-private_android-14.csv create mode 100644 .ci/scripts/benchmark_tooling/private/meta-llama-llama-3.2-1b_et-xnnpack-custom-spda-kv-cache-8da4w_apple-iphone-15-_ios-18.0.csv create mode 100644 .ci/scripts/benchmark_tooling/private/meta-llama-llama-3.2-1b_et-xnnpack-custom-spda-kv-cache-8da4w_apple-iphone-15-plus-_ios-17.4.1.csv create mode 100644 .ci/scripts/benchmark_tooling/private/meta-llama-llama-3.2-1b_et-xnnpack-custom-spda-kv-cache-8da4w_apple-iphone-15-plus-private_ios-17.4.1.csv create mode 100644 .ci/scripts/benchmark_tooling/private/meta-llama-llama-3.2-1b_et-xnnpack-custom-spda-kv-cache-8da4w_apple-iphone-15-private_ios-18.0.csv create mode 100644 .ci/scripts/benchmark_tooling/private/meta-llama-llama-3.2-1b_et-xnnpack-custom-spda-kv-cache-8da4w_apple-iphone-15-pro-_ios-18.4.1.csv create mode 100644 .ci/scripts/benchmark_tooling/private/meta-llama-llama-3.2-1b_et-xnnpack-custom-spda-kv-cache-8da4w_apple-iphone-15-pro-private_ios-18.4.1.csv create mode 100644 .ci/scripts/benchmark_tooling/private/meta-llama-llama-3.2-1b_hf-xnnpack-custom-spda-kv-cache-8da4w_-s22-_android-13.csv create mode 100644 .ci/scripts/benchmark_tooling/private/meta-llama-llama-3.2-1b_hf-xnnpack-custom-spda-kv-cache-8da4w_-s22-private_android-13.csv create mode 100644 .ci/scripts/benchmark_tooling/private/meta-llama-llama-3.2-1b_hf-xnnpack-custom-spda-kv-cache-8da4w_-s22-ultra-_android-14.csv create mode 100644 .ci/scripts/benchmark_tooling/private/meta-llama-llama-3.2-1b_hf-xnnpack-custom-spda-kv-cache-8da4w_-s22-ultra-private_android-14.csv create mode 100644 .ci/scripts/benchmark_tooling/private/meta-llama-llama-3.2-1b_hf-xnnpack-custom-spda-kv-cache-8da4w_apple-iphone-15-_ios-18.0.csv create mode 100644 .ci/scripts/benchmark_tooling/private/meta-llama-llama-3.2-1b_hf-xnnpack-custom-spda-kv-cache-8da4w_apple-iphone-15-plus-_ios-17.4.1.csv create mode 100644 .ci/scripts/benchmark_tooling/private/meta-llama-llama-3.2-1b_hf-xnnpack-custom-spda-kv-cache-8da4w_apple-iphone-15-plus-private_ios-17.4.1.csv create mode 100644 .ci/scripts/benchmark_tooling/private/meta-llama-llama-3.2-1b_hf-xnnpack-custom-spda-kv-cache-8da4w_apple-iphone-15-private_ios-18.0.csv create mode 100644 .ci/scripts/benchmark_tooling/private/meta-llama-llama-3.2-1b_hf-xnnpack-custom-spda-kv-cache-8da4w_apple-iphone-15-pro-_ios-18.4.1.csv create mode 100644 .ci/scripts/benchmark_tooling/private/meta-llama-llama-3.2-1b_hf-xnnpack-custom-spda-kv-cache-8da4w_apple-iphone-15-pro-private_ios-18.4.1.csv create mode 100644 .ci/scripts/benchmark_tooling/private/meta-llama-llama-3.2-1b_llama3-fb16_apple-iphone-15-_ios-18.0.csv create mode 100644 .ci/scripts/benchmark_tooling/private/meta-llama-llama-3.2-1b_llama3-fb16_apple-iphone-15-_ios.csv create mode 100644 .ci/scripts/benchmark_tooling/private/meta-llama-llama-3.2-1b_llama3-fb16_apple-iphone-15-plus-_ios-17.4.1.csv create mode 100644 .ci/scripts/benchmark_tooling/private/meta-llama-llama-3.2-1b_llama3-fb16_apple-iphone-15-plus-private_ios-17.4.1.csv create mode 100644 .ci/scripts/benchmark_tooling/private/meta-llama-llama-3.2-1b_llama3-fb16_apple-iphone-15-private_ios-18.0.csv create mode 100644 .ci/scripts/benchmark_tooling/private/meta-llama-llama-3.2-1b_llama3-fb16_apple-iphone-15-private_ios.csv create mode 100644 .ci/scripts/benchmark_tooling/private/meta-llama-llama-3.2-1b_llama3-fb16_apple-iphone-15-pro-_ios-18.4.1.csv create mode 100644 .ci/scripts/benchmark_tooling/private/meta-llama-llama-3.2-1b_llama3-fb16_apple-iphone-15-pro-private_ios-18.4.1.csv create mode 100644 .ci/scripts/benchmark_tooling/private/mv3_coreml-fp16_apple-iphone-15-_ios-18.0.csv create mode 100644 .ci/scripts/benchmark_tooling/private/mv3_coreml-fp16_apple-iphone-15-_ios.csv create mode 100644 .ci/scripts/benchmark_tooling/private/mv3_coreml-fp16_apple-iphone-15-plus-_ios-17.4.1.csv create mode 100644 .ci/scripts/benchmark_tooling/private/mv3_coreml-fp16_apple-iphone-15-plus-private_ios-17.4.1.csv create mode 100644 .ci/scripts/benchmark_tooling/private/mv3_coreml-fp16_apple-iphone-15-private_ios-18.0.csv create mode 100644 .ci/scripts/benchmark_tooling/private/mv3_coreml-fp16_apple-iphone-15-private_ios.csv create mode 100644 .ci/scripts/benchmark_tooling/private/mv3_coreml-fp16_apple-iphone-15-pro-_ios-18.4.1.csv create mode 100644 .ci/scripts/benchmark_tooling/private/mv3_coreml-fp16_apple-iphone-15-pro-private_ios-18.4.1.csv create mode 100644 .ci/scripts/benchmark_tooling/private/mv3_mps_apple-iphone-15-_ios-18.0.csv create mode 100644 .ci/scripts/benchmark_tooling/private/mv3_mps_apple-iphone-15-_ios.csv create mode 100644 .ci/scripts/benchmark_tooling/private/mv3_mps_apple-iphone-15-plus-_ios-17.4.1.csv create mode 100644 .ci/scripts/benchmark_tooling/private/mv3_mps_apple-iphone-15-plus-private_ios-17.4.1.csv create mode 100644 .ci/scripts/benchmark_tooling/private/mv3_mps_apple-iphone-15-private_ios-18.0.csv create mode 100644 .ci/scripts/benchmark_tooling/private/mv3_mps_apple-iphone-15-private_ios.csv create mode 100644 .ci/scripts/benchmark_tooling/private/mv3_mps_apple-iphone-15-pro-_ios-18.4.1.csv create mode 100644 .ci/scripts/benchmark_tooling/private/mv3_mps_apple-iphone-15-pro-private_ios-18.4.1.csv create mode 100644 .ci/scripts/benchmark_tooling/private/mv3_qnn-q8_-s22-_android-13.csv create mode 100644 .ci/scripts/benchmark_tooling/private/mv3_qnn-q8_-s22-private_android-13.csv create mode 100644 .ci/scripts/benchmark_tooling/private/mv3_qnn-q8_-s22-ultra-_android-14.csv create mode 100644 .ci/scripts/benchmark_tooling/private/mv3_qnn-q8_-s22-ultra-private_android-14.csv create mode 100644 .ci/scripts/benchmark_tooling/private/mv3_xnnpack-q8_-s22-_android-13.csv create mode 100644 .ci/scripts/benchmark_tooling/private/mv3_xnnpack-q8_-s22-private_android-13.csv create mode 100644 .ci/scripts/benchmark_tooling/private/mv3_xnnpack-q8_-s22-ultra-_android-14.csv create mode 100644 .ci/scripts/benchmark_tooling/private/mv3_xnnpack-q8_-s22-ultra-private_android-14.csv create mode 100644 .ci/scripts/benchmark_tooling/private/mv3_xnnpack-q8_apple-iphone-15-_ios-18.0.csv create mode 100644 .ci/scripts/benchmark_tooling/private/mv3_xnnpack-q8_apple-iphone-15-_ios.csv create mode 100644 .ci/scripts/benchmark_tooling/private/mv3_xnnpack-q8_apple-iphone-15-plus-_ios-17.4.1.csv create mode 100644 .ci/scripts/benchmark_tooling/private/mv3_xnnpack-q8_apple-iphone-15-plus-private_ios-17.4.1.csv create mode 100644 .ci/scripts/benchmark_tooling/private/mv3_xnnpack-q8_apple-iphone-15-private_ios-18.0.csv create mode 100644 .ci/scripts/benchmark_tooling/private/mv3_xnnpack-q8_apple-iphone-15-private_ios.csv create mode 100644 .ci/scripts/benchmark_tooling/private/mv3_xnnpack-q8_apple-iphone-15-pro-_ios-18.4.1.csv create mode 100644 .ci/scripts/benchmark_tooling/private/mv3_xnnpack-q8_apple-iphone-15-pro-private_ios-18.4.1.csv create mode 100644 .ci/scripts/benchmark_tooling/private/qwen-qwen3-0.6b_et-xnnpack-custom-spda-kv-cache-8da4w_-s22-_android-13.csv create mode 100644 .ci/scripts/benchmark_tooling/private/qwen-qwen3-0.6b_et-xnnpack-custom-spda-kv-cache-8da4w_-s22-private_android-13.csv create mode 100644 .ci/scripts/benchmark_tooling/private/qwen-qwen3-0.6b_et-xnnpack-custom-spda-kv-cache-8da4w_-s22-ultra-_android-14.csv create mode 100644 .ci/scripts/benchmark_tooling/private/qwen-qwen3-0.6b_et-xnnpack-custom-spda-kv-cache-8da4w_-s22-ultra-private_android-14.csv create mode 100644 .ci/scripts/benchmark_tooling/private/qwen-qwen3-0.6b_et-xnnpack-custom-spda-kv-cache-8da4w_apple-iphone-15-_ios-18.0.csv create mode 100644 .ci/scripts/benchmark_tooling/private/qwen-qwen3-0.6b_et-xnnpack-custom-spda-kv-cache-8da4w_apple-iphone-15-plus-_ios-17.4.1.csv create mode 100644 .ci/scripts/benchmark_tooling/private/qwen-qwen3-0.6b_et-xnnpack-custom-spda-kv-cache-8da4w_apple-iphone-15-plus-private_ios-17.4.1.csv create mode 100644 .ci/scripts/benchmark_tooling/private/qwen-qwen3-0.6b_et-xnnpack-custom-spda-kv-cache-8da4w_apple-iphone-15-private_ios-18.0.csv create mode 100644 .ci/scripts/benchmark_tooling/private/qwen-qwen3-0.6b_et-xnnpack-custom-spda-kv-cache-8da4w_apple-iphone-15-pro-_ios-18.4.1.csv create mode 100644 .ci/scripts/benchmark_tooling/private/qwen-qwen3-0.6b_et-xnnpack-custom-spda-kv-cache-8da4w_apple-iphone-15-pro-private_ios-18.4.1.csv create mode 100644 .ci/scripts/benchmark_tooling/private/qwen-qwen3-0.6b_hf-xnnpack-custom-spda-kv-cache-8da4w_-s22-_android-13.csv create mode 100644 .ci/scripts/benchmark_tooling/private/qwen-qwen3-0.6b_hf-xnnpack-custom-spda-kv-cache-8da4w_-s22-private_android-13.csv create mode 100644 .ci/scripts/benchmark_tooling/private/qwen-qwen3-0.6b_hf-xnnpack-custom-spda-kv-cache-8da4w_-s22-ultra-_android-14.csv create mode 100644 .ci/scripts/benchmark_tooling/private/qwen-qwen3-0.6b_hf-xnnpack-custom-spda-kv-cache-8da4w_-s22-ultra-private_android-14.csv create mode 100644 .ci/scripts/benchmark_tooling/private/qwen-qwen3-0.6b_hf-xnnpack-custom-spda-kv-cache-8da4w_apple-iphone-15-_ios-18.0.csv create mode 100644 .ci/scripts/benchmark_tooling/private/qwen-qwen3-0.6b_hf-xnnpack-custom-spda-kv-cache-8da4w_apple-iphone-15-plus-_ios-17.4.1.csv create mode 100644 .ci/scripts/benchmark_tooling/private/qwen-qwen3-0.6b_hf-xnnpack-custom-spda-kv-cache-8da4w_apple-iphone-15-plus-private_ios-17.4.1.csv create mode 100644 .ci/scripts/benchmark_tooling/private/qwen-qwen3-0.6b_hf-xnnpack-custom-spda-kv-cache-8da4w_apple-iphone-15-private_ios-18.0.csv create mode 100644 .ci/scripts/benchmark_tooling/private/qwen-qwen3-0.6b_hf-xnnpack-custom-spda-kv-cache-8da4w_apple-iphone-15-pro-_ios-18.4.1.csv create mode 100644 .ci/scripts/benchmark_tooling/private/qwen-qwen3-0.6b_hf-xnnpack-custom-spda-kv-cache-8da4w_apple-iphone-15-pro-private_ios-18.4.1.csv diff --git a/.ci/scripts/benchmark_tooling/README.md b/.ci/scripts/benchmark_tooling/README.md index 869cc1a8301..0e5b67c955e 100644 --- a/.ci/scripts/benchmark_tooling/README.md +++ b/.ci/scripts/benchmark_tooling/README.md @@ -2,51 +2,142 @@ A library providing tools for benchmarking ExecutorchBenchmark data. -## Read Benchmark Data -`get_benchmark_analysis_data.py` fetches benchmark data from HUD Open API and processes it, grouping metrics by private and public devices. - -### Quick Start +## Installation Install dependencies: ```bash pip install -r requirements.txt ``` -Run with default output (CLI): +## Tools + +### get_benchmark_analysis_data.py + +This script fetches benchmark data from HUD Open API and processes it, grouping metrics by private and public devices. +## Quick start + +generates the matching_list json: +``` +python get_benchmark_analysis_data.py get_matching_list \ + --startTime 2025-06-11T00:00:00 \ + --endTime 2025-06-17T00:00:00 \ + --category private_mv3_iphone15 \ + --filter "include=private,mv3;"\ + --outputType json +``` + +if everything looks good, generate the private csv output: +``` +python3 get_benchmark_analysis_data.py generate_data \ +--startTime "2025-06-11T00:00:00" \ +--endTime "2025-06-17T18:00:00" \ +--private-matching-json-path "./private_mv3_iphone15.json" --outputType csv \ +--includePublic false +``` + + +#### Generate Benchmark Data + ```bash -python3 .ci/scripts/benchmark_tooling/get_benchmark_analysis_data.py --startTime "2025-06-11T00:00:00" --endTime "2025-06-17T18:00:00" +python get_benchmark_analysis_data.py generate_data \ + --startTime 2025-06-11T00:00:00 \ + --endTime 2025-06-17T18:00:00 ``` -Additional options: +##### Options: - `--silent`: Hide processing logs, show only results - `--outputType df`: Display results in DataFrame format -- `--outputType excel --outputDir "{YOUR_LOCAL_DIRECTORY}"`: Generate Excel file with multiple sheets (`res_private.xlsx` and `res_public.xlsx`) -- `--outputType csv --outputDir "{YOUR_LOCAL_DIRECTORY}"`: Generate CSV files in folders (`private` and `public`) +- `--outputType print`: Display results in dictionary format +- `--outputType json --outputDir "/path/to/dir"`: Generate JSON file 'benchmark_results.json' +- `--outputType csv --outputDir "/path/to/dir"`: Generate CSV files in folders (`private` and `public`) +#### Get Matching Lists -### Python API Usage +The `get_matching_list` command allows you to filter benchmark data based on specific criteria. -To use the benchmark fetcher in your own scripts: +##### Get All Matching Lists +```bash +python get_benchmark_analysis_data.py get_matching_list \ + --startTime 2025-06-11T00:00:00 \ + --endTime 2025-06-17T00:00:00 \ + --category all \ + --outputType json +``` -```python -import ExecutorchBenchmarkFetcher from benchmark_tooling.get_benchmark_analysis_data -fetcher = ExecutorchBenchmarkFetcher() -# Must call run first -fetcher.run() -private, public = fetcher.to_df() +##### Get Private Device Matching Lists +```bash +python get_benchmark_analysis_data.py get_matching_list \ + --startTime 2025-06-11T00:00:00 \ + --endTime 2025-06-17T00:00:00 \ + --category private \ + --filter "include=private;" ``` -## analyze_benchmark_stability.py -`analyze_benchmark_stability.py` analyzes the stability of benchmark data, comparing the results of private and public devices. +##### Get Public Device Matching Lists +```bash +python get_benchmark_analysis_data.py get_matching_list \ + --startTime 2025-06-11T00:00:00 \ + --endTime 2025-06-17T00:00:00 \ + --category public \ + --filter "exclude=private;" +``` -### Quick Start -Install dependencies: +##### Advanced Filtering Examples +Filter for specific models and devices: ```bash -pip install -r requirements.txt +# Get all mv3 models on iPhone 15 except apple_iphone_15_plus +python get_benchmark_analysis_data.py get_matching_list \ + --startTime 2025-06-11T00:00:00 \ + --endTime 2025-06-17T00:00:00 \ + --category private_mv3_iphone5 \ + --filter "include=private,mv3,iphone_15;exclude=apple_iphone_15_plus" ``` +Multiple filters (using union logic): +```bash +# Get both mv3 and resnet50 models on iPhone 15 except apple_iphone_15_plus +python get_benchmark_analysis_data.py get_matching_list \ + --startTime 2025-06-11T00:00:00 \ + --endTime 2025-06-17T00:00:00 \ + --category private_models_iphone15 \ + --filter "include=private,mv3,iphone_15;exclude=apple_iphone_15_plus" \ + --filter "include=private,resnet50,iphone_15;exclude=apple_iphone_15_plus" ``` -python .ci/scripts/benchmark_tooling/analyze_benchmark_stability.py \ - Benchmark\ Dataset\ with\ Private\ AWS\ Devices.xlsx \ - --reference_file Benchmark\ Dataset\ with\ Public\ AWS\ Devices.xlsx + +##### Output Options +- `--outputType json --outputDir "/path/to/dir"`: Generate JSON file '{category}.json' + +#### Python API Usage + +To use the benchmark fetcher in your own scripts: + +```python +from benchmark_tooling.get_benchmark_analysis_data import ExecutorchBenchmarkFetcher + +# Initialize the fetcher +fetcher = ExecutorchBenchmarkFetcher() + +# Fetch data for a specific time range +fetcher.run( + "2025-06-11T00:00:00", + "2025-06-17T00:00:00", + private_device_matching_list, + public_device_matching_list +) + +# Get results as DataFrames +private_dfs, public_dfs = fetcher.toDataFrame() + +# Export results to Excel +fetcher.output_data(OutputType.CSV, (output_dir="./results") +``` + +### analyze_benchmark_stability.py + +This script analyzes the stability of benchmark data, comparing the results of private and public devices. + +```bash +python analyze_benchmark_stability.py \ + "Benchmark Dataset with Private AWS Devices.xlsx" \ + --reference_file "Benchmark Dataset with Public AWS Devices.xlsx" ``` diff --git a/.ci/scripts/benchmark_tooling/all.json b/.ci/scripts/benchmark_tooling/all.json new file mode 100644 index 00000000000..0efe56b7d42 --- /dev/null +++ b/.ci/scripts/benchmark_tooling/all.json @@ -0,0 +1,1778 @@ +[ + [ + "allenai-olmo-1b-hf", + "hf-xnnpack-custom-spda-kv-cache-8da4w", + "apple-iphone-15-p...-mobile-job-ios", + "ios" + ], + [ + "allenai-olmo-1b-hf", + "hf-xnnpack-custom-spda-kv-cache-8da4w", + "apple-iphone-15-plus-private", + "ios-17.4.1" + ], + [ + "allenai-olmo-1b-hf", + "hf-xnnpack-custom-spda-kv-cache-8da4w", + "apple-iphone-15-plus", + "ios-17.4.1" + ], + [ + "allenai-olmo-1b-hf", + "hf-xnnpack-custom-spda-kv-cache-8da4w", + "apple-iphone-15-private", + "ios-18.0" + ], + [ + "allenai-olmo-1b-hf", + "hf-xnnpack-custom-spda-kv-cache-8da4w", + "apple-iphone-15-pro-max", + "ios-17.3.1" + ], + [ + "allenai-olmo-1b-hf", + "hf-xnnpack-custom-spda-kv-cache-8da4w", + "apple-iphone-15-pro-private", + "ios-18.4.1" + ], + [ + "allenai-olmo-1b-hf", + "hf-xnnpack-custom-spda-kv-cache-8da4w", + "apple-iphone-15-pro", + "ios-17.3.1" + ], + [ + "allenai-olmo-1b-hf", + "hf-xnnpack-custom-spda-kv-cache-8da4w", + "apple-iphone-15", + "ios-18.0" + ], + [ + "allenai-olmo-1b-hf", + "hf-xnnpack-custom-spda-kv-cache-8da4w", + "samsung-galaxy-s22-5g-private", + "android-13" + ], + [ + "allenai-olmo-1b-hf", + "hf-xnnpack-custom-spda-kv-cache-8da4w", + "samsung-galaxy-s22-5g", + "android-12" + ], + [ + "allenai-olmo-1b-hf", + "hf-xnnpack-custom-spda-kv-cache-8da4w", + "samsung-galaxy-s22-5g", + "android-13" + ], + [ + "allenai-olmo-1b-hf", + "hf-xnnpack-custom-spda-kv-cache-8da4w", + "samsung-galaxy-s22-ultra-5g-private", + "android-14" + ], + [ + "allenai-olmo-1b-hf", + "hf-xnnpack-custom-spda-kv-cache-8da4w", + "samsung-galaxy-s22-ultra-5g", + "android-12" + ], + [ + "edsr", + "coreml-fp16", + "apple-iphone-15-plus", + "ios-17.4.1" + ], + [ + "edsr", + "coreml-fp16", + "apple-iphone-15-pro-max", + "ios-17.3.1" + ], + [ + "edsr", + "coreml-fp16", + "apple-iphone-15-pro", + "ios-17.3.1" + ], + [ + "edsr", + "coreml-fp16", + "apple-iphone-15", + "ios-18.0" + ], + [ + "edsr", + "qnn-q8", + "samsung-galaxy-s22-5g", + "android-12" + ], + [ + "edsr", + "qnn-q8", + "samsung-galaxy-s22-5g", + "android-13" + ], + [ + "edsr", + "qnn-q8", + "samsung-galaxy-s22-ultra-5g", + "android-12" + ], + [ + "edsr", + "xnnpack-q8", + "apple-iphone-15-plus", + "ios-17.4.1" + ], + [ + "edsr", + "xnnpack-q8", + "apple-iphone-15-pro-max", + "ios-17.3.1" + ], + [ + "edsr", + "xnnpack-q8", + "apple-iphone-15-pro", + "ios-17.3.1" + ], + [ + "edsr", + "xnnpack-q8", + "apple-iphone-15", + "ios-18.0" + ], + [ + "edsr", + "xnnpack-q8", + "samsung-galaxy-s22-5g", + "android-12" + ], + [ + "edsr", + "xnnpack-q8", + "samsung-galaxy-s22-5g", + "android-13" + ], + [ + "edsr", + "xnnpack-q8", + "samsung-galaxy-s22-ultra-5g", + "android-12" + ], + [ + "google-gemma-3-1b-it", + "hf-xnnpack-custom-spda-kv-cache-8da4w", + "apple-iphone-15-plus", + "ios-17.4.1" + ], + [ + "google-gemma-3-1b-it", + "hf-xnnpack-custom-spda-kv-cache-8da4w", + "apple-iphone-15-pro-max", + "ios-17.3.1" + ], + [ + "google-gemma-3-1b-it", + "hf-xnnpack-custom-spda-kv-cache-8da4w", + "apple-iphone-15-pro", + "ios-17.3.1" + ], + [ + "google-gemma-3-1b-it", + "hf-xnnpack-custom-spda-kv-cache-8da4w", + "apple-iphone-15-pro", + "ios-18.4.1" + ], + [ + "google-gemma-3-1b-it", + "hf-xnnpack-custom-spda-kv-cache-8da4w", + "apple-iphone-15", + "ios-18.0" + ], + [ + "huggingfacetb-smollm2-135m", + "hf-xnnpack-custom-spda-kv-cache-8da4w", + "apple-iph...-mobile-job-ios", + "ios" + ], + [ + "huggingfacetb-smollm2-135m", + "hf-xnnpack-custom-spda-kv-cache-8da4w", + "apple-iphone-15-plus-private", + "ios-17.4.1" + ], + [ + "huggingfacetb-smollm2-135m", + "hf-xnnpack-custom-spda-kv-cache-8da4w", + "apple-iphone-15-plus", + "ios-17.4.1" + ], + [ + "huggingfacetb-smollm2-135m", + "hf-xnnpack-custom-spda-kv-cache-8da4w", + "apple-iphone-15-private", + "ios-18.0" + ], + [ + "huggingfacetb-smollm2-135m", + "hf-xnnpack-custom-spda-kv-cache-8da4w", + "apple-iphone-15-pro-max", + "ios-17.3.1" + ], + [ + "huggingfacetb-smollm2-135m", + "hf-xnnpack-custom-spda-kv-cache-8da4w", + "apple-iphone-15-pro-private", + "ios-18.4.1" + ], + [ + "huggingfacetb-smollm2-135m", + "hf-xnnpack-custom-spda-kv-cache-8da4w", + "apple-iphone-15-pro", + "ios-17.3.1" + ], + [ + "huggingfacetb-smollm2-135m", + "hf-xnnpack-custom-spda-kv-cache-8da4w", + "apple-iphone-15", + "ios-18.0" + ], + [ + "huggingfacetb-smollm2-135m", + "hf-xnnpack-custom-spda-kv-cache-8da4w", + "samsung-galaxy-s22-5g-private", + "android-13" + ], + [ + "huggingfacetb-smollm2-135m", + "hf-xnnpack-custom-spda-kv-cache-8da4w", + "samsung-galaxy-s22-5g", + "android-12" + ], + [ + "huggingfacetb-smollm2-135m", + "hf-xnnpack-custom-spda-kv-cache-8da4w", + "samsung-galaxy-s22-5g", + "android-13" + ], + [ + "huggingfacetb-smollm2-135m", + "hf-xnnpack-custom-spda-kv-cache-8da4w", + "samsung-galaxy-s22-ultra-5g-private", + "android-14" + ], + [ + "huggingfacetb-smollm2-135m", + "hf-xnnpack-custom-spda-kv-cache-8da4w", + "samsung-galaxy-s22-ultra-5g", + "android-12" + ], + [ + "huggingfacetb-smollm2-135m", + "hf-xnnpack-custom-spda-kv-cache-8da4w", + "samsung-galaxy-s22-ultra-5g", + "android-14" + ], + [ + "ic3", + "coreml-fp16", + "apple-iphone-15-plus", + "ios-17.4.1" + ], + [ + "ic3", + "coreml-fp16", + "apple-iphone-15-pro-max", + "ios-17.3.1" + ], + [ + "ic3", + "coreml-fp16", + "apple-iphone-15-pro", + "ios-17.3.1" + ], + [ + "ic3", + "coreml-fp16", + "apple-iphone-15", + "ios-18.0" + ], + [ + "ic3", + "mps", + "apple-iphone-15-plus", + "ios-17.4.1" + ], + [ + "ic3", + "mps", + "apple-iphone-15-pro-max", + "ios-17.3.1" + ], + [ + "ic3", + "mps", + "apple-iphone-15-pro", + "ios-17.3.1" + ], + [ + "ic3", + "mps", + "apple-iphone-15", + "ios-18.0" + ], + [ + "ic3", + "qnn-q8", + "samsung-galaxy-s22-5g", + "android-12" + ], + [ + "ic3", + "qnn-q8", + "samsung-galaxy-s22-5g", + "android-13" + ], + [ + "ic3", + "qnn-q8", + "samsung-galaxy-s22-ultra-5g", + "android-12" + ], + [ + "ic3", + "xnnpack-q8", + "apple-iphone-15-plus", + "ios-17.4.1" + ], + [ + "ic3", + "xnnpack-q8", + "apple-iphone-15-pro-max", + "ios-17.3.1" + ], + [ + "ic3", + "xnnpack-q8", + "apple-iphone-15-pro", + "ios-17.3.1" + ], + [ + "ic3", + "xnnpack-q8", + "apple-iphone-15", + "ios-18.0" + ], + [ + "ic3", + "xnnpack-q8", + "samsung-galaxy-s22-5g", + "android-12" + ], + [ + "ic3", + "xnnpack-q8", + "samsung-galaxy-s22-5g", + "android-13" + ], + [ + "ic3", + "xnnpack-q8", + "samsung-galaxy-s22-ultra-5g", + "android-12" + ], + [ + "ic4", + "coreml-fp16", + "apple-iphone-15-plus", + "ios-17.4.1" + ], + [ + "ic4", + "coreml-fp16", + "apple-iphone-15-pro-max", + "ios-17.3.1" + ], + [ + "ic4", + "coreml-fp16", + "apple-iphone-15-pro", + "ios-17.3.1" + ], + [ + "ic4", + "coreml-fp16", + "apple-iphone-15", + "ios-18.0" + ], + [ + "ic4", + "mps", + "apple-iphone-15-plus", + "ios-17.4.1" + ], + [ + "ic4", + "mps", + "apple-iphone-15-pro-max", + "ios-17.3.1" + ], + [ + "ic4", + "mps", + "apple-iphone-15-pro", + "ios-17.3.1" + ], + [ + "ic4", + "mps", + "apple-iphone-15", + "ios-18.0" + ], + [ + "ic4", + "qnn-q8", + "samsung-galaxy-s22-5g", + "android-12" + ], + [ + "ic4", + "qnn-q8", + "samsung-galaxy-s22-5g", + "android-13" + ], + [ + "ic4", + "qnn-q8", + "samsung-galaxy-s22-ultra-5g", + "android-12" + ], + [ + "ic4", + "xnnpack-q8", + "apple-iphone-15-plus", + "ios-17.4.1" + ], + [ + "ic4", + "xnnpack-q8", + "apple-iphone-15-pro-max", + "ios-17.3.1" + ], + [ + "ic4", + "xnnpack-q8", + "apple-iphone-15-pro", + "ios-17.3.1" + ], + [ + "ic4", + "xnnpack-q8", + "apple-iphone-15", + "ios-18.0" + ], + [ + "ic4", + "xnnpack-q8", + "samsung-galaxy-s22-5g", + "android-12" + ], + [ + "ic4", + "xnnpack-q8", + "samsung-galaxy-s22-5g", + "android-13" + ], + [ + "ic4", + "xnnpack-q8", + "samsung-galaxy-s22-ultra-5g", + "android-12" + ], + [ + "llama", + "coreml-fp16", + "apple-iphone-15-plus", + "ios-17.4.1" + ], + [ + "llama", + "coreml-fp16", + "apple-iphone-15-pro-max", + "ios-17.3.1" + ], + [ + "llama", + "coreml-fp16", + "apple-iphone-15-pro", + "ios-17.3.1" + ], + [ + "llama", + "coreml-fp16", + "apple-iphone-15", + "ios" + ], + [ + "llama", + "coreml-fp16", + "apple-iphone-15", + "ios-18.0" + ], + [ + "llama", + "qnn-q8", + "samsung-galaxy-s22-5g", + "android-12" + ], + [ + "llama", + "qnn-q8", + "samsung-galaxy-s22-5g", + "android-13" + ], + [ + "llama", + "qnn-q8", + "samsung-galaxy-s22-ultra-5g", + "android-12" + ], + [ + "llama", + "xnnpack-q8", + "apple-iphone-15-plus", + "ios-17.4.1" + ], + [ + "llama", + "xnnpack-q8", + "apple-iphone-15-pro-max", + "ios-17.3.1" + ], + [ + "llama", + "xnnpack-q8", + "apple-iphone-15-pro", + "ios-17.3.1" + ], + [ + "llama", + "xnnpack-q8", + "apple-iphone-15", + "ios" + ], + [ + "llama", + "xnnpack-q8", + "apple-iphone-15", + "ios-18.0" + ], + [ + "llama", + "xnnpack-q8", + "samsung-galaxy-s22-5g", + "android-12" + ], + [ + "llama", + "xnnpack-q8", + "samsung-galaxy-s22-5g", + "android-13" + ], + [ + "llama", + "xnnpack-q8", + "samsung-galaxy-s22-ultra-5g", + "android-12" + ], + [ + "meta-llama-llama-3.2-1b-instruct-qlora-int4-eo8", + "llama3-qlora", + "apple-iphone-...-mobile-job-ios", + "ios" + ], + [ + "meta-llama-llama-3.2-1b-instruct-qlora-int4-eo8", + "llama3-qlora", + "apple-iphone-15-plus-private", + "ios-17.4.1" + ], + [ + "meta-llama-llama-3.2-1b-instruct-qlora-int4-eo8", + "llama3-qlora", + "apple-iphone-15-plus", + "ios-17.4.1" + ], + [ + "meta-llama-llama-3.2-1b-instruct-qlora-int4-eo8", + "llama3-qlora", + "apple-iphone-15-private", + "ios-18.0" + ], + [ + "meta-llama-llama-3.2-1b-instruct-qlora-int4-eo8", + "llama3-qlora", + "apple-iphone-15-pro-max", + "ios-17.3.1" + ], + [ + "meta-llama-llama-3.2-1b-instruct-qlora-int4-eo8", + "llama3-qlora", + "apple-iphone-15-pro-private", + "ios-18.4.1" + ], + [ + "meta-llama-llama-3.2-1b-instruct-qlora-int4-eo8", + "llama3-qlora", + "apple-iphone-15-pro", + "ios-17.3.1" + ], + [ + "meta-llama-llama-3.2-1b-instruct-qlora-int4-eo8", + "llama3-qlora", + "apple-iphone-15", + "ios-18.0" + ], + [ + "meta-llama-llama-3.2-1b-instruct-qlora-int4-eo8", + "llama3-qlora", + "samsung-galaxy-s22-5g-private", + "android-13" + ], + [ + "meta-llama-llama-3.2-1b-instruct-qlora-int4-eo8", + "llama3-qlora", + "samsung-galaxy-s22-5g", + "android-12" + ], + [ + "meta-llama-llama-3.2-1b-instruct-qlora-int4-eo8", + "llama3-qlora", + "samsung-galaxy-s22-5g", + "android-13" + ], + [ + "meta-llama-llama-3.2-1b-instruct-qlora-int4-eo8", + "llama3-qlora", + "samsung-galaxy-s22-ultra-5g-private", + "android-14" + ], + [ + "meta-llama-llama-3.2-1b-instruct-qlora-int4-eo8", + "llama3-qlora", + "samsung-galaxy-s22-ultra-5g", + "android-12" + ], + [ + "meta-llama-llama-3.2-1b-instruct-spinquant-int4-eo8", + "llama3-spinquant", + "apple-iphone-15-plus-private", + "ios-17.4.1" + ], + [ + "meta-llama-llama-3.2-1b-instruct-spinquant-int4-eo8", + "llama3-spinquant", + "apple-iphone-15-plus", + "ios-17.4.1" + ], + [ + "meta-llama-llama-3.2-1b-instruct-spinquant-int4-eo8", + "llama3-spinquant", + "apple-iphone-15-private", + "ios-18.0" + ], + [ + "meta-llama-llama-3.2-1b-instruct-spinquant-int4-eo8", + "llama3-spinquant", + "apple-iphone-15-pro-max", + "ios-17.3.1" + ], + [ + "meta-llama-llama-3.2-1b-instruct-spinquant-int4-eo8", + "llama3-spinquant", + "apple-iphone-15-pro-private", + "ios-18.4.1" + ], + [ + "meta-llama-llama-3.2-1b-instruct-spinquant-int4-eo8", + "llama3-spinquant", + "apple-iphone-15-pro", + "ios-17.3.1" + ], + [ + "meta-llama-llama-3.2-1b-instruct-spinquant-int4-eo8", + "llama3-spinquant", + "apple-iphone-15", + "ios-18.0" + ], + [ + "meta-llama-llama-3.2-1b-instruct-spinquant-int4-eo8", + "llama3-spinquant", + "apple...-mobile-job-ios", + "ios" + ], + [ + "meta-llama-llama-3.2-1b-instruct-spinquant-int4-eo8", + "llama3-spinquant", + "samsung-galaxy-s22-5g-private", + "android-13" + ], + [ + "meta-llama-llama-3.2-1b-instruct-spinquant-int4-eo8", + "llama3-spinquant", + "samsung-galaxy-s22-5g", + "android-12" + ], + [ + "meta-llama-llama-3.2-1b-instruct-spinquant-int4-eo8", + "llama3-spinquant", + "samsung-galaxy-s22-5g", + "android-13" + ], + [ + "meta-llama-llama-3.2-1b-instruct-spinquant-int4-eo8", + "llama3-spinquant", + "samsung-galaxy-s22-ultra-5g-private", + "android-14" + ], + [ + "meta-llama-llama-3.2-1b-instruct-spinquant-int4-eo8", + "llama3-spinquant", + "samsung-galaxy-s22-ultra-5g", + "android-12" + ], + [ + "meta-llama-llama-3.2-1b", + "et-xnnpack-custom-spda-kv-cache-8da4w", + "apple-iphone-15-plus-private", + "ios-17.4.1" + ], + [ + "meta-llama-llama-3.2-1b", + "et-xnnpack-custom-spda-kv-cache-8da4w", + "apple-iphone-15-plus", + "ios-17.4.1" + ], + [ + "meta-llama-llama-3.2-1b", + "et-xnnpack-custom-spda-kv-cache-8da4w", + "apple-iphone-15-private", + "ios-18.0" + ], + [ + "meta-llama-llama-3.2-1b", + "et-xnnpack-custom-spda-kv-cache-8da4w", + "apple-iphone-15-pro-max", + "ios-17.3.1" + ], + [ + "meta-llama-llama-3.2-1b", + "et-xnnpack-custom-spda-kv-cache-8da4w", + "apple-iphone-15-pro-private", + "ios-18.4.1" + ], + [ + "meta-llama-llama-3.2-1b", + "et-xnnpack-custom-spda-kv-cache-8da4w", + "apple-iphone-15-pro", + "ios-17.3.1" + ], + [ + "meta-llama-llama-3.2-1b", + "et-xnnpack-custom-spda-kv-cache-8da4w", + "apple-iphone-15", + "ios-18.0" + ], + [ + "meta-llama-llama-3.2-1b", + "et-xnnpack-custom-spda-kv-cache-8da4w", + "apple-iphone...-mobile-job-ios", + "ios" + ], + [ + "meta-llama-llama-3.2-1b", + "et-xnnpack-custom-spda-kv-cache-8da4w", + "samsung-galaxy-s22-5g-private", + "android-13" + ], + [ + "meta-llama-llama-3.2-1b", + "et-xnnpack-custom-spda-kv-cache-8da4w", + "samsung-galaxy-s22-5g", + "android-12" + ], + [ + "meta-llama-llama-3.2-1b", + "et-xnnpack-custom-spda-kv-cache-8da4w", + "samsung-galaxy-s22-5g", + "android-13" + ], + [ + "meta-llama-llama-3.2-1b", + "et-xnnpack-custom-spda-kv-cache-8da4w", + "samsung-galaxy-s22-ultra-5g-private", + "android-14" + ], + [ + "meta-llama-llama-3.2-1b", + "et-xnnpack-custom-spda-kv-cache-8da4w", + "samsung-galaxy-s22-ultra-5g", + "android-12" + ], + [ + "meta-llama-llama-3.2-1b", + "et-xnnpack-custom-spda-kv-cache-8da4w", + "samsung-galaxy-s22-ultra-5g", + "android-14" + ], + [ + "meta-llama-llama-3.2-1b", + "hf-xnnpack-custom-spda-kv-cache-8da4w", + "apple-iphone-15-plus-private", + "ios-17.4.1" + ], + [ + "meta-llama-llama-3.2-1b", + "hf-xnnpack-custom-spda-kv-cache-8da4w", + "apple-iphone-15-plus", + "ios-17.4.1" + ], + [ + "meta-llama-llama-3.2-1b", + "hf-xnnpack-custom-spda-kv-cache-8da4w", + "apple-iphone-15-private", + "ios-18.0" + ], + [ + "meta-llama-llama-3.2-1b", + "hf-xnnpack-custom-spda-kv-cache-8da4w", + "apple-iphone-15-pro-max", + "ios-17.3.1" + ], + [ + "meta-llama-llama-3.2-1b", + "hf-xnnpack-custom-spda-kv-cache-8da4w", + "apple-iphone-15-pro-private", + "ios-18.4.1" + ], + [ + "meta-llama-llama-3.2-1b", + "hf-xnnpack-custom-spda-kv-cache-8da4w", + "apple-iphone-15-pro", + "ios-17.3.1" + ], + [ + "meta-llama-llama-3.2-1b", + "hf-xnnpack-custom-spda-kv-cache-8da4w", + "apple-iphone-15-pro", + "ios-18.4.1" + ], + [ + "meta-llama-llama-3.2-1b", + "hf-xnnpack-custom-spda-kv-cache-8da4w", + "apple-iphone-15", + "ios-18.0" + ], + [ + "meta-llama-llama-3.2-1b", + "hf-xnnpack-custom-spda-kv-cache-8da4w", + "apple-iphone...-mobile-job-ios", + "ios" + ], + [ + "meta-llama-llama-3.2-1b", + "hf-xnnpack-custom-spda-kv-cache-8da4w", + "samsung-gala...-mobile-job-android", + "android" + ], + [ + "meta-llama-llama-3.2-1b", + "hf-xnnpack-custom-spda-kv-cache-8da4w", + "samsung-galaxy-s22-5g-private", + "android-13" + ], + [ + "meta-llama-llama-3.2-1b", + "hf-xnnpack-custom-spda-kv-cache-8da4w", + "samsung-galaxy-s22-5g", + "android-12" + ], + [ + "meta-llama-llama-3.2-1b", + "hf-xnnpack-custom-spda-kv-cache-8da4w", + "samsung-galaxy-s22-5g", + "android-13" + ], + [ + "meta-llama-llama-3.2-1b", + "hf-xnnpack-custom-spda-kv-cache-8da4w", + "samsung-galaxy-s22-ultra-5g-private", + "android-14" + ], + [ + "meta-llama-llama-3.2-1b", + "hf-xnnpack-custom-spda-kv-cache-8da4w", + "samsung-galaxy-s22-ultra-5g", + "android-12" + ], + [ + "meta-llama-llama-3.2-1b", + "hf-xnnpack-custom-spda-kv-cache-8da4w", + "samsung-galaxy-s22-ultra-5g", + "android-14" + ], + [ + "meta-llama-llama-3.2-1b", + "llama3-coreml-ane", + "apple-iphone-15-pro", + "ios-18.1" + ], + [ + "meta-llama-llama-3.2-1b", + "llama3-coreml-ane", + "apple-iphone-15", + "ios-18.0" + ], + [ + "meta-llama-llama-3.2-1b", + "llama3-fb16", + "apple-iphone-15-plus-private", + "ios-17.4.1" + ], + [ + "meta-llama-llama-3.2-1b", + "llama3-fb16", + "apple-iphone-15-plus", + "ios-17.4.1" + ], + [ + "meta-llama-llama-3.2-1b", + "llama3-fb16", + "apple-iphone-15-private", + "ios" + ], + [ + "meta-llama-llama-3.2-1b", + "llama3-fb16", + "apple-iphone-15-private", + "ios-18.0" + ], + [ + "meta-llama-llama-3.2-1b", + "llama3-fb16", + "apple-iphone-15-pro-max", + "ios-17.3.1" + ], + [ + "meta-llama-llama-3.2-1b", + "llama3-fb16", + "apple-iphone-15-pro-private", + "ios-18.4.1" + ], + [ + "meta-llama-llama-3.2-1b", + "llama3-fb16", + "apple-iphone-15-pro", + "ios-17.3.1" + ], + [ + "meta-llama-llama-3.2-1b", + "llama3-fb16", + "apple-iphone-15", + "ios-18.0" + ], + [ + "meta-llama-llama-3.2-1b", + "llama3-fb16", + "samsung-galaxy-s22-5g", + "android-13" + ], + [ + "meta-llama-llama-3.2-1b", + "llama3-fb16", + "samsung-galaxy-s22-ultra-5g", + "android-14" + ], + [ + "mobilebert", + "coreml-fp16", + "apple-iphone-15-plus", + "ios-17.4.1" + ], + [ + "mobilebert", + "coreml-fp16", + "apple-iphone-15-pro-max", + "ios-17.3.1" + ], + [ + "mobilebert", + "coreml-fp16", + "apple-iphone-15-pro", + "ios-17.3.1" + ], + [ + "mobilebert", + "coreml-fp16", + "apple-iphone-15", + "ios-18.0" + ], + [ + "mobilebert", + "xnnpack-q8", + "apple-iphone-15-plus", + "ios-17.4.1" + ], + [ + "mobilebert", + "xnnpack-q8", + "apple-iphone-15-pro-max", + "ios-17.3.1" + ], + [ + "mobilebert", + "xnnpack-q8", + "apple-iphone-15-pro", + "ios-17.3.1" + ], + [ + "mobilebert", + "xnnpack-q8", + "apple-iphone-15", + "ios-18.0" + ], + [ + "mobilebert", + "xnnpack-q8", + "samsung-galaxy-s22-5g", + "android-12" + ], + [ + "mobilebert", + "xnnpack-q8", + "samsung-galaxy-s22-5g", + "android-13" + ], + [ + "mobilebert", + "xnnpack-q8", + "samsung-galaxy-s22-ultra-5g", + "android-12" + ], + [ + "mv2", + "coreml-fp16", + "apple-iphone-15-plus", + "ios-17.4.1" + ], + [ + "mv2", + "coreml-fp16", + "apple-iphone-15-pro-max", + "ios-17.3.1" + ], + [ + "mv2", + "coreml-fp16", + "apple-iphone-15-pro", + "ios-17.3.1" + ], + [ + "mv2", + "coreml-fp16", + "apple-iphone-15", + "ios-18.0" + ], + [ + "mv2", + "mps", + "apple-iphone-15-plus", + "ios-17.4.1" + ], + [ + "mv2", + "mps", + "apple-iphone-15-pro-max", + "ios-17.3.1" + ], + [ + "mv2", + "mps", + "apple-iphone-15-pro", + "ios-17.3.1" + ], + [ + "mv2", + "mps", + "apple-iphone-15", + "ios-18.0" + ], + [ + "mv2", + "qnn-q8", + "samsung-galaxy-s22-5g", + "android-12" + ], + [ + "mv2", + "qnn-q8", + "samsung-galaxy-s22-5g", + "android-13" + ], + [ + "mv2", + "qnn-q8", + "samsung-galaxy-s22-ultra-5g", + "android-12" + ], + [ + "mv2", + "xnnpack-q8", + "apple-iphone-15-plus", + "ios-17.4.1" + ], + [ + "mv2", + "xnnpack-q8", + "apple-iphone-15-pro-max", + "ios-17.3.1" + ], + [ + "mv2", + "xnnpack-q8", + "apple-iphone-15-pro", + "ios-17.3.1" + ], + [ + "mv2", + "xnnpack-q8", + "apple-iphone-15", + "ios-18.0" + ], + [ + "mv2", + "xnnpack-q8", + "samsung-galaxy-s22-5g", + "android-12" + ], + [ + "mv2", + "xnnpack-q8", + "samsung-galaxy-s22-5g", + "android-13" + ], + [ + "mv2", + "xnnpack-q8", + "samsung-galaxy-s22-ultra-5g", + "android-12" + ], + [ + "mv3", + "coreml-fp16", + "apple-iphone-15-plus-private", + "ios-17.4.1" + ], + [ + "mv3", + "coreml-fp16", + "apple-iphone-15-plus", + "ios-17.4.1" + ], + [ + "mv3", + "coreml-fp16", + "apple-iphone-15-private", + "ios" + ], + [ + "mv3", + "coreml-fp16", + "apple-iphone-15-private", + "ios-18.0" + ], + [ + "mv3", + "coreml-fp16", + "apple-iphone-15-pro-max", + "ios-17.3.1" + ], + [ + "mv3", + "coreml-fp16", + "apple-iphone-15-pro-private", + "ios-18.4.1" + ], + [ + "mv3", + "coreml-fp16", + "apple-iphone-15-pro", + "ios-17.3.1" + ], + [ + "mv3", + "coreml-fp16", + "apple-iphone-15", + "ios-18.0" + ], + [ + "mv3", + "mps", + "apple-iphone-15-plus-private", + "ios-17.4.1" + ], + [ + "mv3", + "mps", + "apple-iphone-15-plus", + "ios-17.4.1" + ], + [ + "mv3", + "mps", + "apple-iphone-15-private", + "ios" + ], + [ + "mv3", + "mps", + "apple-iphone-15-private", + "ios-18.0" + ], + [ + "mv3", + "mps", + "apple-iphone-15-pro-max", + "ios-17.3.1" + ], + [ + "mv3", + "mps", + "apple-iphone-15-pro-private", + "ios-18.4.1" + ], + [ + "mv3", + "mps", + "apple-iphone-15-pro", + "ios-17.3.1" + ], + [ + "mv3", + "mps", + "apple-iphone-15-pro", + "ios-18.4.1" + ], + [ + "mv3", + "mps", + "apple-iphone-15", + "ios-18.0" + ], + [ + "mv3", + "qnn-q8", + "samsung-galaxy-s22-5g-private", + "android-13" + ], + [ + "mv3", + "qnn-q8", + "samsung-galaxy-s22-5g", + "android-12" + ], + [ + "mv3", + "qnn-q8", + "samsung-galaxy-s22-5g", + "android-13" + ], + [ + "mv3", + "qnn-q8", + "samsung-galaxy-s22-ultra-5g-private", + "android-14" + ], + [ + "mv3", + "qnn-q8", + "samsung-galaxy-s22-ultra-5g", + "android-12" + ], + [ + "mv3", + "xnnpack-q8", + "apple-iphone-15-plus-private", + "ios-17.4.1" + ], + [ + "mv3", + "xnnpack-q8", + "apple-iphone-15-plus", + "ios-17.4.1" + ], + [ + "mv3", + "xnnpack-q8", + "apple-iphone-15-private", + "ios" + ], + [ + "mv3", + "xnnpack-q8", + "apple-iphone-15-private", + "ios-18.0" + ], + [ + "mv3", + "xnnpack-q8", + "apple-iphone-15-pro-max", + "ios-17.3.1" + ], + [ + "mv3", + "xnnpack-q8", + "apple-iphone-15-pro-private", + "ios-18.4.1" + ], + [ + "mv3", + "xnnpack-q8", + "apple-iphone-15-pro", + "ios-17.3.1" + ], + [ + "mv3", + "xnnpack-q8", + "apple-iphone-15", + "ios-18.0" + ], + [ + "mv3", + "xnnpack-q8", + "samsung-galaxy-s22-5g-private", + "android-13" + ], + [ + "mv3", + "xnnpack-q8", + "samsung-galaxy-s22-5g", + "android-12" + ], + [ + "mv3", + "xnnpack-q8", + "samsung-galaxy-s22-5g", + "android-13" + ], + [ + "mv3", + "xnnpack-q8", + "samsung-galaxy-s22-ultra-5g-private", + "android-14" + ], + [ + "mv3", + "xnnpack-q8", + "samsung-galaxy-s22-ultra-5g", + "android-12" + ], + [ + "qwen-qwen3-0.6b", + "et-xnnpack-custom-spda-kv-cache-8da4w", + "apple-iphone-15-plus-private", + "ios-17.4.1" + ], + [ + "qwen-qwen3-0.6b", + "et-xnnpack-custom-spda-kv-cache-8da4w", + "apple-iphone-15-plus", + "ios-17.4.1" + ], + [ + "qwen-qwen3-0.6b", + "et-xnnpack-custom-spda-kv-cache-8da4w", + "apple-iphone-15-priv...-mobile-job-ios", + "ios" + ], + [ + "qwen-qwen3-0.6b", + "et-xnnpack-custom-spda-kv-cache-8da4w", + "apple-iphone-15-private", + "ios-18.0" + ], + [ + "qwen-qwen3-0.6b", + "et-xnnpack-custom-spda-kv-cache-8da4w", + "apple-iphone-15-pro-max", + "ios-17.3.1" + ], + [ + "qwen-qwen3-0.6b", + "et-xnnpack-custom-spda-kv-cache-8da4w", + "apple-iphone-15-pro-private", + "ios-18.4.1" + ], + [ + "qwen-qwen3-0.6b", + "et-xnnpack-custom-spda-kv-cache-8da4w", + "apple-iphone-15-pro", + "ios-17.3.1" + ], + [ + "qwen-qwen3-0.6b", + "et-xnnpack-custom-spda-kv-cache-8da4w", + "apple-iphone-15-pro", + "ios-18.4.1" + ], + [ + "qwen-qwen3-0.6b", + "et-xnnpack-custom-spda-kv-cache-8da4w", + "apple-iphone-15", + "ios" + ], + [ + "qwen-qwen3-0.6b", + "et-xnnpack-custom-spda-kv-cache-8da4w", + "apple-iphone-15", + "ios-18.0" + ], + [ + "qwen-qwen3-0.6b", + "et-xnnpack-custom-spda-kv-cache-8da4w", + "samsung-galaxy-s22-5g-private", + "android-13" + ], + [ + "qwen-qwen3-0.6b", + "et-xnnpack-custom-spda-kv-cache-8da4w", + "samsung-galaxy-s22-5g", + "android-12" + ], + [ + "qwen-qwen3-0.6b", + "et-xnnpack-custom-spda-kv-cache-8da4w", + "samsung-galaxy-s22-5g", + "android-13" + ], + [ + "qwen-qwen3-0.6b", + "et-xnnpack-custom-spda-kv-cache-8da4w", + "samsung-galaxy-s22-p...-mobile-job-android", + "android" + ], + [ + "qwen-qwen3-0.6b", + "et-xnnpack-custom-spda-kv-cache-8da4w", + "samsung-galaxy-s22-ultra-5g-private", + "android-14" + ], + [ + "qwen-qwen3-0.6b", + "et-xnnpack-custom-spda-kv-cache-8da4w", + "samsung-galaxy-s22-ultra-5g", + "android-12" + ], + [ + "qwen-qwen3-0.6b", + "et-xnnpack-custom-spda-kv-cache-8da4w", + "samsung-galaxy-s22-ultra-5g", + "android-14" + ], + [ + "qwen-qwen3-0.6b", + "et-xnnpack-custom-spda-kv-cache-8da4w", + "samsung-galaxy-s22", + "android" + ], + [ + "qwen-qwen3-0.6b", + "hf-xnnpack-custom-spda-kv-cache-8da4w", + "apple-iphone-15-plus-private", + "ios-17.4.1" + ], + [ + "qwen-qwen3-0.6b", + "hf-xnnpack-custom-spda-kv-cache-8da4w", + "apple-iphone-15-plus", + "ios-17.4.1" + ], + [ + "qwen-qwen3-0.6b", + "hf-xnnpack-custom-spda-kv-cache-8da4w", + "apple-iphone-15-priv...-mobile-job-ios", + "ios" + ], + [ + "qwen-qwen3-0.6b", + "hf-xnnpack-custom-spda-kv-cache-8da4w", + "apple-iphone-15-private", + "ios-18.0" + ], + [ + "qwen-qwen3-0.6b", + "hf-xnnpack-custom-spda-kv-cache-8da4w", + "apple-iphone-15-pro-max", + "ios-17.3.1" + ], + [ + "qwen-qwen3-0.6b", + "hf-xnnpack-custom-spda-kv-cache-8da4w", + "apple-iphone-15-pro-private", + "ios-18.4.1" + ], + [ + "qwen-qwen3-0.6b", + "hf-xnnpack-custom-spda-kv-cache-8da4w", + "apple-iphone-15-pro", + "ios-17.3.1" + ], + [ + "qwen-qwen3-0.6b", + "hf-xnnpack-custom-spda-kv-cache-8da4w", + "apple-iphone-15-pro", + "ios-18.4.1" + ], + [ + "qwen-qwen3-0.6b", + "hf-xnnpack-custom-spda-kv-cache-8da4w", + "apple-iphone-15", + "ios" + ], + [ + "qwen-qwen3-0.6b", + "hf-xnnpack-custom-spda-kv-cache-8da4w", + "apple-iphone-15", + "ios-18.0" + ], + [ + "qwen-qwen3-0.6b", + "hf-xnnpack-custom-spda-kv-cache-8da4w", + "samsung-galaxy-s22-5g-private", + "android-13" + ], + [ + "qwen-qwen3-0.6b", + "hf-xnnpack-custom-spda-kv-cache-8da4w", + "samsung-galaxy-s22-5g", + "android-12" + ], + [ + "qwen-qwen3-0.6b", + "hf-xnnpack-custom-spda-kv-cache-8da4w", + "samsung-galaxy-s22-5g", + "android-13" + ], + [ + "qwen-qwen3-0.6b", + "hf-xnnpack-custom-spda-kv-cache-8da4w", + "samsung-galaxy-s22-p...-mobile-job-android", + "android" + ], + [ + "qwen-qwen3-0.6b", + "hf-xnnpack-custom-spda-kv-cache-8da4w", + "samsung-galaxy-s22-ultra-5g-private", + "android-14" + ], + [ + "qwen-qwen3-0.6b", + "hf-xnnpack-custom-spda-kv-cache-8da4w", + "samsung-galaxy-s22-ultra-5g", + "android-12" + ], + [ + "qwen-qwen3-0.6b", + "hf-xnnpack-custom-spda-kv-cache-8da4w", + "samsung-galaxy-s22-ultra-5g", + "android-14" + ], + [ + "qwen-qwen3-0.6b", + "hf-xnnpack-custom-spda-kv-cache-8da4w", + "samsung-galaxy-s22", + "android" + ], + [ + "resnet50", + "coreml-fp16", + "apple-iphone-15-plus", + "ios-17.4.1" + ], + [ + "resnet50", + "coreml-fp16", + "apple-iphone-15-pro-max", + "ios-17.3.1" + ], + [ + "resnet50", + "coreml-fp16", + "apple-iphone-15-pro", + "ios-17.3.1" + ], + [ + "resnet50", + "coreml-fp16", + "apple-iphone-15", + "ios-18.0" + ], + [ + "resnet50", + "mps", + "apple-iphone-15-plus", + "ios-17.4.1" + ], + [ + "resnet50", + "mps", + "apple-iphone-15-pro-max", + "ios-17.3.1" + ], + [ + "resnet50", + "mps", + "apple-iphone-15-pro", + "ios-17.3.1" + ], + [ + "resnet50", + "mps", + "apple-iphone-15", + "ios-18.0" + ], + [ + "resnet50", + "xnnpack-q8", + "apple-iphone-15-plus", + "ios-17.4.1" + ], + [ + "resnet50", + "xnnpack-q8", + "apple-iphone-15-pro-max", + "ios-17.3.1" + ], + [ + "resnet50", + "xnnpack-q8", + "apple-iphone-15-pro", + "ios-17.3.1" + ], + [ + "resnet50", + "xnnpack-q8", + "apple-iphone-15", + "ios-18.0" + ], + [ + "resnet50", + "xnnpack-q8", + "samsung-galaxy-s22-5g", + "android-12" + ], + [ + "resnet50", + "xnnpack-q8", + "samsung-galaxy-s22-5g", + "android-13" + ], + [ + "resnet50", + "xnnpack-q8", + "samsung-galaxy-s22-ultra-5g", + "android-12" + ], + [ + "w2l", + "coreml-fp16", + "apple-iphone-15-plus", + "ios-17.4.1" + ], + [ + "w2l", + "coreml-fp16", + "apple-iphone-15-pro-max", + "ios-17.3.1" + ], + [ + "w2l", + "coreml-fp16", + "apple-iphone-15-pro", + "ios-17.3.1" + ], + [ + "w2l", + "coreml-fp16", + "apple-iphone-15", + "ios-18.0" + ], + [ + "w2l", + "mps", + "apple-iphone-15-plus", + "ios-17.4.1" + ], + [ + "w2l", + "mps", + "apple-iphone-15-pro-max", + "ios-17.3.1" + ], + [ + "w2l", + "mps", + "apple-iphone-15-pro", + "ios-17.3.1" + ], + [ + "w2l", + "mps", + "apple-iphone-15", + "ios-18.0" + ], + [ + "w2l", + "xnnpack-q8", + "apple-iphone-15-plus", + "ios-17.4.1" + ], + [ + "w2l", + "xnnpack-q8", + "apple-iphone-15-pro-max", + "ios-17.3.1" + ], + [ + "w2l", + "xnnpack-q8", + "apple-iphone-15-pro", + "ios-17.3.1" + ], + [ + "w2l", + "xnnpack-q8", + "apple-iphone-15", + "ios-18.0" + ], + [ + "w2l", + "xnnpack-q8", + "samsung-galaxy-s22-5g", + "android-12" + ], + [ + "w2l", + "xnnpack-q8", + "samsung-galaxy-s22-5g", + "android-13" + ], + [ + "w2l", + "xnnpack-q8", + "samsung-galaxy-s22-ultra-5g", + "android-12" + ] +] \ No newline at end of file diff --git a/.ci/scripts/benchmark_tooling/get_benchmark_analysis_data.py b/.ci/scripts/benchmark_tooling/get_benchmark_analysis_data.py index 7cc3d8f77e8..99eca91bc98 100644 --- a/.ci/scripts/benchmark_tooling/get_benchmark_analysis_data.py +++ b/.ci/scripts/benchmark_tooling/get_benchmark_analysis_data.py @@ -1,10 +1,13 @@ import argparse +from copy import deepcopy import json import logging import os from dataclasses import dataclass from datetime import datetime +from re import A, L from typing import Any, Dict, List, Optional, Tuple +import re import pandas as pd import requests @@ -12,7 +15,7 @@ logging.basicConfig(level=logging.INFO) # Default private_device_matching_list -private_device_matching_list = [ +DEFAULT_PRIVATE_MATCHING_LIST = [ ["llama3", "qlora", "s22_5g", "android_13"], ["llama3", "spinq", "s22_5g", "android_13"], ["mv3", "qnn", "s22_5g", "android_13"], @@ -35,7 +38,7 @@ ] # Default public_device_matching_list -public_device_matching_list = [ +DEFAULT_PUBLIC_MATCHING_LIST = [ ["llama3", "qlora", "s22_5g", "android_13"], ["llama3", "spinq", "s22_5g", "android_13"], ["mv3", "qnn", "s22_5g", "android_13"], @@ -59,21 +62,24 @@ # The abbreviations used to generate the short name for the benchmark result table -# this is used to avoid the long table name issue when generating excel file (<=31 characters) -ABBREVIATIONS = { +# this is used to avoid the long table name issue when generating csv file (<=100 characters) +DEFAULT_ABBREVIATIONS = { "samsung": "", "galaxy": "", "5g": "", + "private":"", "xnnpackq8": "xnnq8", "iphone15promax": "iphone15max", + "meta-llama/llama-3.2-1b": "llama3.2", } +from enum import Enum -def abbreviate(s): - for full, abbr in ABBREVIATIONS.items(): - s = s.replace(full, abbr) - return s - +class OutputType(Enum): + PRINT = "print" + CSV = "csv" + JSON = "json" + DF = "df" @dataclass class BenchmarkQueryGroupDataParams: @@ -84,6 +90,18 @@ class BenchmarkQueryGroupDataParams: group_table_by_fields: list group_row_by_fields: list +@dataclass +class MatchingGroupResult: + category: str + keywords: list + data: list + + +@dataclass +class MatchingGroupInput: + category: str + keywords: list + conditions: list BASE_URLS = { "local": "http://localhost:3000", @@ -101,43 +119,17 @@ def validate_iso8601_no_ms(value): f"Invalid datetime format for '{value}'. Expected: YYYY-MM-DDTHH:MM:SS" ) +def parse_filter_group(value: str) -> dict: + include = [] + exclude = [] + parts = value.split(";") + for part in parts: + if part.startswith("include="): + include = part[len("include="):].split(",") + elif part.startswith("exclude="): + exclude = part[len("exclude="):].split(",") -def argparser(): - parser = argparse.ArgumentParser() - parser.add_argument( - "--env", choices=["local", "prod"], default="prod", help="Choose environment" - ) - parser.add_argument( - "--startTime", - type=validate_iso8601_no_ms, - required=True, - help="Start time in ISO format (e.g. 2025-06-01T00:00:00)", - ) - parser.add_argument( - "--endTime", - type=validate_iso8601_no_ms, - required=True, - help="End time in ISO format (e.g. 2025-06-06T00:00:00)", - ) - parser.add_argument( - "--silent", - action="store_true", - help="disable all loggings", - ) - parser.add_argument( - "--outputType", - choices=["json", "excel", "df", "csv"], - default="print", - help="Choose output type for your run", - ) - parser.add_argument( - "--outputDir", - default=".", - help="Only used when output-type is excel and csv, default to current directory", - ) - - return parser.parse_args() - + return {"include": include, "exclude": exclude} class ExecutorchBenchmarkFetcher: """ @@ -146,10 +138,6 @@ class ExecutorchBenchmarkFetcher: Usage: fetcher = ExecutorchBenchmarkFetcher() fetcher.run(start_time, end_time, private_device_matching_list, public_device_matching_list) - # Convert results to DataFrames - private_dfs, public_dfs = fetcher.to_df() - # Export results to Excel files - fetcher.to_excel(output_dir=".") """ def __init__( @@ -173,7 +161,7 @@ def __init__( self.query_group_table_by_fields = ( group_table_fields if group_table_fields - else ["model", "backend", "arch", "device"] + else ["model", "backend","device","arch"] ) self.query_group_row_by_fields = ( group_row_fields @@ -182,131 +170,170 @@ def __init__( ) self.data = None self.disable_logging = disable_logging - self.results_private = [] - self.results_public = [] + self.abbreviations = DEFAULT_ABBREVIATIONS + self.matching_groups: Dict[str, MatchingGroupResult]= {} + self.origin_mappings: Dict[str, Dict[str,Any]] = {} - def run( + def add_abbreviations(self, abbreviations: Dict[str, str]): + self.abbreviations = abbreviations + + def generate_matching_list( self, start_time: str, end_time: str, - privateDeviceMatchings: List[List[str]], - publicDeviceMatchings: List[List[str]], - ) -> Tuple[List[Dict[str, Any]], List[Dict[str, Any]]]: - """ - Execute the benchmark data fetching and processing workflow. - - This method orchestrates the entire process: - 1. Fetches raw data from the HUD API for the specified time range - 2. Processes and normalizes the data - 3. Filters results based on device matching criteria for both private and public devices - - Args: - start_time: ISO8601 formatted start time (YYYY-MM-DDTHH:MM:SS) - end_time: ISO8601 formatted end time (YYYY-MM-DDTHH:MM:SS) - privateDeviceMatchings: List of keyword lists for matching private devices - publicDeviceMatchings: List of keyword lists for matching public devices - Returns: - Tuple containing (private_device_results, public_device_results) - """ - self.data = self._fetch_data(start_time, end_time) - if not self.disable_logging: - self.print_all_names() - - if not self.disable_logging: - logging.info( - "\n ========= Search tables specific for matching keywords ========= \n" - ) - self.results_private = self.find_target_tables(privateDeviceMatchings, True) - self.results_public = self.find_target_tables(publicDeviceMatchings, False) + filter_groups: List[dict], + category: str = "unknown", + output_type: OutputType = OutputType.PRINT, + output_dir: str = "." + ): + filter_groups = filter_groups or [{"include": [], "exclude": []}] + o_type = self._to_output_type(output_type) + logging.info(f"filter_groups applied {filter_groups} with output_type {o_type}") + data = self._fetch_data(start_time, end_time) + if data is None: + logging.info("No data found") + return [] + results = [] + seen = set() - logging.info( - f"Found {len(self.results_private)} private device benchmark results, and {len(self.results_public)} public device benchmark results" - ) - return (self.results_private, self.results_public) + for item in data: + name = item["table_name"] + group_info = item["info"] + matched = False + for group in filter_groups: + include = group.get("include", []) + exclude = group.get("exclude", []) + if include and not all(kw.lower() in name for kw in include): + continue + if exclude and any(kw.lower() in name for kw in exclude): + continue + matched = True + break # matched one group, no need to evaluate more + if matched: + key = tuple(group_info.get(k, "") for k in self.query_group_table_by_fields) + if key not in seen: + results.append([ + group_info[k] for k in self.query_group_table_by_fields + if k in group_info and group_info[k] + ]) + seen.add(key) + if o_type == OutputType.JSON: + self.generate_json_file(results, category, output_dir) + else: + logging.info("Print result") + logging.info(json.dumps(results, indent=2)) - def to_df(self) -> Tuple[Any, Any]: - """ - Convert benchmark results to pandas DataFrames. + logging.info(f"generated {len(results)} matching list items") + return results - Transforms the raw benchmark results into DataFrames for easier analysis - and manipulation. - Returns: - Tuple containing (private_device_dataframes, public_device_dataframes) - Each item is a list of dictionaries with 'groupInfo' and 'df' keys + def run( + self, + start_time: str, + end_time: str, + matching_inputs: List[MatchingGroupInput] = [], + ) -> Any: """ - private_dfs = [ - {"groupInfo": item["groupInfo"], "df": pd.DataFrame(item["rows"])} - for item in self.results_private - ] - public_dfs = [ - {"groupInfo": item["groupInfo"], "df": pd.DataFrame(item["rows"])} - for item in self.results_public - ] - return (private_dfs, public_dfs) - - def to_excel(self, output_dir: str = ".") -> None: + Execute the benchmark data fetching and processing workflow. """ - Export benchmark results to Excel files. - - Creates two Excel files: - - res_private.xlsx: Results for private devices - - res_public.xlsx: Results for public devices + self.data = self._fetch_data(start_time, end_time) + # reset everything for generate the new output + self.matching_groups = {} + for matching_input in matching_inputs: + category = matching_input.category + keywords = matching_input.keywords + result = self.find_target_tables(keywords, matching_input.conditions) + self.matching_groups[category] = MatchingGroupResult(category, keywords, result) + return self.data - Each file contains multiple sheets, one per benchmark configuration for private and public. + def get_result(self): + return deepcopy(self.to_dict()) - Args: - output_dir: Directory to save Excel files - """ + def output_data( + self, + output_type: OutputType = OutputType.PRINT, + output_dir: str = ".") -> Any: + + logging.info(f"Generating output with type: {[category for category in self.matching_groups.keys()]}") + + o_type = self._to_output_type(output_type) + if o_type == OutputType.PRINT: + logging.info("\n ========= Generate print output ========= \n") + logging.info(json.dumps(self.get_result(), indent=2)) + elif o_type == OutputType.JSON: + logging.info("\n ========= Generate json output ========= \n") + file_path = self.to_json(output_dir) + logging.info(f"success, please check {file_path}") + elif o_type == OutputType.DF: + logging.info("\n ========= Generate dataframe output ========= \n") + res = self.to_df() + logging.info(res) + return res + elif o_type == OutputType.CSV: + logging.info("\n ========= Generate csv output ========= \n") + self.to_csv(output_dir) + return self.get_result() + + def _to_output_type(self, output_type: Any) -> OutputType: + if isinstance(output_type, str): + try: + return OutputType(output_type.lower()) + except ValueError: + logging.warning(f"Invalid output type string: {output_type}. Defaulting to PRINT") + return OutputType.JSON + elif isinstance(output_type, OutputType): + return output_type + logging.warning(f"Invalid output type: {output_type}. Defaulting to JSON") + return OutputType.JSON + + def to_json(self,output_dir: str = ".") -> Any: + data = self.get_result() + return self.generate_json_file(data, "benchmark_results", output_dir) + + def generate_json_file(self,data,file_name, output_dir: str = "."): if not os.path.exists(output_dir): os.makedirs(output_dir) logging.info(f"Created output directory: {output_dir}") else: logging.info(f"Using existing output directory: {output_dir}") - private_path = os.path.join(output_dir, "res_private.xlsx") - public_path = os.path.join(output_dir, "res_public.xlsx") - self._write_multi_sheet_excel(self.results_private, private_path) - self._write_multi_sheet_excel(self.results_public, public_path) - - def _write_multi_sheet_excel( - self, data_list: List[Dict[str, Any]], output_path: str - ) -> None: + path = os.path.join(output_dir, file_name + ".json") + with open(path, "w") as f: + json.dump(data, f, indent=2) + return path + + def to_dict(self)-> Any: + result = {} + for item in self.matching_groups.values(): + result[item.category] = item.data + return result + + def to_df(self) -> Any: """ - Write multiple benchmark results to sheets in an Excel file. + Convert benchmark results to pandas DataFrames. - Creates an Excel file with multiple sheets, one for each benchmark configuration. - Handles sheet name length limitations and truncates names if necessary. + Transforms the raw benchmark results into DataFrames for easier analysis + and manipulation. - Args: - data_list: List of benchmark result dictionaries - output_path: Path to save the Excel file + Returns: + Tuple containing (private_device_dataframes, public_device_dataframes) + Each item is a list of dictionaries with 'info' and 'df' keys """ - logging.info( - "\n ========= Generate excel file with multiple sheets for {output_path}========= \n" - ) - with pd.ExcelWriter(output_path, engine="xlsxwriter") as writer: - for idx, entry in enumerate(data_list): - sheet_name = entry.get("short_name", f"sheet{idx+1}") - logging.info(f"sheet_name: {sheet_name} with length: {len(sheet_name)}") - if len(sheet_name) > 31: - logging.warning( - f"sheet name {sheet_name} is too long, truncating to 31 characters with prefix idx" - ) - sheet_name += f"{idx+1}_{sheet_name}" - sheet_name = sheet_name[:31] - rows = entry.get("rows", []) - - logging.info(f"Writing {sheet_name} to excel: {output_path}") - df = pd.DataFrame(rows) - df.to_excel(writer, sheet_name=sheet_name or "Sheet", index=False) + result = {} + for item in self.matching_groups.values(): + result[item.category] =[ + {"info": item["info"], "df": pd.DataFrame(item["rows"])} + for item in item.data + ] + return result def to_csv(self, output_dir: str = ".") -> None: """ Export benchmark results to CSV files. - Creates two CSV files: - - res_private.csv: Results for private devices - - res_public.csv: Results for public devices + Creates two CSV folders and one json file: + - private/: Results for private devices + - public/: Results for public devices + - benchmark_name_mappings.json: json dict which maps the generated csv file_name to Each file contains multiple CSV files, one per benchmark configuration for private and public. @@ -318,23 +345,17 @@ def to_csv(self, output_dir: str = ".") -> None: logging.info(f"Created output directory: {output_dir}") else: logging.info(f"Using existing output directory: {output_dir}") - private_path = os.path.join(output_dir, "private/") - public_path = os.path.join(output_dir, "public") - self._write_multiple_csv_files( - self.results_private, private_path, file_prefix="private_" - ) - self._write_multiple_csv_files( - self.results_public, public_path, file_prefix="public_" - ) + + for item in self.matching_groups.values(): + path = os.path.join(output_dir, item.category) + self._write_multiple_csv_files(item.data, path) def _write_multiple_csv_files( self, data_list: List[Dict[str, Any]], output_dir: str, file_prefix="" ) -> None: """ Write multiple benchmark results to separate CSV files. - Each entry in `data_list` becomes its own CSV file. - Args: data_list: List of benchmark result dictionaries output_dir: Directory to save the CSV files @@ -343,20 +364,22 @@ def _write_multiple_csv_files( logging.info( f"\n ========= Generating multiple CSV files in {output_dir} ========= \n" ) - for idx, entry in enumerate(data_list): - file_name = entry.get("short_name", f"file{idx+1}") - + for _, entry in enumerate(data_list): + table_name = entry.get("table_name","") + if not table_name: + continue + file_name = self.generate_short_name(table_name) if file_prefix: - file_name = file_prefix + file_name - if len(file_name) > 100: - logging.warning( - f"File name '{file_name}' is too long, truncating to 100 characters" - ) - file_name = file_name[:100] + file_name = file_prefix+ '_' + file_name file_path = os.path.join(output_dir, f"{file_name}.csv") - rows = entry.get("rows", []) - logging.info(f"Writing CSV: {file_path} with {len(rows)} rows") + + if len(file_name) > 120: + logging.warning( + f"File path '{file_path}' is too long, this may cause csv failure" + ) + logging.info(f"\noriginal table name:{table_name}") + logging.info(f"Writing CSV to path(len({len(file_path)})): '{file_path}' with {len(rows)} rows") df = pd.DataFrame(rows) df.to_csv(file_path, index=False) @@ -392,46 +415,40 @@ def _get_base_url(self) -> str: } return base_urls[self.env] - def print_all_names(self) -> None: + def print_all_groups_info(self) -> None: """ - Print all benchmark table names found in the data. - Separates results by device type (public/private) and displays counts. + Print all benchmark table group info found in the data. + Separates results by category and displays counts. This is useful for debugging and understanding what data is available. """ - if not self.data: + + if not self.data or not self.matching_groups: + logging.info("No data found, please call get_data() first") return + logging.info("peeking table result:") logging.info(json.dumps(self.data[0], indent=2)) - public_ones = [ - item["table_name"] - for item in self.data - if item["groupInfo"]["aws_type"] == "public" - ] - private_ones = [ - item["table_name"] - for item in self.data - if item["groupInfo"]["aws_type"] == "private" - ] - # Print all found benchmark table names - logging.info( - "\n============List all benchmark result table names (Public and Private) below =================\n" - ) - logging.info( - f"\n============ public device benchmark results({len(public_ones)})=================\n" - ) - for name in public_ones: - logging.info(name) - logging.info( - f"\n======= private device benchmark results({len(private_ones)})=======\n" - ) - for name in private_ones: - logging.info(name) + + for item in self.matching_groups.values(): + logging.info(f" all {item.category} benchmark results") + names = [] + for row in item.data: + names.append({ + "table_name": row["table_name"], + "info": row["info"], + "counts": len(row["rows"]) + }) + logging.info( + f"\n============ {item.category} benchmark results({len(names)})=================\n" + ) + for name in names: + logging.info(json.dumps(name, indent=2)) def _generate_table_name(self, group_info: dict, fields: list[str]) -> str: - name = "|".join( - group_info[k] for k in fields if k in group_info and group_info[k] + name = "_".join( + self.normalize_string(group_info[k]) for k in fields if k in group_info and group_info[k] ) - return self.normalize_string(name) + return name def _process(self, data: List[Dict[str, Any]]) -> List[Dict[str, Any]]: """ @@ -442,7 +459,6 @@ def _process(self, data: List[Dict[str, Any]]) -> List[Dict[str, Any]]: 2. Creates table_name from group info components 3. Determines aws_type (public/private) based on device name 4. Sorts results by table_name - Args: data: Raw benchmark data from API @@ -450,26 +466,24 @@ def _process(self, data: List[Dict[str, Any]]) -> List[Dict[str, Any]]: Processed benchmark data """ for item in data: - # normalized string values in groupInfo - item["groupInfo"] = { + # normalized string values groupInfo to info + item["info"] = { k: self.normalize_string(v) for k, v in item.get("groupInfo", {}).items() if v is not None and isinstance(v, str) } - group = item.get("groupInfo", {}) + group = item.get("info", {}) name = self._generate_table_name(group, self.query_group_table_by_fields) - # Add full name joined by the group key fields item["table_name"] = name # Mark aws_type: private or public if group.get("device", "").find("private") != -1: - item["groupInfo"]["aws_type"] = "private" + item["info"]["aws_type"] = "private" else: - item["groupInfo"]["aws_type"] = "public" - + item["info"]["aws_type"] = "public" data.sort(key=lambda x: x["table_name"]) - logging.info(f"fetched {len(data)} table views") + logging.info(f"fetched {len(data)} table views from HUD ") return data def _fetch_execu_torch_data(self, start_time, end_time): @@ -491,47 +505,49 @@ def _fetch_execu_torch_data(self, start_time, end_time): logging.info(response.text) return None - def generate_short_name(self, words, size, enable_abbreviation=True): - shortKeys = [k.replace("_", "") for k in words] - s = "_".join(shortKeys) - if size > 0: - logging.warning( - f"we found more than one table matches the keywords, adding size to distinguish: {s}" - ) - s += s + "_" + str(size) - - if enable_abbreviation: - for full, abbr in ABBREVIATIONS.items(): - s = s.replace(full, abbr) + def generate_short_name(self, name): + s = name + for full, abbr in self.abbreviations.items(): + s = s.replace(full, abbr) + s = re.sub(r"-{2,}", "-", s) return s - def find_target_tables(self, keywords, is_private) -> List[Any]: + def _match_filter(self, item: dict, filter_str: str) -> bool: + """Evaluate whether `item` satisfies a dot-notated filter like 'group_info.aws_type=private'.""" + try: + key_path, expected = filter_str.split("=", 1) + keys = key_path.strip().split(".") + current = item + for k in keys: + current = current.get(k, {}) + return current == expected + except Exception as e: + logging.info(f"Failed to evaluate filter '{filter_str}': {e}") + return False + + def find_target_tables(self, keywords, conditions) -> List[Any]: if not self.data: logging.info("No data found, please call get_data() first") return [] matchings = [] results = {} for keyword_list in keywords: - norm_keywords = [kw.lower().replace(" ", "_") for kw in keyword_list] + norm_keywords = [self.normalize_string(kw) for kw in keyword_list] match = [] for item in self.data: - key = item.get("table_name", "") - if not key: + table_name = item.get("table_name", "") + if not table_name: continue - if all(kw in key for kw in norm_keywords): - is_item_private = ( - item.get("groupInfo", {}).get("aws_type", "") == "private" - ) - if is_private is not is_item_private: - continue # skip if not matching private/public device - - # generate short name for each table data - item["short_name"] = self.generate_short_name( - norm_keywords, len(match) - ) - match.append(key) - results[key] = item - matchings.append((keyword_list, match)) + if all(kw in table_name for kw in norm_keywords): + condition_meets = True + # for condition checks, any condition check fails with causes the item to be skipped to add to the category result + for condition in conditions: + condition_meets &= self._match_filter(item, condition) + if not condition_meets: + continue + match.append(table_name) + results[table_name] = item + matchings.append((norm_keywords, match)) if not self.disable_logging: logging.info( f"\n============ MATCHING Found results: {len(results)}=========\n" @@ -540,52 +556,109 @@ def find_target_tables(self, keywords, is_private) -> List[Any]: logging.info(f"Keywords: {keywords} {len(match)} matchings: {match}") return list(results.values()) - def normalize_string(self, s, replace="_"): - return s.lower().replace(" ", replace) + def normalize_string(self, s: str) -> str: + s = s.lower().strip() + s = s.replace("(", "").replace(")", "") + s = s.replace("_", "-") + s = s.replace(" ", "-") + s = re.sub(r"[^\w\-.]", "-", s) + s = re.sub(r"-{2,}", "-", s) + return s +def argparsers(): + parser = argparse.ArgumentParser(description="Multi-task runner") -if __name__ == "__main__": - args = argparser() - fetcher = ExecutorchBenchmarkFetcher(args.env, args.silent) - private, public = fetcher.run( - args.startTime, - args.endTime, - private_device_matching_list, - public_device_matching_list, + common_parser = argparse.ArgumentParser(add_help=False) + common_parser.add_argument( + "--startTime", + type=validate_iso8601_no_ms, + required=True, + help="Start time in ISO format (e.g. 2025-06-01T00:00:00)" + ) + common_parser.add_argument( + "--endTime", + type=validate_iso8601_no_ms, + required=True, + help="End time in ISO format (e.g. 2025-06-06T00:00:00)" + ) + common_parser.add_argument( + "--env", choices=["local", "prod"], default="prod", help="Choose environment" + ) + common_parser.add_argument( + "--silent", + action="store_true", + help="Disable all logging" ) - if args.outputType == "df": - private, public = fetcher.to_df() - logging.info( - f"=====================Printing private device benchmark results in dataframe=====================" - ) - for item in private: - logging.info(item["groupInfo"]) - logging.info(item["df"]) - logging.info("\n") - logging.info( - f"======================Printing public device benchmark results in dataframe=====================" - ) - for item in public: - logging.info(item["groupInfo"]) - logging.info(item["df"]) - logging.info("\n") - elif args.outputType == "excel": - logging.info( - f"Writing benchmark results to excel file as sheets: res_private.xlsx & res_public.xlsx under {args.outputDir}" - ) - fetcher.to_excel(args.outputDir) - elif args.outputType == "csv": - logging.info( - f"Writing benchmark results to csv files under folders private/ & public/ under {args.outputDir}" - ) - fetcher.to_csv(args.outputDir) - else: - logging.info( - f"======================Printing private device benchmark results in json format======================" + subparsers = parser.add_subparsers(dest="command", required=True) + # generate_data + generate_data = subparsers.add_parser( + "generate_data", parents=[common_parser], help="generate data from HUD API" + ) + generate_data.add_argument("--outputType", choices=["json", "df", "csv", "print"], default="print") + generate_data.add_argument("--outputDir", default=".") + generate_data.add_argument("--includePrivate", default=True) + generate_data.add_argument("--includePublic", default=True) + generate_data.add_argument("--private-matching-json-path",default=None) + generate_data.add_argument("--public-matching-json-path",default=None) + + # fetch_list + fetch_list = subparsers.add_parser( + "get_matching_list", parents=[common_parser], help="Run fetch_matching_list") + fetch_list.add_argument("--filters", nargs="*", default=[]) + fetch_list.add_argument("--excludeFilters", nargs="*", default=[]) + fetch_list.add_argument("--category", required=True,help="Run fetch_matching_list to filter designed_list") + fetch_list.add_argument("--outputDir", default=".") + fetch_list.add_argument("--outputType", choices=["json", "print"], default="print") + fetch_list.add_argument("--filter",type=parse_filter_group,action="append", default=[],help="Filter group, e.g. 'include=iphone,metal;exclude=simulator'" + ) + + return parser.parse_args() + +def get_matching_list(args): + default_matching_inputs = [] + if args.includePrivate: + private_list = DEFAULT_PRIVATE_MATCHING_LIST + if args.private_matching_json_path: + with open(args.private_matching_json_path, "r") as f: + private_list = json.load(f) + default_matching_inputs.append( MatchingGroupInput( + category="private", + keywords=private_list, + conditions=[ + 'info.aws_type=private', + ]),) + if args.includePublic: + public_list = DEFAULT_PUBLIC_MATCHING_LIST + if args.public_matching_json_path: + with open(args.public_matching_json_path, "r") as f: + public_list = json.load(f) + default_matching_inputs.append(MatchingGroupInput( + category="public", + keywords= public_list, + conditions=[ + 'info.aws_type=public', + ])) + return default_matching_inputs + +if __name__ == "__main__": + args = argparsers() + fetcher = ExecutorchBenchmarkFetcher(args.env, args.silent) + if args.command == "generate_data": + default_matching_inputs = get_matching_list(args) + result = fetcher.run( + args.startTime, + args.endTime, + default_matching_inputs, ) - print(json.dumps(private, indent=2)) - logging.info( - f"======================Printing public device benchmark results in json format======================" + fetcher.output_data(args.outputType, args.outputDir) + + elif args.command == "get_matching_list": + res = fetcher.generate_matching_list( + args.startTime, + args.endTime, + args.filter, + args.category, + args.outputType, + args.outputDir ) - print(json.dumps(public, indent=2)) diff --git a/.ci/scripts/benchmark_tooling/private/allenai-olmo-1b-hf_hf-xnnpack-custom-spda-kv-cache-8da4w_-s22-_android-13.csv b/.ci/scripts/benchmark_tooling/private/allenai-olmo-1b-hf_hf-xnnpack-custom-spda-kv-cache-8da4w_-s22-_android-13.csv new file mode 100644 index 00000000000..11135a34396 --- /dev/null +++ b/.ci/scripts/benchmark_tooling/private/allenai-olmo-1b-hf_hf-xnnpack-custom-spda-kv-cache-8da4w_-s22-_android-13.csv @@ -0,0 +1,30 @@ +workflow_id,job_id,granularity_bucket,avg_inference_latency(ms),llm_model_load_time(ms),model_load_time(ms),ram_pss_usage(mb),token_per_sec,trimmean_inference_latency(ms) +15712320497,44280131792,2025-06-17T17:00:00Z,19.87,2992.46,2231.31,1329,42.39,19.84 +15706687362,44261351450,2025-06-17T13:00:00Z,18.73,3043.96,2039.23,1332,43.49,18.68 +15701619570,44244323755,2025-06-17T09:00:00Z,18.76,2993.67,2008.01,1331,42.9,18.69 +15697890915,44230067957,2025-06-17T05:00:00Z,18.78,2735.56,2799.45,1319,44.65,18.55 +15694752722,44221381863,2025-06-17T01:00:00Z,19.48,3185.18,2176.53,1339,42.17,19.43 +15690721346,44211034387,2025-06-16T21:00:00Z,19.93,3213.73,3021.92,1337,42.58,19.4 +15685858387,44195500217,2025-06-16T17:00:00Z,24.35,3093.45,2172.81,1348,42.39,23.49 +15680276053,44184994658,2025-06-16T15:00:00Z,20.43,3083.59,2291.09,1349,43.38,18.25 +15675229427,44160356972,2025-06-16T09:00:00Z,18.2,3124.3,2228.0,1338,43.72,18.15 +15671609250,44146779212,2025-06-16T05:00:00Z,23.75,2758.77,2192.73,1350,44.86,23.05 +15668838280,44139310442,2025-06-16T01:00:00Z,21.56,2911.96,2217.92,1351,41.96,20.78 +15666871209,44133842083,2025-06-15T21:00:00Z,30.68,3062.95,2256.9,1338,43.17,27.95 +15664964842,44129416866,2025-06-15T17:00:00Z,18.62,3327.39,2387.9,1339,45.48,18.6 +15662964566,44125237276,2025-06-15T13:00:00Z,19.01,2916.11,2400.39,1350,46.72,18.94 +15661066119,44120683489,2025-06-15T09:00:00Z,27.7,2940.28,2207.83,1349,43.69,25.28 +15659315239,44116350825,2025-06-15T05:00:00Z,19.46,3064.22,2362.22,1349,46.54,19.03 +15657426823,44114267880,2025-06-15T03:00:00Z,18.63,3157.62,2395.24,1349,42.29,18.58 +15655627252,44107937078,2025-06-14T21:00:00Z,23.45,3054.54,2239.07,1340,42.53,22.26 +15653757002,44103768469,2025-06-14T17:00:00Z,18.36,3030.64,2260.04,1349,43.5,18.33 +15651807296,44099312849,2025-06-14T13:00:00Z,19.21,3179.48,2147.97,1350,45.25,19.19 +15650005042,44095041071,2025-06-14T09:00:00Z,24.66,3130.55,2174.11,1349,43.89,23.77 +15648224665,44090821985,2025-06-14T05:00:00Z,18.16,2943.73,2227.73,1349,44.03,18.15 +15646186941,44086333101,2025-06-14T01:00:00Z,18.75,3061.87,2408.56,1348,43.41,18.68 +15642991544,44079110098,2025-06-13T21:00:00Z,18.78,3092.03,2319.81,1348,45.88,18.62 +15638881659,44066590049,2025-06-13T17:00:00Z,20.9,3137.71,2179.04,1350,43.14,19.39 +15634084872,44050929738,2025-06-13T13:00:00Z,19.52,3177.13,2201.48,1340,43.73,19.45 +15629618177,44036960905,2025-06-13T09:00:00Z,22.06,3302.4,2233.09,1339,44.73,20.56 +15626198493,44024980719,2025-06-13T06:00:00Z,19.43,3424.57,2198.18,1349,44.3,19.33 +15620031250,44009155339,2025-06-12T22:00:00Z,18.86,3521.01,2261.87,1348,45.8,18.79 diff --git a/.ci/scripts/benchmark_tooling/private/allenai-olmo-1b-hf_hf-xnnpack-custom-spda-kv-cache-8da4w_-s22-private_android-13.csv b/.ci/scripts/benchmark_tooling/private/allenai-olmo-1b-hf_hf-xnnpack-custom-spda-kv-cache-8da4w_-s22-private_android-13.csv new file mode 100644 index 00000000000..11135a34396 --- /dev/null +++ b/.ci/scripts/benchmark_tooling/private/allenai-olmo-1b-hf_hf-xnnpack-custom-spda-kv-cache-8da4w_-s22-private_android-13.csv @@ -0,0 +1,30 @@ +workflow_id,job_id,granularity_bucket,avg_inference_latency(ms),llm_model_load_time(ms),model_load_time(ms),ram_pss_usage(mb),token_per_sec,trimmean_inference_latency(ms) +15712320497,44280131792,2025-06-17T17:00:00Z,19.87,2992.46,2231.31,1329,42.39,19.84 +15706687362,44261351450,2025-06-17T13:00:00Z,18.73,3043.96,2039.23,1332,43.49,18.68 +15701619570,44244323755,2025-06-17T09:00:00Z,18.76,2993.67,2008.01,1331,42.9,18.69 +15697890915,44230067957,2025-06-17T05:00:00Z,18.78,2735.56,2799.45,1319,44.65,18.55 +15694752722,44221381863,2025-06-17T01:00:00Z,19.48,3185.18,2176.53,1339,42.17,19.43 +15690721346,44211034387,2025-06-16T21:00:00Z,19.93,3213.73,3021.92,1337,42.58,19.4 +15685858387,44195500217,2025-06-16T17:00:00Z,24.35,3093.45,2172.81,1348,42.39,23.49 +15680276053,44184994658,2025-06-16T15:00:00Z,20.43,3083.59,2291.09,1349,43.38,18.25 +15675229427,44160356972,2025-06-16T09:00:00Z,18.2,3124.3,2228.0,1338,43.72,18.15 +15671609250,44146779212,2025-06-16T05:00:00Z,23.75,2758.77,2192.73,1350,44.86,23.05 +15668838280,44139310442,2025-06-16T01:00:00Z,21.56,2911.96,2217.92,1351,41.96,20.78 +15666871209,44133842083,2025-06-15T21:00:00Z,30.68,3062.95,2256.9,1338,43.17,27.95 +15664964842,44129416866,2025-06-15T17:00:00Z,18.62,3327.39,2387.9,1339,45.48,18.6 +15662964566,44125237276,2025-06-15T13:00:00Z,19.01,2916.11,2400.39,1350,46.72,18.94 +15661066119,44120683489,2025-06-15T09:00:00Z,27.7,2940.28,2207.83,1349,43.69,25.28 +15659315239,44116350825,2025-06-15T05:00:00Z,19.46,3064.22,2362.22,1349,46.54,19.03 +15657426823,44114267880,2025-06-15T03:00:00Z,18.63,3157.62,2395.24,1349,42.29,18.58 +15655627252,44107937078,2025-06-14T21:00:00Z,23.45,3054.54,2239.07,1340,42.53,22.26 +15653757002,44103768469,2025-06-14T17:00:00Z,18.36,3030.64,2260.04,1349,43.5,18.33 +15651807296,44099312849,2025-06-14T13:00:00Z,19.21,3179.48,2147.97,1350,45.25,19.19 +15650005042,44095041071,2025-06-14T09:00:00Z,24.66,3130.55,2174.11,1349,43.89,23.77 +15648224665,44090821985,2025-06-14T05:00:00Z,18.16,2943.73,2227.73,1349,44.03,18.15 +15646186941,44086333101,2025-06-14T01:00:00Z,18.75,3061.87,2408.56,1348,43.41,18.68 +15642991544,44079110098,2025-06-13T21:00:00Z,18.78,3092.03,2319.81,1348,45.88,18.62 +15638881659,44066590049,2025-06-13T17:00:00Z,20.9,3137.71,2179.04,1350,43.14,19.39 +15634084872,44050929738,2025-06-13T13:00:00Z,19.52,3177.13,2201.48,1340,43.73,19.45 +15629618177,44036960905,2025-06-13T09:00:00Z,22.06,3302.4,2233.09,1339,44.73,20.56 +15626198493,44024980719,2025-06-13T06:00:00Z,19.43,3424.57,2198.18,1349,44.3,19.33 +15620031250,44009155339,2025-06-12T22:00:00Z,18.86,3521.01,2261.87,1348,45.8,18.79 diff --git a/.ci/scripts/benchmark_tooling/private/allenai-olmo-1b-hf_hf-xnnpack-custom-spda-kv-cache-8da4w_-s22-ultra-_android-14.csv b/.ci/scripts/benchmark_tooling/private/allenai-olmo-1b-hf_hf-xnnpack-custom-spda-kv-cache-8da4w_-s22-ultra-_android-14.csv new file mode 100644 index 00000000000..5e8b9e2e88c --- /dev/null +++ b/.ci/scripts/benchmark_tooling/private/allenai-olmo-1b-hf_hf-xnnpack-custom-spda-kv-cache-8da4w_-s22-ultra-_android-14.csv @@ -0,0 +1,30 @@ +workflow_id,job_id,granularity_bucket,avg_inference_latency(ms),llm_model_load_time(ms),model_load_time(ms),ram_pss_usage(mb),token_per_sec,trimmean_inference_latency(ms) +15712320497,44280131792,2025-06-17T17:00:00Z,18.9,1860.28,1674.87,1333,47.43,18.8 +15706687362,44261351450,2025-06-17T13:00:00Z,20.61,1823.81,1683.54,1333,44.85,20.54 +15701619570,44244323755,2025-06-17T09:00:00Z,20.57,1828.4,1694.09,1333,42.89,20.52 +15697890915,44230067957,2025-06-17T05:00:00Z,20.43,1848.06,1670.42,1332,43.28,20.34 +15694752722,44221381863,2025-06-17T01:00:00Z,18.7,1877.38,1708.67,1352,42.4,18.67 +15690721346,44211034387,2025-06-16T21:00:00Z,19.13,1855.92,1714.1,1351,41.29,19.09 +15685858387,44195500217,2025-06-16T17:00:00Z,18.86,1881.26,1698.45,1351,44.35,18.82 +15680276053,44184994658,2025-06-16T15:00:00Z,19.07,1871.61,1709.23,1352,46.41,18.96 +15675229427,44160356972,2025-06-16T09:00:00Z,18.97,1874.94,1686.68,1352,44.0,18.94 +15671609250,44146779212,2025-06-16T05:00:00Z,19.17,1858.27,1760.15,1351,43.2,19.12 +15668838280,44139310442,2025-06-16T01:00:00Z,19.27,1864.35,1713.11,1353,42.62,19.2 +15666871209,44133842083,2025-06-15T21:00:00Z,18.85,1866.6,1690.11,1351,43.32,18.8 +15664964842,44129416866,2025-06-15T17:00:00Z,18.87,1856.11,1716.2,1351,49.5,18.85 +15662964566,44125237276,2025-06-15T13:00:00Z,19.17,1855.79,1701.12,1352,41.75,19.04 +15661066119,44120683489,2025-06-15T09:00:00Z,19.55,1856.66,1721.06,1351,43.26,19.52 +15659315239,44116350825,2025-06-15T05:00:00Z,19.01,1876.11,1726.46,1351,45.58,18.97 +15657426823,44114267880,2025-06-15T03:00:00Z,19.75,1868.04,1703.94,1351,43.56,19.74 +15655627252,44107937078,2025-06-14T21:00:00Z,19.4,1862.94,1686.67,1351,43.11,19.36 +15653757002,44103768469,2025-06-14T17:00:00Z,18.74,1869.79,1707.86,1352,42.87,18.63 +15651807296,44099312849,2025-06-14T13:00:00Z,19.15,1861.55,1732.35,1351,44.73,19.09 +15650005042,44095041071,2025-06-14T09:00:00Z,19.39,1875.61,1697.8,1351,43.11,19.3 +15648224665,44090821985,2025-06-14T05:00:00Z,18.87,1858.97,1731.5,1352,47.61,18.82 +15646186941,44086333101,2025-06-14T01:00:00Z,19.02,1862.57,1674.29,1352,42.87,18.93 +15642991544,44079110098,2025-06-13T21:00:00Z,19.13,1859.25,1743.6,1351,42.11,19.1 +15638881659,44066590049,2025-06-13T17:00:00Z,18.92,1867.61,1722.68,1351,42.64,18.84 +15634084872,44050929738,2025-06-13T13:00:00Z,19.78,1871.78,1694.16,1353,43.22,19.67 +15629618177,44036960905,2025-06-13T09:00:00Z,19.24,1868.1,1703.61,1352,46.42,19.23 +15626198493,44024980719,2025-06-13T06:00:00Z,19.34,1864.31,1704.63,1351,42.27,19.29 +15620031250,44009155339,2025-06-12T22:00:00Z,20.24,1869.64,1703.58,1352,43.59,20.13 diff --git a/.ci/scripts/benchmark_tooling/private/allenai-olmo-1b-hf_hf-xnnpack-custom-spda-kv-cache-8da4w_-s22-ultra-private_android-14.csv b/.ci/scripts/benchmark_tooling/private/allenai-olmo-1b-hf_hf-xnnpack-custom-spda-kv-cache-8da4w_-s22-ultra-private_android-14.csv new file mode 100644 index 00000000000..5e8b9e2e88c --- /dev/null +++ b/.ci/scripts/benchmark_tooling/private/allenai-olmo-1b-hf_hf-xnnpack-custom-spda-kv-cache-8da4w_-s22-ultra-private_android-14.csv @@ -0,0 +1,30 @@ +workflow_id,job_id,granularity_bucket,avg_inference_latency(ms),llm_model_load_time(ms),model_load_time(ms),ram_pss_usage(mb),token_per_sec,trimmean_inference_latency(ms) +15712320497,44280131792,2025-06-17T17:00:00Z,18.9,1860.28,1674.87,1333,47.43,18.8 +15706687362,44261351450,2025-06-17T13:00:00Z,20.61,1823.81,1683.54,1333,44.85,20.54 +15701619570,44244323755,2025-06-17T09:00:00Z,20.57,1828.4,1694.09,1333,42.89,20.52 +15697890915,44230067957,2025-06-17T05:00:00Z,20.43,1848.06,1670.42,1332,43.28,20.34 +15694752722,44221381863,2025-06-17T01:00:00Z,18.7,1877.38,1708.67,1352,42.4,18.67 +15690721346,44211034387,2025-06-16T21:00:00Z,19.13,1855.92,1714.1,1351,41.29,19.09 +15685858387,44195500217,2025-06-16T17:00:00Z,18.86,1881.26,1698.45,1351,44.35,18.82 +15680276053,44184994658,2025-06-16T15:00:00Z,19.07,1871.61,1709.23,1352,46.41,18.96 +15675229427,44160356972,2025-06-16T09:00:00Z,18.97,1874.94,1686.68,1352,44.0,18.94 +15671609250,44146779212,2025-06-16T05:00:00Z,19.17,1858.27,1760.15,1351,43.2,19.12 +15668838280,44139310442,2025-06-16T01:00:00Z,19.27,1864.35,1713.11,1353,42.62,19.2 +15666871209,44133842083,2025-06-15T21:00:00Z,18.85,1866.6,1690.11,1351,43.32,18.8 +15664964842,44129416866,2025-06-15T17:00:00Z,18.87,1856.11,1716.2,1351,49.5,18.85 +15662964566,44125237276,2025-06-15T13:00:00Z,19.17,1855.79,1701.12,1352,41.75,19.04 +15661066119,44120683489,2025-06-15T09:00:00Z,19.55,1856.66,1721.06,1351,43.26,19.52 +15659315239,44116350825,2025-06-15T05:00:00Z,19.01,1876.11,1726.46,1351,45.58,18.97 +15657426823,44114267880,2025-06-15T03:00:00Z,19.75,1868.04,1703.94,1351,43.56,19.74 +15655627252,44107937078,2025-06-14T21:00:00Z,19.4,1862.94,1686.67,1351,43.11,19.36 +15653757002,44103768469,2025-06-14T17:00:00Z,18.74,1869.79,1707.86,1352,42.87,18.63 +15651807296,44099312849,2025-06-14T13:00:00Z,19.15,1861.55,1732.35,1351,44.73,19.09 +15650005042,44095041071,2025-06-14T09:00:00Z,19.39,1875.61,1697.8,1351,43.11,19.3 +15648224665,44090821985,2025-06-14T05:00:00Z,18.87,1858.97,1731.5,1352,47.61,18.82 +15646186941,44086333101,2025-06-14T01:00:00Z,19.02,1862.57,1674.29,1352,42.87,18.93 +15642991544,44079110098,2025-06-13T21:00:00Z,19.13,1859.25,1743.6,1351,42.11,19.1 +15638881659,44066590049,2025-06-13T17:00:00Z,18.92,1867.61,1722.68,1351,42.64,18.84 +15634084872,44050929738,2025-06-13T13:00:00Z,19.78,1871.78,1694.16,1353,43.22,19.67 +15629618177,44036960905,2025-06-13T09:00:00Z,19.24,1868.1,1703.61,1352,46.42,19.23 +15626198493,44024980719,2025-06-13T06:00:00Z,19.34,1864.31,1704.63,1351,42.27,19.29 +15620031250,44009155339,2025-06-12T22:00:00Z,20.24,1869.64,1703.58,1352,43.59,20.13 diff --git a/.ci/scripts/benchmark_tooling/private/allenai-olmo-1b-hf_hf-xnnpack-custom-spda-kv-cache-8da4w_apple-iphone-15-_ios-18.0.csv b/.ci/scripts/benchmark_tooling/private/allenai-olmo-1b-hf_hf-xnnpack-custom-spda-kv-cache-8da4w_apple-iphone-15-_ios-18.0.csv new file mode 100644 index 00000000000..68f4fe4efc1 --- /dev/null +++ b/.ci/scripts/benchmark_tooling/private/allenai-olmo-1b-hf_hf-xnnpack-custom-spda-kv-cache-8da4w_apple-iphone-15-_ios-18.0.csv @@ -0,0 +1,28 @@ +workflow_id,job_id,granularity_bucket,avg_inference_latency(ms),model_load_time(ms),peak_inference_mem_usage(mb),peak_load_mem_usage(mb),token_per_sec +15712278899,44280789008,2025-06-17T17:00:00Z,56,1300,1300.61,1366.44,14.4 +15706619480,44262431638,2025-06-17T13:00:00Z,69,1287,1300.58,1366.36,13.56 +15701565915,44245403612,2025-06-17T09:00:00Z,58,1284,1300.56,1366.5,13.41 +15697865923,44230646970,2025-06-17T05:00:00Z,58,1274,1300.51,1366.28,14.67 +15694639442,44221536444,2025-06-17T01:00:00Z,66,1416,1300.44,1379.13,13.76 +15690685696,44211619421,2025-06-16T21:00:00Z,59,1482,1300.33,1378.86,12.9 +15685808660,44196632637,2025-06-16T17:00:00Z,60,1364,1300.42,1379.2,14.1 +15680206509,44178256230,2025-06-16T13:00:00Z,59,1333,1300.26,1379.11,13.46 +15675176293,44162005966,2025-06-16T10:00:00Z,63,1320,1300.31,1379.18,14.18 +15671584185,44147537983,2025-06-16T06:00:00Z,59,1265,1300.6,1379.38,13.67 +15668756024,44140855631,2025-06-16T02:00:00Z,57,1368,1300.38,1378.91,14.21 +15666856809,44134617851,2025-06-15T22:00:00Z,60,1333,1300.39,1378.83,14.29 +15664949756,44129710892,2025-06-15T17:00:00Z,57,1304,1300.04,1379.16,14.4 +15662940074,44126695148,2025-06-15T15:00:00Z,64,1338,1300.43,1379.2,13.67 +15661046591,44121071601,2025-06-15T10:00:00Z,63,1292,1300.19,1379.17,14.43 +15659301910,44117138781,2025-06-15T06:00:00Z,54,1328,1300.47,1379.08,11.89 +15657354121,44112759100,2025-06-15T02:00:00Z,62,1435,1300.68,1378.99,13.67 +15655612867,44108084740,2025-06-14T21:00:00Z,55,1355,1300.35,1379.18,16.02 +15653742079,44104013228,2025-06-14T17:00:00Z,59,1301,1300.26,1378.84,14.64 +15651786133,44100160145,2025-06-14T14:00:00Z,56,1302,1300.24,1379.23,13.56 +15649987292,44095314814,2025-06-14T09:00:00Z,58,1323,1300.39,1379.15,13.06 +15646107434,44086831907,2025-06-14T02:00:00Z,57,1319,1299.52,1379.48,14.36 +15642962044,44079703037,2025-06-13T21:00:00Z,62,1386,1300.3,1379.56,13.54 +15638842903,44067697635,2025-06-13T17:00:00Z,69,1361,1300.28,1424.93,13.7 +15634027967,44053427212,2025-06-13T14:00:00Z,56,1280,1300.44,1424.99,15.08 +15629571833,44037516912,2025-06-13T09:00:00Z,59,1283,1300.15,1424.83,15.26 +15620031253,44010493569,2025-06-12T23:00:00Z,71,1469,1300.31,1424.9,12.81 diff --git a/.ci/scripts/benchmark_tooling/private/allenai-olmo-1b-hf_hf-xnnpack-custom-spda-kv-cache-8da4w_apple-iphone-15-plus-_ios-17.4.1.csv b/.ci/scripts/benchmark_tooling/private/allenai-olmo-1b-hf_hf-xnnpack-custom-spda-kv-cache-8da4w_apple-iphone-15-plus-_ios-17.4.1.csv new file mode 100644 index 00000000000..d553923606d --- /dev/null +++ b/.ci/scripts/benchmark_tooling/private/allenai-olmo-1b-hf_hf-xnnpack-custom-spda-kv-cache-8da4w_apple-iphone-15-plus-_ios-17.4.1.csv @@ -0,0 +1,28 @@ +workflow_id,job_id,granularity_bucket,avg_inference_latency(ms),model_load_time(ms),peak_inference_mem_usage(mb),peak_load_mem_usage(mb),token_per_sec +15712278899,44280789008,2025-06-17T17:00:00Z,63,1260,1379.78,1397.78,12.66 +15706619480,44262431638,2025-06-17T13:00:00Z,70,1341,1379.8,1397.51,12.26 +15701565915,44245403612,2025-06-17T09:00:00Z,70,1327,1379.73,1397.69,11.22 +15697865923,44230646970,2025-06-17T05:00:00Z,189,1341,1379.53,1397.03,6.57 +15694639442,44221536444,2025-06-17T01:00:00Z,77,1444,1398.5,1418.91,10.15 +15690685696,44211619421,2025-06-16T21:00:00Z,193,1493,1398.51,1419.32,9.53 +15685808660,44196632637,2025-06-16T17:00:00Z,80,1400,1398.62,1420.05,11.39 +15680206509,44178256230,2025-06-16T13:00:00Z,82,1360,1398.37,1419.42,11.28 +15675176293,44162005966,2025-06-16T10:00:00Z,172,1382,1398.4,1417.93,11.91 +15671584185,44147537983,2025-06-16T06:00:00Z,67,1311,1398.49,1418.27,11.88 +15668756024,44140855631,2025-06-16T02:00:00Z,71,1378,1398.48,1418.89,13.22 +15666856809,44134617851,2025-06-15T22:00:00Z,63,1325,1398.46,1419.6,12.82 +15664949756,44129710892,2025-06-15T17:00:00Z,67,1359,1398.49,1419.55,10.87 +15662940074,44126695148,2025-06-15T15:00:00Z,71,1377,1398.44,1417.56,12.11 +15661046591,44121071601,2025-06-15T10:00:00Z,77,1376,1398.39,1417.53,10.28 +15659301910,44117138781,2025-06-15T06:00:00Z,157,1401,1398.32,1418.1,12.32 +15657354121,44112759100,2025-06-15T02:00:00Z,73,1486,1398.5,1417.45,10.82 +15655612867,44108084740,2025-06-14T21:00:00Z,105,1391,1398.53,1418.45,6.19 +15653742079,44104013228,2025-06-14T17:00:00Z,73,1362,1398.51,1418.32,10.79 +15651786133,44100160145,2025-06-14T14:00:00Z,72,1368,1398.58,1418.91,10.89 +15649987292,44095314814,2025-06-14T09:00:00Z,137,1361,1398.44,1417.28,10.61 +15646107434,44086831907,2025-06-14T02:00:00Z,68,1300,1398.36,1419.42,12.65 +15642962044,44079703037,2025-06-13T21:00:00Z,181,1410,1398.57,1417.75,11.92 +15638842903,44067697635,2025-06-13T17:00:00Z,70,1351,1398.43,1467.03,12.18 +15634027967,44053427212,2025-06-13T14:00:00Z,70,1292,1398.49,1467.27,13.09 +15629571833,44037516912,2025-06-13T09:00:00Z,66,1358,1398.54,1467.08,10.68 +15620031253,44010493569,2025-06-12T23:00:00Z,73,1444,1398.5,1471.71,9.61 diff --git a/.ci/scripts/benchmark_tooling/private/allenai-olmo-1b-hf_hf-xnnpack-custom-spda-kv-cache-8da4w_apple-iphone-15-plus-private_ios-17.4.1.csv b/.ci/scripts/benchmark_tooling/private/allenai-olmo-1b-hf_hf-xnnpack-custom-spda-kv-cache-8da4w_apple-iphone-15-plus-private_ios-17.4.1.csv new file mode 100644 index 00000000000..d553923606d --- /dev/null +++ b/.ci/scripts/benchmark_tooling/private/allenai-olmo-1b-hf_hf-xnnpack-custom-spda-kv-cache-8da4w_apple-iphone-15-plus-private_ios-17.4.1.csv @@ -0,0 +1,28 @@ +workflow_id,job_id,granularity_bucket,avg_inference_latency(ms),model_load_time(ms),peak_inference_mem_usage(mb),peak_load_mem_usage(mb),token_per_sec +15712278899,44280789008,2025-06-17T17:00:00Z,63,1260,1379.78,1397.78,12.66 +15706619480,44262431638,2025-06-17T13:00:00Z,70,1341,1379.8,1397.51,12.26 +15701565915,44245403612,2025-06-17T09:00:00Z,70,1327,1379.73,1397.69,11.22 +15697865923,44230646970,2025-06-17T05:00:00Z,189,1341,1379.53,1397.03,6.57 +15694639442,44221536444,2025-06-17T01:00:00Z,77,1444,1398.5,1418.91,10.15 +15690685696,44211619421,2025-06-16T21:00:00Z,193,1493,1398.51,1419.32,9.53 +15685808660,44196632637,2025-06-16T17:00:00Z,80,1400,1398.62,1420.05,11.39 +15680206509,44178256230,2025-06-16T13:00:00Z,82,1360,1398.37,1419.42,11.28 +15675176293,44162005966,2025-06-16T10:00:00Z,172,1382,1398.4,1417.93,11.91 +15671584185,44147537983,2025-06-16T06:00:00Z,67,1311,1398.49,1418.27,11.88 +15668756024,44140855631,2025-06-16T02:00:00Z,71,1378,1398.48,1418.89,13.22 +15666856809,44134617851,2025-06-15T22:00:00Z,63,1325,1398.46,1419.6,12.82 +15664949756,44129710892,2025-06-15T17:00:00Z,67,1359,1398.49,1419.55,10.87 +15662940074,44126695148,2025-06-15T15:00:00Z,71,1377,1398.44,1417.56,12.11 +15661046591,44121071601,2025-06-15T10:00:00Z,77,1376,1398.39,1417.53,10.28 +15659301910,44117138781,2025-06-15T06:00:00Z,157,1401,1398.32,1418.1,12.32 +15657354121,44112759100,2025-06-15T02:00:00Z,73,1486,1398.5,1417.45,10.82 +15655612867,44108084740,2025-06-14T21:00:00Z,105,1391,1398.53,1418.45,6.19 +15653742079,44104013228,2025-06-14T17:00:00Z,73,1362,1398.51,1418.32,10.79 +15651786133,44100160145,2025-06-14T14:00:00Z,72,1368,1398.58,1418.91,10.89 +15649987292,44095314814,2025-06-14T09:00:00Z,137,1361,1398.44,1417.28,10.61 +15646107434,44086831907,2025-06-14T02:00:00Z,68,1300,1398.36,1419.42,12.65 +15642962044,44079703037,2025-06-13T21:00:00Z,181,1410,1398.57,1417.75,11.92 +15638842903,44067697635,2025-06-13T17:00:00Z,70,1351,1398.43,1467.03,12.18 +15634027967,44053427212,2025-06-13T14:00:00Z,70,1292,1398.49,1467.27,13.09 +15629571833,44037516912,2025-06-13T09:00:00Z,66,1358,1398.54,1467.08,10.68 +15620031253,44010493569,2025-06-12T23:00:00Z,73,1444,1398.5,1471.71,9.61 diff --git a/.ci/scripts/benchmark_tooling/private/allenai-olmo-1b-hf_hf-xnnpack-custom-spda-kv-cache-8da4w_apple-iphone-15-private_ios-18.0.csv b/.ci/scripts/benchmark_tooling/private/allenai-olmo-1b-hf_hf-xnnpack-custom-spda-kv-cache-8da4w_apple-iphone-15-private_ios-18.0.csv new file mode 100644 index 00000000000..68f4fe4efc1 --- /dev/null +++ b/.ci/scripts/benchmark_tooling/private/allenai-olmo-1b-hf_hf-xnnpack-custom-spda-kv-cache-8da4w_apple-iphone-15-private_ios-18.0.csv @@ -0,0 +1,28 @@ +workflow_id,job_id,granularity_bucket,avg_inference_latency(ms),model_load_time(ms),peak_inference_mem_usage(mb),peak_load_mem_usage(mb),token_per_sec +15712278899,44280789008,2025-06-17T17:00:00Z,56,1300,1300.61,1366.44,14.4 +15706619480,44262431638,2025-06-17T13:00:00Z,69,1287,1300.58,1366.36,13.56 +15701565915,44245403612,2025-06-17T09:00:00Z,58,1284,1300.56,1366.5,13.41 +15697865923,44230646970,2025-06-17T05:00:00Z,58,1274,1300.51,1366.28,14.67 +15694639442,44221536444,2025-06-17T01:00:00Z,66,1416,1300.44,1379.13,13.76 +15690685696,44211619421,2025-06-16T21:00:00Z,59,1482,1300.33,1378.86,12.9 +15685808660,44196632637,2025-06-16T17:00:00Z,60,1364,1300.42,1379.2,14.1 +15680206509,44178256230,2025-06-16T13:00:00Z,59,1333,1300.26,1379.11,13.46 +15675176293,44162005966,2025-06-16T10:00:00Z,63,1320,1300.31,1379.18,14.18 +15671584185,44147537983,2025-06-16T06:00:00Z,59,1265,1300.6,1379.38,13.67 +15668756024,44140855631,2025-06-16T02:00:00Z,57,1368,1300.38,1378.91,14.21 +15666856809,44134617851,2025-06-15T22:00:00Z,60,1333,1300.39,1378.83,14.29 +15664949756,44129710892,2025-06-15T17:00:00Z,57,1304,1300.04,1379.16,14.4 +15662940074,44126695148,2025-06-15T15:00:00Z,64,1338,1300.43,1379.2,13.67 +15661046591,44121071601,2025-06-15T10:00:00Z,63,1292,1300.19,1379.17,14.43 +15659301910,44117138781,2025-06-15T06:00:00Z,54,1328,1300.47,1379.08,11.89 +15657354121,44112759100,2025-06-15T02:00:00Z,62,1435,1300.68,1378.99,13.67 +15655612867,44108084740,2025-06-14T21:00:00Z,55,1355,1300.35,1379.18,16.02 +15653742079,44104013228,2025-06-14T17:00:00Z,59,1301,1300.26,1378.84,14.64 +15651786133,44100160145,2025-06-14T14:00:00Z,56,1302,1300.24,1379.23,13.56 +15649987292,44095314814,2025-06-14T09:00:00Z,58,1323,1300.39,1379.15,13.06 +15646107434,44086831907,2025-06-14T02:00:00Z,57,1319,1299.52,1379.48,14.36 +15642962044,44079703037,2025-06-13T21:00:00Z,62,1386,1300.3,1379.56,13.54 +15638842903,44067697635,2025-06-13T17:00:00Z,69,1361,1300.28,1424.93,13.7 +15634027967,44053427212,2025-06-13T14:00:00Z,56,1280,1300.44,1424.99,15.08 +15629571833,44037516912,2025-06-13T09:00:00Z,59,1283,1300.15,1424.83,15.26 +15620031253,44010493569,2025-06-12T23:00:00Z,71,1469,1300.31,1424.9,12.81 diff --git a/.ci/scripts/benchmark_tooling/private/allenai-olmo-1b-hf_hf-xnnpack-custom-spda-kv-cache-8da4w_apple-iphone-15-pro-_ios-18.4.1.csv b/.ci/scripts/benchmark_tooling/private/allenai-olmo-1b-hf_hf-xnnpack-custom-spda-kv-cache-8da4w_apple-iphone-15-pro-_ios-18.4.1.csv new file mode 100644 index 00000000000..54f9777d4ff --- /dev/null +++ b/.ci/scripts/benchmark_tooling/private/allenai-olmo-1b-hf_hf-xnnpack-custom-spda-kv-cache-8da4w_apple-iphone-15-pro-_ios-18.4.1.csv @@ -0,0 +1,28 @@ +workflow_id,job_id,granularity_bucket,avg_inference_latency(ms),model_load_time(ms),peak_inference_mem_usage(mb),peak_load_mem_usage(mb),token_per_sec +15712278899,44280789008,2025-06-17T17:00:00Z,27,1030,1380.34,1383.34,30.47 +15706619480,44262431638,2025-06-17T13:00:00Z,33,1048,1380.57,1383.46,29.49 +15701565915,44245403612,2025-06-17T09:00:00Z,30,1049,1380.37,1383.51,27.37 +15697865923,44230646970,2025-06-17T05:00:00Z,32,1049,1380.18,1383.21,29.56 +15694639442,44221536444,2025-06-17T01:00:00Z,29,1102,1399.79,1402.2,30.9 +15690685696,44211619421,2025-06-16T21:00:00Z,35,1122,1399.82,1402.34,24.44 +15685808660,44196632637,2025-06-16T17:00:00Z,35,1076,1399.63,1402.31,29.58 +15680206509,44178256230,2025-06-16T13:00:00Z,30,1067,1399.69,1402.33,28.18 +15675176293,44162005966,2025-06-16T10:00:00Z,30,1075,1399.93,1402.18,27.05 +15671584185,44147537983,2025-06-16T06:00:00Z,30,1047,1399.71,1402.22,27.77 +15668756024,44140855631,2025-06-16T02:00:00Z,29,1078,1399.41,1401.96,30.98 +15666856809,44134617851,2025-06-15T22:00:00Z,29,1062,1399.74,1402.38,30.14 +15664949756,44129710892,2025-06-15T17:00:00Z,29,1075,1399.79,1402.14,30.22 +15662940074,44126695148,2025-06-15T15:00:00Z,39,1071,1399.62,1402.17,30.15 +15661046591,44121071601,2025-06-15T10:00:00Z,30,1075,1399.47,1401.87,30.1 +15659301910,44117138781,2025-06-15T06:00:00Z,30,1068,1399.97,1402.3,28.95 +15657354121,44112759100,2025-06-15T02:00:00Z,33,1074,1399.74,1402.29,29.58 +15655612867,44108084740,2025-06-14T21:00:00Z,30,1071,1399.47,1402.03,29.3 +15653742079,44104013228,2025-06-14T17:00:00Z,26,1081,1399.76,1402.46,30.29 +15651786133,44100160145,2025-06-14T14:00:00Z,27,1093,1400.0,1402.35,29.24 +15649987292,44095314814,2025-06-14T09:00:00Z,30,1065,1399.49,1402.11,29.37 +15646107434,44086831907,2025-06-14T02:00:00Z,27,1047,1399.6,1402.01,31.92 +15642962044,44079703037,2025-06-13T21:00:00Z,29,1065,1399.47,1402.06,30.63 +15638842903,44067697635,2025-06-13T17:00:00Z,30,1068,1399.68,1445.3,29.78 +15634027967,44053427212,2025-06-13T14:00:00Z,27,1051,1399.59,1445.3,27.92 +15629571833,44037516912,2025-06-13T09:00:00Z,27,1068,1399.59,1445.11,27.49 +15620031253,44010493569,2025-06-12T23:00:00Z,29,1096,1399.8,1448.08,29.3 diff --git a/.ci/scripts/benchmark_tooling/private/allenai-olmo-1b-hf_hf-xnnpack-custom-spda-kv-cache-8da4w_apple-iphone-15-pro-private_ios-18.4.1.csv b/.ci/scripts/benchmark_tooling/private/allenai-olmo-1b-hf_hf-xnnpack-custom-spda-kv-cache-8da4w_apple-iphone-15-pro-private_ios-18.4.1.csv new file mode 100644 index 00000000000..54f9777d4ff --- /dev/null +++ b/.ci/scripts/benchmark_tooling/private/allenai-olmo-1b-hf_hf-xnnpack-custom-spda-kv-cache-8da4w_apple-iphone-15-pro-private_ios-18.4.1.csv @@ -0,0 +1,28 @@ +workflow_id,job_id,granularity_bucket,avg_inference_latency(ms),model_load_time(ms),peak_inference_mem_usage(mb),peak_load_mem_usage(mb),token_per_sec +15712278899,44280789008,2025-06-17T17:00:00Z,27,1030,1380.34,1383.34,30.47 +15706619480,44262431638,2025-06-17T13:00:00Z,33,1048,1380.57,1383.46,29.49 +15701565915,44245403612,2025-06-17T09:00:00Z,30,1049,1380.37,1383.51,27.37 +15697865923,44230646970,2025-06-17T05:00:00Z,32,1049,1380.18,1383.21,29.56 +15694639442,44221536444,2025-06-17T01:00:00Z,29,1102,1399.79,1402.2,30.9 +15690685696,44211619421,2025-06-16T21:00:00Z,35,1122,1399.82,1402.34,24.44 +15685808660,44196632637,2025-06-16T17:00:00Z,35,1076,1399.63,1402.31,29.58 +15680206509,44178256230,2025-06-16T13:00:00Z,30,1067,1399.69,1402.33,28.18 +15675176293,44162005966,2025-06-16T10:00:00Z,30,1075,1399.93,1402.18,27.05 +15671584185,44147537983,2025-06-16T06:00:00Z,30,1047,1399.71,1402.22,27.77 +15668756024,44140855631,2025-06-16T02:00:00Z,29,1078,1399.41,1401.96,30.98 +15666856809,44134617851,2025-06-15T22:00:00Z,29,1062,1399.74,1402.38,30.14 +15664949756,44129710892,2025-06-15T17:00:00Z,29,1075,1399.79,1402.14,30.22 +15662940074,44126695148,2025-06-15T15:00:00Z,39,1071,1399.62,1402.17,30.15 +15661046591,44121071601,2025-06-15T10:00:00Z,30,1075,1399.47,1401.87,30.1 +15659301910,44117138781,2025-06-15T06:00:00Z,30,1068,1399.97,1402.3,28.95 +15657354121,44112759100,2025-06-15T02:00:00Z,33,1074,1399.74,1402.29,29.58 +15655612867,44108084740,2025-06-14T21:00:00Z,30,1071,1399.47,1402.03,29.3 +15653742079,44104013228,2025-06-14T17:00:00Z,26,1081,1399.76,1402.46,30.29 +15651786133,44100160145,2025-06-14T14:00:00Z,27,1093,1400.0,1402.35,29.24 +15649987292,44095314814,2025-06-14T09:00:00Z,30,1065,1399.49,1402.11,29.37 +15646107434,44086831907,2025-06-14T02:00:00Z,27,1047,1399.6,1402.01,31.92 +15642962044,44079703037,2025-06-13T21:00:00Z,29,1065,1399.47,1402.06,30.63 +15638842903,44067697635,2025-06-13T17:00:00Z,30,1068,1399.68,1445.3,29.78 +15634027967,44053427212,2025-06-13T14:00:00Z,27,1051,1399.59,1445.3,27.92 +15629571833,44037516912,2025-06-13T09:00:00Z,27,1068,1399.59,1445.11,27.49 +15620031253,44010493569,2025-06-12T23:00:00Z,29,1096,1399.8,1448.08,29.3 diff --git a/.ci/scripts/benchmark_tooling/private/huggingfacetb-smollm2-135m_hf-xnnpack-custom-spda-kv-cache-8da4w_-s22-_android-13.csv b/.ci/scripts/benchmark_tooling/private/huggingfacetb-smollm2-135m_hf-xnnpack-custom-spda-kv-cache-8da4w_-s22-_android-13.csv new file mode 100644 index 00000000000..61c9e6ae5ff --- /dev/null +++ b/.ci/scripts/benchmark_tooling/private/huggingfacetb-smollm2-135m_hf-xnnpack-custom-spda-kv-cache-8da4w_-s22-_android-13.csv @@ -0,0 +1,29 @@ +workflow_id,job_id,granularity_bucket,avg_inference_latency(ms),llm_model_load_time(ms),model_load_time(ms),ram_pss_usage(mb),token_per_sec,trimmean_inference_latency(ms) +15712320497,44280131792,2025-06-17T17:00:00Z,5.08,232.69,275.42,253,200.0,5.07 +15706687362,44261351450,2025-06-17T13:00:00Z,5.17,230.2,266.26,254,194.05,5.16 +15701619570,44244323755,2025-06-17T09:00:00Z,4.99,244.06,285.43,253,201.62,4.97 +15697890915,44230067957,2025-06-17T05:00:00Z,9.39,232.02,295.16,254,200.64,8.71 +15694752722,44221381863,2025-06-17T01:00:00Z,5.56,238.37,305.1,266,199.35,5.28 +15690721346,44211034387,2025-06-16T21:00:00Z,5.02,231.47,269.43,266,193.75,5.0 +15685858387,44195500217,2025-06-16T17:00:00Z,5.37,240.25,295.35,258,204.62,5.36 +15680276053,44184994658,2025-06-16T15:00:00Z,7.66,234.92,292.62,258,201.95,7.33 +15675229427,44160356972,2025-06-16T09:00:00Z,5.68,254.5,297.29,257,197.45,5.2 +15671609250,44146779212,2025-06-16T05:00:00Z,7.3,238.07,293.64,267,195.27,7.07 +15668838280,44139310442,2025-06-16T01:00:00Z,5.34,249.16,288.35,256,200.32,5.33 +15666871209,44133842083,2025-06-15T21:00:00Z,5.23,237.91,277.42,267,193.43,5.21 +15664964842,44129416866,2025-06-15T17:00:00Z,8.6,234.82,298.22,257,198.4,7.83 +15662964566,44125237276,2025-06-15T13:00:00Z,6.0,238.79,267.51,267,195.89,5.92 +15661066119,44120683489,2025-06-15T09:00:00Z,5.2,239.11,285.29,257,197.45,5.18 +15659315239,44116350825,2025-06-15T05:00:00Z,8.96,240.8,286.01,257,197.76,8.18 +15655627252,44107937078,2025-06-14T21:00:00Z,5.39,243.39,277.95,257,202.94,5.16 +15653757002,44103768469,2025-06-14T17:00:00Z,8.91,240.81,300.09,257,197.76,6.91 +15651807296,44099312849,2025-06-14T13:00:00Z,8.73,232.6,275.32,258,207.35,7.37 +15650005042,44095041071,2025-06-14T09:00:00Z,5.16,259.72,302.52,267,199.35,5.14 +15648224665,44090821985,2025-06-14T05:00:00Z,5.16,245.14,285.66,267,194.05,5.15 +15646186941,44086333101,2025-06-14T01:00:00Z,5.23,234.8,276.14,257,201.95,5.2 +15642991544,44079110098,2025-06-13T21:00:00Z,5.15,237.13,270.49,257,198.71,5.13 +15638881659,44066590049,2025-06-13T17:00:00Z,9.08,233.25,280.43,258,197.13,8.53 +15634084872,44050929738,2025-06-13T13:00:00Z,4.99,236.5,286.66,259,197.45,4.98 +15629618177,44036960905,2025-06-13T09:00:00Z,5.48,240.87,285.86,257,198.71,5.32 +15626198493,44024980719,2025-06-13T06:00:00Z,8.0,232.58,290.41,266,203.94,6.45 +15620031250,44009155339,2025-06-12T22:00:00Z,5.17,236.38,295.29,257,202.61,5.16 diff --git a/.ci/scripts/benchmark_tooling/private/huggingfacetb-smollm2-135m_hf-xnnpack-custom-spda-kv-cache-8da4w_-s22-private_android-13.csv b/.ci/scripts/benchmark_tooling/private/huggingfacetb-smollm2-135m_hf-xnnpack-custom-spda-kv-cache-8da4w_-s22-private_android-13.csv new file mode 100644 index 00000000000..61c9e6ae5ff --- /dev/null +++ b/.ci/scripts/benchmark_tooling/private/huggingfacetb-smollm2-135m_hf-xnnpack-custom-spda-kv-cache-8da4w_-s22-private_android-13.csv @@ -0,0 +1,29 @@ +workflow_id,job_id,granularity_bucket,avg_inference_latency(ms),llm_model_load_time(ms),model_load_time(ms),ram_pss_usage(mb),token_per_sec,trimmean_inference_latency(ms) +15712320497,44280131792,2025-06-17T17:00:00Z,5.08,232.69,275.42,253,200.0,5.07 +15706687362,44261351450,2025-06-17T13:00:00Z,5.17,230.2,266.26,254,194.05,5.16 +15701619570,44244323755,2025-06-17T09:00:00Z,4.99,244.06,285.43,253,201.62,4.97 +15697890915,44230067957,2025-06-17T05:00:00Z,9.39,232.02,295.16,254,200.64,8.71 +15694752722,44221381863,2025-06-17T01:00:00Z,5.56,238.37,305.1,266,199.35,5.28 +15690721346,44211034387,2025-06-16T21:00:00Z,5.02,231.47,269.43,266,193.75,5.0 +15685858387,44195500217,2025-06-16T17:00:00Z,5.37,240.25,295.35,258,204.62,5.36 +15680276053,44184994658,2025-06-16T15:00:00Z,7.66,234.92,292.62,258,201.95,7.33 +15675229427,44160356972,2025-06-16T09:00:00Z,5.68,254.5,297.29,257,197.45,5.2 +15671609250,44146779212,2025-06-16T05:00:00Z,7.3,238.07,293.64,267,195.27,7.07 +15668838280,44139310442,2025-06-16T01:00:00Z,5.34,249.16,288.35,256,200.32,5.33 +15666871209,44133842083,2025-06-15T21:00:00Z,5.23,237.91,277.42,267,193.43,5.21 +15664964842,44129416866,2025-06-15T17:00:00Z,8.6,234.82,298.22,257,198.4,7.83 +15662964566,44125237276,2025-06-15T13:00:00Z,6.0,238.79,267.51,267,195.89,5.92 +15661066119,44120683489,2025-06-15T09:00:00Z,5.2,239.11,285.29,257,197.45,5.18 +15659315239,44116350825,2025-06-15T05:00:00Z,8.96,240.8,286.01,257,197.76,8.18 +15655627252,44107937078,2025-06-14T21:00:00Z,5.39,243.39,277.95,257,202.94,5.16 +15653757002,44103768469,2025-06-14T17:00:00Z,8.91,240.81,300.09,257,197.76,6.91 +15651807296,44099312849,2025-06-14T13:00:00Z,8.73,232.6,275.32,258,207.35,7.37 +15650005042,44095041071,2025-06-14T09:00:00Z,5.16,259.72,302.52,267,199.35,5.14 +15648224665,44090821985,2025-06-14T05:00:00Z,5.16,245.14,285.66,267,194.05,5.15 +15646186941,44086333101,2025-06-14T01:00:00Z,5.23,234.8,276.14,257,201.95,5.2 +15642991544,44079110098,2025-06-13T21:00:00Z,5.15,237.13,270.49,257,198.71,5.13 +15638881659,44066590049,2025-06-13T17:00:00Z,9.08,233.25,280.43,258,197.13,8.53 +15634084872,44050929738,2025-06-13T13:00:00Z,4.99,236.5,286.66,259,197.45,4.98 +15629618177,44036960905,2025-06-13T09:00:00Z,5.48,240.87,285.86,257,198.71,5.32 +15626198493,44024980719,2025-06-13T06:00:00Z,8.0,232.58,290.41,266,203.94,6.45 +15620031250,44009155339,2025-06-12T22:00:00Z,5.17,236.38,295.29,257,202.61,5.16 diff --git a/.ci/scripts/benchmark_tooling/private/huggingfacetb-smollm2-135m_hf-xnnpack-custom-spda-kv-cache-8da4w_-s22-ultra-_android-14.csv b/.ci/scripts/benchmark_tooling/private/huggingfacetb-smollm2-135m_hf-xnnpack-custom-spda-kv-cache-8da4w_-s22-ultra-_android-14.csv new file mode 100644 index 00000000000..80033dd907a --- /dev/null +++ b/.ci/scripts/benchmark_tooling/private/huggingfacetb-smollm2-135m_hf-xnnpack-custom-spda-kv-cache-8da4w_-s22-ultra-_android-14.csv @@ -0,0 +1,29 @@ +workflow_id,job_id,granularity_bucket,avg_inference_latency(ms),llm_model_load_time(ms),model_load_time(ms),ram_pss_usage(mb),token_per_sec,trimmean_inference_latency(ms) +15712320497,44280131792,2025-06-17T17:00:00Z,5.03,195.96,237.56,263,202.28,5.01 +15706687362,44261351450,2025-06-17T13:00:00Z,5.32,195.38,229.2,262,202.28,5.3 +15701619570,44244323755,2025-06-17T09:00:00Z,6.15,193.76,236.57,263,193.75,6.1 +15697890915,44230067957,2025-06-17T05:00:00Z,5.22,197.65,243.81,264,198.71,5.18 +15694752722,44221381863,2025-06-17T01:00:00Z,5.18,198.54,238.15,266,204.28,5.15 +15690721346,44211034387,2025-06-16T21:00:00Z,5.34,197.21,261.05,266,200.64,5.31 +15685858387,44195500217,2025-06-16T17:00:00Z,5.3,198.32,248.27,266,199.35,5.28 +15680276053,44184994658,2025-06-16T15:00:00Z,5.17,195.91,257.7,266,202.61,5.16 +15675229427,44160356972,2025-06-16T09:00:00Z,5.23,196.07,248.92,266,204.95,5.21 +15671609250,44146779212,2025-06-16T05:00:00Z,5.14,197.32,249.71,266,200.64,5.12 +15668838280,44139310442,2025-06-16T01:00:00Z,5.05,201.42,236.03,266,200.0,5.03 +15666871209,44133842083,2025-06-15T21:00:00Z,5.24,195.81,240.72,266,199.03,5.23 +15664964842,44129416866,2025-06-15T17:00:00Z,5.28,199.56,238.46,266,198.08,5.27 +15662964566,44125237276,2025-06-15T13:00:00Z,5.12,198.17,236.21,266,201.29,5.11 +15661066119,44120683489,2025-06-15T09:00:00Z,9.35,202.12,242.07,267,199.67,8.02 +15659315239,44116350825,2025-06-15T05:00:00Z,5.47,200.86,249.01,266,198.08,5.26 +15655627252,44107937078,2025-06-14T21:00:00Z,6.5,198.51,238.13,266,199.67,6.36 +15653757002,44103768469,2025-06-14T17:00:00Z,5.33,194.3,240.72,266,202.61,5.31 +15651807296,44099312849,2025-06-14T13:00:00Z,5.16,199.73,240.33,267,203.27,5.13 +15650005042,44095041071,2025-06-14T09:00:00Z,5.49,200.71,239.28,266,198.4,5.47 +15648224665,44090821985,2025-06-14T05:00:00Z,5.31,195.78,269.08,267,200.0,5.29 +15646186941,44086333101,2025-06-14T01:00:00Z,6.15,198.59,287.55,266,197.13,5.8 +15642991544,44079110098,2025-06-13T21:00:00Z,6.76,209.17,235.16,266,188.73,6.59 +15638881659,44066590049,2025-06-13T17:00:00Z,5.05,199.15,234.27,266,198.4,5.04 +15634084872,44050929738,2025-06-13T13:00:00Z,5.23,197.45,246.25,266,198.71,5.22 +15629618177,44036960905,2025-06-13T09:00:00Z,5.48,196.3,260.76,266,200.32,5.39 +15626198493,44024980719,2025-06-13T06:00:00Z,5.23,201.71,238.06,266,200.97,5.21 +15620031250,44009155339,2025-06-12T22:00:00Z,5.29,197.19,249.2,266,193.14,5.29 diff --git a/.ci/scripts/benchmark_tooling/private/huggingfacetb-smollm2-135m_hf-xnnpack-custom-spda-kv-cache-8da4w_-s22-ultra-private_android-14.csv b/.ci/scripts/benchmark_tooling/private/huggingfacetb-smollm2-135m_hf-xnnpack-custom-spda-kv-cache-8da4w_-s22-ultra-private_android-14.csv new file mode 100644 index 00000000000..80033dd907a --- /dev/null +++ b/.ci/scripts/benchmark_tooling/private/huggingfacetb-smollm2-135m_hf-xnnpack-custom-spda-kv-cache-8da4w_-s22-ultra-private_android-14.csv @@ -0,0 +1,29 @@ +workflow_id,job_id,granularity_bucket,avg_inference_latency(ms),llm_model_load_time(ms),model_load_time(ms),ram_pss_usage(mb),token_per_sec,trimmean_inference_latency(ms) +15712320497,44280131792,2025-06-17T17:00:00Z,5.03,195.96,237.56,263,202.28,5.01 +15706687362,44261351450,2025-06-17T13:00:00Z,5.32,195.38,229.2,262,202.28,5.3 +15701619570,44244323755,2025-06-17T09:00:00Z,6.15,193.76,236.57,263,193.75,6.1 +15697890915,44230067957,2025-06-17T05:00:00Z,5.22,197.65,243.81,264,198.71,5.18 +15694752722,44221381863,2025-06-17T01:00:00Z,5.18,198.54,238.15,266,204.28,5.15 +15690721346,44211034387,2025-06-16T21:00:00Z,5.34,197.21,261.05,266,200.64,5.31 +15685858387,44195500217,2025-06-16T17:00:00Z,5.3,198.32,248.27,266,199.35,5.28 +15680276053,44184994658,2025-06-16T15:00:00Z,5.17,195.91,257.7,266,202.61,5.16 +15675229427,44160356972,2025-06-16T09:00:00Z,5.23,196.07,248.92,266,204.95,5.21 +15671609250,44146779212,2025-06-16T05:00:00Z,5.14,197.32,249.71,266,200.64,5.12 +15668838280,44139310442,2025-06-16T01:00:00Z,5.05,201.42,236.03,266,200.0,5.03 +15666871209,44133842083,2025-06-15T21:00:00Z,5.24,195.81,240.72,266,199.03,5.23 +15664964842,44129416866,2025-06-15T17:00:00Z,5.28,199.56,238.46,266,198.08,5.27 +15662964566,44125237276,2025-06-15T13:00:00Z,5.12,198.17,236.21,266,201.29,5.11 +15661066119,44120683489,2025-06-15T09:00:00Z,9.35,202.12,242.07,267,199.67,8.02 +15659315239,44116350825,2025-06-15T05:00:00Z,5.47,200.86,249.01,266,198.08,5.26 +15655627252,44107937078,2025-06-14T21:00:00Z,6.5,198.51,238.13,266,199.67,6.36 +15653757002,44103768469,2025-06-14T17:00:00Z,5.33,194.3,240.72,266,202.61,5.31 +15651807296,44099312849,2025-06-14T13:00:00Z,5.16,199.73,240.33,267,203.27,5.13 +15650005042,44095041071,2025-06-14T09:00:00Z,5.49,200.71,239.28,266,198.4,5.47 +15648224665,44090821985,2025-06-14T05:00:00Z,5.31,195.78,269.08,267,200.0,5.29 +15646186941,44086333101,2025-06-14T01:00:00Z,6.15,198.59,287.55,266,197.13,5.8 +15642991544,44079110098,2025-06-13T21:00:00Z,6.76,209.17,235.16,266,188.73,6.59 +15638881659,44066590049,2025-06-13T17:00:00Z,5.05,199.15,234.27,266,198.4,5.04 +15634084872,44050929738,2025-06-13T13:00:00Z,5.23,197.45,246.25,266,198.71,5.22 +15629618177,44036960905,2025-06-13T09:00:00Z,5.48,196.3,260.76,266,200.32,5.39 +15626198493,44024980719,2025-06-13T06:00:00Z,5.23,201.71,238.06,266,200.97,5.21 +15620031250,44009155339,2025-06-12T22:00:00Z,5.29,197.19,249.2,266,193.14,5.29 diff --git a/.ci/scripts/benchmark_tooling/private/huggingfacetb-smollm2-135m_hf-xnnpack-custom-spda-kv-cache-8da4w_apple-iphone-15-_ios-18.0.csv b/.ci/scripts/benchmark_tooling/private/huggingfacetb-smollm2-135m_hf-xnnpack-custom-spda-kv-cache-8da4w_apple-iphone-15-_ios-18.0.csv new file mode 100644 index 00000000000..5d203d158a4 --- /dev/null +++ b/.ci/scripts/benchmark_tooling/private/huggingfacetb-smollm2-135m_hf-xnnpack-custom-spda-kv-cache-8da4w_apple-iphone-15-_ios-18.0.csv @@ -0,0 +1,29 @@ +workflow_id,job_id,granularity_bucket,avg_inference_latency(ms),model_load_time(ms),peak_inference_mem_usage(mb),peak_load_mem_usage(mb),token_per_sec +15712278899,44280789008,2025-06-17T17:00:00Z,117,156,207.02,183.08,8.01 +15706619480,44262431638,2025-06-17T13:00:00Z,103,147,207.3,182.98,8.05 +15701565915,44245403612,2025-06-17T09:00:00Z,111,148,207.04,182.97,7.92 +15697865923,44230646970,2025-06-17T05:00:00Z,123,150,207.34,183.02,7.68 +15694639442,44221536444,2025-06-17T01:00:00Z,112,163,208.11,186.57,7.67 +15690685696,44211619421,2025-06-16T21:00:00Z,99,152,207.76,186.35,7.97 +15685808660,44196632637,2025-06-16T17:00:00Z,118,159,208.38,186.71,7.45 +15680206509,44178256230,2025-06-16T13:00:00Z,115,144,207.91,186.65,8.3 +15675176293,44162005966,2025-06-16T10:00:00Z,117,150,207.65,186.37,8.19 +15671584185,44147537983,2025-06-16T06:00:00Z,118,149,208.47,186.82,7.9 +15668756024,44140855631,2025-06-16T02:00:00Z,113,165,208.07,186.53,6.93 +15666856809,44134617851,2025-06-15T22:00:00Z,133,162,208.09,186.62,7.55 +15664949756,44129710892,2025-06-15T17:00:00Z,103,151,207.89,186.59,8.08 +15662940074,44126695148,2025-06-15T15:00:00Z,107,144,207.82,186.56,8.66 +15661046591,44121071601,2025-06-15T10:00:00Z,118,151,208.23,186.63,8.16 +15659301910,44117138781,2025-06-15T06:00:00Z,115,151,207.87,186.61,7.78 +15657354121,44112759100,2025-06-15T02:00:00Z,133,163,207.9,186.46,7.86 +15655612867,44108084740,2025-06-14T21:00:00Z,114,147,207.76,186.47,7.83 +15653742079,44104013228,2025-06-14T17:00:00Z,120,151,208.1,186.52,8.01 +15651786133,44100160145,2025-06-14T14:00:00Z,133,152,208.16,186.47,7.76 +15649987292,44095314814,2025-06-14T09:00:00Z,125,151,207.78,186.41,7.51 +15646107434,44086831907,2025-06-14T02:00:00Z,113,154,208.16,186.72,7.94 +15642962044,44079703037,2025-06-13T21:00:00Z,120,157,207.79,186.47,7.85 +15638842903,44067697635,2025-06-13T17:00:00Z,116,154,207.92,228.97,7.77 +15634027967,44053427212,2025-06-13T14:00:00Z,123,150,207.94,229.22,7.89 +15629571833,44037516912,2025-06-13T09:00:00Z,113,148,208.2,229.06,8.17 +15626172835,44025076952,2025-06-13T06:00:00Z,113,154,208.13,229.03,7.9 +15620031253,44010493569,2025-06-12T23:00:00Z,118,162,207.91,228.92,8.01 diff --git a/.ci/scripts/benchmark_tooling/private/huggingfacetb-smollm2-135m_hf-xnnpack-custom-spda-kv-cache-8da4w_apple-iphone-15-plus-_ios-17.4.1.csv b/.ci/scripts/benchmark_tooling/private/huggingfacetb-smollm2-135m_hf-xnnpack-custom-spda-kv-cache-8da4w_apple-iphone-15-plus-_ios-17.4.1.csv new file mode 100644 index 00000000000..fdb949f89c5 --- /dev/null +++ b/.ci/scripts/benchmark_tooling/private/huggingfacetb-smollm2-135m_hf-xnnpack-custom-spda-kv-cache-8da4w_apple-iphone-15-plus-_ios-17.4.1.csv @@ -0,0 +1,28 @@ +workflow_id,job_id,granularity_bucket,avg_inference_latency(ms),model_load_time(ms),peak_inference_mem_usage(mb),peak_load_mem_usage(mb),token_per_sec +15712278899,44280789008,2025-06-17T17:00:00Z,150,152,238.13,248.56,5.68 +15706619480,44262431638,2025-06-17T13:00:00Z,132,145,237.89,248.55,6.49 +15701565915,44245403612,2025-06-17T09:00:00Z,132,150,238.24,249.03,5.86 +15697865923,44230646970,2025-06-17T05:00:00Z,122,145,237.93,248.63,6.79 +15694639442,44221536444,2025-06-17T01:00:00Z,124,155,242.11,253.23,6.5 +15690685696,44211619421,2025-06-16T21:00:00Z,125,152,241.97,253.27,6.61 +15685808660,44196632637,2025-06-16T17:00:00Z,130,152,242.17,252.51,6.24 +15680206509,44178256230,2025-06-16T13:00:00Z,122,142,241.98,252.14,6.95 +15675176293,44162005966,2025-06-16T10:00:00Z,142,155,242.0,252.4,6.41 +15671584185,44147537983,2025-06-16T06:00:00Z,131,149,241.94,253.23,6.65 +15666856809,44134617851,2025-06-15T22:00:00Z,137,156,242.04,253.36,6.4 +15664949756,44129710892,2025-06-15T17:00:00Z,132,149,242.11,253.27,6.53 +15662940074,44126695148,2025-06-15T15:00:00Z,150,147,242.14,252.42,6.84 +15661046591,44121071601,2025-06-15T10:00:00Z,133,152,242.18,252.67,6.51 +15659301910,44117138781,2025-06-15T06:00:00Z,132,150,242.08,252.49,6.57 +15657354121,44112759100,2025-06-15T02:00:00Z,147,155,241.97,253.11,6.48 +15655612867,44108084740,2025-06-14T21:00:00Z,130,141,242.13,252.72,6.72 +15653742079,44104013228,2025-06-14T17:00:00Z,134,151,242.14,252.49,6.34 +15651786133,44100160145,2025-06-14T14:00:00Z,131,151,242.2,253.38,6.72 +15649987292,44095314814,2025-06-14T09:00:00Z,142,148,242.1,253.37,6.68 +15646107434,44086831907,2025-06-14T02:00:00Z,134,153,242.1,253.25,5.99 +15642962044,44079703037,2025-06-13T21:00:00Z,131,155,242.03,253.77,6.5 +15638842903,44067697635,2025-06-13T17:00:00Z,135,150,241.97,301.24,6.56 +15634027967,44053427212,2025-06-13T14:00:00Z,159,154,242.2,300.63,6.02 +15629571833,44037516912,2025-06-13T09:00:00Z,134,152,241.96,300.48,6.64 +15626172835,44025076952,2025-06-13T06:00:00Z,116,151,242.03,301.21,6.59 +15620031253,44010493569,2025-06-12T23:00:00Z,139,161,242.18,302.08,5.8 diff --git a/.ci/scripts/benchmark_tooling/private/huggingfacetb-smollm2-135m_hf-xnnpack-custom-spda-kv-cache-8da4w_apple-iphone-15-plus-private_ios-17.4.1.csv b/.ci/scripts/benchmark_tooling/private/huggingfacetb-smollm2-135m_hf-xnnpack-custom-spda-kv-cache-8da4w_apple-iphone-15-plus-private_ios-17.4.1.csv new file mode 100644 index 00000000000..fdb949f89c5 --- /dev/null +++ b/.ci/scripts/benchmark_tooling/private/huggingfacetb-smollm2-135m_hf-xnnpack-custom-spda-kv-cache-8da4w_apple-iphone-15-plus-private_ios-17.4.1.csv @@ -0,0 +1,28 @@ +workflow_id,job_id,granularity_bucket,avg_inference_latency(ms),model_load_time(ms),peak_inference_mem_usage(mb),peak_load_mem_usage(mb),token_per_sec +15712278899,44280789008,2025-06-17T17:00:00Z,150,152,238.13,248.56,5.68 +15706619480,44262431638,2025-06-17T13:00:00Z,132,145,237.89,248.55,6.49 +15701565915,44245403612,2025-06-17T09:00:00Z,132,150,238.24,249.03,5.86 +15697865923,44230646970,2025-06-17T05:00:00Z,122,145,237.93,248.63,6.79 +15694639442,44221536444,2025-06-17T01:00:00Z,124,155,242.11,253.23,6.5 +15690685696,44211619421,2025-06-16T21:00:00Z,125,152,241.97,253.27,6.61 +15685808660,44196632637,2025-06-16T17:00:00Z,130,152,242.17,252.51,6.24 +15680206509,44178256230,2025-06-16T13:00:00Z,122,142,241.98,252.14,6.95 +15675176293,44162005966,2025-06-16T10:00:00Z,142,155,242.0,252.4,6.41 +15671584185,44147537983,2025-06-16T06:00:00Z,131,149,241.94,253.23,6.65 +15666856809,44134617851,2025-06-15T22:00:00Z,137,156,242.04,253.36,6.4 +15664949756,44129710892,2025-06-15T17:00:00Z,132,149,242.11,253.27,6.53 +15662940074,44126695148,2025-06-15T15:00:00Z,150,147,242.14,252.42,6.84 +15661046591,44121071601,2025-06-15T10:00:00Z,133,152,242.18,252.67,6.51 +15659301910,44117138781,2025-06-15T06:00:00Z,132,150,242.08,252.49,6.57 +15657354121,44112759100,2025-06-15T02:00:00Z,147,155,241.97,253.11,6.48 +15655612867,44108084740,2025-06-14T21:00:00Z,130,141,242.13,252.72,6.72 +15653742079,44104013228,2025-06-14T17:00:00Z,134,151,242.14,252.49,6.34 +15651786133,44100160145,2025-06-14T14:00:00Z,131,151,242.2,253.38,6.72 +15649987292,44095314814,2025-06-14T09:00:00Z,142,148,242.1,253.37,6.68 +15646107434,44086831907,2025-06-14T02:00:00Z,134,153,242.1,253.25,5.99 +15642962044,44079703037,2025-06-13T21:00:00Z,131,155,242.03,253.77,6.5 +15638842903,44067697635,2025-06-13T17:00:00Z,135,150,241.97,301.24,6.56 +15634027967,44053427212,2025-06-13T14:00:00Z,159,154,242.2,300.63,6.02 +15629571833,44037516912,2025-06-13T09:00:00Z,134,152,241.96,300.48,6.64 +15626172835,44025076952,2025-06-13T06:00:00Z,116,151,242.03,301.21,6.59 +15620031253,44010493569,2025-06-12T23:00:00Z,139,161,242.18,302.08,5.8 diff --git a/.ci/scripts/benchmark_tooling/private/huggingfacetb-smollm2-135m_hf-xnnpack-custom-spda-kv-cache-8da4w_apple-iphone-15-private_ios-18.0.csv b/.ci/scripts/benchmark_tooling/private/huggingfacetb-smollm2-135m_hf-xnnpack-custom-spda-kv-cache-8da4w_apple-iphone-15-private_ios-18.0.csv new file mode 100644 index 00000000000..5d203d158a4 --- /dev/null +++ b/.ci/scripts/benchmark_tooling/private/huggingfacetb-smollm2-135m_hf-xnnpack-custom-spda-kv-cache-8da4w_apple-iphone-15-private_ios-18.0.csv @@ -0,0 +1,29 @@ +workflow_id,job_id,granularity_bucket,avg_inference_latency(ms),model_load_time(ms),peak_inference_mem_usage(mb),peak_load_mem_usage(mb),token_per_sec +15712278899,44280789008,2025-06-17T17:00:00Z,117,156,207.02,183.08,8.01 +15706619480,44262431638,2025-06-17T13:00:00Z,103,147,207.3,182.98,8.05 +15701565915,44245403612,2025-06-17T09:00:00Z,111,148,207.04,182.97,7.92 +15697865923,44230646970,2025-06-17T05:00:00Z,123,150,207.34,183.02,7.68 +15694639442,44221536444,2025-06-17T01:00:00Z,112,163,208.11,186.57,7.67 +15690685696,44211619421,2025-06-16T21:00:00Z,99,152,207.76,186.35,7.97 +15685808660,44196632637,2025-06-16T17:00:00Z,118,159,208.38,186.71,7.45 +15680206509,44178256230,2025-06-16T13:00:00Z,115,144,207.91,186.65,8.3 +15675176293,44162005966,2025-06-16T10:00:00Z,117,150,207.65,186.37,8.19 +15671584185,44147537983,2025-06-16T06:00:00Z,118,149,208.47,186.82,7.9 +15668756024,44140855631,2025-06-16T02:00:00Z,113,165,208.07,186.53,6.93 +15666856809,44134617851,2025-06-15T22:00:00Z,133,162,208.09,186.62,7.55 +15664949756,44129710892,2025-06-15T17:00:00Z,103,151,207.89,186.59,8.08 +15662940074,44126695148,2025-06-15T15:00:00Z,107,144,207.82,186.56,8.66 +15661046591,44121071601,2025-06-15T10:00:00Z,118,151,208.23,186.63,8.16 +15659301910,44117138781,2025-06-15T06:00:00Z,115,151,207.87,186.61,7.78 +15657354121,44112759100,2025-06-15T02:00:00Z,133,163,207.9,186.46,7.86 +15655612867,44108084740,2025-06-14T21:00:00Z,114,147,207.76,186.47,7.83 +15653742079,44104013228,2025-06-14T17:00:00Z,120,151,208.1,186.52,8.01 +15651786133,44100160145,2025-06-14T14:00:00Z,133,152,208.16,186.47,7.76 +15649987292,44095314814,2025-06-14T09:00:00Z,125,151,207.78,186.41,7.51 +15646107434,44086831907,2025-06-14T02:00:00Z,113,154,208.16,186.72,7.94 +15642962044,44079703037,2025-06-13T21:00:00Z,120,157,207.79,186.47,7.85 +15638842903,44067697635,2025-06-13T17:00:00Z,116,154,207.92,228.97,7.77 +15634027967,44053427212,2025-06-13T14:00:00Z,123,150,207.94,229.22,7.89 +15629571833,44037516912,2025-06-13T09:00:00Z,113,148,208.2,229.06,8.17 +15626172835,44025076952,2025-06-13T06:00:00Z,113,154,208.13,229.03,7.9 +15620031253,44010493569,2025-06-12T23:00:00Z,118,162,207.91,228.92,8.01 diff --git a/.ci/scripts/benchmark_tooling/private/huggingfacetb-smollm2-135m_hf-xnnpack-custom-spda-kv-cache-8da4w_apple-iphone-15-pro-_ios-18.4.1.csv b/.ci/scripts/benchmark_tooling/private/huggingfacetb-smollm2-135m_hf-xnnpack-custom-spda-kv-cache-8da4w_apple-iphone-15-pro-_ios-18.4.1.csv new file mode 100644 index 00000000000..c9ecc8ad9b8 --- /dev/null +++ b/.ci/scripts/benchmark_tooling/private/huggingfacetb-smollm2-135m_hf-xnnpack-custom-spda-kv-cache-8da4w_apple-iphone-15-pro-_ios-18.4.1.csv @@ -0,0 +1,29 @@ +workflow_id,job_id,granularity_bucket,avg_inference_latency(ms),model_load_time(ms),peak_inference_mem_usage(mb),peak_load_mem_usage(mb),token_per_sec +15712278899,44280789008,2025-06-17T17:00:00Z,33,111,240.14,253.16,28.45 +15706619480,44262431638,2025-06-17T13:00:00Z,40,112,240.09,253.21,29.42 +15701565915,44245403612,2025-06-17T09:00:00Z,24,110,240.11,253.15,33.05 +15697865923,44230646970,2025-06-17T05:00:00Z,36,111,240.02,253.05,31.65 +15694639442,44221536444,2025-06-17T01:00:00Z,41,118,244.68,257.48,27.45 +15690685696,44211619421,2025-06-16T21:00:00Z,36,113,244.58,257.66,29.83 +15685808660,44196632637,2025-06-16T17:00:00Z,30,114,244.55,257.56,29.0 +15680206509,44178256230,2025-06-16T13:00:00Z,52,111,244.83,257.45,29.59 +15675176293,44162005966,2025-06-16T10:00:00Z,34,113,244.5,257.12,31.62 +15671584185,44147537983,2025-06-16T06:00:00Z,28,113,244.46,257.3,30.29 +15668756024,44140855631,2025-06-16T02:00:00Z,31,117,244.41,257.37,30.72 +15666856809,44134617851,2025-06-15T22:00:00Z,34,114,244.4,257.18,31.75 +15664949756,44129710892,2025-06-15T17:00:00Z,30,112,244.34,257.19,31.34 +15662940074,44126695148,2025-06-15T15:00:00Z,37,111,244.69,257.48,32.76 +15661046591,44121071601,2025-06-15T10:00:00Z,29,113,244.5,257.37,30.9 +15659301910,44117138781,2025-06-15T06:00:00Z,31,112,244.55,257.21,32.42 +15657354121,44112759100,2025-06-15T02:00:00Z,34,115,244.81,257.58,31.94 +15655612867,44108084740,2025-06-14T21:00:00Z,38,112,244.76,257.74,32.83 +15653742079,44104013228,2025-06-14T17:00:00Z,37,114,244.6,257.34,31.83 +15651786133,44100160145,2025-06-14T14:00:00Z,33,113,244.43,257.32,31.8 +15649987292,44095314814,2025-06-14T09:00:00Z,36,115,244.7,257.38,32.07 +15646107434,44086831907,2025-06-14T02:00:00Z,36,112,244.56,257.45,32.28 +15642962044,44079703037,2025-06-13T21:00:00Z,32,114,244.76,257.43,31.81 +15638842903,44067697635,2025-06-13T17:00:00Z,29,113,244.56,317.1,31.97 +15634027967,44053427212,2025-06-13T14:00:00Z,36,112,244.7,317.29,30.37 +15629571833,44037516912,2025-06-13T09:00:00Z,25,112,244.49,316.86,31.12 +15626172835,44025076952,2025-06-13T06:00:00Z,31,113,244.5,317.26,31.94 +15620031253,44010493569,2025-06-12T23:00:00Z,25,114,244.47,317.61,29.58 diff --git a/.ci/scripts/benchmark_tooling/private/huggingfacetb-smollm2-135m_hf-xnnpack-custom-spda-kv-cache-8da4w_apple-iphone-15-pro-private_ios-18.4.1.csv b/.ci/scripts/benchmark_tooling/private/huggingfacetb-smollm2-135m_hf-xnnpack-custom-spda-kv-cache-8da4w_apple-iphone-15-pro-private_ios-18.4.1.csv new file mode 100644 index 00000000000..c9ecc8ad9b8 --- /dev/null +++ b/.ci/scripts/benchmark_tooling/private/huggingfacetb-smollm2-135m_hf-xnnpack-custom-spda-kv-cache-8da4w_apple-iphone-15-pro-private_ios-18.4.1.csv @@ -0,0 +1,29 @@ +workflow_id,job_id,granularity_bucket,avg_inference_latency(ms),model_load_time(ms),peak_inference_mem_usage(mb),peak_load_mem_usage(mb),token_per_sec +15712278899,44280789008,2025-06-17T17:00:00Z,33,111,240.14,253.16,28.45 +15706619480,44262431638,2025-06-17T13:00:00Z,40,112,240.09,253.21,29.42 +15701565915,44245403612,2025-06-17T09:00:00Z,24,110,240.11,253.15,33.05 +15697865923,44230646970,2025-06-17T05:00:00Z,36,111,240.02,253.05,31.65 +15694639442,44221536444,2025-06-17T01:00:00Z,41,118,244.68,257.48,27.45 +15690685696,44211619421,2025-06-16T21:00:00Z,36,113,244.58,257.66,29.83 +15685808660,44196632637,2025-06-16T17:00:00Z,30,114,244.55,257.56,29.0 +15680206509,44178256230,2025-06-16T13:00:00Z,52,111,244.83,257.45,29.59 +15675176293,44162005966,2025-06-16T10:00:00Z,34,113,244.5,257.12,31.62 +15671584185,44147537983,2025-06-16T06:00:00Z,28,113,244.46,257.3,30.29 +15668756024,44140855631,2025-06-16T02:00:00Z,31,117,244.41,257.37,30.72 +15666856809,44134617851,2025-06-15T22:00:00Z,34,114,244.4,257.18,31.75 +15664949756,44129710892,2025-06-15T17:00:00Z,30,112,244.34,257.19,31.34 +15662940074,44126695148,2025-06-15T15:00:00Z,37,111,244.69,257.48,32.76 +15661046591,44121071601,2025-06-15T10:00:00Z,29,113,244.5,257.37,30.9 +15659301910,44117138781,2025-06-15T06:00:00Z,31,112,244.55,257.21,32.42 +15657354121,44112759100,2025-06-15T02:00:00Z,34,115,244.81,257.58,31.94 +15655612867,44108084740,2025-06-14T21:00:00Z,38,112,244.76,257.74,32.83 +15653742079,44104013228,2025-06-14T17:00:00Z,37,114,244.6,257.34,31.83 +15651786133,44100160145,2025-06-14T14:00:00Z,33,113,244.43,257.32,31.8 +15649987292,44095314814,2025-06-14T09:00:00Z,36,115,244.7,257.38,32.07 +15646107434,44086831907,2025-06-14T02:00:00Z,36,112,244.56,257.45,32.28 +15642962044,44079703037,2025-06-13T21:00:00Z,32,114,244.76,257.43,31.81 +15638842903,44067697635,2025-06-13T17:00:00Z,29,113,244.56,317.1,31.97 +15634027967,44053427212,2025-06-13T14:00:00Z,36,112,244.7,317.29,30.37 +15629571833,44037516912,2025-06-13T09:00:00Z,25,112,244.49,316.86,31.12 +15626172835,44025076952,2025-06-13T06:00:00Z,31,113,244.5,317.26,31.94 +15620031253,44010493569,2025-06-12T23:00:00Z,25,114,244.47,317.61,29.58 diff --git a/.ci/scripts/benchmark_tooling/private/meta-llama-llama-3.2-1b-instruct-qlora-int4-eo8_llama3-qlora_-s22-_android-13.csv b/.ci/scripts/benchmark_tooling/private/meta-llama-llama-3.2-1b-instruct-qlora-int4-eo8_llama3-qlora_-s22-_android-13.csv new file mode 100644 index 00000000000..4ed141f4107 --- /dev/null +++ b/.ci/scripts/benchmark_tooling/private/meta-llama-llama-3.2-1b-instruct-qlora-int4-eo8_llama3-qlora_-s22-_android-13.csv @@ -0,0 +1,11 @@ +workflow_id,job_id,granularity_bucket,avg_inference_latency(ms),llm_model_load_time(ms),model_load_time(ms),ram_pss_usage(mb),token_per_sec,trimmean_inference_latency(ms) +15615520755,43991248116,2025-06-12T17:00:00Z,23503.87,5191.83,2519.01,1846,29.15,23347.41 +15605026631,43956669874,2025-06-12T09:00:00Z,21553.89,4849.82,2679.69,1855,32.12,21448.13 +15601359910,43943792457,2025-06-12T05:00:00Z,22456.68,4796.66,2704.24,1853,31.44,22354.05 +15598383765,43935960659,2025-06-12T01:00:00Z,23815.42,4976.46,2934.02,1844,28.87,23680.55 +15594484786,43925468969,2025-06-11T21:00:00Z,24441.16,5174.44,3534.68,1852,27.77,24267.86 +15589858447,43914218724,2025-06-11T18:00:00Z,23176.6,4967.04,3028.98,1856,29.55,23031.2 +15584331831,43891253427,2025-06-11T13:00:00Z,22153.79,5063.66,2214.28,1857,31.73,22037.97 +15579400247,43875126572,2025-06-11T09:00:00Z,23223.04,5085.34,2656.79,1846,29.59,23157.0 +15575806493,43862405466,2025-06-11T05:00:00Z,24185.54,5605.22,3360.71,1853,27.85,24081.04 +15572893795,43854545007,2025-06-11T01:00:00Z,24385.09,5129.64,3049.4,1855,30.92,24227.06 diff --git a/.ci/scripts/benchmark_tooling/private/meta-llama-llama-3.2-1b-instruct-qlora-int4-eo8_llama3-qlora_-s22-private_android-13.csv b/.ci/scripts/benchmark_tooling/private/meta-llama-llama-3.2-1b-instruct-qlora-int4-eo8_llama3-qlora_-s22-private_android-13.csv new file mode 100644 index 00000000000..4ed141f4107 --- /dev/null +++ b/.ci/scripts/benchmark_tooling/private/meta-llama-llama-3.2-1b-instruct-qlora-int4-eo8_llama3-qlora_-s22-private_android-13.csv @@ -0,0 +1,11 @@ +workflow_id,job_id,granularity_bucket,avg_inference_latency(ms),llm_model_load_time(ms),model_load_time(ms),ram_pss_usage(mb),token_per_sec,trimmean_inference_latency(ms) +15615520755,43991248116,2025-06-12T17:00:00Z,23503.87,5191.83,2519.01,1846,29.15,23347.41 +15605026631,43956669874,2025-06-12T09:00:00Z,21553.89,4849.82,2679.69,1855,32.12,21448.13 +15601359910,43943792457,2025-06-12T05:00:00Z,22456.68,4796.66,2704.24,1853,31.44,22354.05 +15598383765,43935960659,2025-06-12T01:00:00Z,23815.42,4976.46,2934.02,1844,28.87,23680.55 +15594484786,43925468969,2025-06-11T21:00:00Z,24441.16,5174.44,3534.68,1852,27.77,24267.86 +15589858447,43914218724,2025-06-11T18:00:00Z,23176.6,4967.04,3028.98,1856,29.55,23031.2 +15584331831,43891253427,2025-06-11T13:00:00Z,22153.79,5063.66,2214.28,1857,31.73,22037.97 +15579400247,43875126572,2025-06-11T09:00:00Z,23223.04,5085.34,2656.79,1846,29.59,23157.0 +15575806493,43862405466,2025-06-11T05:00:00Z,24185.54,5605.22,3360.71,1853,27.85,24081.04 +15572893795,43854545007,2025-06-11T01:00:00Z,24385.09,5129.64,3049.4,1855,30.92,24227.06 diff --git a/.ci/scripts/benchmark_tooling/private/meta-llama-llama-3.2-1b-instruct-qlora-int4-eo8_llama3-qlora_-s22-ultra-_android-14.csv b/.ci/scripts/benchmark_tooling/private/meta-llama-llama-3.2-1b-instruct-qlora-int4-eo8_llama3-qlora_-s22-ultra-_android-14.csv new file mode 100644 index 00000000000..87d5d3ebdfd --- /dev/null +++ b/.ci/scripts/benchmark_tooling/private/meta-llama-llama-3.2-1b-instruct-qlora-int4-eo8_llama3-qlora_-s22-ultra-_android-14.csv @@ -0,0 +1,11 @@ +workflow_id,job_id,granularity_bucket,avg_inference_latency(ms),llm_model_load_time(ms),model_load_time(ms),ram_pss_usage(mb),token_per_sec,trimmean_inference_latency(ms) +15615520755,43991248116,2025-06-12T17:00:00Z,22835.06,2927.2,1725.54,1860,31.1,22675.01 +15605026631,43956669874,2025-06-12T09:00:00Z,21961.37,2553.17,1722.09,1860,33.25,21886.96 +15601359910,43943792457,2025-06-12T05:00:00Z,22970.58,2943.64,1693.81,1860,29.89,22860.58 +15598383765,43935960659,2025-06-12T01:00:00Z,23708.65,3257.09,1736.01,1860,28.84,23290.23 +15594484786,43925468969,2025-06-11T21:00:00Z,24924.29,3248.96,1709.81,1860,27.68,24494.91 +15589858447,43914218724,2025-06-11T18:00:00Z,23084.6,2936.75,1706.62,1860,30.51,22969.77 +15584331831,43891253427,2025-06-11T13:00:00Z,23209.99,2989.91,1726.29,1861,31.57,23076.05 +15579400247,43875126572,2025-06-11T09:00:00Z,24611.81,3265.23,1708.76,1860,27.59,24053.0 +15575806493,43862405466,2025-06-11T05:00:00Z,26795.63,3460.04,1755.55,1850,22.57,26662.57 +15572893795,43854545007,2025-06-11T01:00:00Z,33650.53,4056.73,1740.23,1849,22.55,33450.83 diff --git a/.ci/scripts/benchmark_tooling/private/meta-llama-llama-3.2-1b-instruct-qlora-int4-eo8_llama3-qlora_-s22-ultra-private_android-14.csv b/.ci/scripts/benchmark_tooling/private/meta-llama-llama-3.2-1b-instruct-qlora-int4-eo8_llama3-qlora_-s22-ultra-private_android-14.csv new file mode 100644 index 00000000000..87d5d3ebdfd --- /dev/null +++ b/.ci/scripts/benchmark_tooling/private/meta-llama-llama-3.2-1b-instruct-qlora-int4-eo8_llama3-qlora_-s22-ultra-private_android-14.csv @@ -0,0 +1,11 @@ +workflow_id,job_id,granularity_bucket,avg_inference_latency(ms),llm_model_load_time(ms),model_load_time(ms),ram_pss_usage(mb),token_per_sec,trimmean_inference_latency(ms) +15615520755,43991248116,2025-06-12T17:00:00Z,22835.06,2927.2,1725.54,1860,31.1,22675.01 +15605026631,43956669874,2025-06-12T09:00:00Z,21961.37,2553.17,1722.09,1860,33.25,21886.96 +15601359910,43943792457,2025-06-12T05:00:00Z,22970.58,2943.64,1693.81,1860,29.89,22860.58 +15598383765,43935960659,2025-06-12T01:00:00Z,23708.65,3257.09,1736.01,1860,28.84,23290.23 +15594484786,43925468969,2025-06-11T21:00:00Z,24924.29,3248.96,1709.81,1860,27.68,24494.91 +15589858447,43914218724,2025-06-11T18:00:00Z,23084.6,2936.75,1706.62,1860,30.51,22969.77 +15584331831,43891253427,2025-06-11T13:00:00Z,23209.99,2989.91,1726.29,1861,31.57,23076.05 +15579400247,43875126572,2025-06-11T09:00:00Z,24611.81,3265.23,1708.76,1860,27.59,24053.0 +15575806493,43862405466,2025-06-11T05:00:00Z,26795.63,3460.04,1755.55,1850,22.57,26662.57 +15572893795,43854545007,2025-06-11T01:00:00Z,33650.53,4056.73,1740.23,1849,22.55,33450.83 diff --git a/.ci/scripts/benchmark_tooling/private/meta-llama-llama-3.2-1b-instruct-qlora-int4-eo8_llama3-qlora_apple-iphone-15-_ios-18.0.csv b/.ci/scripts/benchmark_tooling/private/meta-llama-llama-3.2-1b-instruct-qlora-int4-eo8_llama3-qlora_apple-iphone-15-_ios-18.0.csv new file mode 100644 index 00000000000..33a6b1cc0ae --- /dev/null +++ b/.ci/scripts/benchmark_tooling/private/meta-llama-llama-3.2-1b-instruct-qlora-int4-eo8_llama3-qlora_apple-iphone-15-_ios-18.0.csv @@ -0,0 +1,11 @@ +workflow_id,job_id,granularity_bucket,avg_inference_latency(ms),model_load_time(ms),peak_inference_mem_usage(mb),peak_load_mem_usage(mb),token_per_sec +15615480751,43993124686,2025-06-12T17:00:00Z,14371,1682,1876.36,2106.54,10.14 +15604974289,43958007180,2025-06-12T09:00:00Z,14075,1571,1878.11,2106.82,6.28 +15601337433,43944770836,2025-06-12T05:00:00Z,14215,1599,1876.56,2106.06,6.15 +15598277481,43937275861,2025-06-12T01:00:00Z,15161,1674,1879.25,2106.17,5.78 +15594453833,43926877649,2025-06-11T21:00:00Z,15381,1719,1881.74,2106.38,5.64 +15589818422,43912035344,2025-06-11T17:00:00Z,14440,1677,1883.31,2106.69,5.95 +15584268753,43893469529,2025-06-11T13:00:00Z,20351,2097,1882.81,2106.13,3.79 +15579346239,43876994524,2025-06-11T09:00:00Z,15769,1767,1882.89,2106.45,4.16 +15575781424,43864061188,2025-06-11T05:00:00Z,18880,1958,1882.28,2106.45,3.93 +15572789992,43855812660,2025-06-11T01:00:00Z,16685,1994,1878.63,2105.17,4.61 diff --git a/.ci/scripts/benchmark_tooling/private/meta-llama-llama-3.2-1b-instruct-qlora-int4-eo8_llama3-qlora_apple-iphone-15-plus-_ios-17.4.1.csv b/.ci/scripts/benchmark_tooling/private/meta-llama-llama-3.2-1b-instruct-qlora-int4-eo8_llama3-qlora_apple-iphone-15-plus-_ios-17.4.1.csv new file mode 100644 index 00000000000..8139b86a208 --- /dev/null +++ b/.ci/scripts/benchmark_tooling/private/meta-llama-llama-3.2-1b-instruct-qlora-int4-eo8_llama3-qlora_apple-iphone-15-plus-_ios-17.4.1.csv @@ -0,0 +1,11 @@ +workflow_id,job_id,granularity_bucket,avg_inference_latency(ms),model_load_time(ms),peak_inference_mem_usage(mb),peak_load_mem_usage(mb),token_per_sec +15615480751,43993124686,2025-06-12T17:00:00Z,14135,1612,1900.48,2217.44,5.0 +15604974289,43958007180,2025-06-12T09:00:00Z,14106,1572,1900.54,2217.53,4.91 +15601337433,43944770836,2025-06-12T05:00:00Z,14097,1591,1900.55,2217.39,5.0 +15598277481,43937275861,2025-06-12T01:00:00Z,15316,1495,1900.52,2217.31,4.97 +15594453833,43926877649,2025-06-11T21:00:00Z,15431,1659,1900.53,2217.83,4.83 +15589818422,43912035344,2025-06-11T17:00:00Z,14292,1617,1898.46,2217.97,4.98 +15584268753,43893469529,2025-06-11T13:00:00Z,14139,1522,1900.47,2217.73,5.05 +15579346239,43876994524,2025-06-11T09:00:00Z,14046,1563,1900.38,2217.7,4.59 +15575781424,43864061188,2025-06-11T05:00:00Z,14261,1556,1900.34,2217.93,4.93 +15572789992,43855812660,2025-06-11T01:00:00Z,14645,1589,1900.47,2216.15,4.86 diff --git a/.ci/scripts/benchmark_tooling/private/meta-llama-llama-3.2-1b-instruct-qlora-int4-eo8_llama3-qlora_apple-iphone-15-plus-private_ios-17.4.1.csv b/.ci/scripts/benchmark_tooling/private/meta-llama-llama-3.2-1b-instruct-qlora-int4-eo8_llama3-qlora_apple-iphone-15-plus-private_ios-17.4.1.csv new file mode 100644 index 00000000000..8139b86a208 --- /dev/null +++ b/.ci/scripts/benchmark_tooling/private/meta-llama-llama-3.2-1b-instruct-qlora-int4-eo8_llama3-qlora_apple-iphone-15-plus-private_ios-17.4.1.csv @@ -0,0 +1,11 @@ +workflow_id,job_id,granularity_bucket,avg_inference_latency(ms),model_load_time(ms),peak_inference_mem_usage(mb),peak_load_mem_usage(mb),token_per_sec +15615480751,43993124686,2025-06-12T17:00:00Z,14135,1612,1900.48,2217.44,5.0 +15604974289,43958007180,2025-06-12T09:00:00Z,14106,1572,1900.54,2217.53,4.91 +15601337433,43944770836,2025-06-12T05:00:00Z,14097,1591,1900.55,2217.39,5.0 +15598277481,43937275861,2025-06-12T01:00:00Z,15316,1495,1900.52,2217.31,4.97 +15594453833,43926877649,2025-06-11T21:00:00Z,15431,1659,1900.53,2217.83,4.83 +15589818422,43912035344,2025-06-11T17:00:00Z,14292,1617,1898.46,2217.97,4.98 +15584268753,43893469529,2025-06-11T13:00:00Z,14139,1522,1900.47,2217.73,5.05 +15579346239,43876994524,2025-06-11T09:00:00Z,14046,1563,1900.38,2217.7,4.59 +15575781424,43864061188,2025-06-11T05:00:00Z,14261,1556,1900.34,2217.93,4.93 +15572789992,43855812660,2025-06-11T01:00:00Z,14645,1589,1900.47,2216.15,4.86 diff --git a/.ci/scripts/benchmark_tooling/private/meta-llama-llama-3.2-1b-instruct-qlora-int4-eo8_llama3-qlora_apple-iphone-15-private_ios-18.0.csv b/.ci/scripts/benchmark_tooling/private/meta-llama-llama-3.2-1b-instruct-qlora-int4-eo8_llama3-qlora_apple-iphone-15-private_ios-18.0.csv new file mode 100644 index 00000000000..33a6b1cc0ae --- /dev/null +++ b/.ci/scripts/benchmark_tooling/private/meta-llama-llama-3.2-1b-instruct-qlora-int4-eo8_llama3-qlora_apple-iphone-15-private_ios-18.0.csv @@ -0,0 +1,11 @@ +workflow_id,job_id,granularity_bucket,avg_inference_latency(ms),model_load_time(ms),peak_inference_mem_usage(mb),peak_load_mem_usage(mb),token_per_sec +15615480751,43993124686,2025-06-12T17:00:00Z,14371,1682,1876.36,2106.54,10.14 +15604974289,43958007180,2025-06-12T09:00:00Z,14075,1571,1878.11,2106.82,6.28 +15601337433,43944770836,2025-06-12T05:00:00Z,14215,1599,1876.56,2106.06,6.15 +15598277481,43937275861,2025-06-12T01:00:00Z,15161,1674,1879.25,2106.17,5.78 +15594453833,43926877649,2025-06-11T21:00:00Z,15381,1719,1881.74,2106.38,5.64 +15589818422,43912035344,2025-06-11T17:00:00Z,14440,1677,1883.31,2106.69,5.95 +15584268753,43893469529,2025-06-11T13:00:00Z,20351,2097,1882.81,2106.13,3.79 +15579346239,43876994524,2025-06-11T09:00:00Z,15769,1767,1882.89,2106.45,4.16 +15575781424,43864061188,2025-06-11T05:00:00Z,18880,1958,1882.28,2106.45,3.93 +15572789992,43855812660,2025-06-11T01:00:00Z,16685,1994,1878.63,2105.17,4.61 diff --git a/.ci/scripts/benchmark_tooling/private/meta-llama-llama-3.2-1b-instruct-qlora-int4-eo8_llama3-qlora_apple-iphone-15-pro-_ios-18.4.1.csv b/.ci/scripts/benchmark_tooling/private/meta-llama-llama-3.2-1b-instruct-qlora-int4-eo8_llama3-qlora_apple-iphone-15-pro-_ios-18.4.1.csv new file mode 100644 index 00000000000..7a36f76167f --- /dev/null +++ b/.ci/scripts/benchmark_tooling/private/meta-llama-llama-3.2-1b-instruct-qlora-int4-eo8_llama3-qlora_apple-iphone-15-pro-_ios-18.4.1.csv @@ -0,0 +1,11 @@ +workflow_id,job_id,granularity_bucket,avg_inference_latency(ms),model_load_time(ms),peak_inference_mem_usage(mb),peak_load_mem_usage(mb),token_per_sec +15615480751,43993124686,2025-06-12T17:00:00Z,12248,1240,2228.26,2125.32,12.38 +15604974289,43958007180,2025-06-12T09:00:00Z,12262,1243,2228.34,2125.28,12.29 +15601337433,43944770836,2025-06-12T05:00:00Z,12224,1234,2228.23,2125.53,12.82 +15598277481,43937275861,2025-06-12T01:00:00Z,12337,1247,2228.19,2125.03,12.29 +15594453833,43926877649,2025-06-11T21:00:00Z,12374,1253,2228.28,2125.48,12.08 +15589818422,43912035344,2025-06-11T17:00:00Z,12300,1247,2228.19,2125.54,12.44 +15584268753,43893469529,2025-06-11T13:00:00Z,12338,1244,2228.22,2125.18,12.29 +15579346239,43876994524,2025-06-11T09:00:00Z,12259,1248,2228.19,2125.15,12.45 +15575781424,43864061188,2025-06-11T05:00:00Z,12382,1246,2228.21,2125.27,12.27 +15572789992,43855812660,2025-06-11T01:00:00Z,12795,1283,2228.17,2124.4,11.73 diff --git a/.ci/scripts/benchmark_tooling/private/meta-llama-llama-3.2-1b-instruct-qlora-int4-eo8_llama3-qlora_apple-iphone-15-pro-private_ios-18.4.1.csv b/.ci/scripts/benchmark_tooling/private/meta-llama-llama-3.2-1b-instruct-qlora-int4-eo8_llama3-qlora_apple-iphone-15-pro-private_ios-18.4.1.csv new file mode 100644 index 00000000000..7a36f76167f --- /dev/null +++ b/.ci/scripts/benchmark_tooling/private/meta-llama-llama-3.2-1b-instruct-qlora-int4-eo8_llama3-qlora_apple-iphone-15-pro-private_ios-18.4.1.csv @@ -0,0 +1,11 @@ +workflow_id,job_id,granularity_bucket,avg_inference_latency(ms),model_load_time(ms),peak_inference_mem_usage(mb),peak_load_mem_usage(mb),token_per_sec +15615480751,43993124686,2025-06-12T17:00:00Z,12248,1240,2228.26,2125.32,12.38 +15604974289,43958007180,2025-06-12T09:00:00Z,12262,1243,2228.34,2125.28,12.29 +15601337433,43944770836,2025-06-12T05:00:00Z,12224,1234,2228.23,2125.53,12.82 +15598277481,43937275861,2025-06-12T01:00:00Z,12337,1247,2228.19,2125.03,12.29 +15594453833,43926877649,2025-06-11T21:00:00Z,12374,1253,2228.28,2125.48,12.08 +15589818422,43912035344,2025-06-11T17:00:00Z,12300,1247,2228.19,2125.54,12.44 +15584268753,43893469529,2025-06-11T13:00:00Z,12338,1244,2228.22,2125.18,12.29 +15579346239,43876994524,2025-06-11T09:00:00Z,12259,1248,2228.19,2125.15,12.45 +15575781424,43864061188,2025-06-11T05:00:00Z,12382,1246,2228.21,2125.27,12.27 +15572789992,43855812660,2025-06-11T01:00:00Z,12795,1283,2228.17,2124.4,11.73 diff --git a/.ci/scripts/benchmark_tooling/private/meta-llama-llama-3.2-1b-instruct-spinquant-int4-eo8_llama3-spinquant_-s22-_android-13.csv b/.ci/scripts/benchmark_tooling/private/meta-llama-llama-3.2-1b-instruct-spinquant-int4-eo8_llama3-spinquant_-s22-_android-13.csv new file mode 100644 index 00000000000..a2fb8569ee0 --- /dev/null +++ b/.ci/scripts/benchmark_tooling/private/meta-llama-llama-3.2-1b-instruct-spinquant-int4-eo8_llama3-spinquant_-s22-_android-13.csv @@ -0,0 +1,12 @@ +workflow_id,job_id,granularity_bucket,avg_inference_latency(ms),llm_model_load_time(ms),model_load_time(ms),ram_pss_usage(mb),token_per_sec,trimmean_inference_latency(ms) +15615520755,43991248116,2025-06-12T17:00:00Z,22013.41,4251.64,3148.64,1473,32.65,21926.85 +15609976846,43972978640,2025-06-12T13:00:00Z,21798.08,4561.45,2589.85,1479,36.31,21667.06 +15605026631,43956669874,2025-06-12T09:00:00Z,21490.5,4653.6,2150.01,1481,34.39,21367.61 +15601359910,43943792457,2025-06-12T05:00:00Z,21020.11,4541.74,2233.61,1479,34.01,20884.95 +15598383765,43935960659,2025-06-12T01:00:00Z,22526.58,4576.39,2172.29,1480,34.11,22420.59 +15594484786,43925468969,2025-06-11T21:00:00Z,22588.16,5175.36,2085.37,1479,30.04,22480.96 +15589858447,43914218724,2025-06-11T18:00:00Z,22002.38,4576.92,2178.61,1478,35.84,21864.97 +15584331831,43891253427,2025-06-11T13:00:00Z,21931.83,4529.22,2245.6,1479,34.62,21827.08 +15579400247,43875126572,2025-06-11T09:00:00Z,22433.95,4972.81,2647.57,1487,32.45,22314.91 +15575806493,43862405466,2025-06-11T05:00:00Z,23151.53,5096.7,2160.32,1481,30.98,23004.06 +15572893795,43854545007,2025-06-11T01:00:00Z,23589.88,4900.33,3340.95,1477,29.84,23423.93 diff --git a/.ci/scripts/benchmark_tooling/private/meta-llama-llama-3.2-1b-instruct-spinquant-int4-eo8_llama3-spinquant_-s22-private_android-13.csv b/.ci/scripts/benchmark_tooling/private/meta-llama-llama-3.2-1b-instruct-spinquant-int4-eo8_llama3-spinquant_-s22-private_android-13.csv new file mode 100644 index 00000000000..a2fb8569ee0 --- /dev/null +++ b/.ci/scripts/benchmark_tooling/private/meta-llama-llama-3.2-1b-instruct-spinquant-int4-eo8_llama3-spinquant_-s22-private_android-13.csv @@ -0,0 +1,12 @@ +workflow_id,job_id,granularity_bucket,avg_inference_latency(ms),llm_model_load_time(ms),model_load_time(ms),ram_pss_usage(mb),token_per_sec,trimmean_inference_latency(ms) +15615520755,43991248116,2025-06-12T17:00:00Z,22013.41,4251.64,3148.64,1473,32.65,21926.85 +15609976846,43972978640,2025-06-12T13:00:00Z,21798.08,4561.45,2589.85,1479,36.31,21667.06 +15605026631,43956669874,2025-06-12T09:00:00Z,21490.5,4653.6,2150.01,1481,34.39,21367.61 +15601359910,43943792457,2025-06-12T05:00:00Z,21020.11,4541.74,2233.61,1479,34.01,20884.95 +15598383765,43935960659,2025-06-12T01:00:00Z,22526.58,4576.39,2172.29,1480,34.11,22420.59 +15594484786,43925468969,2025-06-11T21:00:00Z,22588.16,5175.36,2085.37,1479,30.04,22480.96 +15589858447,43914218724,2025-06-11T18:00:00Z,22002.38,4576.92,2178.61,1478,35.84,21864.97 +15584331831,43891253427,2025-06-11T13:00:00Z,21931.83,4529.22,2245.6,1479,34.62,21827.08 +15579400247,43875126572,2025-06-11T09:00:00Z,22433.95,4972.81,2647.57,1487,32.45,22314.91 +15575806493,43862405466,2025-06-11T05:00:00Z,23151.53,5096.7,2160.32,1481,30.98,23004.06 +15572893795,43854545007,2025-06-11T01:00:00Z,23589.88,4900.33,3340.95,1477,29.84,23423.93 diff --git a/.ci/scripts/benchmark_tooling/private/meta-llama-llama-3.2-1b-instruct-spinquant-int4-eo8_llama3-spinquant_-s22-ultra-_android-14.csv b/.ci/scripts/benchmark_tooling/private/meta-llama-llama-3.2-1b-instruct-spinquant-int4-eo8_llama3-spinquant_-s22-ultra-_android-14.csv new file mode 100644 index 00000000000..b2f2e20c423 --- /dev/null +++ b/.ci/scripts/benchmark_tooling/private/meta-llama-llama-3.2-1b-instruct-spinquant-int4-eo8_llama3-spinquant_-s22-ultra-_android-14.csv @@ -0,0 +1,12 @@ +workflow_id,job_id,granularity_bucket,avg_inference_latency(ms),llm_model_load_time(ms),model_load_time(ms),ram_pss_usage(mb),token_per_sec,trimmean_inference_latency(ms) +15615520755,43991248116,2025-06-12T17:00:00Z,21634.66,2749.25,1659.95,1491,32.64,21454.1 +15609976846,43972978640,2025-06-12T13:00:00Z,22082.97,2774.17,1683.79,1492,32.87,21912.8 +15605026631,43956669874,2025-06-12T09:00:00Z,22542.64,2747.83,1675.36,1491,32.42,22463.58 +15601359910,43943792457,2025-06-12T05:00:00Z,21148.7,2245.86,1647.79,1492,35.02,21068.08 +15598383765,43935960659,2025-06-12T01:00:00Z,22623.33,2753.8,1665.34,1492,32.7,22556.31 +15594484786,43925468969,2025-06-11T21:00:00Z,22401.86,2758.76,1639.35,1492,32.47,22281.43 +15589858447,43914218724,2025-06-11T18:00:00Z,22542.41,2765.19,1648.67,1493,33.59,22423.24 +15584331831,43891253427,2025-06-11T13:00:00Z,25017.47,3121.07,1668.57,1492,29.59,24702.05 +15579400247,43875126572,2025-06-11T09:00:00Z,22725.65,2785.63,1658.05,1491,32.4,22634.68 +15575806493,43862405466,2025-06-11T05:00:00Z,27851.53,3889.12,1662.34,1480,24.26,26461.98 +15572893795,43854545007,2025-06-11T01:00:00Z,29188.93,3855.22,1654.71,1482,24.05,28071.68 diff --git a/.ci/scripts/benchmark_tooling/private/meta-llama-llama-3.2-1b-instruct-spinquant-int4-eo8_llama3-spinquant_-s22-ultra-private_android-14.csv b/.ci/scripts/benchmark_tooling/private/meta-llama-llama-3.2-1b-instruct-spinquant-int4-eo8_llama3-spinquant_-s22-ultra-private_android-14.csv new file mode 100644 index 00000000000..b2f2e20c423 --- /dev/null +++ b/.ci/scripts/benchmark_tooling/private/meta-llama-llama-3.2-1b-instruct-spinquant-int4-eo8_llama3-spinquant_-s22-ultra-private_android-14.csv @@ -0,0 +1,12 @@ +workflow_id,job_id,granularity_bucket,avg_inference_latency(ms),llm_model_load_time(ms),model_load_time(ms),ram_pss_usage(mb),token_per_sec,trimmean_inference_latency(ms) +15615520755,43991248116,2025-06-12T17:00:00Z,21634.66,2749.25,1659.95,1491,32.64,21454.1 +15609976846,43972978640,2025-06-12T13:00:00Z,22082.97,2774.17,1683.79,1492,32.87,21912.8 +15605026631,43956669874,2025-06-12T09:00:00Z,22542.64,2747.83,1675.36,1491,32.42,22463.58 +15601359910,43943792457,2025-06-12T05:00:00Z,21148.7,2245.86,1647.79,1492,35.02,21068.08 +15598383765,43935960659,2025-06-12T01:00:00Z,22623.33,2753.8,1665.34,1492,32.7,22556.31 +15594484786,43925468969,2025-06-11T21:00:00Z,22401.86,2758.76,1639.35,1492,32.47,22281.43 +15589858447,43914218724,2025-06-11T18:00:00Z,22542.41,2765.19,1648.67,1493,33.59,22423.24 +15584331831,43891253427,2025-06-11T13:00:00Z,25017.47,3121.07,1668.57,1492,29.59,24702.05 +15579400247,43875126572,2025-06-11T09:00:00Z,22725.65,2785.63,1658.05,1491,32.4,22634.68 +15575806493,43862405466,2025-06-11T05:00:00Z,27851.53,3889.12,1662.34,1480,24.26,26461.98 +15572893795,43854545007,2025-06-11T01:00:00Z,29188.93,3855.22,1654.71,1482,24.05,28071.68 diff --git a/.ci/scripts/benchmark_tooling/private/meta-llama-llama-3.2-1b-instruct-spinquant-int4-eo8_llama3-spinquant_apple-iphone-15-_ios-18.0.csv b/.ci/scripts/benchmark_tooling/private/meta-llama-llama-3.2-1b-instruct-spinquant-int4-eo8_llama3-spinquant_apple-iphone-15-_ios-18.0.csv new file mode 100644 index 00000000000..8386fe85a08 --- /dev/null +++ b/.ci/scripts/benchmark_tooling/private/meta-llama-llama-3.2-1b-instruct-spinquant-int4-eo8_llama3-spinquant_apple-iphone-15-_ios-18.0.csv @@ -0,0 +1,11 @@ +workflow_id,job_id,granularity_bucket,avg_inference_latency(ms),model_load_time(ms),peak_inference_mem_usage(mb),peak_load_mem_usage(mb),token_per_sec +15615480751,43993124686,2025-06-12T17:00:00Z,13706,1505,1505.21,1777.68,8.74 +15604974289,43958007180,2025-06-12T09:00:00Z,13318,1401,1505.87,1777.97,8.72 +15601337433,43944770836,2025-06-12T05:00:00Z,13476,1400,1505.23,1778.01,8.58 +15598277481,43937275861,2025-06-12T01:00:00Z,14325,1495,1505.94,1777.78,7.97 +15594453833,43926877649,2025-06-11T21:00:00Z,14834,1564,1505.24,1777.9,8.0 +15589818422,43912035344,2025-06-11T17:00:00Z,13760,1518,1505.98,1777.72,8.61 +15584268753,43893469529,2025-06-11T13:00:00Z,21839,2042,1506.07,1777.9,4.88 +15579346239,43876994524,2025-06-11T09:00:00Z,16574,1560,1506.05,1777.95,6.51 +15575781424,43864061188,2025-06-11T05:00:00Z,20286,1982,1505.25,1777.81,5.06 +15572789992,43855812660,2025-06-11T01:00:00Z,17055,1610,1505.22,1777.02,6.24 diff --git a/.ci/scripts/benchmark_tooling/private/meta-llama-llama-3.2-1b-instruct-spinquant-int4-eo8_llama3-spinquant_apple-iphone-15-plus-_ios-17.4.1.csv b/.ci/scripts/benchmark_tooling/private/meta-llama-llama-3.2-1b-instruct-spinquant-int4-eo8_llama3-spinquant_apple-iphone-15-plus-_ios-17.4.1.csv new file mode 100644 index 00000000000..7ceaacbf1f2 --- /dev/null +++ b/.ci/scripts/benchmark_tooling/private/meta-llama-llama-3.2-1b-instruct-spinquant-int4-eo8_llama3-spinquant_apple-iphone-15-plus-_ios-17.4.1.csv @@ -0,0 +1,11 @@ +workflow_id,job_id,granularity_bucket,avg_inference_latency(ms),model_load_time(ms),peak_inference_mem_usage(mb),peak_load_mem_usage(mb),token_per_sec +15615480751,43993124686,2025-06-12T17:00:00Z,13481,1402,1519.68,1839.34,7.4 +15604974289,43958007180,2025-06-12T09:00:00Z,13288,1388,1519.65,1839.22,7.64 +15601337433,43944770836,2025-06-12T05:00:00Z,13394,1414,1519.65,1839.22,7.58 +15598277481,43937275861,2025-06-12T01:00:00Z,14106,1459,1519.69,1839.21,6.98 +15594453833,43926877649,2025-06-11T21:00:00Z,14506,1532,1519.72,1839.57,7.0 +15589818422,43912035344,2025-06-11T17:00:00Z,13574,1425,1519.66,1839.33,7.45 +15584268753,43893469529,2025-06-11T13:00:00Z,13865,1348,1519.72,1839.15,7.65 +15579346239,43876994524,2025-06-11T09:00:00Z,13446,1361,1519.69,1839.6,7.45 +15575781424,43864061188,2025-06-11T05:00:00Z,13529,1415,1519.65,1839.38,7.67 +15572789992,43855812660,2025-06-11T01:00:00Z,14179,1417,1519.72,1838.08,7.32 diff --git a/.ci/scripts/benchmark_tooling/private/meta-llama-llama-3.2-1b-instruct-spinquant-int4-eo8_llama3-spinquant_apple-iphone-15-plus-private_ios-17.4.1.csv b/.ci/scripts/benchmark_tooling/private/meta-llama-llama-3.2-1b-instruct-spinquant-int4-eo8_llama3-spinquant_apple-iphone-15-plus-private_ios-17.4.1.csv new file mode 100644 index 00000000000..7ceaacbf1f2 --- /dev/null +++ b/.ci/scripts/benchmark_tooling/private/meta-llama-llama-3.2-1b-instruct-spinquant-int4-eo8_llama3-spinquant_apple-iphone-15-plus-private_ios-17.4.1.csv @@ -0,0 +1,11 @@ +workflow_id,job_id,granularity_bucket,avg_inference_latency(ms),model_load_time(ms),peak_inference_mem_usage(mb),peak_load_mem_usage(mb),token_per_sec +15615480751,43993124686,2025-06-12T17:00:00Z,13481,1402,1519.68,1839.34,7.4 +15604974289,43958007180,2025-06-12T09:00:00Z,13288,1388,1519.65,1839.22,7.64 +15601337433,43944770836,2025-06-12T05:00:00Z,13394,1414,1519.65,1839.22,7.58 +15598277481,43937275861,2025-06-12T01:00:00Z,14106,1459,1519.69,1839.21,6.98 +15594453833,43926877649,2025-06-11T21:00:00Z,14506,1532,1519.72,1839.57,7.0 +15589818422,43912035344,2025-06-11T17:00:00Z,13574,1425,1519.66,1839.33,7.45 +15584268753,43893469529,2025-06-11T13:00:00Z,13865,1348,1519.72,1839.15,7.65 +15579346239,43876994524,2025-06-11T09:00:00Z,13446,1361,1519.69,1839.6,7.45 +15575781424,43864061188,2025-06-11T05:00:00Z,13529,1415,1519.65,1839.38,7.67 +15572789992,43855812660,2025-06-11T01:00:00Z,14179,1417,1519.72,1838.08,7.32 diff --git a/.ci/scripts/benchmark_tooling/private/meta-llama-llama-3.2-1b-instruct-spinquant-int4-eo8_llama3-spinquant_apple-iphone-15-private_ios-18.0.csv b/.ci/scripts/benchmark_tooling/private/meta-llama-llama-3.2-1b-instruct-spinquant-int4-eo8_llama3-spinquant_apple-iphone-15-private_ios-18.0.csv new file mode 100644 index 00000000000..8386fe85a08 --- /dev/null +++ b/.ci/scripts/benchmark_tooling/private/meta-llama-llama-3.2-1b-instruct-spinquant-int4-eo8_llama3-spinquant_apple-iphone-15-private_ios-18.0.csv @@ -0,0 +1,11 @@ +workflow_id,job_id,granularity_bucket,avg_inference_latency(ms),model_load_time(ms),peak_inference_mem_usage(mb),peak_load_mem_usage(mb),token_per_sec +15615480751,43993124686,2025-06-12T17:00:00Z,13706,1505,1505.21,1777.68,8.74 +15604974289,43958007180,2025-06-12T09:00:00Z,13318,1401,1505.87,1777.97,8.72 +15601337433,43944770836,2025-06-12T05:00:00Z,13476,1400,1505.23,1778.01,8.58 +15598277481,43937275861,2025-06-12T01:00:00Z,14325,1495,1505.94,1777.78,7.97 +15594453833,43926877649,2025-06-11T21:00:00Z,14834,1564,1505.24,1777.9,8.0 +15589818422,43912035344,2025-06-11T17:00:00Z,13760,1518,1505.98,1777.72,8.61 +15584268753,43893469529,2025-06-11T13:00:00Z,21839,2042,1506.07,1777.9,4.88 +15579346239,43876994524,2025-06-11T09:00:00Z,16574,1560,1506.05,1777.95,6.51 +15575781424,43864061188,2025-06-11T05:00:00Z,20286,1982,1505.25,1777.81,5.06 +15572789992,43855812660,2025-06-11T01:00:00Z,17055,1610,1505.22,1777.02,6.24 diff --git a/.ci/scripts/benchmark_tooling/private/meta-llama-llama-3.2-1b-instruct-spinquant-int4-eo8_llama3-spinquant_apple-iphone-15-pro-_ios-18.4.1.csv b/.ci/scripts/benchmark_tooling/private/meta-llama-llama-3.2-1b-instruct-spinquant-int4-eo8_llama3-spinquant_apple-iphone-15-pro-_ios-18.4.1.csv new file mode 100644 index 00000000000..4dbab44a751 --- /dev/null +++ b/.ci/scripts/benchmark_tooling/private/meta-llama-llama-3.2-1b-instruct-spinquant-int4-eo8_llama3-spinquant_apple-iphone-15-pro-_ios-18.4.1.csv @@ -0,0 +1,11 @@ +workflow_id,job_id,granularity_bucket,avg_inference_latency(ms),model_load_time(ms),peak_inference_mem_usage(mb),peak_load_mem_usage(mb),token_per_sec +15615480751,43993124686,2025-06-12T17:00:00Z,11666,1221,1828.87,1796.4,16.48 +15604974289,43958007180,2025-06-12T09:00:00Z,11645,1217,1827.43,1795.11,16.37 +15601337433,43944770836,2025-06-12T05:00:00Z,11683,1224,1828.88,1796.04,17.0 +15598277481,43937275861,2025-06-12T01:00:00Z,11709,1221,1828.84,1796.21,16.51 +15594453833,43926877649,2025-06-11T21:00:00Z,11708,1249,1828.93,1796.26,16.2 +15589818422,43912035344,2025-06-11T17:00:00Z,11639,1214,1828.88,1795.96,17.25 +15584268753,43893469529,2025-06-11T13:00:00Z,11751,1224,1828.8,1796.16,16.07 +15579346239,43876994524,2025-06-11T09:00:00Z,11778,1205,1828.85,1795.74,16.11 +15575781424,43864061188,2025-06-11T05:00:00Z,11731,1223,1827.44,1794.56,16.62 +15572789992,43855812660,2025-06-11T01:00:00Z,12831,1264,1828.84,1794.75,15.7 diff --git a/.ci/scripts/benchmark_tooling/private/meta-llama-llama-3.2-1b-instruct-spinquant-int4-eo8_llama3-spinquant_apple-iphone-15-pro-private_ios-18.4.1.csv b/.ci/scripts/benchmark_tooling/private/meta-llama-llama-3.2-1b-instruct-spinquant-int4-eo8_llama3-spinquant_apple-iphone-15-pro-private_ios-18.4.1.csv new file mode 100644 index 00000000000..4dbab44a751 --- /dev/null +++ b/.ci/scripts/benchmark_tooling/private/meta-llama-llama-3.2-1b-instruct-spinquant-int4-eo8_llama3-spinquant_apple-iphone-15-pro-private_ios-18.4.1.csv @@ -0,0 +1,11 @@ +workflow_id,job_id,granularity_bucket,avg_inference_latency(ms),model_load_time(ms),peak_inference_mem_usage(mb),peak_load_mem_usage(mb),token_per_sec +15615480751,43993124686,2025-06-12T17:00:00Z,11666,1221,1828.87,1796.4,16.48 +15604974289,43958007180,2025-06-12T09:00:00Z,11645,1217,1827.43,1795.11,16.37 +15601337433,43944770836,2025-06-12T05:00:00Z,11683,1224,1828.88,1796.04,17.0 +15598277481,43937275861,2025-06-12T01:00:00Z,11709,1221,1828.84,1796.21,16.51 +15594453833,43926877649,2025-06-11T21:00:00Z,11708,1249,1828.93,1796.26,16.2 +15589818422,43912035344,2025-06-11T17:00:00Z,11639,1214,1828.88,1795.96,17.25 +15584268753,43893469529,2025-06-11T13:00:00Z,11751,1224,1828.8,1796.16,16.07 +15579346239,43876994524,2025-06-11T09:00:00Z,11778,1205,1828.85,1795.74,16.11 +15575781424,43864061188,2025-06-11T05:00:00Z,11731,1223,1827.44,1794.56,16.62 +15572789992,43855812660,2025-06-11T01:00:00Z,12831,1264,1828.84,1794.75,15.7 diff --git a/.ci/scripts/benchmark_tooling/private/meta-llama-llama-3.2-1b_et-xnnpack-custom-spda-kv-cache-8da4w_-s22-_android-13.csv b/.ci/scripts/benchmark_tooling/private/meta-llama-llama-3.2-1b_et-xnnpack-custom-spda-kv-cache-8da4w_-s22-_android-13.csv new file mode 100644 index 00000000000..61e21120809 --- /dev/null +++ b/.ci/scripts/benchmark_tooling/private/meta-llama-llama-3.2-1b_et-xnnpack-custom-spda-kv-cache-8da4w_-s22-_android-13.csv @@ -0,0 +1,29 @@ +workflow_id,job_id,granularity_bucket,avg_inference_latency(ms),llm_model_load_time(ms),model_load_time(ms),ram_pss_usage(mb),token_per_sec,trimmean_inference_latency(ms) +15712320497,44280131792,2025-06-17T17:00:00Z,888.34,3091.09,2048.06,981,39.38,880.81 +15706687362,44261351450,2025-06-17T13:00:00Z,857.13,3198.35,2090.47,983,40.16,849.49 +15701619570,44244323755,2025-06-17T09:00:00Z,851.4,2799.08,2064.24,993,42.58,846.23 +15697890915,44230067957,2025-06-17T05:00:00Z,824.22,3176.47,2077.07,992,42.65,819.62 +15694752722,44221381863,2025-06-17T01:00:00Z,834.85,3280.35,2246.8,991,40.48,828.41 +15690721346,44211034387,2025-06-16T21:00:00Z,993.57,3469.86,2283.5,991,38.07,977.76 +15685858387,44195500217,2025-06-16T17:00:00Z,851.48,3370.02,2129.2,981,40.41,845.85 +15680276053,44184994658,2025-06-16T15:00:00Z,843.05,3279.49,2095.04,981,40.14,836.64 +15675229427,44160356972,2025-06-16T09:00:00Z,881.83,2922.13,2109.79,991,39.97,872.85 +15671609250,44146779212,2025-06-16T05:00:00Z,841.81,3352.61,2107.04,981,41.77,836.83 +15668838280,44139310442,2025-06-16T01:00:00Z,892.99,3424.04,2094.66,981,39.12,884.58 +15666871209,44133842083,2025-06-15T21:00:00Z,907.13,3451.14,2106.58,992,39.36,902.74 +15664964842,44129416866,2025-06-15T17:00:00Z,878.63,3289.46,2082.21,992,39.69,866.94 +15662964566,44125237276,2025-06-15T13:00:00Z,856.36,2940.3,2052.1,992,39.83,846.96 +15661066119,44120683489,2025-06-15T09:00:00Z,848.82,3005.12,2060.92,991,40.84,842.21 +15659315239,44116350825,2025-06-15T05:00:00Z,851.32,3022.83,2077.01,981,41.11,845.31 +15655627252,44107937078,2025-06-14T21:00:00Z,866.16,3137.83,2057.24,991,39.84,856.96 +15653757002,44103768469,2025-06-14T17:00:00Z,839.33,3379.78,2080.57,990,40.77,834.72 +15651807296,44099312849,2025-06-14T13:00:00Z,868.36,2961.04,2092.0,982,39.74,862.47 +15650005042,44095041071,2025-06-14T09:00:00Z,865.83,3401.09,2069.28,981,40.58,859.83 +15648224665,44090821985,2025-06-14T05:00:00Z,816.07,3160.29,2091.08,991,41.7,807.82 +15646186941,44086333101,2025-06-14T01:00:00Z,860.33,2767.46,2165.45,991,40.01,851.34 +15642991544,44079110098,2025-06-13T21:00:00Z,862.04,2989.29,2060.21,983,40.52,854.75 +15638881659,44066590049,2025-06-13T17:00:00Z,894.7,3571.27,2123.17,981,38.35,888.53 +15634084872,44050929738,2025-06-13T13:00:00Z,871.03,3082.71,2132.48,991,39.85,866.24 +15629618177,44036960905,2025-06-13T09:00:00Z,825.21,3234.28,2058.12,991,41.27,821.35 +15626198493,44024980719,2025-06-13T06:00:00Z,840.63,3025.27,2047.96,982,40.53,834.99 +15620031250,44009155339,2025-06-12T22:00:00Z,904.03,3487.91,2092.89,983,39.1,893.38 diff --git a/.ci/scripts/benchmark_tooling/private/meta-llama-llama-3.2-1b_et-xnnpack-custom-spda-kv-cache-8da4w_-s22-private_android-13.csv b/.ci/scripts/benchmark_tooling/private/meta-llama-llama-3.2-1b_et-xnnpack-custom-spda-kv-cache-8da4w_-s22-private_android-13.csv new file mode 100644 index 00000000000..61e21120809 --- /dev/null +++ b/.ci/scripts/benchmark_tooling/private/meta-llama-llama-3.2-1b_et-xnnpack-custom-spda-kv-cache-8da4w_-s22-private_android-13.csv @@ -0,0 +1,29 @@ +workflow_id,job_id,granularity_bucket,avg_inference_latency(ms),llm_model_load_time(ms),model_load_time(ms),ram_pss_usage(mb),token_per_sec,trimmean_inference_latency(ms) +15712320497,44280131792,2025-06-17T17:00:00Z,888.34,3091.09,2048.06,981,39.38,880.81 +15706687362,44261351450,2025-06-17T13:00:00Z,857.13,3198.35,2090.47,983,40.16,849.49 +15701619570,44244323755,2025-06-17T09:00:00Z,851.4,2799.08,2064.24,993,42.58,846.23 +15697890915,44230067957,2025-06-17T05:00:00Z,824.22,3176.47,2077.07,992,42.65,819.62 +15694752722,44221381863,2025-06-17T01:00:00Z,834.85,3280.35,2246.8,991,40.48,828.41 +15690721346,44211034387,2025-06-16T21:00:00Z,993.57,3469.86,2283.5,991,38.07,977.76 +15685858387,44195500217,2025-06-16T17:00:00Z,851.48,3370.02,2129.2,981,40.41,845.85 +15680276053,44184994658,2025-06-16T15:00:00Z,843.05,3279.49,2095.04,981,40.14,836.64 +15675229427,44160356972,2025-06-16T09:00:00Z,881.83,2922.13,2109.79,991,39.97,872.85 +15671609250,44146779212,2025-06-16T05:00:00Z,841.81,3352.61,2107.04,981,41.77,836.83 +15668838280,44139310442,2025-06-16T01:00:00Z,892.99,3424.04,2094.66,981,39.12,884.58 +15666871209,44133842083,2025-06-15T21:00:00Z,907.13,3451.14,2106.58,992,39.36,902.74 +15664964842,44129416866,2025-06-15T17:00:00Z,878.63,3289.46,2082.21,992,39.69,866.94 +15662964566,44125237276,2025-06-15T13:00:00Z,856.36,2940.3,2052.1,992,39.83,846.96 +15661066119,44120683489,2025-06-15T09:00:00Z,848.82,3005.12,2060.92,991,40.84,842.21 +15659315239,44116350825,2025-06-15T05:00:00Z,851.32,3022.83,2077.01,981,41.11,845.31 +15655627252,44107937078,2025-06-14T21:00:00Z,866.16,3137.83,2057.24,991,39.84,856.96 +15653757002,44103768469,2025-06-14T17:00:00Z,839.33,3379.78,2080.57,990,40.77,834.72 +15651807296,44099312849,2025-06-14T13:00:00Z,868.36,2961.04,2092.0,982,39.74,862.47 +15650005042,44095041071,2025-06-14T09:00:00Z,865.83,3401.09,2069.28,981,40.58,859.83 +15648224665,44090821985,2025-06-14T05:00:00Z,816.07,3160.29,2091.08,991,41.7,807.82 +15646186941,44086333101,2025-06-14T01:00:00Z,860.33,2767.46,2165.45,991,40.01,851.34 +15642991544,44079110098,2025-06-13T21:00:00Z,862.04,2989.29,2060.21,983,40.52,854.75 +15638881659,44066590049,2025-06-13T17:00:00Z,894.7,3571.27,2123.17,981,38.35,888.53 +15634084872,44050929738,2025-06-13T13:00:00Z,871.03,3082.71,2132.48,991,39.85,866.24 +15629618177,44036960905,2025-06-13T09:00:00Z,825.21,3234.28,2058.12,991,41.27,821.35 +15626198493,44024980719,2025-06-13T06:00:00Z,840.63,3025.27,2047.96,982,40.53,834.99 +15620031250,44009155339,2025-06-12T22:00:00Z,904.03,3487.91,2092.89,983,39.1,893.38 diff --git a/.ci/scripts/benchmark_tooling/private/meta-llama-llama-3.2-1b_et-xnnpack-custom-spda-kv-cache-8da4w_-s22-ultra-_android-14.csv b/.ci/scripts/benchmark_tooling/private/meta-llama-llama-3.2-1b_et-xnnpack-custom-spda-kv-cache-8da4w_-s22-ultra-_android-14.csv new file mode 100644 index 00000000000..45eb5db4c2d --- /dev/null +++ b/.ci/scripts/benchmark_tooling/private/meta-llama-llama-3.2-1b_et-xnnpack-custom-spda-kv-cache-8da4w_-s22-ultra-_android-14.csv @@ -0,0 +1,29 @@ +workflow_id,job_id,granularity_bucket,avg_inference_latency(ms),llm_model_load_time(ms),model_load_time(ms),ram_pss_usage(mb),token_per_sec,trimmean_inference_latency(ms) +15712320497,44280131792,2025-06-17T17:00:00Z,836.96,1884.67,1773.67,995,38.83,830.24 +15706687362,44261351450,2025-06-17T13:00:00Z,848.1,1880.28,1761.07,994,39.36,837.57 +15701619570,44244323755,2025-06-17T09:00:00Z,847.93,1873.94,1746.93,994,39.77,840.52 +15697890915,44230067957,2025-06-17T05:00:00Z,846.79,1902.19,1763.67,994,38.5,837.66 +15694752722,44221381863,2025-06-17T01:00:00Z,830.17,1855.04,1761.97,994,40.1,824.15 +15690721346,44211034387,2025-06-16T21:00:00Z,903.14,1984.66,1761.46,994,38.43,893.97 +15685858387,44195500217,2025-06-16T17:00:00Z,803.65,1827.81,1785.61,994,39.97,799.47 +15680276053,44184994658,2025-06-16T15:00:00Z,806.24,1826.32,1755.44,996,40.43,800.78 +15675229427,44160356972,2025-06-16T09:00:00Z,851.94,1886.05,1759.11,994,39.75,846.55 +15671609250,44146779212,2025-06-16T05:00:00Z,842.18,1864.66,1746.88,994,42.04,833.95 +15668838280,44139310442,2025-06-16T01:00:00Z,876.18,1942.14,1764.64,995,38.64,866.73 +15666871209,44133842083,2025-06-15T21:00:00Z,862.35,1903.87,1730.84,994,38.43,853.06 +15664964842,44129416866,2025-06-15T17:00:00Z,868.79,1952.38,1771.78,994,38.34,860.73 +15662964566,44125237276,2025-06-15T13:00:00Z,849.35,1900.52,1759.75,994,39.49,843.24 +15661066119,44120683489,2025-06-15T09:00:00Z,845.08,1919.57,1769.18,994,42.03,836.56 +15659315239,44116350825,2025-06-15T05:00:00Z,851.37,1915.03,1728.28,994,39.52,843.57 +15655627252,44107937078,2025-06-14T21:00:00Z,810.72,1829.7,1782.07,994,40.03,805.99 +15653757002,44103768469,2025-06-14T17:00:00Z,802.66,1827.8,1815.02,995,40.27,798.26 +15651807296,44099312849,2025-06-14T13:00:00Z,848.18,1906.01,1735.88,994,38.71,839.98 +15650005042,44095041071,2025-06-14T09:00:00Z,844.39,1890.09,1763.19,994,39.39,838.59 +15648224665,44090821985,2025-06-14T05:00:00Z,810.27,1820.26,1787.58,994,40.33,805.27 +15646186941,44086333101,2025-06-14T01:00:00Z,839.42,1885.13,1764.2,995,39.24,830.7 +15642991544,44079110098,2025-06-13T21:00:00Z,860.72,1904.2,1760.02,994,38.41,850.64 +15638881659,44066590049,2025-06-13T17:00:00Z,860.16,1922.63,1764.77,994,38.46,852.82 +15634084872,44050929738,2025-06-13T13:00:00Z,855.82,1913.58,1769.38,994,38.47,848.96 +15629618177,44036960905,2025-06-13T09:00:00Z,854.86,1916.09,1740.21,994,39.36,846.01 +15626198493,44024980719,2025-06-13T06:00:00Z,858.73,1910.25,1759.06,993,38.65,850.54 +15620031250,44009155339,2025-06-12T22:00:00Z,905.26,1992.86,1775.43,994,37.78,896.63 diff --git a/.ci/scripts/benchmark_tooling/private/meta-llama-llama-3.2-1b_et-xnnpack-custom-spda-kv-cache-8da4w_-s22-ultra-private_android-14.csv b/.ci/scripts/benchmark_tooling/private/meta-llama-llama-3.2-1b_et-xnnpack-custom-spda-kv-cache-8da4w_-s22-ultra-private_android-14.csv new file mode 100644 index 00000000000..45eb5db4c2d --- /dev/null +++ b/.ci/scripts/benchmark_tooling/private/meta-llama-llama-3.2-1b_et-xnnpack-custom-spda-kv-cache-8da4w_-s22-ultra-private_android-14.csv @@ -0,0 +1,29 @@ +workflow_id,job_id,granularity_bucket,avg_inference_latency(ms),llm_model_load_time(ms),model_load_time(ms),ram_pss_usage(mb),token_per_sec,trimmean_inference_latency(ms) +15712320497,44280131792,2025-06-17T17:00:00Z,836.96,1884.67,1773.67,995,38.83,830.24 +15706687362,44261351450,2025-06-17T13:00:00Z,848.1,1880.28,1761.07,994,39.36,837.57 +15701619570,44244323755,2025-06-17T09:00:00Z,847.93,1873.94,1746.93,994,39.77,840.52 +15697890915,44230067957,2025-06-17T05:00:00Z,846.79,1902.19,1763.67,994,38.5,837.66 +15694752722,44221381863,2025-06-17T01:00:00Z,830.17,1855.04,1761.97,994,40.1,824.15 +15690721346,44211034387,2025-06-16T21:00:00Z,903.14,1984.66,1761.46,994,38.43,893.97 +15685858387,44195500217,2025-06-16T17:00:00Z,803.65,1827.81,1785.61,994,39.97,799.47 +15680276053,44184994658,2025-06-16T15:00:00Z,806.24,1826.32,1755.44,996,40.43,800.78 +15675229427,44160356972,2025-06-16T09:00:00Z,851.94,1886.05,1759.11,994,39.75,846.55 +15671609250,44146779212,2025-06-16T05:00:00Z,842.18,1864.66,1746.88,994,42.04,833.95 +15668838280,44139310442,2025-06-16T01:00:00Z,876.18,1942.14,1764.64,995,38.64,866.73 +15666871209,44133842083,2025-06-15T21:00:00Z,862.35,1903.87,1730.84,994,38.43,853.06 +15664964842,44129416866,2025-06-15T17:00:00Z,868.79,1952.38,1771.78,994,38.34,860.73 +15662964566,44125237276,2025-06-15T13:00:00Z,849.35,1900.52,1759.75,994,39.49,843.24 +15661066119,44120683489,2025-06-15T09:00:00Z,845.08,1919.57,1769.18,994,42.03,836.56 +15659315239,44116350825,2025-06-15T05:00:00Z,851.37,1915.03,1728.28,994,39.52,843.57 +15655627252,44107937078,2025-06-14T21:00:00Z,810.72,1829.7,1782.07,994,40.03,805.99 +15653757002,44103768469,2025-06-14T17:00:00Z,802.66,1827.8,1815.02,995,40.27,798.26 +15651807296,44099312849,2025-06-14T13:00:00Z,848.18,1906.01,1735.88,994,38.71,839.98 +15650005042,44095041071,2025-06-14T09:00:00Z,844.39,1890.09,1763.19,994,39.39,838.59 +15648224665,44090821985,2025-06-14T05:00:00Z,810.27,1820.26,1787.58,994,40.33,805.27 +15646186941,44086333101,2025-06-14T01:00:00Z,839.42,1885.13,1764.2,995,39.24,830.7 +15642991544,44079110098,2025-06-13T21:00:00Z,860.72,1904.2,1760.02,994,38.41,850.64 +15638881659,44066590049,2025-06-13T17:00:00Z,860.16,1922.63,1764.77,994,38.46,852.82 +15634084872,44050929738,2025-06-13T13:00:00Z,855.82,1913.58,1769.38,994,38.47,848.96 +15629618177,44036960905,2025-06-13T09:00:00Z,854.86,1916.09,1740.21,994,39.36,846.01 +15626198493,44024980719,2025-06-13T06:00:00Z,858.73,1910.25,1759.06,993,38.65,850.54 +15620031250,44009155339,2025-06-12T22:00:00Z,905.26,1992.86,1775.43,994,37.78,896.63 diff --git a/.ci/scripts/benchmark_tooling/private/meta-llama-llama-3.2-1b_et-xnnpack-custom-spda-kv-cache-8da4w_apple-iphone-15-_ios-18.0.csv b/.ci/scripts/benchmark_tooling/private/meta-llama-llama-3.2-1b_et-xnnpack-custom-spda-kv-cache-8da4w_apple-iphone-15-_ios-18.0.csv new file mode 100644 index 00000000000..e4fc76993d9 --- /dev/null +++ b/.ci/scripts/benchmark_tooling/private/meta-llama-llama-3.2-1b_et-xnnpack-custom-spda-kv-cache-8da4w_apple-iphone-15-_ios-18.0.csv @@ -0,0 +1,29 @@ +workflow_id,job_id,granularity_bucket,avg_inference_latency(ms),model_load_time(ms),peak_inference_mem_usage(mb),peak_load_mem_usage(mb),token_per_sec +15712278899,44280789008,2025-06-17T17:00:00Z,759,1559,988.8,1124.91,11.25 +15706619480,44262431638,2025-06-17T13:00:00Z,725,1455,989.55,1125.0,11.75 +15701565915,44245403612,2025-06-17T09:00:00Z,727,1451,989.5,1124.89,11.5 +15697865923,44230646970,2025-06-17T05:00:00Z,710,1461,989.49,1125.08,11.38 +15694639442,44221536444,2025-06-17T01:00:00Z,730,1511,990.21,1124.95,11.44 +15690685696,44211619421,2025-06-16T21:00:00Z,806,1699,989.46,1124.9,9.76 +15685808660,44196632637,2025-06-16T17:00:00Z,770,1545,989.57,1124.99,11.43 +15680206509,44178256230,2025-06-16T13:00:00Z,709,1475,989.44,1124.94,11.17 +15675176293,44162005966,2025-06-16T10:00:00Z,733,1469,990.3,1124.87,11.47 +15671584185,44147537983,2025-06-16T06:00:00Z,746,1482,989.44,1124.72,10.36 +15668756024,44140855631,2025-06-16T02:00:00Z,781,1619,990.29,1125.18,11.25 +15666856809,44134617851,2025-06-15T22:00:00Z,762,1538,988.75,1124.95,11.67 +15664949756,44129710892,2025-06-15T17:00:00Z,701,1455,989.54,1125.11,11.56 +15662940074,44126695148,2025-06-15T15:00:00Z,724,1467,989.69,1125.07,11.61 +15661046591,44121071601,2025-06-15T10:00:00Z,748,1450,988.8,1124.93,11.35 +15659301910,44117138781,2025-06-15T06:00:00Z,720,1488,989.58,1124.98,11.39 +15657354121,44112759100,2025-06-15T02:00:00Z,758,1603,989.61,1125.05,10.76 +15655612867,44108084740,2025-06-14T21:00:00Z,749,1536,988.91,1125.14,10.98 +15653742079,44104013228,2025-06-14T17:00:00Z,719,1443,989.62,1125.22,11.55 +15651786133,44100160145,2025-06-14T14:00:00Z,739,1451,989.51,1124.91,11.43 +15649987292,44095314814,2025-06-14T09:00:00Z,711,1462,988.84,1124.84,11.31 +15646107434,44086831907,2025-06-14T02:00:00Z,739,1498,989.54,1125.05,11.34 +15642962044,44079703037,2025-06-13T21:00:00Z,743,1521,989.49,1125.05,11.0 +15638842903,44067697635,2025-06-13T17:00:00Z,710,1442,989.53,1167.29,11.77 +15634027967,44053427212,2025-06-13T14:00:00Z,719,1447,988.75,1167.24,11.5 +15629571833,44037516912,2025-06-13T09:00:00Z,732,1424,989.34,1167.46,11.26 +15626172835,44025076952,2025-06-13T06:00:00Z,739,1495,988.84,1167.23,10.95 +15620031253,44010493569,2025-06-12T23:00:00Z,807,1636,989.63,1167.31,11.06 diff --git a/.ci/scripts/benchmark_tooling/private/meta-llama-llama-3.2-1b_et-xnnpack-custom-spda-kv-cache-8da4w_apple-iphone-15-plus-_ios-17.4.1.csv b/.ci/scripts/benchmark_tooling/private/meta-llama-llama-3.2-1b_et-xnnpack-custom-spda-kv-cache-8da4w_apple-iphone-15-plus-_ios-17.4.1.csv new file mode 100644 index 00000000000..bc063da4f85 --- /dev/null +++ b/.ci/scripts/benchmark_tooling/private/meta-llama-llama-3.2-1b_et-xnnpack-custom-spda-kv-cache-8da4w_apple-iphone-15-plus-_ios-17.4.1.csv @@ -0,0 +1,29 @@ +workflow_id,job_id,granularity_bucket,avg_inference_latency(ms),model_load_time(ms),peak_inference_mem_usage(mb),peak_load_mem_usage(mb),token_per_sec +15712278899,44280789008,2025-06-17T17:00:00Z,866,1561,1001.97,1178.75,6.08 +15706619480,44262431638,2025-06-17T13:00:00Z,848,1537,1002.0,1178.72,9.53 +15701565915,44245403612,2025-06-17T09:00:00Z,769,1505,1002.08,1178.83,8.81 +15697865923,44230646970,2025-06-17T05:00:00Z,773,1519,1002.2,1178.9,9.59 +15694639442,44221536444,2025-06-17T01:00:00Z,753,1529,1001.93,1178.9,9.57 +15690685696,44211619421,2025-06-16T21:00:00Z,904,1634,1002.13,1178.93,9.4 +15685808660,44196632637,2025-06-16T17:00:00Z,753,1526,1002.09,1178.79,9.41 +15680206509,44178256230,2025-06-16T13:00:00Z,793,1515,1001.94,1178.68,4.88 +15675176293,44162005966,2025-06-16T10:00:00Z,730,1441,1002.0,1178.95,9.99 +15671584185,44147537983,2025-06-16T06:00:00Z,736,1513,1002.17,1178.93,9.45 +15668756024,44140855631,2025-06-16T02:00:00Z,831,1609,1002.12,1179.15,9.13 +15666856809,44134617851,2025-06-15T22:00:00Z,895,1615,1002.0,1178.93,9.42 +15664949756,44129710892,2025-06-15T17:00:00Z,715,1428,1001.92,1178.76,10.19 +15662940074,44126695148,2025-06-15T15:00:00Z,770,1506,1001.96,1178.71,9.29 +15661046591,44121071601,2025-06-15T10:00:00Z,882,1529,1002.03,1179.06,3.58 +15659301910,44117138781,2025-06-15T06:00:00Z,803,1532,1002.02,1178.83,9.28 +15657354121,44112759100,2025-06-15T02:00:00Z,819,1584,1002.15,1178.87,8.71 +15655612867,44108084740,2025-06-14T21:00:00Z,914,1557,1002.13,1178.91,9.5 +15653742079,44104013228,2025-06-14T17:00:00Z,750,1528,1002.02,1178.76,9.34 +15651786133,44100160145,2025-06-14T14:00:00Z,832,1528,1002.09,1178.89,9.26 +15649987292,44095314814,2025-06-14T09:00:00Z,1131,1611,1002.02,1178.73,5.69 +15646107434,44086831907,2025-06-14T02:00:00Z,828,1541,1002.18,1179.03,9.51 +15642962044,44079703037,2025-06-13T21:00:00Z,881,1593,1002.12,1179.02,4.32 +15638842903,44067697635,2025-06-13T17:00:00Z,707,1437,1001.88,1227.58,10.09 +15634027967,44053427212,2025-06-13T14:00:00Z,810,1534,1002.14,1225.58,8.82 +15629571833,44037516912,2025-06-13T09:00:00Z,705,1430,1002.09,1227.29,10.48 +15626172835,44025076952,2025-06-13T06:00:00Z,1123,1646,1002.16,1227.7,5.9 +15620031253,44010493569,2025-06-12T23:00:00Z,857,1631,1002.22,1227.75,9.23 diff --git a/.ci/scripts/benchmark_tooling/private/meta-llama-llama-3.2-1b_et-xnnpack-custom-spda-kv-cache-8da4w_apple-iphone-15-plus-private_ios-17.4.1.csv b/.ci/scripts/benchmark_tooling/private/meta-llama-llama-3.2-1b_et-xnnpack-custom-spda-kv-cache-8da4w_apple-iphone-15-plus-private_ios-17.4.1.csv new file mode 100644 index 00000000000..bc063da4f85 --- /dev/null +++ b/.ci/scripts/benchmark_tooling/private/meta-llama-llama-3.2-1b_et-xnnpack-custom-spda-kv-cache-8da4w_apple-iphone-15-plus-private_ios-17.4.1.csv @@ -0,0 +1,29 @@ +workflow_id,job_id,granularity_bucket,avg_inference_latency(ms),model_load_time(ms),peak_inference_mem_usage(mb),peak_load_mem_usage(mb),token_per_sec +15712278899,44280789008,2025-06-17T17:00:00Z,866,1561,1001.97,1178.75,6.08 +15706619480,44262431638,2025-06-17T13:00:00Z,848,1537,1002.0,1178.72,9.53 +15701565915,44245403612,2025-06-17T09:00:00Z,769,1505,1002.08,1178.83,8.81 +15697865923,44230646970,2025-06-17T05:00:00Z,773,1519,1002.2,1178.9,9.59 +15694639442,44221536444,2025-06-17T01:00:00Z,753,1529,1001.93,1178.9,9.57 +15690685696,44211619421,2025-06-16T21:00:00Z,904,1634,1002.13,1178.93,9.4 +15685808660,44196632637,2025-06-16T17:00:00Z,753,1526,1002.09,1178.79,9.41 +15680206509,44178256230,2025-06-16T13:00:00Z,793,1515,1001.94,1178.68,4.88 +15675176293,44162005966,2025-06-16T10:00:00Z,730,1441,1002.0,1178.95,9.99 +15671584185,44147537983,2025-06-16T06:00:00Z,736,1513,1002.17,1178.93,9.45 +15668756024,44140855631,2025-06-16T02:00:00Z,831,1609,1002.12,1179.15,9.13 +15666856809,44134617851,2025-06-15T22:00:00Z,895,1615,1002.0,1178.93,9.42 +15664949756,44129710892,2025-06-15T17:00:00Z,715,1428,1001.92,1178.76,10.19 +15662940074,44126695148,2025-06-15T15:00:00Z,770,1506,1001.96,1178.71,9.29 +15661046591,44121071601,2025-06-15T10:00:00Z,882,1529,1002.03,1179.06,3.58 +15659301910,44117138781,2025-06-15T06:00:00Z,803,1532,1002.02,1178.83,9.28 +15657354121,44112759100,2025-06-15T02:00:00Z,819,1584,1002.15,1178.87,8.71 +15655612867,44108084740,2025-06-14T21:00:00Z,914,1557,1002.13,1178.91,9.5 +15653742079,44104013228,2025-06-14T17:00:00Z,750,1528,1002.02,1178.76,9.34 +15651786133,44100160145,2025-06-14T14:00:00Z,832,1528,1002.09,1178.89,9.26 +15649987292,44095314814,2025-06-14T09:00:00Z,1131,1611,1002.02,1178.73,5.69 +15646107434,44086831907,2025-06-14T02:00:00Z,828,1541,1002.18,1179.03,9.51 +15642962044,44079703037,2025-06-13T21:00:00Z,881,1593,1002.12,1179.02,4.32 +15638842903,44067697635,2025-06-13T17:00:00Z,707,1437,1001.88,1227.58,10.09 +15634027967,44053427212,2025-06-13T14:00:00Z,810,1534,1002.14,1225.58,8.82 +15629571833,44037516912,2025-06-13T09:00:00Z,705,1430,1002.09,1227.29,10.48 +15626172835,44025076952,2025-06-13T06:00:00Z,1123,1646,1002.16,1227.7,5.9 +15620031253,44010493569,2025-06-12T23:00:00Z,857,1631,1002.22,1227.75,9.23 diff --git a/.ci/scripts/benchmark_tooling/private/meta-llama-llama-3.2-1b_et-xnnpack-custom-spda-kv-cache-8da4w_apple-iphone-15-private_ios-18.0.csv b/.ci/scripts/benchmark_tooling/private/meta-llama-llama-3.2-1b_et-xnnpack-custom-spda-kv-cache-8da4w_apple-iphone-15-private_ios-18.0.csv new file mode 100644 index 00000000000..e4fc76993d9 --- /dev/null +++ b/.ci/scripts/benchmark_tooling/private/meta-llama-llama-3.2-1b_et-xnnpack-custom-spda-kv-cache-8da4w_apple-iphone-15-private_ios-18.0.csv @@ -0,0 +1,29 @@ +workflow_id,job_id,granularity_bucket,avg_inference_latency(ms),model_load_time(ms),peak_inference_mem_usage(mb),peak_load_mem_usage(mb),token_per_sec +15712278899,44280789008,2025-06-17T17:00:00Z,759,1559,988.8,1124.91,11.25 +15706619480,44262431638,2025-06-17T13:00:00Z,725,1455,989.55,1125.0,11.75 +15701565915,44245403612,2025-06-17T09:00:00Z,727,1451,989.5,1124.89,11.5 +15697865923,44230646970,2025-06-17T05:00:00Z,710,1461,989.49,1125.08,11.38 +15694639442,44221536444,2025-06-17T01:00:00Z,730,1511,990.21,1124.95,11.44 +15690685696,44211619421,2025-06-16T21:00:00Z,806,1699,989.46,1124.9,9.76 +15685808660,44196632637,2025-06-16T17:00:00Z,770,1545,989.57,1124.99,11.43 +15680206509,44178256230,2025-06-16T13:00:00Z,709,1475,989.44,1124.94,11.17 +15675176293,44162005966,2025-06-16T10:00:00Z,733,1469,990.3,1124.87,11.47 +15671584185,44147537983,2025-06-16T06:00:00Z,746,1482,989.44,1124.72,10.36 +15668756024,44140855631,2025-06-16T02:00:00Z,781,1619,990.29,1125.18,11.25 +15666856809,44134617851,2025-06-15T22:00:00Z,762,1538,988.75,1124.95,11.67 +15664949756,44129710892,2025-06-15T17:00:00Z,701,1455,989.54,1125.11,11.56 +15662940074,44126695148,2025-06-15T15:00:00Z,724,1467,989.69,1125.07,11.61 +15661046591,44121071601,2025-06-15T10:00:00Z,748,1450,988.8,1124.93,11.35 +15659301910,44117138781,2025-06-15T06:00:00Z,720,1488,989.58,1124.98,11.39 +15657354121,44112759100,2025-06-15T02:00:00Z,758,1603,989.61,1125.05,10.76 +15655612867,44108084740,2025-06-14T21:00:00Z,749,1536,988.91,1125.14,10.98 +15653742079,44104013228,2025-06-14T17:00:00Z,719,1443,989.62,1125.22,11.55 +15651786133,44100160145,2025-06-14T14:00:00Z,739,1451,989.51,1124.91,11.43 +15649987292,44095314814,2025-06-14T09:00:00Z,711,1462,988.84,1124.84,11.31 +15646107434,44086831907,2025-06-14T02:00:00Z,739,1498,989.54,1125.05,11.34 +15642962044,44079703037,2025-06-13T21:00:00Z,743,1521,989.49,1125.05,11.0 +15638842903,44067697635,2025-06-13T17:00:00Z,710,1442,989.53,1167.29,11.77 +15634027967,44053427212,2025-06-13T14:00:00Z,719,1447,988.75,1167.24,11.5 +15629571833,44037516912,2025-06-13T09:00:00Z,732,1424,989.34,1167.46,11.26 +15626172835,44025076952,2025-06-13T06:00:00Z,739,1495,988.84,1167.23,10.95 +15620031253,44010493569,2025-06-12T23:00:00Z,807,1636,989.63,1167.31,11.06 diff --git a/.ci/scripts/benchmark_tooling/private/meta-llama-llama-3.2-1b_et-xnnpack-custom-spda-kv-cache-8da4w_apple-iphone-15-pro-_ios-18.4.1.csv b/.ci/scripts/benchmark_tooling/private/meta-llama-llama-3.2-1b_et-xnnpack-custom-spda-kv-cache-8da4w_apple-iphone-15-pro-_ios-18.4.1.csv new file mode 100644 index 00000000000..58fe4392ce4 --- /dev/null +++ b/.ci/scripts/benchmark_tooling/private/meta-llama-llama-3.2-1b_et-xnnpack-custom-spda-kv-cache-8da4w_apple-iphone-15-pro-_ios-18.4.1.csv @@ -0,0 +1,29 @@ +workflow_id,job_id,granularity_bucket,avg_inference_latency(ms),model_load_time(ms),peak_inference_mem_usage(mb),peak_load_mem_usage(mb),token_per_sec +15712278899,44280789008,2025-06-17T17:00:00Z,551,1150,1159.11,1140.51,25.99 +15706619480,44262431638,2025-06-17T13:00:00Z,535,1141,1159.1,1140.43,26.18 +15701565915,44245403612,2025-06-17T09:00:00Z,539,1152,1159.19,1140.53,26.14 +15697865923,44230646970,2025-06-17T05:00:00Z,553,1158,1159.23,1140.67,26.23 +15694639442,44221536444,2025-06-17T01:00:00Z,534,1153,1159.3,1140.81,26.87 +15690685696,44211619421,2025-06-16T21:00:00Z,547,1169,1159.13,1140.4,26.09 +15685808660,44196632637,2025-06-16T17:00:00Z,539,1137,1159.16,1140.49,26.84 +15680206509,44178256230,2025-06-16T13:00:00Z,541,1155,1159.03,1140.44,26.86 +15675176293,44162005966,2025-06-16T10:00:00Z,552,1143,1159.13,1140.62,26.7 +15671584185,44147537983,2025-06-16T06:00:00Z,549,1154,1159.07,1140.52,25.42 +15668756024,44140855631,2025-06-16T02:00:00Z,545,1170,1159.16,1140.75,26.42 +15666856809,44134617851,2025-06-15T22:00:00Z,544,1164,1159.31,1140.68,26.14 +15664949756,44129710892,2025-06-15T17:00:00Z,524,1103,1159.25,1140.68,26.18 +15662940074,44126695148,2025-06-15T15:00:00Z,534,1129,1159.09,1140.6,26.65 +15661046591,44121071601,2025-06-15T10:00:00Z,545,1133,1159.3,1140.75,26.23 +15659301910,44117138781,2025-06-15T06:00:00Z,548,1147,1159.25,1140.76,26.11 +15657354121,44112759100,2025-06-15T02:00:00Z,550,1163,1159.05,1140.46,26.1 +15655612867,44108084740,2025-06-14T21:00:00Z,528,1132,1159.13,1140.49,24.96 +15653742079,44104013228,2025-06-14T17:00:00Z,546,1155,1159.05,1140.38,25.23 +15651786133,44100160145,2025-06-14T14:00:00Z,547,1156,1159.07,1140.65,26.5 +15649987292,44095314814,2025-06-14T09:00:00Z,560,1131,1159.12,1140.72,27.61 +15646107434,44086831907,2025-06-14T02:00:00Z,546,1132,1159.04,1140.52,26.91 +15642962044,44079703037,2025-06-13T21:00:00Z,544,1128,1159.16,1140.51,27.22 +15638842903,44067697635,2025-06-13T17:00:00Z,523,1115,1159.08,1183.71,27.39 +15634027967,44053427212,2025-06-13T14:00:00Z,535,1132,1159.2,1184.08,26.44 +15629571833,44037516912,2025-06-13T09:00:00Z,537,1114,1159.19,1183.58,25.66 +15626172835,44025076952,2025-06-13T06:00:00Z,538,1136,1159.02,1183.62,26.12 +15620031253,44010493569,2025-06-12T23:00:00Z,540,1173,1159.06,1183.98,25.56 diff --git a/.ci/scripts/benchmark_tooling/private/meta-llama-llama-3.2-1b_et-xnnpack-custom-spda-kv-cache-8da4w_apple-iphone-15-pro-private_ios-18.4.1.csv b/.ci/scripts/benchmark_tooling/private/meta-llama-llama-3.2-1b_et-xnnpack-custom-spda-kv-cache-8da4w_apple-iphone-15-pro-private_ios-18.4.1.csv new file mode 100644 index 00000000000..58fe4392ce4 --- /dev/null +++ b/.ci/scripts/benchmark_tooling/private/meta-llama-llama-3.2-1b_et-xnnpack-custom-spda-kv-cache-8da4w_apple-iphone-15-pro-private_ios-18.4.1.csv @@ -0,0 +1,29 @@ +workflow_id,job_id,granularity_bucket,avg_inference_latency(ms),model_load_time(ms),peak_inference_mem_usage(mb),peak_load_mem_usage(mb),token_per_sec +15712278899,44280789008,2025-06-17T17:00:00Z,551,1150,1159.11,1140.51,25.99 +15706619480,44262431638,2025-06-17T13:00:00Z,535,1141,1159.1,1140.43,26.18 +15701565915,44245403612,2025-06-17T09:00:00Z,539,1152,1159.19,1140.53,26.14 +15697865923,44230646970,2025-06-17T05:00:00Z,553,1158,1159.23,1140.67,26.23 +15694639442,44221536444,2025-06-17T01:00:00Z,534,1153,1159.3,1140.81,26.87 +15690685696,44211619421,2025-06-16T21:00:00Z,547,1169,1159.13,1140.4,26.09 +15685808660,44196632637,2025-06-16T17:00:00Z,539,1137,1159.16,1140.49,26.84 +15680206509,44178256230,2025-06-16T13:00:00Z,541,1155,1159.03,1140.44,26.86 +15675176293,44162005966,2025-06-16T10:00:00Z,552,1143,1159.13,1140.62,26.7 +15671584185,44147537983,2025-06-16T06:00:00Z,549,1154,1159.07,1140.52,25.42 +15668756024,44140855631,2025-06-16T02:00:00Z,545,1170,1159.16,1140.75,26.42 +15666856809,44134617851,2025-06-15T22:00:00Z,544,1164,1159.31,1140.68,26.14 +15664949756,44129710892,2025-06-15T17:00:00Z,524,1103,1159.25,1140.68,26.18 +15662940074,44126695148,2025-06-15T15:00:00Z,534,1129,1159.09,1140.6,26.65 +15661046591,44121071601,2025-06-15T10:00:00Z,545,1133,1159.3,1140.75,26.23 +15659301910,44117138781,2025-06-15T06:00:00Z,548,1147,1159.25,1140.76,26.11 +15657354121,44112759100,2025-06-15T02:00:00Z,550,1163,1159.05,1140.46,26.1 +15655612867,44108084740,2025-06-14T21:00:00Z,528,1132,1159.13,1140.49,24.96 +15653742079,44104013228,2025-06-14T17:00:00Z,546,1155,1159.05,1140.38,25.23 +15651786133,44100160145,2025-06-14T14:00:00Z,547,1156,1159.07,1140.65,26.5 +15649987292,44095314814,2025-06-14T09:00:00Z,560,1131,1159.12,1140.72,27.61 +15646107434,44086831907,2025-06-14T02:00:00Z,546,1132,1159.04,1140.52,26.91 +15642962044,44079703037,2025-06-13T21:00:00Z,544,1128,1159.16,1140.51,27.22 +15638842903,44067697635,2025-06-13T17:00:00Z,523,1115,1159.08,1183.71,27.39 +15634027967,44053427212,2025-06-13T14:00:00Z,535,1132,1159.2,1184.08,26.44 +15629571833,44037516912,2025-06-13T09:00:00Z,537,1114,1159.19,1183.58,25.66 +15626172835,44025076952,2025-06-13T06:00:00Z,538,1136,1159.02,1183.62,26.12 +15620031253,44010493569,2025-06-12T23:00:00Z,540,1173,1159.06,1183.98,25.56 diff --git a/.ci/scripts/benchmark_tooling/private/meta-llama-llama-3.2-1b_hf-xnnpack-custom-spda-kv-cache-8da4w_-s22-_android-13.csv b/.ci/scripts/benchmark_tooling/private/meta-llama-llama-3.2-1b_hf-xnnpack-custom-spda-kv-cache-8da4w_-s22-_android-13.csv new file mode 100644 index 00000000000..198f100dc4b --- /dev/null +++ b/.ci/scripts/benchmark_tooling/private/meta-llama-llama-3.2-1b_hf-xnnpack-custom-spda-kv-cache-8da4w_-s22-_android-13.csv @@ -0,0 +1,28 @@ +workflow_id,job_id,granularity_bucket,avg_inference_latency(ms),llm_model_load_time(ms),model_load_time(ms),ram_pss_usage(mb),token_per_sec,trimmean_inference_latency(ms) +15712320497,44280131792,2025-06-17T17:00:00Z,20.45,3322.36,2131.4,1130,41.12,20.42 +15706687362,44261351450,2025-06-17T13:00:00Z,19.59,3249.18,2099.19,1132,42.33,19.53 +15701619570,44244323755,2025-06-17T09:00:00Z,19.47,3137.9,2122.6,1130,43.08,19.42 +15697890915,44230067957,2025-06-17T05:00:00Z,20.97,3210.23,2114.38,1140,42.48,20.86 +15694752722,44221381863,2025-06-17T01:00:00Z,19.64,3307.7,2152.57,1178,41.18,19.6 +15690721346,44211034387,2025-06-16T21:00:00Z,19.63,4416.25,2619.41,1167,39.29,19.51 +15685858387,44195500217,2025-06-16T17:00:00Z,20.2,3255.73,2198.67,1169,41.1,20.03 +15680276053,44184994658,2025-06-16T15:00:00Z,20.79,3362.02,2154.37,1168,40.74,20.6 +15675229427,44160356972,2025-06-16T09:00:00Z,19.53,3267.27,2242.42,1169,41.58,19.46 +15671609250,44146779212,2025-06-16T05:00:00Z,20.47,3244.06,2286.54,1169,43.04,20.35 +15668838280,44139310442,2025-06-16T01:00:00Z,19.44,3346.74,2404.77,1167,42.06,19.34 +15666871209,44133842083,2025-06-15T21:00:00Z,23.03,3155.2,2297.11,1177,41.07,22.82 +15662964566,44125237276,2025-06-15T13:00:00Z,19.64,3463.81,2235.05,1168,42.39,19.59 +15661066119,44120683489,2025-06-15T09:00:00Z,19.96,3260.76,2175.15,1168,43.49,19.85 +15659315239,44116350825,2025-06-15T05:00:00Z,20.3,3156.07,2306.88,1169,43.23,20.22 +15655627252,44107937078,2025-06-14T21:00:00Z,20.96,3277.12,2198.58,1178,40.88,20.91 +15653757002,44103768469,2025-06-14T17:00:00Z,24.96,3387.31,2317.64,1168,40.69,23.95 +15651807296,44099312849,2025-06-14T13:00:00Z,19.58,3204.35,2238.33,1179,42.46,19.54 +15650005042,44095041071,2025-06-14T09:00:00Z,21.38,3217.97,2310.76,1168,41.8,21.23 +15648224665,44090821985,2025-06-14T05:00:00Z,20.13,3283.84,2276.5,1169,42.53,19.96 +15646186941,44086333101,2025-06-14T01:00:00Z,20.41,3283.49,2289.36,1179,42.62,20.26 +15642991544,44079110098,2025-06-13T21:00:00Z,20.12,3591.95,2234.52,1178,42.65,19.96 +15638881659,44066590049,2025-06-13T17:00:00Z,20.12,3486.11,2392.17,1178,40.99,20.0 +15634084872,44050929738,2025-06-13T13:00:00Z,19.57,3533.56,2233.31,1168,42.55,19.54 +15629618177,44036960905,2025-06-13T09:00:00Z,20.34,3787.07,2159.24,1178,44.23,20.3 +15626198493,44024980719,2025-06-13T06:00:00Z,20.18,3202.43,2319.6,1179,42.99,20.11 +15620031250,44009155339,2025-06-12T22:00:00Z,19.93,3884.54,2140.6,1178,40.44,19.73 diff --git a/.ci/scripts/benchmark_tooling/private/meta-llama-llama-3.2-1b_hf-xnnpack-custom-spda-kv-cache-8da4w_-s22-private_android-13.csv b/.ci/scripts/benchmark_tooling/private/meta-llama-llama-3.2-1b_hf-xnnpack-custom-spda-kv-cache-8da4w_-s22-private_android-13.csv new file mode 100644 index 00000000000..198f100dc4b --- /dev/null +++ b/.ci/scripts/benchmark_tooling/private/meta-llama-llama-3.2-1b_hf-xnnpack-custom-spda-kv-cache-8da4w_-s22-private_android-13.csv @@ -0,0 +1,28 @@ +workflow_id,job_id,granularity_bucket,avg_inference_latency(ms),llm_model_load_time(ms),model_load_time(ms),ram_pss_usage(mb),token_per_sec,trimmean_inference_latency(ms) +15712320497,44280131792,2025-06-17T17:00:00Z,20.45,3322.36,2131.4,1130,41.12,20.42 +15706687362,44261351450,2025-06-17T13:00:00Z,19.59,3249.18,2099.19,1132,42.33,19.53 +15701619570,44244323755,2025-06-17T09:00:00Z,19.47,3137.9,2122.6,1130,43.08,19.42 +15697890915,44230067957,2025-06-17T05:00:00Z,20.97,3210.23,2114.38,1140,42.48,20.86 +15694752722,44221381863,2025-06-17T01:00:00Z,19.64,3307.7,2152.57,1178,41.18,19.6 +15690721346,44211034387,2025-06-16T21:00:00Z,19.63,4416.25,2619.41,1167,39.29,19.51 +15685858387,44195500217,2025-06-16T17:00:00Z,20.2,3255.73,2198.67,1169,41.1,20.03 +15680276053,44184994658,2025-06-16T15:00:00Z,20.79,3362.02,2154.37,1168,40.74,20.6 +15675229427,44160356972,2025-06-16T09:00:00Z,19.53,3267.27,2242.42,1169,41.58,19.46 +15671609250,44146779212,2025-06-16T05:00:00Z,20.47,3244.06,2286.54,1169,43.04,20.35 +15668838280,44139310442,2025-06-16T01:00:00Z,19.44,3346.74,2404.77,1167,42.06,19.34 +15666871209,44133842083,2025-06-15T21:00:00Z,23.03,3155.2,2297.11,1177,41.07,22.82 +15662964566,44125237276,2025-06-15T13:00:00Z,19.64,3463.81,2235.05,1168,42.39,19.59 +15661066119,44120683489,2025-06-15T09:00:00Z,19.96,3260.76,2175.15,1168,43.49,19.85 +15659315239,44116350825,2025-06-15T05:00:00Z,20.3,3156.07,2306.88,1169,43.23,20.22 +15655627252,44107937078,2025-06-14T21:00:00Z,20.96,3277.12,2198.58,1178,40.88,20.91 +15653757002,44103768469,2025-06-14T17:00:00Z,24.96,3387.31,2317.64,1168,40.69,23.95 +15651807296,44099312849,2025-06-14T13:00:00Z,19.58,3204.35,2238.33,1179,42.46,19.54 +15650005042,44095041071,2025-06-14T09:00:00Z,21.38,3217.97,2310.76,1168,41.8,21.23 +15648224665,44090821985,2025-06-14T05:00:00Z,20.13,3283.84,2276.5,1169,42.53,19.96 +15646186941,44086333101,2025-06-14T01:00:00Z,20.41,3283.49,2289.36,1179,42.62,20.26 +15642991544,44079110098,2025-06-13T21:00:00Z,20.12,3591.95,2234.52,1178,42.65,19.96 +15638881659,44066590049,2025-06-13T17:00:00Z,20.12,3486.11,2392.17,1178,40.99,20.0 +15634084872,44050929738,2025-06-13T13:00:00Z,19.57,3533.56,2233.31,1168,42.55,19.54 +15629618177,44036960905,2025-06-13T09:00:00Z,20.34,3787.07,2159.24,1178,44.23,20.3 +15626198493,44024980719,2025-06-13T06:00:00Z,20.18,3202.43,2319.6,1179,42.99,20.11 +15620031250,44009155339,2025-06-12T22:00:00Z,19.93,3884.54,2140.6,1178,40.44,19.73 diff --git a/.ci/scripts/benchmark_tooling/private/meta-llama-llama-3.2-1b_hf-xnnpack-custom-spda-kv-cache-8da4w_-s22-ultra-_android-14.csv b/.ci/scripts/benchmark_tooling/private/meta-llama-llama-3.2-1b_hf-xnnpack-custom-spda-kv-cache-8da4w_-s22-ultra-_android-14.csv new file mode 100644 index 00000000000..022b7b0e994 --- /dev/null +++ b/.ci/scripts/benchmark_tooling/private/meta-llama-llama-3.2-1b_hf-xnnpack-custom-spda-kv-cache-8da4w_-s22-ultra-_android-14.csv @@ -0,0 +1,28 @@ +workflow_id,job_id,granularity_bucket,avg_inference_latency(ms),llm_model_load_time(ms),model_load_time(ms),ram_pss_usage(mb),token_per_sec,trimmean_inference_latency(ms) +15712320497,44280131792,2025-06-17T17:00:00Z,19.93,1828.35,1768.33,1144,41.36,19.79 +15706687362,44261351450,2025-06-17T13:00:00Z,19.98,1855.61,1763.29,1144,42.52,19.89 +15701619570,44244323755,2025-06-17T09:00:00Z,21.14,1848.56,1756.7,1143,41.15,21.0 +15697890915,44230067957,2025-06-17T05:00:00Z,20.41,1836.4,1749.35,1143,40.73,20.07 +15694752722,44221381863,2025-06-17T01:00:00Z,21.42,1861.8,1805.56,1182,40.27,20.87 +15690721346,44211034387,2025-06-16T21:00:00Z,21.16,1866.51,1800.61,1181,40.11,21.09 +15685858387,44195500217,2025-06-16T17:00:00Z,20.78,1877.17,1803.17,1181,40.85,20.59 +15680276053,44184994658,2025-06-16T15:00:00Z,20.5,1872.69,1795.65,1181,40.89,20.33 +15675229427,44160356972,2025-06-16T09:00:00Z,20.78,1870.57,1808.34,1181,40.68,20.62 +15671609250,44146779212,2025-06-16T05:00:00Z,20.13,1834.18,1804.47,1181,42.78,20.07 +15668838280,44139310442,2025-06-16T01:00:00Z,20.33,1864.93,1812.67,1183,40.01,20.08 +15666871209,44133842083,2025-06-15T21:00:00Z,20.06,1871.36,1806.37,1181,40.65,19.85 +15662964566,44125237276,2025-06-15T13:00:00Z,20.46,1861.18,1823.38,1181,42.04,20.42 +15661066119,44120683489,2025-06-15T09:00:00Z,21.03,1859.54,1799.05,1183,42.26,20.9 +15659315239,44116350825,2025-06-15T05:00:00Z,20.44,1843.76,1807.28,1181,41.23,20.34 +15655627252,44107937078,2025-06-14T21:00:00Z,21.07,1863.9,1806.03,1181,40.77,21.03 +15653757002,44103768469,2025-06-14T17:00:00Z,20.51,1835.94,1813.87,1181,41.55,20.35 +15651807296,44099312849,2025-06-14T13:00:00Z,20.56,1860.27,1799.21,1181,40.91,20.34 +15650005042,44095041071,2025-06-14T09:00:00Z,20.19,1909.71,1794.18,1181,40.64,20.11 +15648224665,44090821985,2025-06-14T05:00:00Z,20.78,1850.13,1791.31,1181,40.87,20.69 +15646186941,44086333101,2025-06-14T01:00:00Z,20.56,1875.16,1775.1,1181,40.4,20.4 +15642991544,44079110098,2025-06-13T21:00:00Z,20.53,1841.54,1807.76,1181,42.19,20.35 +15638881659,44066590049,2025-06-13T17:00:00Z,20.97,1874.18,1782.29,1181,40.2,20.81 +15634084872,44050929738,2025-06-13T13:00:00Z,20.59,1870.98,1799.09,1181,40.61,20.52 +15629618177,44036960905,2025-06-13T09:00:00Z,20.99,1848.78,1802.27,1181,42.42,20.87 +15626198493,44024980719,2025-06-13T06:00:00Z,20.88,1871.15,1790.58,1181,40.76,20.59 +15620031250,44009155339,2025-06-12T22:00:00Z,20.21,1878.54,1773.55,1181,40.01,20.14 diff --git a/.ci/scripts/benchmark_tooling/private/meta-llama-llama-3.2-1b_hf-xnnpack-custom-spda-kv-cache-8da4w_-s22-ultra-private_android-14.csv b/.ci/scripts/benchmark_tooling/private/meta-llama-llama-3.2-1b_hf-xnnpack-custom-spda-kv-cache-8da4w_-s22-ultra-private_android-14.csv new file mode 100644 index 00000000000..022b7b0e994 --- /dev/null +++ b/.ci/scripts/benchmark_tooling/private/meta-llama-llama-3.2-1b_hf-xnnpack-custom-spda-kv-cache-8da4w_-s22-ultra-private_android-14.csv @@ -0,0 +1,28 @@ +workflow_id,job_id,granularity_bucket,avg_inference_latency(ms),llm_model_load_time(ms),model_load_time(ms),ram_pss_usage(mb),token_per_sec,trimmean_inference_latency(ms) +15712320497,44280131792,2025-06-17T17:00:00Z,19.93,1828.35,1768.33,1144,41.36,19.79 +15706687362,44261351450,2025-06-17T13:00:00Z,19.98,1855.61,1763.29,1144,42.52,19.89 +15701619570,44244323755,2025-06-17T09:00:00Z,21.14,1848.56,1756.7,1143,41.15,21.0 +15697890915,44230067957,2025-06-17T05:00:00Z,20.41,1836.4,1749.35,1143,40.73,20.07 +15694752722,44221381863,2025-06-17T01:00:00Z,21.42,1861.8,1805.56,1182,40.27,20.87 +15690721346,44211034387,2025-06-16T21:00:00Z,21.16,1866.51,1800.61,1181,40.11,21.09 +15685858387,44195500217,2025-06-16T17:00:00Z,20.78,1877.17,1803.17,1181,40.85,20.59 +15680276053,44184994658,2025-06-16T15:00:00Z,20.5,1872.69,1795.65,1181,40.89,20.33 +15675229427,44160356972,2025-06-16T09:00:00Z,20.78,1870.57,1808.34,1181,40.68,20.62 +15671609250,44146779212,2025-06-16T05:00:00Z,20.13,1834.18,1804.47,1181,42.78,20.07 +15668838280,44139310442,2025-06-16T01:00:00Z,20.33,1864.93,1812.67,1183,40.01,20.08 +15666871209,44133842083,2025-06-15T21:00:00Z,20.06,1871.36,1806.37,1181,40.65,19.85 +15662964566,44125237276,2025-06-15T13:00:00Z,20.46,1861.18,1823.38,1181,42.04,20.42 +15661066119,44120683489,2025-06-15T09:00:00Z,21.03,1859.54,1799.05,1183,42.26,20.9 +15659315239,44116350825,2025-06-15T05:00:00Z,20.44,1843.76,1807.28,1181,41.23,20.34 +15655627252,44107937078,2025-06-14T21:00:00Z,21.07,1863.9,1806.03,1181,40.77,21.03 +15653757002,44103768469,2025-06-14T17:00:00Z,20.51,1835.94,1813.87,1181,41.55,20.35 +15651807296,44099312849,2025-06-14T13:00:00Z,20.56,1860.27,1799.21,1181,40.91,20.34 +15650005042,44095041071,2025-06-14T09:00:00Z,20.19,1909.71,1794.18,1181,40.64,20.11 +15648224665,44090821985,2025-06-14T05:00:00Z,20.78,1850.13,1791.31,1181,40.87,20.69 +15646186941,44086333101,2025-06-14T01:00:00Z,20.56,1875.16,1775.1,1181,40.4,20.4 +15642991544,44079110098,2025-06-13T21:00:00Z,20.53,1841.54,1807.76,1181,42.19,20.35 +15638881659,44066590049,2025-06-13T17:00:00Z,20.97,1874.18,1782.29,1181,40.2,20.81 +15634084872,44050929738,2025-06-13T13:00:00Z,20.59,1870.98,1799.09,1181,40.61,20.52 +15629618177,44036960905,2025-06-13T09:00:00Z,20.99,1848.78,1802.27,1181,42.42,20.87 +15626198493,44024980719,2025-06-13T06:00:00Z,20.88,1871.15,1790.58,1181,40.76,20.59 +15620031250,44009155339,2025-06-12T22:00:00Z,20.21,1878.54,1773.55,1181,40.01,20.14 diff --git a/.ci/scripts/benchmark_tooling/private/meta-llama-llama-3.2-1b_hf-xnnpack-custom-spda-kv-cache-8da4w_apple-iphone-15-_ios-18.0.csv b/.ci/scripts/benchmark_tooling/private/meta-llama-llama-3.2-1b_hf-xnnpack-custom-spda-kv-cache-8da4w_apple-iphone-15-_ios-18.0.csv new file mode 100644 index 00000000000..8a25f11badb --- /dev/null +++ b/.ci/scripts/benchmark_tooling/private/meta-llama-llama-3.2-1b_hf-xnnpack-custom-spda-kv-cache-8da4w_apple-iphone-15-_ios-18.0.csv @@ -0,0 +1,28 @@ +workflow_id,job_id,granularity_bucket,avg_inference_latency(ms),model_load_time(ms),peak_inference_mem_usage(mb),peak_load_mem_usage(mb),token_per_sec +15712278899,44280789008,2025-06-17T17:00:00Z,77,1390,1094.38,1231.49,10.89 +15706619480,44262431638,2025-06-17T13:00:00Z,76,1332,1096.86,1231.75,11.66 +15701565915,44245403612,2025-06-17T09:00:00Z,70,1356,1096.27,1231.5,11.44 +15697865923,44230646970,2025-06-17T05:00:00Z,78,1379,1092.6,1231.53,11.37 +15694639442,44221536444,2025-06-17T01:00:00Z,73,1479,1092.16,1264.09,10.77 +15690685696,44211619421,2025-06-16T21:00:00Z,81,1500,1095.98,1263.96,10.88 +15685808660,44196632637,2025-06-16T17:00:00Z,78,1454,1092.07,1263.88,11.32 +15680206509,44178256230,2025-06-16T13:00:00Z,76,1389,1094.42,1263.95,11.23 +15675176293,44162005966,2025-06-16T10:00:00Z,76,1372,1093.17,1263.92,11.52 +15671584185,44147537983,2025-06-16T06:00:00Z,67,1384,1093.46,1263.88,11.31 +15668756024,44140855631,2025-06-16T02:00:00Z,113,1533,1094.5,1264.04,10.99 +15666856809,44134617851,2025-06-15T22:00:00Z,78,1438,1095.31,1264.03,11.42 +15664949756,44129710892,2025-06-15T17:00:00Z,74,1408,1092.54,1263.86,11.24 +15662940074,44126695148,2025-06-15T15:00:00Z,70,1373,1096.14,1264.0,11.17 +15661046591,44121071601,2025-06-15T10:00:00Z,69,1358,1094.41,1264.16,11.52 +15657354121,44112759100,2025-06-15T02:00:00Z,75,1486,1092.65,1263.96,11.03 +15655612867,44108084740,2025-06-14T21:00:00Z,75,1457,1094.35,1263.93,11.42 +15653742079,44104013228,2025-06-14T17:00:00Z,80,1378,1095.95,1263.95,11.35 +15651786133,44100160145,2025-06-14T14:00:00Z,72,1380,1092.72,1263.97,11.81 +15649987292,44095314814,2025-06-14T09:00:00Z,71,1340,1095.53,1264.13,11.76 +15646107434,44086831907,2025-06-14T02:00:00Z,89,1411,1095.98,1263.85,11.53 +15642962044,44079703037,2025-06-13T21:00:00Z,67,1452,1092.89,1264.02,11.34 +15638842903,44067697635,2025-06-13T17:00:00Z,76,1414,1094.33,1306.31,11.14 +15634027967,44053427212,2025-06-13T14:00:00Z,69,1391,1094.08,1306.52,11.47 +15629571833,44037516912,2025-06-13T09:00:00Z,78,1360,1095.62,1306.39,11.3 +15626172835,44025076952,2025-06-13T06:00:00Z,77,1406,1090.95,1306.12,10.99 +15620031253,44010493569,2025-06-12T23:00:00Z,67,1446,1094.12,1306.4,11.55 diff --git a/.ci/scripts/benchmark_tooling/private/meta-llama-llama-3.2-1b_hf-xnnpack-custom-spda-kv-cache-8da4w_apple-iphone-15-plus-_ios-17.4.1.csv b/.ci/scripts/benchmark_tooling/private/meta-llama-llama-3.2-1b_hf-xnnpack-custom-spda-kv-cache-8da4w_apple-iphone-15-plus-_ios-17.4.1.csv new file mode 100644 index 00000000000..3fde1b5ddd0 --- /dev/null +++ b/.ci/scripts/benchmark_tooling/private/meta-llama-llama-3.2-1b_hf-xnnpack-custom-spda-kv-cache-8da4w_apple-iphone-15-plus-_ios-17.4.1.csv @@ -0,0 +1,28 @@ +workflow_id,job_id,granularity_bucket,avg_inference_latency(ms),model_load_time(ms),peak_inference_mem_usage(mb),peak_load_mem_usage(mb),token_per_sec +15712278899,44280789008,2025-06-17T17:00:00Z,80,1439,1282.09,1296.58,9.04 +15706619480,44262431638,2025-06-17T13:00:00Z,137,1443,1282.14,1295.65,9.56 +15701565915,44245403612,2025-06-17T09:00:00Z,82,1417,1282.23,1296.27,9.6 +15697865923,44230646970,2025-06-17T05:00:00Z,92,1399,1282.07,1296.05,4.17 +15694639442,44221536444,2025-06-17T01:00:00Z,131,1618,1320.36,1337.35,7.03 +15690685696,44211619421,2025-06-16T21:00:00Z,92,1564,1320.48,1336.64,8.77 +15685808660,44196632637,2025-06-16T17:00:00Z,97,1531,1320.31,1336.72,9.6 +15680206509,44178256230,2025-06-16T13:00:00Z,117,1458,1320.39,1335.87,9.63 +15675176293,44162005966,2025-06-16T10:00:00Z,85,1474,1320.36,1335.97,8.96 +15671584185,44147537983,2025-06-16T06:00:00Z,117,1457,1320.18,1336.25,9.88 +15668756024,44140855631,2025-06-16T02:00:00Z,90,1534,1320.35,1335.98,9.28 +15666856809,44134617851,2025-06-15T22:00:00Z,96,1599,1320.07,1336.25,9.32 +15664949756,44129710892,2025-06-15T17:00:00Z,90,1477,1320.34,1335.85,9.67 +15662940074,44126695148,2025-06-15T15:00:00Z,91,1436,1320.17,1335.78,9.56 +15661046591,44121071601,2025-06-15T10:00:00Z,93,1401,1320.11,1336.66,10.07 +15657354121,44112759100,2025-06-15T02:00:00Z,85,1592,1320.23,1335.91,9.43 +15655612867,44108084740,2025-06-14T21:00:00Z,206,1502,1320.21,1335.7,8.79 +15653742079,44104013228,2025-06-14T17:00:00Z,115,1430,1320.32,1336.47,9.7 +15651786133,44100160145,2025-06-14T14:00:00Z,88,1480,1320.42,1336.96,9.96 +15649987292,44095314814,2025-06-14T09:00:00Z,90,1375,1320.39,1336.79,10.27 +15646107434,44086831907,2025-06-14T02:00:00Z,85,1442,1320.37,1335.83,8.85 +15642962044,44079703037,2025-06-13T21:00:00Z,203,1554,1320.41,1337.4,9.25 +15638842903,44067697635,2025-06-13T17:00:00Z,94,1478,1320.35,1399.18,9.79 +15634027967,44053427212,2025-06-13T14:00:00Z,89,1489,1320.28,1398.64,9.3 +15629571833,44037516912,2025-06-13T09:00:00Z,82,1482,1320.4,1399.82,7.71 +15626172835,44025076952,2025-06-13T06:00:00Z,258,1593,1320.4,1398.47,5.73 +15620031253,44010493569,2025-06-12T23:00:00Z,93,1469,1320.28,1403.52,9.82 diff --git a/.ci/scripts/benchmark_tooling/private/meta-llama-llama-3.2-1b_hf-xnnpack-custom-spda-kv-cache-8da4w_apple-iphone-15-plus-private_ios-17.4.1.csv b/.ci/scripts/benchmark_tooling/private/meta-llama-llama-3.2-1b_hf-xnnpack-custom-spda-kv-cache-8da4w_apple-iphone-15-plus-private_ios-17.4.1.csv new file mode 100644 index 00000000000..3fde1b5ddd0 --- /dev/null +++ b/.ci/scripts/benchmark_tooling/private/meta-llama-llama-3.2-1b_hf-xnnpack-custom-spda-kv-cache-8da4w_apple-iphone-15-plus-private_ios-17.4.1.csv @@ -0,0 +1,28 @@ +workflow_id,job_id,granularity_bucket,avg_inference_latency(ms),model_load_time(ms),peak_inference_mem_usage(mb),peak_load_mem_usage(mb),token_per_sec +15712278899,44280789008,2025-06-17T17:00:00Z,80,1439,1282.09,1296.58,9.04 +15706619480,44262431638,2025-06-17T13:00:00Z,137,1443,1282.14,1295.65,9.56 +15701565915,44245403612,2025-06-17T09:00:00Z,82,1417,1282.23,1296.27,9.6 +15697865923,44230646970,2025-06-17T05:00:00Z,92,1399,1282.07,1296.05,4.17 +15694639442,44221536444,2025-06-17T01:00:00Z,131,1618,1320.36,1337.35,7.03 +15690685696,44211619421,2025-06-16T21:00:00Z,92,1564,1320.48,1336.64,8.77 +15685808660,44196632637,2025-06-16T17:00:00Z,97,1531,1320.31,1336.72,9.6 +15680206509,44178256230,2025-06-16T13:00:00Z,117,1458,1320.39,1335.87,9.63 +15675176293,44162005966,2025-06-16T10:00:00Z,85,1474,1320.36,1335.97,8.96 +15671584185,44147537983,2025-06-16T06:00:00Z,117,1457,1320.18,1336.25,9.88 +15668756024,44140855631,2025-06-16T02:00:00Z,90,1534,1320.35,1335.98,9.28 +15666856809,44134617851,2025-06-15T22:00:00Z,96,1599,1320.07,1336.25,9.32 +15664949756,44129710892,2025-06-15T17:00:00Z,90,1477,1320.34,1335.85,9.67 +15662940074,44126695148,2025-06-15T15:00:00Z,91,1436,1320.17,1335.78,9.56 +15661046591,44121071601,2025-06-15T10:00:00Z,93,1401,1320.11,1336.66,10.07 +15657354121,44112759100,2025-06-15T02:00:00Z,85,1592,1320.23,1335.91,9.43 +15655612867,44108084740,2025-06-14T21:00:00Z,206,1502,1320.21,1335.7,8.79 +15653742079,44104013228,2025-06-14T17:00:00Z,115,1430,1320.32,1336.47,9.7 +15651786133,44100160145,2025-06-14T14:00:00Z,88,1480,1320.42,1336.96,9.96 +15649987292,44095314814,2025-06-14T09:00:00Z,90,1375,1320.39,1336.79,10.27 +15646107434,44086831907,2025-06-14T02:00:00Z,85,1442,1320.37,1335.83,8.85 +15642962044,44079703037,2025-06-13T21:00:00Z,203,1554,1320.41,1337.4,9.25 +15638842903,44067697635,2025-06-13T17:00:00Z,94,1478,1320.35,1399.18,9.79 +15634027967,44053427212,2025-06-13T14:00:00Z,89,1489,1320.28,1398.64,9.3 +15629571833,44037516912,2025-06-13T09:00:00Z,82,1482,1320.4,1399.82,7.71 +15626172835,44025076952,2025-06-13T06:00:00Z,258,1593,1320.4,1398.47,5.73 +15620031253,44010493569,2025-06-12T23:00:00Z,93,1469,1320.28,1403.52,9.82 diff --git a/.ci/scripts/benchmark_tooling/private/meta-llama-llama-3.2-1b_hf-xnnpack-custom-spda-kv-cache-8da4w_apple-iphone-15-private_ios-18.0.csv b/.ci/scripts/benchmark_tooling/private/meta-llama-llama-3.2-1b_hf-xnnpack-custom-spda-kv-cache-8da4w_apple-iphone-15-private_ios-18.0.csv new file mode 100644 index 00000000000..8a25f11badb --- /dev/null +++ b/.ci/scripts/benchmark_tooling/private/meta-llama-llama-3.2-1b_hf-xnnpack-custom-spda-kv-cache-8da4w_apple-iphone-15-private_ios-18.0.csv @@ -0,0 +1,28 @@ +workflow_id,job_id,granularity_bucket,avg_inference_latency(ms),model_load_time(ms),peak_inference_mem_usage(mb),peak_load_mem_usage(mb),token_per_sec +15712278899,44280789008,2025-06-17T17:00:00Z,77,1390,1094.38,1231.49,10.89 +15706619480,44262431638,2025-06-17T13:00:00Z,76,1332,1096.86,1231.75,11.66 +15701565915,44245403612,2025-06-17T09:00:00Z,70,1356,1096.27,1231.5,11.44 +15697865923,44230646970,2025-06-17T05:00:00Z,78,1379,1092.6,1231.53,11.37 +15694639442,44221536444,2025-06-17T01:00:00Z,73,1479,1092.16,1264.09,10.77 +15690685696,44211619421,2025-06-16T21:00:00Z,81,1500,1095.98,1263.96,10.88 +15685808660,44196632637,2025-06-16T17:00:00Z,78,1454,1092.07,1263.88,11.32 +15680206509,44178256230,2025-06-16T13:00:00Z,76,1389,1094.42,1263.95,11.23 +15675176293,44162005966,2025-06-16T10:00:00Z,76,1372,1093.17,1263.92,11.52 +15671584185,44147537983,2025-06-16T06:00:00Z,67,1384,1093.46,1263.88,11.31 +15668756024,44140855631,2025-06-16T02:00:00Z,113,1533,1094.5,1264.04,10.99 +15666856809,44134617851,2025-06-15T22:00:00Z,78,1438,1095.31,1264.03,11.42 +15664949756,44129710892,2025-06-15T17:00:00Z,74,1408,1092.54,1263.86,11.24 +15662940074,44126695148,2025-06-15T15:00:00Z,70,1373,1096.14,1264.0,11.17 +15661046591,44121071601,2025-06-15T10:00:00Z,69,1358,1094.41,1264.16,11.52 +15657354121,44112759100,2025-06-15T02:00:00Z,75,1486,1092.65,1263.96,11.03 +15655612867,44108084740,2025-06-14T21:00:00Z,75,1457,1094.35,1263.93,11.42 +15653742079,44104013228,2025-06-14T17:00:00Z,80,1378,1095.95,1263.95,11.35 +15651786133,44100160145,2025-06-14T14:00:00Z,72,1380,1092.72,1263.97,11.81 +15649987292,44095314814,2025-06-14T09:00:00Z,71,1340,1095.53,1264.13,11.76 +15646107434,44086831907,2025-06-14T02:00:00Z,89,1411,1095.98,1263.85,11.53 +15642962044,44079703037,2025-06-13T21:00:00Z,67,1452,1092.89,1264.02,11.34 +15638842903,44067697635,2025-06-13T17:00:00Z,76,1414,1094.33,1306.31,11.14 +15634027967,44053427212,2025-06-13T14:00:00Z,69,1391,1094.08,1306.52,11.47 +15629571833,44037516912,2025-06-13T09:00:00Z,78,1360,1095.62,1306.39,11.3 +15626172835,44025076952,2025-06-13T06:00:00Z,77,1406,1090.95,1306.12,10.99 +15620031253,44010493569,2025-06-12T23:00:00Z,67,1446,1094.12,1306.4,11.55 diff --git a/.ci/scripts/benchmark_tooling/private/meta-llama-llama-3.2-1b_hf-xnnpack-custom-spda-kv-cache-8da4w_apple-iphone-15-pro-_ios-18.4.1.csv b/.ci/scripts/benchmark_tooling/private/meta-llama-llama-3.2-1b_hf-xnnpack-custom-spda-kv-cache-8da4w_apple-iphone-15-pro-_ios-18.4.1.csv new file mode 100644 index 00000000000..9398b9c848c --- /dev/null +++ b/.ci/scripts/benchmark_tooling/private/meta-llama-llama-3.2-1b_hf-xnnpack-custom-spda-kv-cache-8da4w_apple-iphone-15-pro-_ios-18.4.1.csv @@ -0,0 +1,28 @@ +workflow_id,job_id,granularity_bucket,avg_inference_latency(ms),model_load_time(ms),peak_inference_mem_usage(mb),peak_load_mem_usage(mb),token_per_sec +15712278899,44280789008,2025-06-17T17:00:00Z,35,1105,1272.46,1255.45,23.92 +15706619480,44262431638,2025-06-17T13:00:00Z,35,1123,1272.41,1255.43,25.37 +15701565915,44245403612,2025-06-17T09:00:00Z,34,1114,1272.32,1255.24,25.38 +15697865923,44230646970,2025-06-17T05:00:00Z,33,1106,1272.45,1255.46,26.12 +15694639442,44221536444,2025-06-17T01:00:00Z,33,1145,1312.09,1293.27,25.79 +15690685696,44211619421,2025-06-16T21:00:00Z,33,1182,1312.03,1293.54,25.63 +15685808660,44196632637,2025-06-16T17:00:00Z,34,1137,1312.06,1293.76,26.36 +15680206509,44178256230,2025-06-16T13:00:00Z,35,1143,1312.06,1293.28,26.04 +15675176293,44162005966,2025-06-16T10:00:00Z,33,1136,1312.28,1293.55,25.2 +15671584185,44147537983,2025-06-16T06:00:00Z,34,1148,1312.11,1293.73,24.22 +15668756024,44140855631,2025-06-16T02:00:00Z,45,1186,1312.09,1293.56,25.25 +15666856809,44134617851,2025-06-15T22:00:00Z,32,1151,1312.19,1293.6,25.72 +15664949756,44129710892,2025-06-15T17:00:00Z,37,1150,1312.38,1294.2,25.76 +15662940074,44126695148,2025-06-15T15:00:00Z,34,1136,1312.1,1294.9,25.83 +15661046591,44121071601,2025-06-15T10:00:00Z,32,1122,1312.3,1293.62,25.55 +15657354121,44112759100,2025-06-15T02:00:00Z,30,1159,1312.26,1293.72,25.97 +15655612867,44108084740,2025-06-14T21:00:00Z,34,1142,1312.04,1293.46,26.5 +15653742079,44104013228,2025-06-14T17:00:00Z,31,1112,1312.26,1293.63,26.67 +15651786133,44100160145,2025-06-14T14:00:00Z,37,1143,1312.09,1293.34,26.01 +15649987292,44095314814,2025-06-14T09:00:00Z,35,1110,1311.93,1293.47,26.88 +15646107434,44086831907,2025-06-14T02:00:00Z,33,1121,1312.11,1293.38,24.57 +15642962044,44079703037,2025-06-13T21:00:00Z,38,1144,1312.35,1293.6,25.34 +15638842903,44067697635,2025-06-13T17:00:00Z,33,1145,1312.37,1351.73,24.64 +15634027967,44053427212,2025-06-13T14:00:00Z,33,1157,1312.39,1351.78,26.2 +15629571833,44037516912,2025-06-13T09:00:00Z,35,1119,1312.07,1351.97,26.23 +15626172835,44025076952,2025-06-13T06:00:00Z,30,1140,1312.41,1350.36,26.03 +15620031253,44010493569,2025-06-12T23:00:00Z,32,1137,1312.48,1353.23,26.07 diff --git a/.ci/scripts/benchmark_tooling/private/meta-llama-llama-3.2-1b_hf-xnnpack-custom-spda-kv-cache-8da4w_apple-iphone-15-pro-private_ios-18.4.1.csv b/.ci/scripts/benchmark_tooling/private/meta-llama-llama-3.2-1b_hf-xnnpack-custom-spda-kv-cache-8da4w_apple-iphone-15-pro-private_ios-18.4.1.csv new file mode 100644 index 00000000000..9398b9c848c --- /dev/null +++ b/.ci/scripts/benchmark_tooling/private/meta-llama-llama-3.2-1b_hf-xnnpack-custom-spda-kv-cache-8da4w_apple-iphone-15-pro-private_ios-18.4.1.csv @@ -0,0 +1,28 @@ +workflow_id,job_id,granularity_bucket,avg_inference_latency(ms),model_load_time(ms),peak_inference_mem_usage(mb),peak_load_mem_usage(mb),token_per_sec +15712278899,44280789008,2025-06-17T17:00:00Z,35,1105,1272.46,1255.45,23.92 +15706619480,44262431638,2025-06-17T13:00:00Z,35,1123,1272.41,1255.43,25.37 +15701565915,44245403612,2025-06-17T09:00:00Z,34,1114,1272.32,1255.24,25.38 +15697865923,44230646970,2025-06-17T05:00:00Z,33,1106,1272.45,1255.46,26.12 +15694639442,44221536444,2025-06-17T01:00:00Z,33,1145,1312.09,1293.27,25.79 +15690685696,44211619421,2025-06-16T21:00:00Z,33,1182,1312.03,1293.54,25.63 +15685808660,44196632637,2025-06-16T17:00:00Z,34,1137,1312.06,1293.76,26.36 +15680206509,44178256230,2025-06-16T13:00:00Z,35,1143,1312.06,1293.28,26.04 +15675176293,44162005966,2025-06-16T10:00:00Z,33,1136,1312.28,1293.55,25.2 +15671584185,44147537983,2025-06-16T06:00:00Z,34,1148,1312.11,1293.73,24.22 +15668756024,44140855631,2025-06-16T02:00:00Z,45,1186,1312.09,1293.56,25.25 +15666856809,44134617851,2025-06-15T22:00:00Z,32,1151,1312.19,1293.6,25.72 +15664949756,44129710892,2025-06-15T17:00:00Z,37,1150,1312.38,1294.2,25.76 +15662940074,44126695148,2025-06-15T15:00:00Z,34,1136,1312.1,1294.9,25.83 +15661046591,44121071601,2025-06-15T10:00:00Z,32,1122,1312.3,1293.62,25.55 +15657354121,44112759100,2025-06-15T02:00:00Z,30,1159,1312.26,1293.72,25.97 +15655612867,44108084740,2025-06-14T21:00:00Z,34,1142,1312.04,1293.46,26.5 +15653742079,44104013228,2025-06-14T17:00:00Z,31,1112,1312.26,1293.63,26.67 +15651786133,44100160145,2025-06-14T14:00:00Z,37,1143,1312.09,1293.34,26.01 +15649987292,44095314814,2025-06-14T09:00:00Z,35,1110,1311.93,1293.47,26.88 +15646107434,44086831907,2025-06-14T02:00:00Z,33,1121,1312.11,1293.38,24.57 +15642962044,44079703037,2025-06-13T21:00:00Z,38,1144,1312.35,1293.6,25.34 +15638842903,44067697635,2025-06-13T17:00:00Z,33,1145,1312.37,1351.73,24.64 +15634027967,44053427212,2025-06-13T14:00:00Z,33,1157,1312.39,1351.78,26.2 +15629571833,44037516912,2025-06-13T09:00:00Z,35,1119,1312.07,1351.97,26.23 +15626172835,44025076952,2025-06-13T06:00:00Z,30,1140,1312.41,1350.36,26.03 +15620031253,44010493569,2025-06-12T23:00:00Z,32,1137,1312.48,1353.23,26.07 diff --git a/.ci/scripts/benchmark_tooling/private/meta-llama-llama-3.2-1b_llama3-fb16_apple-iphone-15-_ios-18.0.csv b/.ci/scripts/benchmark_tooling/private/meta-llama-llama-3.2-1b_llama3-fb16_apple-iphone-15-_ios-18.0.csv new file mode 100644 index 00000000000..f7971909fe4 --- /dev/null +++ b/.ci/scripts/benchmark_tooling/private/meta-llama-llama-3.2-1b_llama3-fb16_apple-iphone-15-_ios-18.0.csv @@ -0,0 +1,29 @@ +workflow_id,job_id,granularity_bucket,avg_inference_latency(ms),model_load_time(ms),peak_inference_mem_usage(mb),peak_load_mem_usage(mb),token_per_sec +15712278899,44280789008,2025-06-17T17:00:00Z,23960,1446,2453.43,2465.29,2.97 +15706619480,44262431638,2025-06-17T13:00:00Z,23798,3043,2453.46,2465.03,3.0 +15701565915,44245403612,2025-06-17T09:00:00Z,23482,1443,2453.53,2465.02,2.99 +15697865923,44230646970,2025-06-17T05:00:00Z,23748,1463,2453.53,2465.15,3.0 +15694639442,44221536444,2025-06-17T01:00:00Z,25139,1824,2453.52,2465.01,2.8 +15690685696,44211619421,2025-06-16T21:00:00Z,24436,1396,2453.5,2464.97,2.78 +15685808660,44196632637,2025-06-16T17:00:00Z,23948,3102,2453.54,2464.99,3.03 +15680206509,44178256230,2025-06-16T13:00:00Z,23867,1423,2453.45,2465.03,3.0 +15675176293,44162005966,2025-06-16T10:00:00Z,23919,2719,2453.46,2465.27,3.0 +15671584185,44147537983,2025-06-16T06:00:00Z,23755,2916,2453.56,2466.25,3.0 +15668756024,44140855631,2025-06-16T02:00:00Z,25202,2648,2453.52,2465.58,2.78 +15666856809,44134617851,2025-06-15T22:00:00Z,23989,1415,2453.47,2465.49,2.96 +15664949756,44129710892,2025-06-15T17:00:00Z,23860,1422,2453.41,2465.53,2.99 +15662940074,44126695148,2025-06-15T15:00:00Z,24000,1433,2453.4,2465.17,3.01 +15661046591,44121071601,2025-06-15T10:00:00Z,23797,1449,2453.47,2465.09,3.02 +15659301910,44117138781,2025-06-15T06:00:00Z,24072,1421,2453.55,2466.27,3.02 +15657354121,44112759100,2025-06-15T02:00:00Z,25079,1402,2453.51,2465.59,2.78 +15655612867,44108084740,2025-06-14T21:00:00Z,24073,1442,2453.39,2465.54,2.98 +15653742079,44104013228,2025-06-14T17:00:00Z,23914,1431,2453.5,2464.85,2.98 +15651786133,44100160145,2025-06-14T14:00:00Z,23813,1434,2453.46,2464.93,3.0 +15649987292,44095314814,2025-06-14T09:00:00Z,23810,1427,2453.44,2465.49,3.01 +15646107434,44086831907,2025-06-14T02:00:00Z,23899,1429,2453.47,2465.51,2.98 +15642962044,44079703037,2025-06-13T21:00:00Z,23972,1826,2453.51,2464.91,2.96 +15638842903,44067697635,2025-06-13T17:00:00Z,24042,1431,2453.59,2508.12,3.0 +15634027967,44053427212,2025-06-13T14:00:00Z,23661,1427,2453.49,2507.82,3.01 +15629571833,44037516912,2025-06-13T09:00:00Z,23628,2673,2453.33,2510.88,3.04 +15626172835,44025076952,2025-06-13T06:00:00Z,23797,2655,2453.51,2512.55,3.04 +15620031253,44010493569,2025-06-12T23:00:00Z,25432,3109,2453.42,2507.92,2.79 diff --git a/.ci/scripts/benchmark_tooling/private/meta-llama-llama-3.2-1b_llama3-fb16_apple-iphone-15-_ios.csv b/.ci/scripts/benchmark_tooling/private/meta-llama-llama-3.2-1b_llama3-fb16_apple-iphone-15-_ios.csv new file mode 100644 index 00000000000..32437da3a05 --- /dev/null +++ b/.ci/scripts/benchmark_tooling/private/meta-llama-llama-3.2-1b_llama3-fb16_apple-iphone-15-_ios.csv @@ -0,0 +1,2 @@ +workflow_id,job_id,granularity_bucket,FAILURE_REPORT +15648210927,44089445706,2025-06-14T04:00:00Z,0 diff --git a/.ci/scripts/benchmark_tooling/private/meta-llama-llama-3.2-1b_llama3-fb16_apple-iphone-15-plus-_ios-17.4.1.csv b/.ci/scripts/benchmark_tooling/private/meta-llama-llama-3.2-1b_llama3-fb16_apple-iphone-15-plus-_ios-17.4.1.csv new file mode 100644 index 00000000000..46cfb823549 --- /dev/null +++ b/.ci/scripts/benchmark_tooling/private/meta-llama-llama-3.2-1b_llama3-fb16_apple-iphone-15-plus-_ios-17.4.1.csv @@ -0,0 +1,29 @@ +workflow_id,job_id,granularity_bucket,avg_inference_latency(ms),model_load_time(ms),peak_inference_mem_usage(mb),peak_load_mem_usage(mb),token_per_sec +15712278899,44280789008,2025-06-17T17:00:00Z,24630,1531,2452.75,2471.23,2.9 +15706619480,44262431638,2025-06-17T13:00:00Z,25256,1599,2452.72,2471.26,2.93 +15701565915,44245403612,2025-06-17T09:00:00Z,24587,2152,2452.65,2471.19,2.92 +15697865923,44230646970,2025-06-17T05:00:00Z,27455,2045,2452.45,2471.1,2.9 +15694639442,44221536444,2025-06-17T01:00:00Z,24756,2148,2452.6,2471.22,2.76 +15690685696,44211619421,2025-06-16T21:00:00Z,25596,1507,2452.48,2470.97,2.75 +15685808660,44196632637,2025-06-16T17:00:00Z,24458,1945,2452.64,2471.25,2.94 +15680206509,44178256230,2025-06-16T13:00:00Z,24494,1511,2452.68,2471.2,2.91 +15675176293,44162005966,2025-06-16T10:00:00Z,24537,1831,2452.71,2471.27,2.9 +15671584185,44147537983,2025-06-16T06:00:00Z,24670,1909,2452.62,2471.06,2.93 +15668756024,44140855631,2025-06-16T02:00:00Z,25030,1744,2452.76,2471.35,2.76 +15666856809,44134617851,2025-06-15T22:00:00Z,24497,1655,2452.6,2471.12,2.79 +15664949756,44129710892,2025-06-15T17:00:00Z,24363,1515,2452.69,2471.16,2.91 +15662940074,44126695148,2025-06-15T15:00:00Z,24381,2053,2452.59,2471.21,2.93 +15661046591,44121071601,2025-06-15T10:00:00Z,24353,1622,2452.61,2471.1,2.9 +15659301910,44117138781,2025-06-15T06:00:00Z,24344,1820,2452.67,2471.23,2.92 +15657354121,44112759100,2025-06-15T02:00:00Z,24852,2042,2452.68,2471.35,2.75 +15655612867,44108084740,2025-06-14T21:00:00Z,24420,1815,2452.58,2471.06,2.9 +15653742079,44104013228,2025-06-14T17:00:00Z,24402,1533,2452.56,2471.22,2.91 +15651786133,44100160145,2025-06-14T14:00:00Z,24372,1925,2452.6,2471.27,2.9 +15649987292,44095314814,2025-06-14T09:00:00Z,25234,1940,2452.5,2471.08,2.9 +15646107434,44086831907,2025-06-14T02:00:00Z,24363,1581,2452.47,2471.08,2.91 +15642962044,44079703037,2025-06-13T21:00:00Z,24528,1901,2452.71,2471.22,2.83 +15638842903,44067697635,2025-06-13T17:00:00Z,24804,1551,2452.64,2538.36,2.91 +15634027967,44053427212,2025-06-13T14:00:00Z,24384,2059,2452.71,2538.44,2.88 +15629571833,44037516912,2025-06-13T09:00:00Z,24317,2159,2452.64,2538.44,2.91 +15626172835,44025076952,2025-06-13T06:00:00Z,25270,1550,2452.62,2538.32,2.89 +15620031253,44010493569,2025-06-12T23:00:00Z,25535,2167,2452.58,2535.55,2.76 diff --git a/.ci/scripts/benchmark_tooling/private/meta-llama-llama-3.2-1b_llama3-fb16_apple-iphone-15-plus-private_ios-17.4.1.csv b/.ci/scripts/benchmark_tooling/private/meta-llama-llama-3.2-1b_llama3-fb16_apple-iphone-15-plus-private_ios-17.4.1.csv new file mode 100644 index 00000000000..46cfb823549 --- /dev/null +++ b/.ci/scripts/benchmark_tooling/private/meta-llama-llama-3.2-1b_llama3-fb16_apple-iphone-15-plus-private_ios-17.4.1.csv @@ -0,0 +1,29 @@ +workflow_id,job_id,granularity_bucket,avg_inference_latency(ms),model_load_time(ms),peak_inference_mem_usage(mb),peak_load_mem_usage(mb),token_per_sec +15712278899,44280789008,2025-06-17T17:00:00Z,24630,1531,2452.75,2471.23,2.9 +15706619480,44262431638,2025-06-17T13:00:00Z,25256,1599,2452.72,2471.26,2.93 +15701565915,44245403612,2025-06-17T09:00:00Z,24587,2152,2452.65,2471.19,2.92 +15697865923,44230646970,2025-06-17T05:00:00Z,27455,2045,2452.45,2471.1,2.9 +15694639442,44221536444,2025-06-17T01:00:00Z,24756,2148,2452.6,2471.22,2.76 +15690685696,44211619421,2025-06-16T21:00:00Z,25596,1507,2452.48,2470.97,2.75 +15685808660,44196632637,2025-06-16T17:00:00Z,24458,1945,2452.64,2471.25,2.94 +15680206509,44178256230,2025-06-16T13:00:00Z,24494,1511,2452.68,2471.2,2.91 +15675176293,44162005966,2025-06-16T10:00:00Z,24537,1831,2452.71,2471.27,2.9 +15671584185,44147537983,2025-06-16T06:00:00Z,24670,1909,2452.62,2471.06,2.93 +15668756024,44140855631,2025-06-16T02:00:00Z,25030,1744,2452.76,2471.35,2.76 +15666856809,44134617851,2025-06-15T22:00:00Z,24497,1655,2452.6,2471.12,2.79 +15664949756,44129710892,2025-06-15T17:00:00Z,24363,1515,2452.69,2471.16,2.91 +15662940074,44126695148,2025-06-15T15:00:00Z,24381,2053,2452.59,2471.21,2.93 +15661046591,44121071601,2025-06-15T10:00:00Z,24353,1622,2452.61,2471.1,2.9 +15659301910,44117138781,2025-06-15T06:00:00Z,24344,1820,2452.67,2471.23,2.92 +15657354121,44112759100,2025-06-15T02:00:00Z,24852,2042,2452.68,2471.35,2.75 +15655612867,44108084740,2025-06-14T21:00:00Z,24420,1815,2452.58,2471.06,2.9 +15653742079,44104013228,2025-06-14T17:00:00Z,24402,1533,2452.56,2471.22,2.91 +15651786133,44100160145,2025-06-14T14:00:00Z,24372,1925,2452.6,2471.27,2.9 +15649987292,44095314814,2025-06-14T09:00:00Z,25234,1940,2452.5,2471.08,2.9 +15646107434,44086831907,2025-06-14T02:00:00Z,24363,1581,2452.47,2471.08,2.91 +15642962044,44079703037,2025-06-13T21:00:00Z,24528,1901,2452.71,2471.22,2.83 +15638842903,44067697635,2025-06-13T17:00:00Z,24804,1551,2452.64,2538.36,2.91 +15634027967,44053427212,2025-06-13T14:00:00Z,24384,2059,2452.71,2538.44,2.88 +15629571833,44037516912,2025-06-13T09:00:00Z,24317,2159,2452.64,2538.44,2.91 +15626172835,44025076952,2025-06-13T06:00:00Z,25270,1550,2452.62,2538.32,2.89 +15620031253,44010493569,2025-06-12T23:00:00Z,25535,2167,2452.58,2535.55,2.76 diff --git a/.ci/scripts/benchmark_tooling/private/meta-llama-llama-3.2-1b_llama3-fb16_apple-iphone-15-private_ios-18.0.csv b/.ci/scripts/benchmark_tooling/private/meta-llama-llama-3.2-1b_llama3-fb16_apple-iphone-15-private_ios-18.0.csv new file mode 100644 index 00000000000..f7971909fe4 --- /dev/null +++ b/.ci/scripts/benchmark_tooling/private/meta-llama-llama-3.2-1b_llama3-fb16_apple-iphone-15-private_ios-18.0.csv @@ -0,0 +1,29 @@ +workflow_id,job_id,granularity_bucket,avg_inference_latency(ms),model_load_time(ms),peak_inference_mem_usage(mb),peak_load_mem_usage(mb),token_per_sec +15712278899,44280789008,2025-06-17T17:00:00Z,23960,1446,2453.43,2465.29,2.97 +15706619480,44262431638,2025-06-17T13:00:00Z,23798,3043,2453.46,2465.03,3.0 +15701565915,44245403612,2025-06-17T09:00:00Z,23482,1443,2453.53,2465.02,2.99 +15697865923,44230646970,2025-06-17T05:00:00Z,23748,1463,2453.53,2465.15,3.0 +15694639442,44221536444,2025-06-17T01:00:00Z,25139,1824,2453.52,2465.01,2.8 +15690685696,44211619421,2025-06-16T21:00:00Z,24436,1396,2453.5,2464.97,2.78 +15685808660,44196632637,2025-06-16T17:00:00Z,23948,3102,2453.54,2464.99,3.03 +15680206509,44178256230,2025-06-16T13:00:00Z,23867,1423,2453.45,2465.03,3.0 +15675176293,44162005966,2025-06-16T10:00:00Z,23919,2719,2453.46,2465.27,3.0 +15671584185,44147537983,2025-06-16T06:00:00Z,23755,2916,2453.56,2466.25,3.0 +15668756024,44140855631,2025-06-16T02:00:00Z,25202,2648,2453.52,2465.58,2.78 +15666856809,44134617851,2025-06-15T22:00:00Z,23989,1415,2453.47,2465.49,2.96 +15664949756,44129710892,2025-06-15T17:00:00Z,23860,1422,2453.41,2465.53,2.99 +15662940074,44126695148,2025-06-15T15:00:00Z,24000,1433,2453.4,2465.17,3.01 +15661046591,44121071601,2025-06-15T10:00:00Z,23797,1449,2453.47,2465.09,3.02 +15659301910,44117138781,2025-06-15T06:00:00Z,24072,1421,2453.55,2466.27,3.02 +15657354121,44112759100,2025-06-15T02:00:00Z,25079,1402,2453.51,2465.59,2.78 +15655612867,44108084740,2025-06-14T21:00:00Z,24073,1442,2453.39,2465.54,2.98 +15653742079,44104013228,2025-06-14T17:00:00Z,23914,1431,2453.5,2464.85,2.98 +15651786133,44100160145,2025-06-14T14:00:00Z,23813,1434,2453.46,2464.93,3.0 +15649987292,44095314814,2025-06-14T09:00:00Z,23810,1427,2453.44,2465.49,3.01 +15646107434,44086831907,2025-06-14T02:00:00Z,23899,1429,2453.47,2465.51,2.98 +15642962044,44079703037,2025-06-13T21:00:00Z,23972,1826,2453.51,2464.91,2.96 +15638842903,44067697635,2025-06-13T17:00:00Z,24042,1431,2453.59,2508.12,3.0 +15634027967,44053427212,2025-06-13T14:00:00Z,23661,1427,2453.49,2507.82,3.01 +15629571833,44037516912,2025-06-13T09:00:00Z,23628,2673,2453.33,2510.88,3.04 +15626172835,44025076952,2025-06-13T06:00:00Z,23797,2655,2453.51,2512.55,3.04 +15620031253,44010493569,2025-06-12T23:00:00Z,25432,3109,2453.42,2507.92,2.79 diff --git a/.ci/scripts/benchmark_tooling/private/meta-llama-llama-3.2-1b_llama3-fb16_apple-iphone-15-private_ios.csv b/.ci/scripts/benchmark_tooling/private/meta-llama-llama-3.2-1b_llama3-fb16_apple-iphone-15-private_ios.csv new file mode 100644 index 00000000000..32437da3a05 --- /dev/null +++ b/.ci/scripts/benchmark_tooling/private/meta-llama-llama-3.2-1b_llama3-fb16_apple-iphone-15-private_ios.csv @@ -0,0 +1,2 @@ +workflow_id,job_id,granularity_bucket,FAILURE_REPORT +15648210927,44089445706,2025-06-14T04:00:00Z,0 diff --git a/.ci/scripts/benchmark_tooling/private/meta-llama-llama-3.2-1b_llama3-fb16_apple-iphone-15-pro-_ios-18.4.1.csv b/.ci/scripts/benchmark_tooling/private/meta-llama-llama-3.2-1b_llama3-fb16_apple-iphone-15-pro-_ios-18.4.1.csv new file mode 100644 index 00000000000..0fae5da675e --- /dev/null +++ b/.ci/scripts/benchmark_tooling/private/meta-llama-llama-3.2-1b_llama3-fb16_apple-iphone-15-pro-_ios-18.4.1.csv @@ -0,0 +1,29 @@ +workflow_id,job_id,granularity_bucket,avg_inference_latency(ms),model_load_time(ms),peak_inference_mem_usage(mb),peak_load_mem_usage(mb),token_per_sec +15712278899,44280789008,2025-06-17T17:00:00Z,20720,797,2455.36,2465.4,3.11 +15706619480,44262431638,2025-06-17T13:00:00Z,20532,558,2455.34,2465.47,3.45 +15701565915,44245403612,2025-06-17T09:00:00Z,21099,586,2455.34,2465.46,3.45 +15697865923,44230646970,2025-06-17T05:00:00Z,20890,967,2455.47,2465.78,3.34 +15694639442,44221536444,2025-06-17T01:00:00Z,20752,702,2455.39,2465.63,3.29 +15690685696,44211619421,2025-06-16T21:00:00Z,21017,649,2455.35,2465.57,3.27 +15685808660,44196632637,2025-06-16T17:00:00Z,20605,753,2454.03,2464.38,3.47 +15680206509,44178256230,2025-06-16T13:00:00Z,20902,754,2455.47,2465.57,3.4 +15675176293,44162005966,2025-06-16T10:00:00Z,20670,752,2455.33,2465.5,3.41 +15671584185,44147537983,2025-06-16T06:00:00Z,20620,644,2455.36,2465.42,3.42 +15668756024,44140855631,2025-06-16T02:00:00Z,21148,751,2455.47,2465.53,3.35 +15666856809,44134617851,2025-06-15T22:00:00Z,20658,704,2455.39,2465.58,3.41 +15664949756,44129710892,2025-06-15T17:00:00Z,20658,704,2455.32,2465.57,3.43 +15662940074,44126695148,2025-06-15T15:00:00Z,21773,1073,2455.42,2465.5,3.42 +15661046591,44121071601,2025-06-15T10:00:00Z,20831,628,2455.51,2465.65,3.41 +15659301910,44117138781,2025-06-15T06:00:00Z,20680,745,2455.39,2465.69,3.44 +15657354121,44112759100,2025-06-15T02:00:00Z,20754,743,2455.36,2465.66,3.39 +15655612867,44108084740,2025-06-14T21:00:00Z,20901,733,2455.43,2465.61,3.43 +15653742079,44104013228,2025-06-14T17:00:00Z,20610,1665,2455.42,2465.74,3.43 +15651786133,44100160145,2025-06-14T14:00:00Z,20550,633,2455.34,2465.41,3.46 +15649987292,44095314814,2025-06-14T09:00:00Z,21390,753,2455.34,2465.28,3.18 +15646107434,44086831907,2025-06-14T02:00:00Z,20539,1135,2455.29,2465.63,3.4 +15642962044,44079703037,2025-06-13T21:00:00Z,20819,740,2455.44,2465.5,3.45 +15638842903,44067697635,2025-06-13T17:00:00Z,20930,691,2455.37,2508.35,3.43 +15634027967,44053427212,2025-06-13T14:00:00Z,20596,1557,2455.35,2508.36,3.43 +15629571833,44037516912,2025-06-13T09:00:00Z,20691,772,2455.35,2508.54,3.43 +15626172835,44025076952,2025-06-13T06:00:00Z,20664,824,2455.39,2508.3,3.42 +15620031253,44010493569,2025-06-12T23:00:00Z,20829,785,2455.44,2508.73,3.27 diff --git a/.ci/scripts/benchmark_tooling/private/meta-llama-llama-3.2-1b_llama3-fb16_apple-iphone-15-pro-private_ios-18.4.1.csv b/.ci/scripts/benchmark_tooling/private/meta-llama-llama-3.2-1b_llama3-fb16_apple-iphone-15-pro-private_ios-18.4.1.csv new file mode 100644 index 00000000000..0fae5da675e --- /dev/null +++ b/.ci/scripts/benchmark_tooling/private/meta-llama-llama-3.2-1b_llama3-fb16_apple-iphone-15-pro-private_ios-18.4.1.csv @@ -0,0 +1,29 @@ +workflow_id,job_id,granularity_bucket,avg_inference_latency(ms),model_load_time(ms),peak_inference_mem_usage(mb),peak_load_mem_usage(mb),token_per_sec +15712278899,44280789008,2025-06-17T17:00:00Z,20720,797,2455.36,2465.4,3.11 +15706619480,44262431638,2025-06-17T13:00:00Z,20532,558,2455.34,2465.47,3.45 +15701565915,44245403612,2025-06-17T09:00:00Z,21099,586,2455.34,2465.46,3.45 +15697865923,44230646970,2025-06-17T05:00:00Z,20890,967,2455.47,2465.78,3.34 +15694639442,44221536444,2025-06-17T01:00:00Z,20752,702,2455.39,2465.63,3.29 +15690685696,44211619421,2025-06-16T21:00:00Z,21017,649,2455.35,2465.57,3.27 +15685808660,44196632637,2025-06-16T17:00:00Z,20605,753,2454.03,2464.38,3.47 +15680206509,44178256230,2025-06-16T13:00:00Z,20902,754,2455.47,2465.57,3.4 +15675176293,44162005966,2025-06-16T10:00:00Z,20670,752,2455.33,2465.5,3.41 +15671584185,44147537983,2025-06-16T06:00:00Z,20620,644,2455.36,2465.42,3.42 +15668756024,44140855631,2025-06-16T02:00:00Z,21148,751,2455.47,2465.53,3.35 +15666856809,44134617851,2025-06-15T22:00:00Z,20658,704,2455.39,2465.58,3.41 +15664949756,44129710892,2025-06-15T17:00:00Z,20658,704,2455.32,2465.57,3.43 +15662940074,44126695148,2025-06-15T15:00:00Z,21773,1073,2455.42,2465.5,3.42 +15661046591,44121071601,2025-06-15T10:00:00Z,20831,628,2455.51,2465.65,3.41 +15659301910,44117138781,2025-06-15T06:00:00Z,20680,745,2455.39,2465.69,3.44 +15657354121,44112759100,2025-06-15T02:00:00Z,20754,743,2455.36,2465.66,3.39 +15655612867,44108084740,2025-06-14T21:00:00Z,20901,733,2455.43,2465.61,3.43 +15653742079,44104013228,2025-06-14T17:00:00Z,20610,1665,2455.42,2465.74,3.43 +15651786133,44100160145,2025-06-14T14:00:00Z,20550,633,2455.34,2465.41,3.46 +15649987292,44095314814,2025-06-14T09:00:00Z,21390,753,2455.34,2465.28,3.18 +15646107434,44086831907,2025-06-14T02:00:00Z,20539,1135,2455.29,2465.63,3.4 +15642962044,44079703037,2025-06-13T21:00:00Z,20819,740,2455.44,2465.5,3.45 +15638842903,44067697635,2025-06-13T17:00:00Z,20930,691,2455.37,2508.35,3.43 +15634027967,44053427212,2025-06-13T14:00:00Z,20596,1557,2455.35,2508.36,3.43 +15629571833,44037516912,2025-06-13T09:00:00Z,20691,772,2455.35,2508.54,3.43 +15626172835,44025076952,2025-06-13T06:00:00Z,20664,824,2455.39,2508.3,3.42 +15620031253,44010493569,2025-06-12T23:00:00Z,20829,785,2455.44,2508.73,3.27 diff --git a/.ci/scripts/benchmark_tooling/private/mv3_coreml-fp16_apple-iphone-15-_ios-18.0.csv b/.ci/scripts/benchmark_tooling/private/mv3_coreml-fp16_apple-iphone-15-_ios-18.0.csv new file mode 100644 index 00000000000..0f36498a010 --- /dev/null +++ b/.ci/scripts/benchmark_tooling/private/mv3_coreml-fp16_apple-iphone-15-_ios-18.0.csv @@ -0,0 +1,11 @@ +workflow_id,job_id,granularity_bucket,avg_inference_latency(ms),model_load_time(ms),peak_inference_mem_usage(mb),peak_load_mem_usage(mb) +15615480751,43993124686,2025-06-12T17:00:00Z,1,29,22.88,83.49 +15604974289,43958007180,2025-06-12T09:00:00Z,1,30,22.89,83.9 +15601337433,43944770836,2025-06-12T05:00:00Z,1,51,22.93,79.86 +15598277481,43937275861,2025-06-12T01:00:00Z,1,51,22.93,79.99 +15594453833,43926877649,2025-06-11T21:00:00Z,1,48,22.72,80.7 +15589818422,43912035344,2025-06-11T17:00:00Z,1,31,22.81,84.0 +15584268753,43893469529,2025-06-11T13:00:00Z,1,52,23.07,80.51 +15579346239,43876994524,2025-06-11T09:00:00Z,1,34,22.94,83.77 +15575781424,43864061188,2025-06-11T05:00:00Z,1,36,22.97,83.56 +15572789992,43855812660,2025-06-11T01:00:00Z,1,34,22.75,82.72 diff --git a/.ci/scripts/benchmark_tooling/private/mv3_coreml-fp16_apple-iphone-15-_ios.csv b/.ci/scripts/benchmark_tooling/private/mv3_coreml-fp16_apple-iphone-15-_ios.csv new file mode 100644 index 00000000000..d6f458a8830 --- /dev/null +++ b/.ci/scripts/benchmark_tooling/private/mv3_coreml-fp16_apple-iphone-15-_ios.csv @@ -0,0 +1,2 @@ +workflow_id,job_id,granularity_bucket,FAILURE_REPORT +15609910174,43969026143,2025-06-12T12:00:00Z,0 diff --git a/.ci/scripts/benchmark_tooling/private/mv3_coreml-fp16_apple-iphone-15-plus-_ios-17.4.1.csv b/.ci/scripts/benchmark_tooling/private/mv3_coreml-fp16_apple-iphone-15-plus-_ios-17.4.1.csv new file mode 100644 index 00000000000..2992754922b --- /dev/null +++ b/.ci/scripts/benchmark_tooling/private/mv3_coreml-fp16_apple-iphone-15-plus-_ios-17.4.1.csv @@ -0,0 +1,11 @@ +workflow_id,job_id,granularity_bucket,avg_inference_latency(ms),model_load_time(ms),peak_inference_mem_usage(mb),peak_load_mem_usage(mb) +15615480751,43993124686,2025-06-12T17:00:00Z,1,68,36.16,113.1 +15604974289,43958007180,2025-06-12T09:00:00Z,1,64,36.22,112.95 +15601337433,43944770836,2025-06-12T05:00:00Z,1,65,36.22,112.83 +15598277481,43937275861,2025-06-12T01:00:00Z,1,68,36.17,113.0 +15594453833,43926877649,2025-06-11T21:00:00Z,1,67,36.14,112.62 +15589818422,43912035344,2025-06-11T17:00:00Z,1,66,36.04,112.63 +15584268753,43893469529,2025-06-11T13:00:00Z,1,66,36.17,112.82 +15579346239,43876994524,2025-06-11T09:00:00Z,1,63,36.12,112.61 +15575781424,43864061188,2025-06-11T05:00:00Z,1,67,36.16,112.64 +15572789992,43855812660,2025-06-11T01:00:00Z,1,70,36.24,112.12 diff --git a/.ci/scripts/benchmark_tooling/private/mv3_coreml-fp16_apple-iphone-15-plus-private_ios-17.4.1.csv b/.ci/scripts/benchmark_tooling/private/mv3_coreml-fp16_apple-iphone-15-plus-private_ios-17.4.1.csv new file mode 100644 index 00000000000..2992754922b --- /dev/null +++ b/.ci/scripts/benchmark_tooling/private/mv3_coreml-fp16_apple-iphone-15-plus-private_ios-17.4.1.csv @@ -0,0 +1,11 @@ +workflow_id,job_id,granularity_bucket,avg_inference_latency(ms),model_load_time(ms),peak_inference_mem_usage(mb),peak_load_mem_usage(mb) +15615480751,43993124686,2025-06-12T17:00:00Z,1,68,36.16,113.1 +15604974289,43958007180,2025-06-12T09:00:00Z,1,64,36.22,112.95 +15601337433,43944770836,2025-06-12T05:00:00Z,1,65,36.22,112.83 +15598277481,43937275861,2025-06-12T01:00:00Z,1,68,36.17,113.0 +15594453833,43926877649,2025-06-11T21:00:00Z,1,67,36.14,112.62 +15589818422,43912035344,2025-06-11T17:00:00Z,1,66,36.04,112.63 +15584268753,43893469529,2025-06-11T13:00:00Z,1,66,36.17,112.82 +15579346239,43876994524,2025-06-11T09:00:00Z,1,63,36.12,112.61 +15575781424,43864061188,2025-06-11T05:00:00Z,1,67,36.16,112.64 +15572789992,43855812660,2025-06-11T01:00:00Z,1,70,36.24,112.12 diff --git a/.ci/scripts/benchmark_tooling/private/mv3_coreml-fp16_apple-iphone-15-private_ios-18.0.csv b/.ci/scripts/benchmark_tooling/private/mv3_coreml-fp16_apple-iphone-15-private_ios-18.0.csv new file mode 100644 index 00000000000..0f36498a010 --- /dev/null +++ b/.ci/scripts/benchmark_tooling/private/mv3_coreml-fp16_apple-iphone-15-private_ios-18.0.csv @@ -0,0 +1,11 @@ +workflow_id,job_id,granularity_bucket,avg_inference_latency(ms),model_load_time(ms),peak_inference_mem_usage(mb),peak_load_mem_usage(mb) +15615480751,43993124686,2025-06-12T17:00:00Z,1,29,22.88,83.49 +15604974289,43958007180,2025-06-12T09:00:00Z,1,30,22.89,83.9 +15601337433,43944770836,2025-06-12T05:00:00Z,1,51,22.93,79.86 +15598277481,43937275861,2025-06-12T01:00:00Z,1,51,22.93,79.99 +15594453833,43926877649,2025-06-11T21:00:00Z,1,48,22.72,80.7 +15589818422,43912035344,2025-06-11T17:00:00Z,1,31,22.81,84.0 +15584268753,43893469529,2025-06-11T13:00:00Z,1,52,23.07,80.51 +15579346239,43876994524,2025-06-11T09:00:00Z,1,34,22.94,83.77 +15575781424,43864061188,2025-06-11T05:00:00Z,1,36,22.97,83.56 +15572789992,43855812660,2025-06-11T01:00:00Z,1,34,22.75,82.72 diff --git a/.ci/scripts/benchmark_tooling/private/mv3_coreml-fp16_apple-iphone-15-private_ios.csv b/.ci/scripts/benchmark_tooling/private/mv3_coreml-fp16_apple-iphone-15-private_ios.csv new file mode 100644 index 00000000000..d6f458a8830 --- /dev/null +++ b/.ci/scripts/benchmark_tooling/private/mv3_coreml-fp16_apple-iphone-15-private_ios.csv @@ -0,0 +1,2 @@ +workflow_id,job_id,granularity_bucket,FAILURE_REPORT +15609910174,43969026143,2025-06-12T12:00:00Z,0 diff --git a/.ci/scripts/benchmark_tooling/private/mv3_coreml-fp16_apple-iphone-15-pro-_ios-18.4.1.csv b/.ci/scripts/benchmark_tooling/private/mv3_coreml-fp16_apple-iphone-15-pro-_ios-18.4.1.csv new file mode 100644 index 00000000000..b25c8004f67 --- /dev/null +++ b/.ci/scripts/benchmark_tooling/private/mv3_coreml-fp16_apple-iphone-15-pro-_ios-18.4.1.csv @@ -0,0 +1,11 @@ +workflow_id,job_id,granularity_bucket,avg_inference_latency(ms),model_load_time(ms),peak_inference_mem_usage(mb),peak_load_mem_usage(mb) +15615480751,43993124686,2025-06-12T17:00:00Z,1,45,33.47,109.42 +15604974289,43958007180,2025-06-12T09:00:00Z,1,46,33.41,108.93 +15601337433,43944770836,2025-06-12T05:00:00Z,1,46,33.38,108.75 +15598277481,43937275861,2025-06-12T01:00:00Z,1,46,33.56,109.12 +15594453833,43926877649,2025-06-11T21:00:00Z,1,46,33.55,109.58 +15589818422,43912035344,2025-06-11T17:00:00Z,1,46,33.55,109.35 +15584268753,43893469529,2025-06-11T13:00:00Z,1,46,33.6,109.56 +15579346239,43876994524,2025-06-11T09:00:00Z,1,46,33.44,109.55 +15575781424,43864061188,2025-06-11T05:00:00Z,1,46,33.6,109.55 +15572789992,43855812660,2025-06-11T01:00:00Z,1,47,33.2,107.57 diff --git a/.ci/scripts/benchmark_tooling/private/mv3_coreml-fp16_apple-iphone-15-pro-private_ios-18.4.1.csv b/.ci/scripts/benchmark_tooling/private/mv3_coreml-fp16_apple-iphone-15-pro-private_ios-18.4.1.csv new file mode 100644 index 00000000000..b25c8004f67 --- /dev/null +++ b/.ci/scripts/benchmark_tooling/private/mv3_coreml-fp16_apple-iphone-15-pro-private_ios-18.4.1.csv @@ -0,0 +1,11 @@ +workflow_id,job_id,granularity_bucket,avg_inference_latency(ms),model_load_time(ms),peak_inference_mem_usage(mb),peak_load_mem_usage(mb) +15615480751,43993124686,2025-06-12T17:00:00Z,1,45,33.47,109.42 +15604974289,43958007180,2025-06-12T09:00:00Z,1,46,33.41,108.93 +15601337433,43944770836,2025-06-12T05:00:00Z,1,46,33.38,108.75 +15598277481,43937275861,2025-06-12T01:00:00Z,1,46,33.56,109.12 +15594453833,43926877649,2025-06-11T21:00:00Z,1,46,33.55,109.58 +15589818422,43912035344,2025-06-11T17:00:00Z,1,46,33.55,109.35 +15584268753,43893469529,2025-06-11T13:00:00Z,1,46,33.6,109.56 +15579346239,43876994524,2025-06-11T09:00:00Z,1,46,33.44,109.55 +15575781424,43864061188,2025-06-11T05:00:00Z,1,46,33.6,109.55 +15572789992,43855812660,2025-06-11T01:00:00Z,1,47,33.2,107.57 diff --git a/.ci/scripts/benchmark_tooling/private/mv3_mps_apple-iphone-15-_ios-18.0.csv b/.ci/scripts/benchmark_tooling/private/mv3_mps_apple-iphone-15-_ios-18.0.csv new file mode 100644 index 00000000000..8b57937ca89 --- /dev/null +++ b/.ci/scripts/benchmark_tooling/private/mv3_mps_apple-iphone-15-_ios-18.0.csv @@ -0,0 +1,9 @@ +workflow_id,job_id,granularity_bucket,avg_inference_latency(ms),model_load_time(ms),peak_inference_mem_usage(mb),peak_load_mem_usage(mb) +15615480751,43993124686,2025-06-12T17:00:00Z,4,11,48.19,129.33 +15604974289,43958007180,2025-06-12T09:00:00Z,4,11,48.17,131.19 +15601337433,43944770836,2025-06-12T05:00:00Z,4,11,48.11,130.28 +15598277481,43937275861,2025-06-12T01:00:00Z,4,12,48.31,130.98 +15594453833,43926877649,2025-06-11T21:00:00Z,4,13,48.11,128.34 +15589818422,43912035344,2025-06-11T17:00:00Z,4,11,48.15,129.98 +15584268753,43893469529,2025-06-11T13:00:00Z,4,11,48.06,130.13 +15579346239,43876994524,2025-06-11T09:00:00Z,4,14,48.33,129.58 diff --git a/.ci/scripts/benchmark_tooling/private/mv3_mps_apple-iphone-15-_ios.csv b/.ci/scripts/benchmark_tooling/private/mv3_mps_apple-iphone-15-_ios.csv new file mode 100644 index 00000000000..d6f458a8830 --- /dev/null +++ b/.ci/scripts/benchmark_tooling/private/mv3_mps_apple-iphone-15-_ios.csv @@ -0,0 +1,2 @@ +workflow_id,job_id,granularity_bucket,FAILURE_REPORT +15609910174,43969026143,2025-06-12T12:00:00Z,0 diff --git a/.ci/scripts/benchmark_tooling/private/mv3_mps_apple-iphone-15-plus-_ios-17.4.1.csv b/.ci/scripts/benchmark_tooling/private/mv3_mps_apple-iphone-15-plus-_ios-17.4.1.csv new file mode 100644 index 00000000000..449deec06b7 --- /dev/null +++ b/.ci/scripts/benchmark_tooling/private/mv3_mps_apple-iphone-15-plus-_ios-17.4.1.csv @@ -0,0 +1,9 @@ +workflow_id,job_id,granularity_bucket,avg_inference_latency(ms),model_load_time(ms),peak_inference_mem_usage(mb),peak_load_mem_usage(mb) +15615480751,43993124686,2025-06-12T17:00:00Z,1,48,60.17,201.68 +15604974289,43958007180,2025-06-12T09:00:00Z,1,50,59.91,201.66 +15601337433,43944770836,2025-06-12T05:00:00Z,1,47,60.03,200.79 +15598277481,43937275861,2025-06-12T01:00:00Z,1,51,60.15,200.01 +15594453833,43926877649,2025-06-11T21:00:00Z,1,49,59.94,199.05 +15589818422,43912035344,2025-06-11T17:00:00Z,1,48,59.78,194.77 +15584268753,43893469529,2025-06-11T13:00:00Z,1,46,59.83,197.74 +15579346239,43876994524,2025-06-11T09:00:00Z,1,48,59.98,198.29 diff --git a/.ci/scripts/benchmark_tooling/private/mv3_mps_apple-iphone-15-plus-private_ios-17.4.1.csv b/.ci/scripts/benchmark_tooling/private/mv3_mps_apple-iphone-15-plus-private_ios-17.4.1.csv new file mode 100644 index 00000000000..449deec06b7 --- /dev/null +++ b/.ci/scripts/benchmark_tooling/private/mv3_mps_apple-iphone-15-plus-private_ios-17.4.1.csv @@ -0,0 +1,9 @@ +workflow_id,job_id,granularity_bucket,avg_inference_latency(ms),model_load_time(ms),peak_inference_mem_usage(mb),peak_load_mem_usage(mb) +15615480751,43993124686,2025-06-12T17:00:00Z,1,48,60.17,201.68 +15604974289,43958007180,2025-06-12T09:00:00Z,1,50,59.91,201.66 +15601337433,43944770836,2025-06-12T05:00:00Z,1,47,60.03,200.79 +15598277481,43937275861,2025-06-12T01:00:00Z,1,51,60.15,200.01 +15594453833,43926877649,2025-06-11T21:00:00Z,1,49,59.94,199.05 +15589818422,43912035344,2025-06-11T17:00:00Z,1,48,59.78,194.77 +15584268753,43893469529,2025-06-11T13:00:00Z,1,46,59.83,197.74 +15579346239,43876994524,2025-06-11T09:00:00Z,1,48,59.98,198.29 diff --git a/.ci/scripts/benchmark_tooling/private/mv3_mps_apple-iphone-15-private_ios-18.0.csv b/.ci/scripts/benchmark_tooling/private/mv3_mps_apple-iphone-15-private_ios-18.0.csv new file mode 100644 index 00000000000..8b57937ca89 --- /dev/null +++ b/.ci/scripts/benchmark_tooling/private/mv3_mps_apple-iphone-15-private_ios-18.0.csv @@ -0,0 +1,9 @@ +workflow_id,job_id,granularity_bucket,avg_inference_latency(ms),model_load_time(ms),peak_inference_mem_usage(mb),peak_load_mem_usage(mb) +15615480751,43993124686,2025-06-12T17:00:00Z,4,11,48.19,129.33 +15604974289,43958007180,2025-06-12T09:00:00Z,4,11,48.17,131.19 +15601337433,43944770836,2025-06-12T05:00:00Z,4,11,48.11,130.28 +15598277481,43937275861,2025-06-12T01:00:00Z,4,12,48.31,130.98 +15594453833,43926877649,2025-06-11T21:00:00Z,4,13,48.11,128.34 +15589818422,43912035344,2025-06-11T17:00:00Z,4,11,48.15,129.98 +15584268753,43893469529,2025-06-11T13:00:00Z,4,11,48.06,130.13 +15579346239,43876994524,2025-06-11T09:00:00Z,4,14,48.33,129.58 diff --git a/.ci/scripts/benchmark_tooling/private/mv3_mps_apple-iphone-15-private_ios.csv b/.ci/scripts/benchmark_tooling/private/mv3_mps_apple-iphone-15-private_ios.csv new file mode 100644 index 00000000000..d6f458a8830 --- /dev/null +++ b/.ci/scripts/benchmark_tooling/private/mv3_mps_apple-iphone-15-private_ios.csv @@ -0,0 +1,2 @@ +workflow_id,job_id,granularity_bucket,FAILURE_REPORT +15609910174,43969026143,2025-06-12T12:00:00Z,0 diff --git a/.ci/scripts/benchmark_tooling/private/mv3_mps_apple-iphone-15-pro-_ios-18.4.1.csv b/.ci/scripts/benchmark_tooling/private/mv3_mps_apple-iphone-15-pro-_ios-18.4.1.csv new file mode 100644 index 00000000000..fafffca3d7a --- /dev/null +++ b/.ci/scripts/benchmark_tooling/private/mv3_mps_apple-iphone-15-pro-_ios-18.4.1.csv @@ -0,0 +1,9 @@ +workflow_id,job_id,granularity_bucket,avg_inference_latency(ms),model_load_time(ms),peak_inference_mem_usage(mb),peak_load_mem_usage(mb) +15615480751,43993124686,2025-06-12T17:00:00Z,3,19,81.41,200.73 +15604974289,43958007180,2025-06-12T09:00:00Z,3,19,81.63,199.29 +15601337433,43944770836,2025-06-12T05:00:00Z,3,19,81.43,200.56 +15598277481,43937275861,2025-06-12T01:00:00Z,3,19,81.47,199.37 +15594453833,43926877649,2025-06-11T21:00:00Z,2,20,81.2,201.12 +15589818422,43912035344,2025-06-11T17:00:00Z,3,18,81.27,199.6 +15584268753,43893469529,2025-06-11T13:00:00Z,3,19,81.36,199.19 +15579346239,43876994524,2025-06-11T09:00:00Z,3,19,81.48,200.98 diff --git a/.ci/scripts/benchmark_tooling/private/mv3_mps_apple-iphone-15-pro-private_ios-18.4.1.csv b/.ci/scripts/benchmark_tooling/private/mv3_mps_apple-iphone-15-pro-private_ios-18.4.1.csv new file mode 100644 index 00000000000..fafffca3d7a --- /dev/null +++ b/.ci/scripts/benchmark_tooling/private/mv3_mps_apple-iphone-15-pro-private_ios-18.4.1.csv @@ -0,0 +1,9 @@ +workflow_id,job_id,granularity_bucket,avg_inference_latency(ms),model_load_time(ms),peak_inference_mem_usage(mb),peak_load_mem_usage(mb) +15615480751,43993124686,2025-06-12T17:00:00Z,3,19,81.41,200.73 +15604974289,43958007180,2025-06-12T09:00:00Z,3,19,81.63,199.29 +15601337433,43944770836,2025-06-12T05:00:00Z,3,19,81.43,200.56 +15598277481,43937275861,2025-06-12T01:00:00Z,3,19,81.47,199.37 +15594453833,43926877649,2025-06-11T21:00:00Z,2,20,81.2,201.12 +15589818422,43912035344,2025-06-11T17:00:00Z,3,18,81.27,199.6 +15584268753,43893469529,2025-06-11T13:00:00Z,3,19,81.36,199.19 +15579346239,43876994524,2025-06-11T09:00:00Z,3,19,81.48,200.98 diff --git a/.ci/scripts/benchmark_tooling/private/mv3_qnn-q8_-s22-_android-13.csv b/.ci/scripts/benchmark_tooling/private/mv3_qnn-q8_-s22-_android-13.csv new file mode 100644 index 00000000000..dfddce4a136 --- /dev/null +++ b/.ci/scripts/benchmark_tooling/private/mv3_qnn-q8_-s22-_android-13.csv @@ -0,0 +1,12 @@ +workflow_id,job_id,granularity_bucket,avg_inference_latency(ms),model_load_time(ms),ram_pss_usage(mb),trimmean_inference_latency(ms) +15615520755,43991248116,2025-06-12T17:00:00Z,1.01,170.05,46,1.01 +15609976846,43972978640,2025-06-12T13:00:00Z,1.01,153.75,46,1.01 +15605026631,43956669874,2025-06-12T09:00:00Z,1.02,171.24,46,1.01 +15601359910,43943792457,2025-06-12T05:00:00Z,1.02,153.27,49,1.01 +15598383765,43935960659,2025-06-12T01:00:00Z,1.22,171.28,48,1.22 +15594484786,43925468969,2025-06-11T21:00:00Z,1.02,166.8,46,1.01 +15589858447,43914218724,2025-06-11T18:00:00Z,1.02,167.79,47,1.01 +15584331831,43891253427,2025-06-11T13:00:00Z,1.01,158.58,46,1.01 +15579400247,43875126572,2025-06-11T09:00:00Z,1.01,164.24,47,1.01 +15575806493,43862405466,2025-06-11T05:00:00Z,1.01,166.56,47,1.01 +15572893795,43854545007,2025-06-11T01:00:00Z,1.01,176.1,46,1.01 diff --git a/.ci/scripts/benchmark_tooling/private/mv3_qnn-q8_-s22-private_android-13.csv b/.ci/scripts/benchmark_tooling/private/mv3_qnn-q8_-s22-private_android-13.csv new file mode 100644 index 00000000000..dfddce4a136 --- /dev/null +++ b/.ci/scripts/benchmark_tooling/private/mv3_qnn-q8_-s22-private_android-13.csv @@ -0,0 +1,12 @@ +workflow_id,job_id,granularity_bucket,avg_inference_latency(ms),model_load_time(ms),ram_pss_usage(mb),trimmean_inference_latency(ms) +15615520755,43991248116,2025-06-12T17:00:00Z,1.01,170.05,46,1.01 +15609976846,43972978640,2025-06-12T13:00:00Z,1.01,153.75,46,1.01 +15605026631,43956669874,2025-06-12T09:00:00Z,1.02,171.24,46,1.01 +15601359910,43943792457,2025-06-12T05:00:00Z,1.02,153.27,49,1.01 +15598383765,43935960659,2025-06-12T01:00:00Z,1.22,171.28,48,1.22 +15594484786,43925468969,2025-06-11T21:00:00Z,1.02,166.8,46,1.01 +15589858447,43914218724,2025-06-11T18:00:00Z,1.02,167.79,47,1.01 +15584331831,43891253427,2025-06-11T13:00:00Z,1.01,158.58,46,1.01 +15579400247,43875126572,2025-06-11T09:00:00Z,1.01,164.24,47,1.01 +15575806493,43862405466,2025-06-11T05:00:00Z,1.01,166.56,47,1.01 +15572893795,43854545007,2025-06-11T01:00:00Z,1.01,176.1,46,1.01 diff --git a/.ci/scripts/benchmark_tooling/private/mv3_qnn-q8_-s22-ultra-_android-14.csv b/.ci/scripts/benchmark_tooling/private/mv3_qnn-q8_-s22-ultra-_android-14.csv new file mode 100644 index 00000000000..33e0301e336 --- /dev/null +++ b/.ci/scripts/benchmark_tooling/private/mv3_qnn-q8_-s22-ultra-_android-14.csv @@ -0,0 +1,12 @@ +workflow_id,job_id,granularity_bucket,avg_inference_latency(ms),model_load_time(ms),ram_pss_usage(mb),trimmean_inference_latency(ms) +15615520755,43991248116,2025-06-12T17:00:00Z,1.02,152.77,56,1.02 +15609976846,43972978640,2025-06-12T13:00:00Z,1.02,148.74,57,1.02 +15605026631,43956669874,2025-06-12T09:00:00Z,1.03,179.8,57,1.02 +15601359910,43943792457,2025-06-12T05:00:00Z,1.03,146.91,56,1.02 +15598383765,43935960659,2025-06-12T01:00:00Z,1.02,162.13,56,1.02 +15594484786,43925468969,2025-06-11T21:00:00Z,1.02,155.48,55,1.02 +15589858447,43914218724,2025-06-11T18:00:00Z,1.03,154.35,55,1.03 +15584331831,43891253427,2025-06-11T13:00:00Z,1.02,169.34,56,1.02 +15579400247,43875126572,2025-06-11T09:00:00Z,1.03,161.18,56,1.03 +15575806493,43862405466,2025-06-11T05:00:00Z,1.02,195.87,56,1.02 +15572893795,43854545007,2025-06-11T01:00:00Z,1.03,190.67,55,1.03 diff --git a/.ci/scripts/benchmark_tooling/private/mv3_qnn-q8_-s22-ultra-private_android-14.csv b/.ci/scripts/benchmark_tooling/private/mv3_qnn-q8_-s22-ultra-private_android-14.csv new file mode 100644 index 00000000000..33e0301e336 --- /dev/null +++ b/.ci/scripts/benchmark_tooling/private/mv3_qnn-q8_-s22-ultra-private_android-14.csv @@ -0,0 +1,12 @@ +workflow_id,job_id,granularity_bucket,avg_inference_latency(ms),model_load_time(ms),ram_pss_usage(mb),trimmean_inference_latency(ms) +15615520755,43991248116,2025-06-12T17:00:00Z,1.02,152.77,56,1.02 +15609976846,43972978640,2025-06-12T13:00:00Z,1.02,148.74,57,1.02 +15605026631,43956669874,2025-06-12T09:00:00Z,1.03,179.8,57,1.02 +15601359910,43943792457,2025-06-12T05:00:00Z,1.03,146.91,56,1.02 +15598383765,43935960659,2025-06-12T01:00:00Z,1.02,162.13,56,1.02 +15594484786,43925468969,2025-06-11T21:00:00Z,1.02,155.48,55,1.02 +15589858447,43914218724,2025-06-11T18:00:00Z,1.03,154.35,55,1.03 +15584331831,43891253427,2025-06-11T13:00:00Z,1.02,169.34,56,1.02 +15579400247,43875126572,2025-06-11T09:00:00Z,1.03,161.18,56,1.03 +15575806493,43862405466,2025-06-11T05:00:00Z,1.02,195.87,56,1.02 +15572893795,43854545007,2025-06-11T01:00:00Z,1.03,190.67,55,1.03 diff --git a/.ci/scripts/benchmark_tooling/private/mv3_xnnpack-q8_-s22-_android-13.csv b/.ci/scripts/benchmark_tooling/private/mv3_xnnpack-q8_-s22-_android-13.csv new file mode 100644 index 00000000000..b5c661d3a32 --- /dev/null +++ b/.ci/scripts/benchmark_tooling/private/mv3_xnnpack-q8_-s22-_android-13.csv @@ -0,0 +1,11 @@ +workflow_id,job_id,granularity_bucket,avg_inference_latency(ms),model_load_time(ms),ram_pss_usage(mb),trimmean_inference_latency(ms) +15615520755,43991248116,2025-06-12T17:00:00Z,3.36,19.61,51,2.41 +15605026631,43956669874,2025-06-12T09:00:00Z,3.1,23.52,61,2.92 +15601359910,43943792457,2025-06-12T05:00:00Z,3.91,19.92,52,2.92 +15598383765,43935960659,2025-06-12T01:00:00Z,2.27,18.91,61,2.17 +15594484786,43925468969,2025-06-11T21:00:00Z,5.56,19.86,61,4.39 +15589858447,43914218724,2025-06-11T18:00:00Z,2.39,19.99,61,2.29 +15584331831,43891253427,2025-06-11T13:00:00Z,2.25,22.18,53,2.16 +15579400247,43875126572,2025-06-11T09:00:00Z,3.27,19.52,61,2.3 +15575806493,43862405466,2025-06-11T05:00:00Z,2.12,26.88,51,2.12 +15572893795,43854545007,2025-06-11T01:00:00Z,2.7,21.89,61,2.34 diff --git a/.ci/scripts/benchmark_tooling/private/mv3_xnnpack-q8_-s22-private_android-13.csv b/.ci/scripts/benchmark_tooling/private/mv3_xnnpack-q8_-s22-private_android-13.csv new file mode 100644 index 00000000000..b5c661d3a32 --- /dev/null +++ b/.ci/scripts/benchmark_tooling/private/mv3_xnnpack-q8_-s22-private_android-13.csv @@ -0,0 +1,11 @@ +workflow_id,job_id,granularity_bucket,avg_inference_latency(ms),model_load_time(ms),ram_pss_usage(mb),trimmean_inference_latency(ms) +15615520755,43991248116,2025-06-12T17:00:00Z,3.36,19.61,51,2.41 +15605026631,43956669874,2025-06-12T09:00:00Z,3.1,23.52,61,2.92 +15601359910,43943792457,2025-06-12T05:00:00Z,3.91,19.92,52,2.92 +15598383765,43935960659,2025-06-12T01:00:00Z,2.27,18.91,61,2.17 +15594484786,43925468969,2025-06-11T21:00:00Z,5.56,19.86,61,4.39 +15589858447,43914218724,2025-06-11T18:00:00Z,2.39,19.99,61,2.29 +15584331831,43891253427,2025-06-11T13:00:00Z,2.25,22.18,53,2.16 +15579400247,43875126572,2025-06-11T09:00:00Z,3.27,19.52,61,2.3 +15575806493,43862405466,2025-06-11T05:00:00Z,2.12,26.88,51,2.12 +15572893795,43854545007,2025-06-11T01:00:00Z,2.7,21.89,61,2.34 diff --git a/.ci/scripts/benchmark_tooling/private/mv3_xnnpack-q8_-s22-ultra-_android-14.csv b/.ci/scripts/benchmark_tooling/private/mv3_xnnpack-q8_-s22-ultra-_android-14.csv new file mode 100644 index 00000000000..baa889eefdd --- /dev/null +++ b/.ci/scripts/benchmark_tooling/private/mv3_xnnpack-q8_-s22-ultra-_android-14.csv @@ -0,0 +1,11 @@ +workflow_id,job_id,granularity_bucket,avg_inference_latency(ms),model_load_time(ms),ram_pss_usage(mb),trimmean_inference_latency(ms) +15615520755,43991248116,2025-06-12T17:00:00Z,2.52,16.74,61,2.28 +15605026631,43956669874,2025-06-12T09:00:00Z,6.1,16.49,60,5.44 +15601359910,43943792457,2025-06-12T05:00:00Z,2.6,18.68,61,2.27 +15598383765,43935960659,2025-06-12T01:00:00Z,2.4,19.2,61,2.16 +15594484786,43925468969,2025-06-11T21:00:00Z,2.45,18.41,60,2.21 +15589858447,43914218724,2025-06-11T18:00:00Z,2.59,15.78,60,2.28 +15584331831,43891253427,2025-06-11T13:00:00Z,2.34,21.5,61,2.31 +15579400247,43875126572,2025-06-11T09:00:00Z,2.48,16.43,61,2.23 +15575806493,43862405466,2025-06-11T05:00:00Z,3.78,20.11,61,3.75 +15572893795,43854545007,2025-06-11T01:00:00Z,2.52,23.28,60,2.41 diff --git a/.ci/scripts/benchmark_tooling/private/mv3_xnnpack-q8_-s22-ultra-private_android-14.csv b/.ci/scripts/benchmark_tooling/private/mv3_xnnpack-q8_-s22-ultra-private_android-14.csv new file mode 100644 index 00000000000..baa889eefdd --- /dev/null +++ b/.ci/scripts/benchmark_tooling/private/mv3_xnnpack-q8_-s22-ultra-private_android-14.csv @@ -0,0 +1,11 @@ +workflow_id,job_id,granularity_bucket,avg_inference_latency(ms),model_load_time(ms),ram_pss_usage(mb),trimmean_inference_latency(ms) +15615520755,43991248116,2025-06-12T17:00:00Z,2.52,16.74,61,2.28 +15605026631,43956669874,2025-06-12T09:00:00Z,6.1,16.49,60,5.44 +15601359910,43943792457,2025-06-12T05:00:00Z,2.6,18.68,61,2.27 +15598383765,43935960659,2025-06-12T01:00:00Z,2.4,19.2,61,2.16 +15594484786,43925468969,2025-06-11T21:00:00Z,2.45,18.41,60,2.21 +15589858447,43914218724,2025-06-11T18:00:00Z,2.59,15.78,60,2.28 +15584331831,43891253427,2025-06-11T13:00:00Z,2.34,21.5,61,2.31 +15579400247,43875126572,2025-06-11T09:00:00Z,2.48,16.43,61,2.23 +15575806493,43862405466,2025-06-11T05:00:00Z,3.78,20.11,61,3.75 +15572893795,43854545007,2025-06-11T01:00:00Z,2.52,23.28,60,2.41 diff --git a/.ci/scripts/benchmark_tooling/private/mv3_xnnpack-q8_apple-iphone-15-_ios-18.0.csv b/.ci/scripts/benchmark_tooling/private/mv3_xnnpack-q8_apple-iphone-15-_ios-18.0.csv new file mode 100644 index 00000000000..9d1b4cf5fe7 --- /dev/null +++ b/.ci/scripts/benchmark_tooling/private/mv3_xnnpack-q8_apple-iphone-15-_ios-18.0.csv @@ -0,0 +1,11 @@ +workflow_id,job_id,granularity_bucket,avg_inference_latency(ms),model_load_time(ms),peak_inference_mem_usage(mb),peak_load_mem_usage(mb) +15615480751,43993124686,2025-06-12T17:00:00Z,45,2,27.21,79.02 +15604974289,43958007180,2025-06-12T09:00:00Z,41,2,27.15,79.34 +15601337433,43944770836,2025-06-12T05:00:00Z,50,2,26.89,78.89 +15598277481,43937275861,2025-06-12T01:00:00Z,44,2,27.16,79.4 +15594453833,43926877649,2025-06-11T21:00:00Z,47,2,27.2,79.18 +15589818422,43912035344,2025-06-11T17:00:00Z,43,2,27.08,79.26 +15584268753,43893469529,2025-06-11T13:00:00Z,45,2,27.04,78.96 +15579346239,43876994524,2025-06-11T09:00:00Z,44,2,27.15,79.34 +15575781424,43864061188,2025-06-11T05:00:00Z,45,2,27.18,79.05 +15572789992,43855812660,2025-06-11T01:00:00Z,45,2,27.15,77.44 diff --git a/.ci/scripts/benchmark_tooling/private/mv3_xnnpack-q8_apple-iphone-15-_ios.csv b/.ci/scripts/benchmark_tooling/private/mv3_xnnpack-q8_apple-iphone-15-_ios.csv new file mode 100644 index 00000000000..d6f458a8830 --- /dev/null +++ b/.ci/scripts/benchmark_tooling/private/mv3_xnnpack-q8_apple-iphone-15-_ios.csv @@ -0,0 +1,2 @@ +workflow_id,job_id,granularity_bucket,FAILURE_REPORT +15609910174,43969026143,2025-06-12T12:00:00Z,0 diff --git a/.ci/scripts/benchmark_tooling/private/mv3_xnnpack-q8_apple-iphone-15-plus-_ios-17.4.1.csv b/.ci/scripts/benchmark_tooling/private/mv3_xnnpack-q8_apple-iphone-15-plus-_ios-17.4.1.csv new file mode 100644 index 00000000000..8e34beefbca --- /dev/null +++ b/.ci/scripts/benchmark_tooling/private/mv3_xnnpack-q8_apple-iphone-15-plus-_ios-17.4.1.csv @@ -0,0 +1,11 @@ +workflow_id,job_id,granularity_bucket,avg_inference_latency(ms),model_load_time(ms),peak_inference_mem_usage(mb),peak_load_mem_usage(mb) +15615480751,43993124686,2025-06-12T17:00:00Z,42,2,29.55,90.4 +15604974289,43958007180,2025-06-12T09:00:00Z,37,2,29.55,90.4 +15601337433,43944770836,2025-06-12T05:00:00Z,39,2,29.45,90.31 +15598277481,43937275861,2025-06-12T01:00:00Z,37,2,29.55,90.38 +15594453833,43926877649,2025-06-11T21:00:00Z,51,2,29.47,90.1 +15589818422,43912035344,2025-06-11T17:00:00Z,42,2,29.44,90.25 +15584268753,43893469529,2025-06-11T13:00:00Z,37,2,29.47,90.3 +15579346239,43876994524,2025-06-11T09:00:00Z,40,2,29.55,90.38 +15575781424,43864061188,2025-06-11T05:00:00Z,38,2,29.45,90.35 +15572789992,43855812660,2025-06-11T01:00:00Z,43,2,29.54,89.2 diff --git a/.ci/scripts/benchmark_tooling/private/mv3_xnnpack-q8_apple-iphone-15-plus-private_ios-17.4.1.csv b/.ci/scripts/benchmark_tooling/private/mv3_xnnpack-q8_apple-iphone-15-plus-private_ios-17.4.1.csv new file mode 100644 index 00000000000..8e34beefbca --- /dev/null +++ b/.ci/scripts/benchmark_tooling/private/mv3_xnnpack-q8_apple-iphone-15-plus-private_ios-17.4.1.csv @@ -0,0 +1,11 @@ +workflow_id,job_id,granularity_bucket,avg_inference_latency(ms),model_load_time(ms),peak_inference_mem_usage(mb),peak_load_mem_usage(mb) +15615480751,43993124686,2025-06-12T17:00:00Z,42,2,29.55,90.4 +15604974289,43958007180,2025-06-12T09:00:00Z,37,2,29.55,90.4 +15601337433,43944770836,2025-06-12T05:00:00Z,39,2,29.45,90.31 +15598277481,43937275861,2025-06-12T01:00:00Z,37,2,29.55,90.38 +15594453833,43926877649,2025-06-11T21:00:00Z,51,2,29.47,90.1 +15589818422,43912035344,2025-06-11T17:00:00Z,42,2,29.44,90.25 +15584268753,43893469529,2025-06-11T13:00:00Z,37,2,29.47,90.3 +15579346239,43876994524,2025-06-11T09:00:00Z,40,2,29.55,90.38 +15575781424,43864061188,2025-06-11T05:00:00Z,38,2,29.45,90.35 +15572789992,43855812660,2025-06-11T01:00:00Z,43,2,29.54,89.2 diff --git a/.ci/scripts/benchmark_tooling/private/mv3_xnnpack-q8_apple-iphone-15-private_ios-18.0.csv b/.ci/scripts/benchmark_tooling/private/mv3_xnnpack-q8_apple-iphone-15-private_ios-18.0.csv new file mode 100644 index 00000000000..9d1b4cf5fe7 --- /dev/null +++ b/.ci/scripts/benchmark_tooling/private/mv3_xnnpack-q8_apple-iphone-15-private_ios-18.0.csv @@ -0,0 +1,11 @@ +workflow_id,job_id,granularity_bucket,avg_inference_latency(ms),model_load_time(ms),peak_inference_mem_usage(mb),peak_load_mem_usage(mb) +15615480751,43993124686,2025-06-12T17:00:00Z,45,2,27.21,79.02 +15604974289,43958007180,2025-06-12T09:00:00Z,41,2,27.15,79.34 +15601337433,43944770836,2025-06-12T05:00:00Z,50,2,26.89,78.89 +15598277481,43937275861,2025-06-12T01:00:00Z,44,2,27.16,79.4 +15594453833,43926877649,2025-06-11T21:00:00Z,47,2,27.2,79.18 +15589818422,43912035344,2025-06-11T17:00:00Z,43,2,27.08,79.26 +15584268753,43893469529,2025-06-11T13:00:00Z,45,2,27.04,78.96 +15579346239,43876994524,2025-06-11T09:00:00Z,44,2,27.15,79.34 +15575781424,43864061188,2025-06-11T05:00:00Z,45,2,27.18,79.05 +15572789992,43855812660,2025-06-11T01:00:00Z,45,2,27.15,77.44 diff --git a/.ci/scripts/benchmark_tooling/private/mv3_xnnpack-q8_apple-iphone-15-private_ios.csv b/.ci/scripts/benchmark_tooling/private/mv3_xnnpack-q8_apple-iphone-15-private_ios.csv new file mode 100644 index 00000000000..d6f458a8830 --- /dev/null +++ b/.ci/scripts/benchmark_tooling/private/mv3_xnnpack-q8_apple-iphone-15-private_ios.csv @@ -0,0 +1,2 @@ +workflow_id,job_id,granularity_bucket,FAILURE_REPORT +15609910174,43969026143,2025-06-12T12:00:00Z,0 diff --git a/.ci/scripts/benchmark_tooling/private/mv3_xnnpack-q8_apple-iphone-15-pro-_ios-18.4.1.csv b/.ci/scripts/benchmark_tooling/private/mv3_xnnpack-q8_apple-iphone-15-pro-_ios-18.4.1.csv new file mode 100644 index 00000000000..b37908f8c3b --- /dev/null +++ b/.ci/scripts/benchmark_tooling/private/mv3_xnnpack-q8_apple-iphone-15-pro-_ios-18.4.1.csv @@ -0,0 +1,11 @@ +workflow_id,job_id,granularity_bucket,avg_inference_latency(ms),model_load_time(ms),peak_inference_mem_usage(mb),peak_load_mem_usage(mb) +15615480751,43993124686,2025-06-12T17:00:00Z,25,1,29.98,107.2 +15604974289,43958007180,2025-06-12T09:00:00Z,8,1,29.93,107.72 +15601337433,43944770836,2025-06-12T05:00:00Z,23,1,30.09,107.34 +15598277481,43937275861,2025-06-12T01:00:00Z,14,1,30.43,107.97 +15594453833,43926877649,2025-06-11T21:00:00Z,8,1,30.17,107.55 +15589818422,43912035344,2025-06-11T17:00:00Z,13,1,30.31,107.68 +15584268753,43893469529,2025-06-11T13:00:00Z,22,1,30.36,107.97 +15579346239,43876994524,2025-06-11T09:00:00Z,21,1,30.43,108.09 +15575781424,43864061188,2025-06-11T05:00:00Z,15,1,30.24,107.79 +15572789992,43855812660,2025-06-11T01:00:00Z,13,1,30.25,106.33 diff --git a/.ci/scripts/benchmark_tooling/private/mv3_xnnpack-q8_apple-iphone-15-pro-private_ios-18.4.1.csv b/.ci/scripts/benchmark_tooling/private/mv3_xnnpack-q8_apple-iphone-15-pro-private_ios-18.4.1.csv new file mode 100644 index 00000000000..b37908f8c3b --- /dev/null +++ b/.ci/scripts/benchmark_tooling/private/mv3_xnnpack-q8_apple-iphone-15-pro-private_ios-18.4.1.csv @@ -0,0 +1,11 @@ +workflow_id,job_id,granularity_bucket,avg_inference_latency(ms),model_load_time(ms),peak_inference_mem_usage(mb),peak_load_mem_usage(mb) +15615480751,43993124686,2025-06-12T17:00:00Z,25,1,29.98,107.2 +15604974289,43958007180,2025-06-12T09:00:00Z,8,1,29.93,107.72 +15601337433,43944770836,2025-06-12T05:00:00Z,23,1,30.09,107.34 +15598277481,43937275861,2025-06-12T01:00:00Z,14,1,30.43,107.97 +15594453833,43926877649,2025-06-11T21:00:00Z,8,1,30.17,107.55 +15589818422,43912035344,2025-06-11T17:00:00Z,13,1,30.31,107.68 +15584268753,43893469529,2025-06-11T13:00:00Z,22,1,30.36,107.97 +15579346239,43876994524,2025-06-11T09:00:00Z,21,1,30.43,108.09 +15575781424,43864061188,2025-06-11T05:00:00Z,15,1,30.24,107.79 +15572789992,43855812660,2025-06-11T01:00:00Z,13,1,30.25,106.33 diff --git a/.ci/scripts/benchmark_tooling/private/qwen-qwen3-0.6b_et-xnnpack-custom-spda-kv-cache-8da4w_-s22-_android-13.csv b/.ci/scripts/benchmark_tooling/private/qwen-qwen3-0.6b_et-xnnpack-custom-spda-kv-cache-8da4w_-s22-_android-13.csv new file mode 100644 index 00000000000..b62e2c9ce95 --- /dev/null +++ b/.ci/scripts/benchmark_tooling/private/qwen-qwen3-0.6b_et-xnnpack-custom-spda-kv-cache-8da4w_-s22-_android-13.csv @@ -0,0 +1,37 @@ +workflow_id,job_id,granularity_bucket,avg_inference_latency(ms),llm_model_load_time(ms),model_load_time(ms),ram_pss_usage(mb),token_per_sec,trimmean_inference_latency(ms) +15712320497,44280131792,2025-06-17T17:00:00Z,424.18,1106.1,1019.17,556,62.78,420.11 +15706687362,44261351450,2025-06-17T13:00:00Z,432.56,1091.62,1029.6,566,60.45,430.49 +15701619570,44244323755,2025-06-17T09:00:00Z,426.16,1083.16,1040.34,566,60.63,423.0 +15697890915,44230067957,2025-06-17T05:00:00Z,405.87,973.56,1033.36,567,62.84,401.11 +15694752722,44221381863,2025-06-17T01:00:00Z,443.47,1033.31,1052.8,556,60.31,440.17 +15690721346,44211034387,2025-06-16T21:00:00Z,444.68,1062.63,1041.13,567,59.44,440.8 +15685858387,44195500217,2025-06-16T17:00:00Z,440.76,1025.05,1044.59,566,59.96,436.26 +15680276053,44184994658,2025-06-16T15:00:00Z,436.9,1021.54,1026.61,557,59.07,433.73 +15675229427,44160356972,2025-06-16T09:00:00Z,434.6,1016.89,1021.87,567,61.44,431.37 +15671609250,44146779212,2025-06-16T05:00:00Z,405.6,1021.07,1002.53,556,65.26,402.01 +15668838280,44139310442,2025-06-16T01:00:00Z,444.77,1262.93,1049.53,566,59.52,443.0 +15666871209,44133842083,2025-06-15T21:00:00Z,443.26,1099.69,1035.37,556,58.79,440.74 +15664964842,44129416866,2025-06-15T17:00:00Z,436.4,1071.56,1021.15,566,61.72,432.76 +15662964566,44125237276,2025-06-15T13:00:00Z,432.66,1151.66,1029.37,567,61.02,428.85 +15661066119,44120683489,2025-06-15T09:00:00Z,427.56,1031.25,1032.15,567,60.75,423.42 +15659315239,44116350825,2025-06-15T05:00:00Z,406.02,1060.08,1021.95,555,64.14,402.41 +15655627252,44107937078,2025-06-14T21:00:00Z,444.99,1050.84,1025.27,556,60.72,441.4 +15653757002,44103768469,2025-06-14T17:00:00Z,435.36,1012.23,1018.41,557,60.42,432.0 +15651807296,44099312849,2025-06-14T13:00:00Z,433.48,1139.06,1042.15,556,60.13,430.86 +15650005042,44095041071,2025-06-14T09:00:00Z,434.8,1189.12,1012.44,556,58.6,430.86 +15648224665,44090821985,2025-06-14T05:00:00Z,431.53,1106.7,1037.41,556,61.78,427.24 +15646186941,44086333101,2025-06-14T01:00:00Z,431.86,1234.37,1048.55,556,60.84,429.29 +15642991544,44079110098,2025-06-13T21:00:00Z,428.69,1241.63,1011.23,556,62.15,425.25 +15638881659,44066590049,2025-06-13T17:00:00Z,436.04,1137.45,1048.56,556,60.37,431.52 +15634084872,44050929738,2025-06-13T13:00:00Z,428.68,930.81,1050.98,566,62.37,423.59 +15629618177,44036960905,2025-06-13T09:00:00Z,429.59,1123.06,1023.08,565,64.18,426.0 +15626198493,44024980719,2025-06-13T06:00:00Z,439.5,1191.91,1032.91,557,62.18,437.57 +15624350649,44017079362,2025-06-13T02:00:00Z,436.82,1123.5,1032.53,566,61.23,432.96 +15623548623,44015026219,2025-06-13T01:00:00Z,446.37,1225.8,1052.72,556,59.84,442.78 +15623358659,44014378003,2025-06-13T00:00:00Z,436.73,1086.13,1032.7,566,61.96,432.89 +15622176667,44010845845,2025-06-12T23:00:00Z,452.1,1275.19,1017.63,557,60.63,448.99 +15620193040,44007989435,2025-06-12T22:00:00Z,445.37,1123.02,1029.6,555,60.01,442.52 +15620031250,44009155339,2025-06-12T22:00:00Z,444.61,1128.42,1018.1,556,60.1,441.04 +15595747513,43928023304,2025-06-11T22:00:00Z,447.16,1021.31,1041.52,556,60.48,445.73 +15591303597,43914918634,2025-06-11T18:00:00Z,489.21,,1032.78,588,,489.46 +15574097144,43857046295,2025-06-11T02:00:00Z,484.4,,1026.46,578,,484.27 diff --git a/.ci/scripts/benchmark_tooling/private/qwen-qwen3-0.6b_et-xnnpack-custom-spda-kv-cache-8da4w_-s22-private_android-13.csv b/.ci/scripts/benchmark_tooling/private/qwen-qwen3-0.6b_et-xnnpack-custom-spda-kv-cache-8da4w_-s22-private_android-13.csv new file mode 100644 index 00000000000..b62e2c9ce95 --- /dev/null +++ b/.ci/scripts/benchmark_tooling/private/qwen-qwen3-0.6b_et-xnnpack-custom-spda-kv-cache-8da4w_-s22-private_android-13.csv @@ -0,0 +1,37 @@ +workflow_id,job_id,granularity_bucket,avg_inference_latency(ms),llm_model_load_time(ms),model_load_time(ms),ram_pss_usage(mb),token_per_sec,trimmean_inference_latency(ms) +15712320497,44280131792,2025-06-17T17:00:00Z,424.18,1106.1,1019.17,556,62.78,420.11 +15706687362,44261351450,2025-06-17T13:00:00Z,432.56,1091.62,1029.6,566,60.45,430.49 +15701619570,44244323755,2025-06-17T09:00:00Z,426.16,1083.16,1040.34,566,60.63,423.0 +15697890915,44230067957,2025-06-17T05:00:00Z,405.87,973.56,1033.36,567,62.84,401.11 +15694752722,44221381863,2025-06-17T01:00:00Z,443.47,1033.31,1052.8,556,60.31,440.17 +15690721346,44211034387,2025-06-16T21:00:00Z,444.68,1062.63,1041.13,567,59.44,440.8 +15685858387,44195500217,2025-06-16T17:00:00Z,440.76,1025.05,1044.59,566,59.96,436.26 +15680276053,44184994658,2025-06-16T15:00:00Z,436.9,1021.54,1026.61,557,59.07,433.73 +15675229427,44160356972,2025-06-16T09:00:00Z,434.6,1016.89,1021.87,567,61.44,431.37 +15671609250,44146779212,2025-06-16T05:00:00Z,405.6,1021.07,1002.53,556,65.26,402.01 +15668838280,44139310442,2025-06-16T01:00:00Z,444.77,1262.93,1049.53,566,59.52,443.0 +15666871209,44133842083,2025-06-15T21:00:00Z,443.26,1099.69,1035.37,556,58.79,440.74 +15664964842,44129416866,2025-06-15T17:00:00Z,436.4,1071.56,1021.15,566,61.72,432.76 +15662964566,44125237276,2025-06-15T13:00:00Z,432.66,1151.66,1029.37,567,61.02,428.85 +15661066119,44120683489,2025-06-15T09:00:00Z,427.56,1031.25,1032.15,567,60.75,423.42 +15659315239,44116350825,2025-06-15T05:00:00Z,406.02,1060.08,1021.95,555,64.14,402.41 +15655627252,44107937078,2025-06-14T21:00:00Z,444.99,1050.84,1025.27,556,60.72,441.4 +15653757002,44103768469,2025-06-14T17:00:00Z,435.36,1012.23,1018.41,557,60.42,432.0 +15651807296,44099312849,2025-06-14T13:00:00Z,433.48,1139.06,1042.15,556,60.13,430.86 +15650005042,44095041071,2025-06-14T09:00:00Z,434.8,1189.12,1012.44,556,58.6,430.86 +15648224665,44090821985,2025-06-14T05:00:00Z,431.53,1106.7,1037.41,556,61.78,427.24 +15646186941,44086333101,2025-06-14T01:00:00Z,431.86,1234.37,1048.55,556,60.84,429.29 +15642991544,44079110098,2025-06-13T21:00:00Z,428.69,1241.63,1011.23,556,62.15,425.25 +15638881659,44066590049,2025-06-13T17:00:00Z,436.04,1137.45,1048.56,556,60.37,431.52 +15634084872,44050929738,2025-06-13T13:00:00Z,428.68,930.81,1050.98,566,62.37,423.59 +15629618177,44036960905,2025-06-13T09:00:00Z,429.59,1123.06,1023.08,565,64.18,426.0 +15626198493,44024980719,2025-06-13T06:00:00Z,439.5,1191.91,1032.91,557,62.18,437.57 +15624350649,44017079362,2025-06-13T02:00:00Z,436.82,1123.5,1032.53,566,61.23,432.96 +15623548623,44015026219,2025-06-13T01:00:00Z,446.37,1225.8,1052.72,556,59.84,442.78 +15623358659,44014378003,2025-06-13T00:00:00Z,436.73,1086.13,1032.7,566,61.96,432.89 +15622176667,44010845845,2025-06-12T23:00:00Z,452.1,1275.19,1017.63,557,60.63,448.99 +15620193040,44007989435,2025-06-12T22:00:00Z,445.37,1123.02,1029.6,555,60.01,442.52 +15620031250,44009155339,2025-06-12T22:00:00Z,444.61,1128.42,1018.1,556,60.1,441.04 +15595747513,43928023304,2025-06-11T22:00:00Z,447.16,1021.31,1041.52,556,60.48,445.73 +15591303597,43914918634,2025-06-11T18:00:00Z,489.21,,1032.78,588,,489.46 +15574097144,43857046295,2025-06-11T02:00:00Z,484.4,,1026.46,578,,484.27 diff --git a/.ci/scripts/benchmark_tooling/private/qwen-qwen3-0.6b_et-xnnpack-custom-spda-kv-cache-8da4w_-s22-ultra-_android-14.csv b/.ci/scripts/benchmark_tooling/private/qwen-qwen3-0.6b_et-xnnpack-custom-spda-kv-cache-8da4w_-s22-ultra-_android-14.csv new file mode 100644 index 00000000000..c671bc949d2 --- /dev/null +++ b/.ci/scripts/benchmark_tooling/private/qwen-qwen3-0.6b_et-xnnpack-custom-spda-kv-cache-8da4w_-s22-ultra-_android-14.csv @@ -0,0 +1,37 @@ +workflow_id,job_id,granularity_bucket,avg_inference_latency(ms),llm_model_load_time(ms),model_load_time(ms),ram_pss_usage(mb),token_per_sec,trimmean_inference_latency(ms) +15712320497,44280131792,2025-06-17T17:00:00Z,402.66,846.04,880.93,569,65.22,399.09 +15706687362,44261351450,2025-06-17T13:00:00Z,425.53,855.96,889.49,569,63.29,422.01 +15701619570,44244323755,2025-06-17T09:00:00Z,424.07,878.05,893.41,569,62.21,421.67 +15697890915,44230067957,2025-06-17T05:00:00Z,401.72,846.53,889.05,569,63.78,398.16 +15694752722,44221381863,2025-06-17T01:00:00Z,433.93,1051.35,888.9,569,62.68,430.17 +15690721346,44211034387,2025-06-16T21:00:00Z,440.09,1056.97,894.33,571,62.4,436.46 +15685858387,44195500217,2025-06-16T17:00:00Z,429.14,859.05,895.55,569,63.65,426.95 +15680276053,44184994658,2025-06-16T15:00:00Z,415.5,855.93,896.78,569,64.08,409.64 +15675229427,44160356972,2025-06-16T09:00:00Z,425.54,848.51,889.57,569,64.14,422.27 +15671609250,44146779212,2025-06-16T05:00:00Z,400.66,849.51,938.17,569,65.53,397.58 +15668838280,44139310442,2025-06-16T01:00:00Z,439.6,1055.4,896.27,570,63.26,436.65 +15666871209,44133842083,2025-06-15T21:00:00Z,425.6,850.28,905.08,569,63.29,422.85 +15664964842,44129416866,2025-06-15T17:00:00Z,428.7,858.85,910.19,569,62.91,426.8 +15662964566,44125237276,2025-06-15T13:00:00Z,428.98,852.34,893.77,571,64.04,426.64 +15661066119,44120683489,2025-06-15T09:00:00Z,438.3,851.79,897.77,569,63.81,423.78 +15659315239,44116350825,2025-06-15T05:00:00Z,410.86,838.74,893.59,569,64.58,408.04 +15655627252,44107937078,2025-06-14T21:00:00Z,425.83,851.13,880.53,569,63.62,422.03 +15653757002,44103768469,2025-06-14T17:00:00Z,423.34,853.97,899.31,569,63.85,420.48 +15651807296,44099312849,2025-06-14T13:00:00Z,426.41,847.38,893.07,569,62.94,424.73 +15650005042,44095041071,2025-06-14T09:00:00Z,427.89,843.53,913.65,569,63.91,425.7 +15648224665,44090821985,2025-06-14T05:00:00Z,431.14,853.88,902.01,569,63.88,429.14 +15646186941,44086333101,2025-06-14T01:00:00Z,426.83,849.88,901.2,569,65.43,423.29 +15642991544,44079110098,2025-06-13T21:00:00Z,419.93,851.84,895.98,569,62.78,417.04 +15638881659,44066590049,2025-06-13T17:00:00Z,450.92,856.42,890.45,569,63.26,432.67 +15634084872,44050929738,2025-06-13T13:00:00Z,422.37,850.76,907.73,569,63.85,420.13 +15629618177,44036960905,2025-06-13T09:00:00Z,427.81,857.19,892.55,569,63.42,425.98 +15626198493,44024980719,2025-06-13T06:00:00Z,430.84,861.45,885.06,571,63.04,427.5 +15624350649,44017079362,2025-06-13T02:00:00Z,431.62,849.69,914.89,571,63.2,428.67 +15623548623,44015026219,2025-06-13T01:00:00Z,434.73,861.68,912.8,571,62.34,431.88 +15623358659,44014378003,2025-06-13T00:00:00Z,421.42,858.64,890.23,569,65.22,415.05 +15622176667,44010845845,2025-06-12T23:00:00Z,432.49,868.44,890.38,569,62.03,428.62 +15620193040,44007989435,2025-06-12T22:00:00Z,431.51,855.29,892.58,569,61.63,429.16 +15620031250,44009155339,2025-06-12T22:00:00Z,439.35,867.7,889.26,569,61.63,435.94 +15595747513,43928023304,2025-06-11T22:00:00Z,434.85,859.05,896.41,570,62.53,431.84 +15591303597,43914918634,2025-06-11T18:00:00Z,480.42,,900.39,592,,478.72 +15574097144,43857046295,2025-06-11T02:00:00Z,487.85,,900.58,591,,484.94 diff --git a/.ci/scripts/benchmark_tooling/private/qwen-qwen3-0.6b_et-xnnpack-custom-spda-kv-cache-8da4w_-s22-ultra-private_android-14.csv b/.ci/scripts/benchmark_tooling/private/qwen-qwen3-0.6b_et-xnnpack-custom-spda-kv-cache-8da4w_-s22-ultra-private_android-14.csv new file mode 100644 index 00000000000..c671bc949d2 --- /dev/null +++ b/.ci/scripts/benchmark_tooling/private/qwen-qwen3-0.6b_et-xnnpack-custom-spda-kv-cache-8da4w_-s22-ultra-private_android-14.csv @@ -0,0 +1,37 @@ +workflow_id,job_id,granularity_bucket,avg_inference_latency(ms),llm_model_load_time(ms),model_load_time(ms),ram_pss_usage(mb),token_per_sec,trimmean_inference_latency(ms) +15712320497,44280131792,2025-06-17T17:00:00Z,402.66,846.04,880.93,569,65.22,399.09 +15706687362,44261351450,2025-06-17T13:00:00Z,425.53,855.96,889.49,569,63.29,422.01 +15701619570,44244323755,2025-06-17T09:00:00Z,424.07,878.05,893.41,569,62.21,421.67 +15697890915,44230067957,2025-06-17T05:00:00Z,401.72,846.53,889.05,569,63.78,398.16 +15694752722,44221381863,2025-06-17T01:00:00Z,433.93,1051.35,888.9,569,62.68,430.17 +15690721346,44211034387,2025-06-16T21:00:00Z,440.09,1056.97,894.33,571,62.4,436.46 +15685858387,44195500217,2025-06-16T17:00:00Z,429.14,859.05,895.55,569,63.65,426.95 +15680276053,44184994658,2025-06-16T15:00:00Z,415.5,855.93,896.78,569,64.08,409.64 +15675229427,44160356972,2025-06-16T09:00:00Z,425.54,848.51,889.57,569,64.14,422.27 +15671609250,44146779212,2025-06-16T05:00:00Z,400.66,849.51,938.17,569,65.53,397.58 +15668838280,44139310442,2025-06-16T01:00:00Z,439.6,1055.4,896.27,570,63.26,436.65 +15666871209,44133842083,2025-06-15T21:00:00Z,425.6,850.28,905.08,569,63.29,422.85 +15664964842,44129416866,2025-06-15T17:00:00Z,428.7,858.85,910.19,569,62.91,426.8 +15662964566,44125237276,2025-06-15T13:00:00Z,428.98,852.34,893.77,571,64.04,426.64 +15661066119,44120683489,2025-06-15T09:00:00Z,438.3,851.79,897.77,569,63.81,423.78 +15659315239,44116350825,2025-06-15T05:00:00Z,410.86,838.74,893.59,569,64.58,408.04 +15655627252,44107937078,2025-06-14T21:00:00Z,425.83,851.13,880.53,569,63.62,422.03 +15653757002,44103768469,2025-06-14T17:00:00Z,423.34,853.97,899.31,569,63.85,420.48 +15651807296,44099312849,2025-06-14T13:00:00Z,426.41,847.38,893.07,569,62.94,424.73 +15650005042,44095041071,2025-06-14T09:00:00Z,427.89,843.53,913.65,569,63.91,425.7 +15648224665,44090821985,2025-06-14T05:00:00Z,431.14,853.88,902.01,569,63.88,429.14 +15646186941,44086333101,2025-06-14T01:00:00Z,426.83,849.88,901.2,569,65.43,423.29 +15642991544,44079110098,2025-06-13T21:00:00Z,419.93,851.84,895.98,569,62.78,417.04 +15638881659,44066590049,2025-06-13T17:00:00Z,450.92,856.42,890.45,569,63.26,432.67 +15634084872,44050929738,2025-06-13T13:00:00Z,422.37,850.76,907.73,569,63.85,420.13 +15629618177,44036960905,2025-06-13T09:00:00Z,427.81,857.19,892.55,569,63.42,425.98 +15626198493,44024980719,2025-06-13T06:00:00Z,430.84,861.45,885.06,571,63.04,427.5 +15624350649,44017079362,2025-06-13T02:00:00Z,431.62,849.69,914.89,571,63.2,428.67 +15623548623,44015026219,2025-06-13T01:00:00Z,434.73,861.68,912.8,571,62.34,431.88 +15623358659,44014378003,2025-06-13T00:00:00Z,421.42,858.64,890.23,569,65.22,415.05 +15622176667,44010845845,2025-06-12T23:00:00Z,432.49,868.44,890.38,569,62.03,428.62 +15620193040,44007989435,2025-06-12T22:00:00Z,431.51,855.29,892.58,569,61.63,429.16 +15620031250,44009155339,2025-06-12T22:00:00Z,439.35,867.7,889.26,569,61.63,435.94 +15595747513,43928023304,2025-06-11T22:00:00Z,434.85,859.05,896.41,570,62.53,431.84 +15591303597,43914918634,2025-06-11T18:00:00Z,480.42,,900.39,592,,478.72 +15574097144,43857046295,2025-06-11T02:00:00Z,487.85,,900.58,591,,484.94 diff --git a/.ci/scripts/benchmark_tooling/private/qwen-qwen3-0.6b_et-xnnpack-custom-spda-kv-cache-8da4w_apple-iphone-15-_ios-18.0.csv b/.ci/scripts/benchmark_tooling/private/qwen-qwen3-0.6b_et-xnnpack-custom-spda-kv-cache-8da4w_apple-iphone-15-_ios-18.0.csv new file mode 100644 index 00000000000..765864ba145 --- /dev/null +++ b/.ci/scripts/benchmark_tooling/private/qwen-qwen3-0.6b_et-xnnpack-custom-spda-kv-cache-8da4w_apple-iphone-15-_ios-18.0.csv @@ -0,0 +1,36 @@ +workflow_id,job_id,granularity_bucket,avg_inference_latency(ms),model_load_time(ms),peak_inference_mem_usage(mb),peak_load_mem_usage(mb),token_per_sec +15712278899,44280789008,2025-06-17T17:00:00Z,556,749,476.45,400.18,7.54 +15706619480,44262431638,2025-06-17T13:00:00Z,502,697,482.63,400.18,7.44 +15701565915,44245403612,2025-06-17T09:00:00Z,532,717,476.35,400.01,7.51 +15697865923,44230646970,2025-06-17T05:00:00Z,484,687,475.3,399.48,8.15 +15694639442,44221536444,2025-06-17T01:00:00Z,555,771,476.61,400.31,7.31 +15690685696,44211619421,2025-06-16T21:00:00Z,561,793,476.36,400.15,7.11 +15685808660,44196632637,2025-06-16T17:00:00Z,553,738,476.23,400.18,7.53 +15680206509,44178256230,2025-06-16T13:00:00Z,521,707,476.33,400.1,7.34 +15675176293,44162005966,2025-06-16T10:00:00Z,487,673,475.21,399.49,8.08 +15671584185,44147537983,2025-06-16T06:00:00Z,539,721,476.52,400.25,7.65 +15668756024,44140855631,2025-06-16T02:00:00Z,550,765,476.35,400.1,7.3 +15666856809,44134617851,2025-06-15T22:00:00Z,552,744,476.24,399.98,7.77 +15664949756,44129710892,2025-06-15T17:00:00Z,522,714,476.44,400.19,7.51 +15662940074,44126695148,2025-06-15T15:00:00Z,534,700,476.49,400.34,7.59 +15661046591,44121071601,2025-06-15T10:00:00Z,513,697,476.42,400.02,7.84 +15659301910,44117138781,2025-06-15T06:00:00Z,521,708,475.37,399.42,7.31 +15657354121,44112759100,2025-06-15T02:00:00Z,544,771,476.39,400.3,7.62 +15655612867,44108084740,2025-06-14T21:00:00Z,547,740,476.3,400.25,7.57 +15653742079,44104013228,2025-06-14T17:00:00Z,499,705,476.39,400.25,7.7 +15651786133,44100160145,2025-06-14T14:00:00Z,490,671,475.25,399.48,8.0 +15649987292,44095314814,2025-06-14T09:00:00Z,539,702,476.47,400.27,7.58 +15646107434,44086831907,2025-06-14T02:00:00Z,542,716,476.08,399.84,7.6 +15642962044,44079703037,2025-06-13T21:00:00Z,518,711,475.21,399.31,8.04 +15638842903,44067697635,2025-06-13T17:00:00Z,548,727,476.3,442.64,7.48 +15634027967,44053427212,2025-06-13T14:00:00Z,509,703,477.36,442.85,7.97 +15629571833,44037516912,2025-06-13T09:00:00Z,506,702,476.48,442.56,7.77 +15626172835,44025076952,2025-06-13T06:00:00Z,516,707,475.62,442.1,7.45 +15624350656,44017427531,2025-06-13T02:00:00Z,525,726,475.33,441.75,7.92 +15623548592,44015550286,2025-06-13T01:00:00Z,531,747,476.36,442.7,7.76 +15623257317,44014658492,2025-06-13T01:00:00Z,555,769,475.6,443.4,7.4 +15622176685,44012291031,2025-06-12T23:00:00Z,562,760,475.84,442.51,7.66 +15620031253,44010493569,2025-06-12T23:00:00Z,572,799,476.56,442.82,7.56 +15620193033,44009980865,2025-06-12T22:00:00Z,556,780,476.59,442.4,7.13 +15619707256,44004376808,2025-06-12T20:00:00Z,514,716,475.28,442.5,8.01 +15595747531,43929783821,2025-06-11T22:00:00Z,559,732,476.36,443.24,7.92 diff --git a/.ci/scripts/benchmark_tooling/private/qwen-qwen3-0.6b_et-xnnpack-custom-spda-kv-cache-8da4w_apple-iphone-15-plus-_ios-17.4.1.csv b/.ci/scripts/benchmark_tooling/private/qwen-qwen3-0.6b_et-xnnpack-custom-spda-kv-cache-8da4w_apple-iphone-15-plus-_ios-17.4.1.csv new file mode 100644 index 00000000000..185e780aae8 --- /dev/null +++ b/.ci/scripts/benchmark_tooling/private/qwen-qwen3-0.6b_et-xnnpack-custom-spda-kv-cache-8da4w_apple-iphone-15-plus-_ios-17.4.1.csv @@ -0,0 +1,35 @@ +workflow_id,job_id,granularity_bucket,avg_inference_latency(ms),model_load_time(ms),peak_inference_mem_usage(mb),peak_load_mem_usage(mb),token_per_sec +15712278899,44280789008,2025-06-17T17:00:00Z,569,744,571.26,671.99,6.46 +15706619480,44262431638,2025-06-17T13:00:00Z,572,727,571.38,672.8,6.79 +15701565915,44245403612,2025-06-17T09:00:00Z,555,730,571.44,671.65,6.95 +15697865923,44230646970,2025-06-17T05:00:00Z,566,696,571.47,672.11,7.06 +15694639442,44221536444,2025-06-17T01:00:00Z,635,785,571.32,671.89,6.1 +15690685696,44211619421,2025-06-16T21:00:00Z,588,797,571.41,672.71,6.15 +15685808660,44196632637,2025-06-16T17:00:00Z,612,760,571.31,672.26,6.49 +15680206509,44178256230,2025-06-16T13:00:00Z,550,734,571.33,672.78,6.67 +15675176293,44162005966,2025-06-16T10:00:00Z,528,692,571.59,673.13,6.81 +15671584185,44147537983,2025-06-16T06:00:00Z,541,716,571.43,672.13,6.63 +15666856809,44134617851,2025-06-15T22:00:00Z,583,771,571.42,672.14,6.46 +15664949756,44129710892,2025-06-15T17:00:00Z,558,729,571.49,671.67,6.6 +15662940074,44126695148,2025-06-15T15:00:00Z,564,738,571.44,672.8,6.68 +15661046591,44121071601,2025-06-15T10:00:00Z,563,729,571.51,672.87,6.62 +15659301910,44117138781,2025-06-15T06:00:00Z,562,742,571.51,671.95,6.58 +15657354121,44112759100,2025-06-15T02:00:00Z,572,768,571.44,672.14,6.32 +15655612867,44108084740,2025-06-14T21:00:00Z,564,733,571.44,672.21,6.38 +15653742079,44104013228,2025-06-14T17:00:00Z,559,729,571.35,671.94,6.57 +15651786133,44100160145,2025-06-14T14:00:00Z,529,706,571.39,672.52,6.88 +15649987292,44095314814,2025-06-14T09:00:00Z,560,741,571.34,672.96,6.46 +15646107434,44086831907,2025-06-14T02:00:00Z,561,739,571.53,673.16,6.77 +15642962044,44079703037,2025-06-13T21:00:00Z,575,723,571.47,672.61,6.2 +15638842903,44067697635,2025-06-13T17:00:00Z,550,726,571.21,722.44,6.62 +15634027967,44053427212,2025-06-13T14:00:00Z,563,739,571.41,720.17,6.68 +15629571833,44037516912,2025-06-13T09:00:00Z,554,739,571.42,720.89,6.58 +15626172835,44025076952,2025-06-13T06:00:00Z,561,728,571.36,720.23,6.64 +15624350656,44017427531,2025-06-13T02:00:00Z,546,726,571.23,720.03,6.76 +15623548592,44015550286,2025-06-13T01:00:00Z,553,743,571.4,721.85,6.84 +15623257317,44014658492,2025-06-13T01:00:00Z,587,768,571.41,719.57,6.39 +15622176685,44012291031,2025-06-12T23:00:00Z,586,744,571.36,719.54,6.43 +15620031253,44010493569,2025-06-12T23:00:00Z,603,788,571.36,720.41,5.82 +15620193033,44009980865,2025-06-12T22:00:00Z,590,786,571.39,722.6,6.47 +15619707256,44004376808,2025-06-12T20:00:00Z,564,739,571.6,719.65,6.82 +15595747531,43929783821,2025-06-11T22:00:00Z,553,754,571.4,720.99,6.77 diff --git a/.ci/scripts/benchmark_tooling/private/qwen-qwen3-0.6b_et-xnnpack-custom-spda-kv-cache-8da4w_apple-iphone-15-plus-private_ios-17.4.1.csv b/.ci/scripts/benchmark_tooling/private/qwen-qwen3-0.6b_et-xnnpack-custom-spda-kv-cache-8da4w_apple-iphone-15-plus-private_ios-17.4.1.csv new file mode 100644 index 00000000000..185e780aae8 --- /dev/null +++ b/.ci/scripts/benchmark_tooling/private/qwen-qwen3-0.6b_et-xnnpack-custom-spda-kv-cache-8da4w_apple-iphone-15-plus-private_ios-17.4.1.csv @@ -0,0 +1,35 @@ +workflow_id,job_id,granularity_bucket,avg_inference_latency(ms),model_load_time(ms),peak_inference_mem_usage(mb),peak_load_mem_usage(mb),token_per_sec +15712278899,44280789008,2025-06-17T17:00:00Z,569,744,571.26,671.99,6.46 +15706619480,44262431638,2025-06-17T13:00:00Z,572,727,571.38,672.8,6.79 +15701565915,44245403612,2025-06-17T09:00:00Z,555,730,571.44,671.65,6.95 +15697865923,44230646970,2025-06-17T05:00:00Z,566,696,571.47,672.11,7.06 +15694639442,44221536444,2025-06-17T01:00:00Z,635,785,571.32,671.89,6.1 +15690685696,44211619421,2025-06-16T21:00:00Z,588,797,571.41,672.71,6.15 +15685808660,44196632637,2025-06-16T17:00:00Z,612,760,571.31,672.26,6.49 +15680206509,44178256230,2025-06-16T13:00:00Z,550,734,571.33,672.78,6.67 +15675176293,44162005966,2025-06-16T10:00:00Z,528,692,571.59,673.13,6.81 +15671584185,44147537983,2025-06-16T06:00:00Z,541,716,571.43,672.13,6.63 +15666856809,44134617851,2025-06-15T22:00:00Z,583,771,571.42,672.14,6.46 +15664949756,44129710892,2025-06-15T17:00:00Z,558,729,571.49,671.67,6.6 +15662940074,44126695148,2025-06-15T15:00:00Z,564,738,571.44,672.8,6.68 +15661046591,44121071601,2025-06-15T10:00:00Z,563,729,571.51,672.87,6.62 +15659301910,44117138781,2025-06-15T06:00:00Z,562,742,571.51,671.95,6.58 +15657354121,44112759100,2025-06-15T02:00:00Z,572,768,571.44,672.14,6.32 +15655612867,44108084740,2025-06-14T21:00:00Z,564,733,571.44,672.21,6.38 +15653742079,44104013228,2025-06-14T17:00:00Z,559,729,571.35,671.94,6.57 +15651786133,44100160145,2025-06-14T14:00:00Z,529,706,571.39,672.52,6.88 +15649987292,44095314814,2025-06-14T09:00:00Z,560,741,571.34,672.96,6.46 +15646107434,44086831907,2025-06-14T02:00:00Z,561,739,571.53,673.16,6.77 +15642962044,44079703037,2025-06-13T21:00:00Z,575,723,571.47,672.61,6.2 +15638842903,44067697635,2025-06-13T17:00:00Z,550,726,571.21,722.44,6.62 +15634027967,44053427212,2025-06-13T14:00:00Z,563,739,571.41,720.17,6.68 +15629571833,44037516912,2025-06-13T09:00:00Z,554,739,571.42,720.89,6.58 +15626172835,44025076952,2025-06-13T06:00:00Z,561,728,571.36,720.23,6.64 +15624350656,44017427531,2025-06-13T02:00:00Z,546,726,571.23,720.03,6.76 +15623548592,44015550286,2025-06-13T01:00:00Z,553,743,571.4,721.85,6.84 +15623257317,44014658492,2025-06-13T01:00:00Z,587,768,571.41,719.57,6.39 +15622176685,44012291031,2025-06-12T23:00:00Z,586,744,571.36,719.54,6.43 +15620031253,44010493569,2025-06-12T23:00:00Z,603,788,571.36,720.41,5.82 +15620193033,44009980865,2025-06-12T22:00:00Z,590,786,571.39,722.6,6.47 +15619707256,44004376808,2025-06-12T20:00:00Z,564,739,571.6,719.65,6.82 +15595747531,43929783821,2025-06-11T22:00:00Z,553,754,571.4,720.99,6.77 diff --git a/.ci/scripts/benchmark_tooling/private/qwen-qwen3-0.6b_et-xnnpack-custom-spda-kv-cache-8da4w_apple-iphone-15-private_ios-18.0.csv b/.ci/scripts/benchmark_tooling/private/qwen-qwen3-0.6b_et-xnnpack-custom-spda-kv-cache-8da4w_apple-iphone-15-private_ios-18.0.csv new file mode 100644 index 00000000000..765864ba145 --- /dev/null +++ b/.ci/scripts/benchmark_tooling/private/qwen-qwen3-0.6b_et-xnnpack-custom-spda-kv-cache-8da4w_apple-iphone-15-private_ios-18.0.csv @@ -0,0 +1,36 @@ +workflow_id,job_id,granularity_bucket,avg_inference_latency(ms),model_load_time(ms),peak_inference_mem_usage(mb),peak_load_mem_usage(mb),token_per_sec +15712278899,44280789008,2025-06-17T17:00:00Z,556,749,476.45,400.18,7.54 +15706619480,44262431638,2025-06-17T13:00:00Z,502,697,482.63,400.18,7.44 +15701565915,44245403612,2025-06-17T09:00:00Z,532,717,476.35,400.01,7.51 +15697865923,44230646970,2025-06-17T05:00:00Z,484,687,475.3,399.48,8.15 +15694639442,44221536444,2025-06-17T01:00:00Z,555,771,476.61,400.31,7.31 +15690685696,44211619421,2025-06-16T21:00:00Z,561,793,476.36,400.15,7.11 +15685808660,44196632637,2025-06-16T17:00:00Z,553,738,476.23,400.18,7.53 +15680206509,44178256230,2025-06-16T13:00:00Z,521,707,476.33,400.1,7.34 +15675176293,44162005966,2025-06-16T10:00:00Z,487,673,475.21,399.49,8.08 +15671584185,44147537983,2025-06-16T06:00:00Z,539,721,476.52,400.25,7.65 +15668756024,44140855631,2025-06-16T02:00:00Z,550,765,476.35,400.1,7.3 +15666856809,44134617851,2025-06-15T22:00:00Z,552,744,476.24,399.98,7.77 +15664949756,44129710892,2025-06-15T17:00:00Z,522,714,476.44,400.19,7.51 +15662940074,44126695148,2025-06-15T15:00:00Z,534,700,476.49,400.34,7.59 +15661046591,44121071601,2025-06-15T10:00:00Z,513,697,476.42,400.02,7.84 +15659301910,44117138781,2025-06-15T06:00:00Z,521,708,475.37,399.42,7.31 +15657354121,44112759100,2025-06-15T02:00:00Z,544,771,476.39,400.3,7.62 +15655612867,44108084740,2025-06-14T21:00:00Z,547,740,476.3,400.25,7.57 +15653742079,44104013228,2025-06-14T17:00:00Z,499,705,476.39,400.25,7.7 +15651786133,44100160145,2025-06-14T14:00:00Z,490,671,475.25,399.48,8.0 +15649987292,44095314814,2025-06-14T09:00:00Z,539,702,476.47,400.27,7.58 +15646107434,44086831907,2025-06-14T02:00:00Z,542,716,476.08,399.84,7.6 +15642962044,44079703037,2025-06-13T21:00:00Z,518,711,475.21,399.31,8.04 +15638842903,44067697635,2025-06-13T17:00:00Z,548,727,476.3,442.64,7.48 +15634027967,44053427212,2025-06-13T14:00:00Z,509,703,477.36,442.85,7.97 +15629571833,44037516912,2025-06-13T09:00:00Z,506,702,476.48,442.56,7.77 +15626172835,44025076952,2025-06-13T06:00:00Z,516,707,475.62,442.1,7.45 +15624350656,44017427531,2025-06-13T02:00:00Z,525,726,475.33,441.75,7.92 +15623548592,44015550286,2025-06-13T01:00:00Z,531,747,476.36,442.7,7.76 +15623257317,44014658492,2025-06-13T01:00:00Z,555,769,475.6,443.4,7.4 +15622176685,44012291031,2025-06-12T23:00:00Z,562,760,475.84,442.51,7.66 +15620031253,44010493569,2025-06-12T23:00:00Z,572,799,476.56,442.82,7.56 +15620193033,44009980865,2025-06-12T22:00:00Z,556,780,476.59,442.4,7.13 +15619707256,44004376808,2025-06-12T20:00:00Z,514,716,475.28,442.5,8.01 +15595747531,43929783821,2025-06-11T22:00:00Z,559,732,476.36,443.24,7.92 diff --git a/.ci/scripts/benchmark_tooling/private/qwen-qwen3-0.6b_et-xnnpack-custom-spda-kv-cache-8da4w_apple-iphone-15-pro-_ios-18.4.1.csv b/.ci/scripts/benchmark_tooling/private/qwen-qwen3-0.6b_et-xnnpack-custom-spda-kv-cache-8da4w_apple-iphone-15-pro-_ios-18.4.1.csv new file mode 100644 index 00000000000..fd69d0ee093 --- /dev/null +++ b/.ci/scripts/benchmark_tooling/private/qwen-qwen3-0.6b_et-xnnpack-custom-spda-kv-cache-8da4w_apple-iphone-15-pro-_ios-18.4.1.csv @@ -0,0 +1,36 @@ +workflow_id,job_id,granularity_bucket,avg_inference_latency(ms),model_load_time(ms),peak_inference_mem_usage(mb),peak_load_mem_usage(mb),token_per_sec +15712278899,44280789008,2025-06-17T17:00:00Z,352,544,671.76,399.3,25.39 +15706619480,44262431638,2025-06-17T13:00:00Z,348,532,671.42,399.26,24.75 +15701565915,44245403612,2025-06-17T09:00:00Z,354,535,671.8,399.62,23.93 +15697865923,44230646970,2025-06-17T05:00:00Z,344,524,671.37,399.22,25.63 +15694639442,44221536444,2025-06-17T01:00:00Z,356,559,671.46,399.31,24.56 +15690685696,44211619421,2025-06-16T21:00:00Z,358,562,671.64,399.44,24.77 +15685808660,44196632637,2025-06-16T17:00:00Z,363,552,671.24,399.22,24.47 +15680206509,44178256230,2025-06-16T13:00:00Z,351,537,671.43,399.39,25.13 +15675176293,44162005966,2025-06-16T10:00:00Z,343,523,671.44,399.39,25.92 +15671584185,44147537983,2025-06-16T06:00:00Z,343,533,671.43,399.59,25.91 +15668756024,44140855631,2025-06-16T02:00:00Z,357,553,671.63,399.36,24.58 +15666856809,44134617851,2025-06-15T22:00:00Z,355,556,671.51,399.52,24.68 +15664949756,44129710892,2025-06-15T17:00:00Z,350,547,671.26,399.17,25.57 +15662940074,44126695148,2025-06-15T15:00:00Z,349,540,671.48,399.51,24.31 +15661046591,44121071601,2025-06-15T10:00:00Z,342,544,671.57,399.7,24.64 +15659301910,44117138781,2025-06-15T06:00:00Z,350,534,671.27,399.36,24.7 +15657354121,44112759100,2025-06-15T02:00:00Z,347,540,671.36,399.19,24.37 +15655612867,44108084740,2025-06-14T21:00:00Z,350,540,671.54,399.44,25.0 +15653742079,44104013228,2025-06-14T17:00:00Z,349,537,671.73,399.52,24.15 +15651786133,44100160145,2025-06-14T14:00:00Z,348,529,671.55,399.35,25.75 +15649987292,44095314814,2025-06-14T09:00:00Z,358,537,671.26,399.39,24.04 +15646107434,44086831907,2025-06-14T02:00:00Z,345,528,671.46,399.5,25.27 +15642962044,44079703037,2025-06-13T21:00:00Z,342,522,671.65,399.55,25.19 +15638842903,44067697635,2025-06-13T17:00:00Z,348,538,671.65,443.65,24.76 +15634027967,44053427212,2025-06-13T14:00:00Z,348,538,671.33,443.63,25.57 +15629571833,44037516912,2025-06-13T09:00:00Z,344,533,671.56,443.28,25.06 +15626172835,44025076952,2025-06-13T06:00:00Z,344,531,671.54,443.51,24.8 +15624350656,44017427531,2025-06-13T02:00:00Z,346,530,671.35,442.74,25.73 +15623548592,44015550286,2025-06-13T01:00:00Z,340,536,671.45,443.02,24.75 +15623257317,44014658492,2025-06-13T01:00:00Z,346,545,671.28,443.17,24.18 +15622176685,44012291031,2025-06-12T23:00:00Z,351,538,671.64,443.36,24.54 +15620031253,44010493569,2025-06-12T23:00:00Z,356,555,671.41,443.2,25.13 +15620193033,44009980865,2025-06-12T22:00:00Z,354,549,671.55,443.49,24.58 +15619707256,44004376808,2025-06-12T20:00:00Z,347,529,671.38,443.44,25.43 +15595747531,43929783821,2025-06-11T22:00:00Z,348,542,671.64,444.11,25.96 diff --git a/.ci/scripts/benchmark_tooling/private/qwen-qwen3-0.6b_et-xnnpack-custom-spda-kv-cache-8da4w_apple-iphone-15-pro-private_ios-18.4.1.csv b/.ci/scripts/benchmark_tooling/private/qwen-qwen3-0.6b_et-xnnpack-custom-spda-kv-cache-8da4w_apple-iphone-15-pro-private_ios-18.4.1.csv new file mode 100644 index 00000000000..fd69d0ee093 --- /dev/null +++ b/.ci/scripts/benchmark_tooling/private/qwen-qwen3-0.6b_et-xnnpack-custom-spda-kv-cache-8da4w_apple-iphone-15-pro-private_ios-18.4.1.csv @@ -0,0 +1,36 @@ +workflow_id,job_id,granularity_bucket,avg_inference_latency(ms),model_load_time(ms),peak_inference_mem_usage(mb),peak_load_mem_usage(mb),token_per_sec +15712278899,44280789008,2025-06-17T17:00:00Z,352,544,671.76,399.3,25.39 +15706619480,44262431638,2025-06-17T13:00:00Z,348,532,671.42,399.26,24.75 +15701565915,44245403612,2025-06-17T09:00:00Z,354,535,671.8,399.62,23.93 +15697865923,44230646970,2025-06-17T05:00:00Z,344,524,671.37,399.22,25.63 +15694639442,44221536444,2025-06-17T01:00:00Z,356,559,671.46,399.31,24.56 +15690685696,44211619421,2025-06-16T21:00:00Z,358,562,671.64,399.44,24.77 +15685808660,44196632637,2025-06-16T17:00:00Z,363,552,671.24,399.22,24.47 +15680206509,44178256230,2025-06-16T13:00:00Z,351,537,671.43,399.39,25.13 +15675176293,44162005966,2025-06-16T10:00:00Z,343,523,671.44,399.39,25.92 +15671584185,44147537983,2025-06-16T06:00:00Z,343,533,671.43,399.59,25.91 +15668756024,44140855631,2025-06-16T02:00:00Z,357,553,671.63,399.36,24.58 +15666856809,44134617851,2025-06-15T22:00:00Z,355,556,671.51,399.52,24.68 +15664949756,44129710892,2025-06-15T17:00:00Z,350,547,671.26,399.17,25.57 +15662940074,44126695148,2025-06-15T15:00:00Z,349,540,671.48,399.51,24.31 +15661046591,44121071601,2025-06-15T10:00:00Z,342,544,671.57,399.7,24.64 +15659301910,44117138781,2025-06-15T06:00:00Z,350,534,671.27,399.36,24.7 +15657354121,44112759100,2025-06-15T02:00:00Z,347,540,671.36,399.19,24.37 +15655612867,44108084740,2025-06-14T21:00:00Z,350,540,671.54,399.44,25.0 +15653742079,44104013228,2025-06-14T17:00:00Z,349,537,671.73,399.52,24.15 +15651786133,44100160145,2025-06-14T14:00:00Z,348,529,671.55,399.35,25.75 +15649987292,44095314814,2025-06-14T09:00:00Z,358,537,671.26,399.39,24.04 +15646107434,44086831907,2025-06-14T02:00:00Z,345,528,671.46,399.5,25.27 +15642962044,44079703037,2025-06-13T21:00:00Z,342,522,671.65,399.55,25.19 +15638842903,44067697635,2025-06-13T17:00:00Z,348,538,671.65,443.65,24.76 +15634027967,44053427212,2025-06-13T14:00:00Z,348,538,671.33,443.63,25.57 +15629571833,44037516912,2025-06-13T09:00:00Z,344,533,671.56,443.28,25.06 +15626172835,44025076952,2025-06-13T06:00:00Z,344,531,671.54,443.51,24.8 +15624350656,44017427531,2025-06-13T02:00:00Z,346,530,671.35,442.74,25.73 +15623548592,44015550286,2025-06-13T01:00:00Z,340,536,671.45,443.02,24.75 +15623257317,44014658492,2025-06-13T01:00:00Z,346,545,671.28,443.17,24.18 +15622176685,44012291031,2025-06-12T23:00:00Z,351,538,671.64,443.36,24.54 +15620031253,44010493569,2025-06-12T23:00:00Z,356,555,671.41,443.2,25.13 +15620193033,44009980865,2025-06-12T22:00:00Z,354,549,671.55,443.49,24.58 +15619707256,44004376808,2025-06-12T20:00:00Z,347,529,671.38,443.44,25.43 +15595747531,43929783821,2025-06-11T22:00:00Z,348,542,671.64,444.11,25.96 diff --git a/.ci/scripts/benchmark_tooling/private/qwen-qwen3-0.6b_hf-xnnpack-custom-spda-kv-cache-8da4w_-s22-_android-13.csv b/.ci/scripts/benchmark_tooling/private/qwen-qwen3-0.6b_hf-xnnpack-custom-spda-kv-cache-8da4w_-s22-_android-13.csv new file mode 100644 index 00000000000..9f2b10c05b0 --- /dev/null +++ b/.ci/scripts/benchmark_tooling/private/qwen-qwen3-0.6b_hf-xnnpack-custom-spda-kv-cache-8da4w_-s22-_android-13.csv @@ -0,0 +1,38 @@ +workflow_id,job_id,granularity_bucket,avg_inference_latency(ms),llm_model_load_time(ms),model_load_time(ms),ram_pss_usage(mb),token_per_sec,trimmean_inference_latency(ms) +15712320497,44280131792,2025-06-17T17:00:00Z,12.25,1686.22,1154.95,991,60.34,12.22 +15706687362,44261351450,2025-06-17T13:00:00Z,12.49,1520.18,1220.63,992,61.96,12.46 +15701619570,44244323755,2025-06-17T09:00:00Z,12.73,1406.72,1171.25,981,65.29,12.65 +15697890915,44230067957,2025-06-17T05:00:00Z,12.9,1641.5,1213.58,981,61.78,12.83 +15694752722,44221381863,2025-06-17T01:00:00Z,12.93,1539.02,1223.44,1011,60.34,12.88 +15690721346,44211034387,2025-06-16T21:00:00Z,13.64,1709.69,1186.66,1001,61.08,13.58 +15685858387,44195500217,2025-06-16T17:00:00Z,12.85,1551.69,1261.88,1001,61.81,12.83 +15680276053,44184994658,2025-06-16T15:00:00Z,12.67,1471.94,1187.41,1011,60.75,12.58 +15675229427,44160356972,2025-06-16T09:00:00Z,13.58,1535.61,1217.73,1011,61.08,13.51 +15671609250,44146779212,2025-06-16T05:00:00Z,13.33,1730.93,1180.36,1011,62.18,13.29 +15668838280,44139310442,2025-06-16T01:00:00Z,14.49,1668.7,1226.0,1011,59.87,13.64 +15666871209,44133842083,2025-06-15T21:00:00Z,12.37,1411.23,1291.48,1011,61.66,12.24 +15664964842,44129416866,2025-06-15T17:00:00Z,13.8,1615.79,1220.03,1001,62.59,13.47 +15662964566,44125237276,2025-06-15T13:00:00Z,12.47,1746.59,1193.11,1003,62.31,12.43 +15661066119,44120683489,2025-06-15T09:00:00Z,12.2,1596.2,1215.02,1011,62.03,12.18 +15659315239,44116350825,2025-06-15T05:00:00Z,13.73,1630.07,1285.66,1001,62.91,13.46 +15655627252,44107937078,2025-06-14T21:00:00Z,12.46,1513.66,1215.59,1012,60.87,12.38 +15653757002,44103768469,2025-06-14T17:00:00Z,12.44,1556.23,1222.76,1000,61.59,12.42 +15651807296,44099312849,2025-06-14T13:00:00Z,12.72,1660.05,1311.14,1002,62.24,12.68 +15650005042,44095041071,2025-06-14T09:00:00Z,12.43,1433.52,1197.58,1000,63.52,12.4 +15648224665,44090821985,2025-06-14T05:00:00Z,13.57,1818.3,1211.12,1011,62.65,13.54 +15646186941,44086333101,2025-06-14T01:00:00Z,12.79,1759.42,1232.08,1011,61.87,12.76 +15642991544,44079110098,2025-06-13T21:00:00Z,12.27,1602.04,1180.57,1013,60.37,12.24 +15638881659,44066590049,2025-06-13T17:00:00Z,12.31,1826.18,1223.47,1001,64.71,12.25 +15634084872,44050929738,2025-06-13T13:00:00Z,17.28,1691.76,1221.47,1001,61.78,16.1 +15629618177,44036960905,2025-06-13T09:00:00Z,13.87,1498.39,1366.16,1011,63.58,13.83 +15624350649,44017079362,2025-06-13T02:00:00Z,12.56,1778.31,1216.92,1001,62.62,12.49 +15623548623,44015026219,2025-06-13T01:00:00Z,12.1,1644.96,1233.72,1001,61.23,12.08 +15623358659,44014378003,2025-06-13T00:00:00Z,13.34,1684.01,1184.87,1011,60.9,13.29 +15622176667,44010845845,2025-06-12T23:00:00Z,12.48,1659.96,1179.39,1001,60.22,12.45 +15620193040,44007989435,2025-06-12T22:00:00Z,13.44,1626.63,1480.95,1010,59.96,13.41 +15620031250,44009155339,2025-06-12T22:00:00Z,13.6,1635.04,1328.64,1000,62.0,13.21 +15617200301,44000086806,2025-06-12T19:00:00Z,12.69,1630.04,1159.83,1001,63.1,12.67 +15617200301,43996424527,2025-06-12T18:00:00Z,13.09,1705.28,1219.98,1000,60.37,12.85 +15595747513,43928023304,2025-06-11T22:00:00Z,13.31,1576.39,1190.12,1001,61.87,13.26 +15591303597,43914918634,2025-06-11T18:00:00Z,13.25,,1255.97,1015,,12.93 +15574097144,43857046295,2025-06-11T02:00:00Z,13.09,,1169.45,1023,,12.66 diff --git a/.ci/scripts/benchmark_tooling/private/qwen-qwen3-0.6b_hf-xnnpack-custom-spda-kv-cache-8da4w_-s22-private_android-13.csv b/.ci/scripts/benchmark_tooling/private/qwen-qwen3-0.6b_hf-xnnpack-custom-spda-kv-cache-8da4w_-s22-private_android-13.csv new file mode 100644 index 00000000000..9f2b10c05b0 --- /dev/null +++ b/.ci/scripts/benchmark_tooling/private/qwen-qwen3-0.6b_hf-xnnpack-custom-spda-kv-cache-8da4w_-s22-private_android-13.csv @@ -0,0 +1,38 @@ +workflow_id,job_id,granularity_bucket,avg_inference_latency(ms),llm_model_load_time(ms),model_load_time(ms),ram_pss_usage(mb),token_per_sec,trimmean_inference_latency(ms) +15712320497,44280131792,2025-06-17T17:00:00Z,12.25,1686.22,1154.95,991,60.34,12.22 +15706687362,44261351450,2025-06-17T13:00:00Z,12.49,1520.18,1220.63,992,61.96,12.46 +15701619570,44244323755,2025-06-17T09:00:00Z,12.73,1406.72,1171.25,981,65.29,12.65 +15697890915,44230067957,2025-06-17T05:00:00Z,12.9,1641.5,1213.58,981,61.78,12.83 +15694752722,44221381863,2025-06-17T01:00:00Z,12.93,1539.02,1223.44,1011,60.34,12.88 +15690721346,44211034387,2025-06-16T21:00:00Z,13.64,1709.69,1186.66,1001,61.08,13.58 +15685858387,44195500217,2025-06-16T17:00:00Z,12.85,1551.69,1261.88,1001,61.81,12.83 +15680276053,44184994658,2025-06-16T15:00:00Z,12.67,1471.94,1187.41,1011,60.75,12.58 +15675229427,44160356972,2025-06-16T09:00:00Z,13.58,1535.61,1217.73,1011,61.08,13.51 +15671609250,44146779212,2025-06-16T05:00:00Z,13.33,1730.93,1180.36,1011,62.18,13.29 +15668838280,44139310442,2025-06-16T01:00:00Z,14.49,1668.7,1226.0,1011,59.87,13.64 +15666871209,44133842083,2025-06-15T21:00:00Z,12.37,1411.23,1291.48,1011,61.66,12.24 +15664964842,44129416866,2025-06-15T17:00:00Z,13.8,1615.79,1220.03,1001,62.59,13.47 +15662964566,44125237276,2025-06-15T13:00:00Z,12.47,1746.59,1193.11,1003,62.31,12.43 +15661066119,44120683489,2025-06-15T09:00:00Z,12.2,1596.2,1215.02,1011,62.03,12.18 +15659315239,44116350825,2025-06-15T05:00:00Z,13.73,1630.07,1285.66,1001,62.91,13.46 +15655627252,44107937078,2025-06-14T21:00:00Z,12.46,1513.66,1215.59,1012,60.87,12.38 +15653757002,44103768469,2025-06-14T17:00:00Z,12.44,1556.23,1222.76,1000,61.59,12.42 +15651807296,44099312849,2025-06-14T13:00:00Z,12.72,1660.05,1311.14,1002,62.24,12.68 +15650005042,44095041071,2025-06-14T09:00:00Z,12.43,1433.52,1197.58,1000,63.52,12.4 +15648224665,44090821985,2025-06-14T05:00:00Z,13.57,1818.3,1211.12,1011,62.65,13.54 +15646186941,44086333101,2025-06-14T01:00:00Z,12.79,1759.42,1232.08,1011,61.87,12.76 +15642991544,44079110098,2025-06-13T21:00:00Z,12.27,1602.04,1180.57,1013,60.37,12.24 +15638881659,44066590049,2025-06-13T17:00:00Z,12.31,1826.18,1223.47,1001,64.71,12.25 +15634084872,44050929738,2025-06-13T13:00:00Z,17.28,1691.76,1221.47,1001,61.78,16.1 +15629618177,44036960905,2025-06-13T09:00:00Z,13.87,1498.39,1366.16,1011,63.58,13.83 +15624350649,44017079362,2025-06-13T02:00:00Z,12.56,1778.31,1216.92,1001,62.62,12.49 +15623548623,44015026219,2025-06-13T01:00:00Z,12.1,1644.96,1233.72,1001,61.23,12.08 +15623358659,44014378003,2025-06-13T00:00:00Z,13.34,1684.01,1184.87,1011,60.9,13.29 +15622176667,44010845845,2025-06-12T23:00:00Z,12.48,1659.96,1179.39,1001,60.22,12.45 +15620193040,44007989435,2025-06-12T22:00:00Z,13.44,1626.63,1480.95,1010,59.96,13.41 +15620031250,44009155339,2025-06-12T22:00:00Z,13.6,1635.04,1328.64,1000,62.0,13.21 +15617200301,44000086806,2025-06-12T19:00:00Z,12.69,1630.04,1159.83,1001,63.1,12.67 +15617200301,43996424527,2025-06-12T18:00:00Z,13.09,1705.28,1219.98,1000,60.37,12.85 +15595747513,43928023304,2025-06-11T22:00:00Z,13.31,1576.39,1190.12,1001,61.87,13.26 +15591303597,43914918634,2025-06-11T18:00:00Z,13.25,,1255.97,1015,,12.93 +15574097144,43857046295,2025-06-11T02:00:00Z,13.09,,1169.45,1023,,12.66 diff --git a/.ci/scripts/benchmark_tooling/private/qwen-qwen3-0.6b_hf-xnnpack-custom-spda-kv-cache-8da4w_-s22-ultra-_android-14.csv b/.ci/scripts/benchmark_tooling/private/qwen-qwen3-0.6b_hf-xnnpack-custom-spda-kv-cache-8da4w_-s22-ultra-_android-14.csv new file mode 100644 index 00000000000..6795ea1ee20 --- /dev/null +++ b/.ci/scripts/benchmark_tooling/private/qwen-qwen3-0.6b_hf-xnnpack-custom-spda-kv-cache-8da4w_-s22-ultra-_android-14.csv @@ -0,0 +1,38 @@ +workflow_id,job_id,granularity_bucket,avg_inference_latency(ms),llm_model_load_time(ms),model_load_time(ms),ram_pss_usage(mb),token_per_sec,trimmean_inference_latency(ms) +15712320497,44280131792,2025-06-17T17:00:00Z,12.65,1002.56,908.34,996,62.46,12.63 +15706687362,44261351450,2025-06-17T13:00:00Z,12.8,1017.73,919.92,994,61.26,12.68 +15701619570,44244323755,2025-06-17T09:00:00Z,13.05,991.71,941.68,994,63.07,12.99 +15697890915,44230067957,2025-06-17T05:00:00Z,13.95,987.66,918.25,995,63.68,13.91 +15694752722,44221381863,2025-06-17T01:00:00Z,12.84,1018.07,931.21,1014,62.24,12.83 +15690721346,44211034387,2025-06-16T21:00:00Z,12.76,1007.29,919.43,1014,63.23,12.74 +15685858387,44195500217,2025-06-16T17:00:00Z,13.46,1032.09,927.87,1016,62.65,13.44 +15680276053,44184994658,2025-06-16T15:00:00Z,12.99,1032.43,961.68,1014,62.84,12.96 +15675229427,44160356972,2025-06-16T09:00:00Z,12.84,1026.2,926.28,1014,62.88,12.82 +15671609250,44146779212,2025-06-16T05:00:00Z,12.78,1032.06,931.34,1014,62.4,12.73 +15668838280,44139310442,2025-06-16T01:00:00Z,13.08,1025.62,927.85,1014,62.37,13.03 +15666871209,44133842083,2025-06-15T21:00:00Z,12.96,1039.63,934.67,1014,63.16,12.93 +15664964842,44129416866,2025-06-15T17:00:00Z,12.82,1021.37,918.97,1014,61.44,12.77 +15662964566,44125237276,2025-06-15T13:00:00Z,12.67,1041.92,949.66,1014,63.26,12.65 +15661066119,44120683489,2025-06-15T09:00:00Z,13.03,1016.13,930.51,1014,61.02,12.95 +15659315239,44116350825,2025-06-15T05:00:00Z,12.72,1026.22,922.23,1014,64.04,12.68 +15655627252,44107937078,2025-06-14T21:00:00Z,12.88,1022.0,919.87,1014,62.72,12.82 +15653757002,44103768469,2025-06-14T17:00:00Z,13.19,1024.15,916.75,1015,62.81,13.01 +15651807296,44099312849,2025-06-14T13:00:00Z,13.06,1004.62,943.66,1014,64.18,13.01 +15650005042,44095041071,2025-06-14T09:00:00Z,12.56,1004.51,937.89,1014,64.08,12.54 +15648224665,44090821985,2025-06-14T05:00:00Z,12.67,1020.59,921.19,1014,63.49,12.65 +15646186941,44086333101,2025-06-14T01:00:00Z,12.87,1036.56,928.25,1015,64.31,12.83 +15642991544,44079110098,2025-06-13T21:00:00Z,12.99,1018.38,935.96,1014,63.1,12.91 +15638881659,44066590049,2025-06-13T17:00:00Z,13.42,994.64,940.29,1014,63.55,13.33 +15634084872,44050929738,2025-06-13T13:00:00Z,12.85,1027.97,928.56,1014,62.4,12.8 +15629618177,44036960905,2025-06-13T09:00:00Z,12.65,1011.41,930.7,1014,63.36,12.63 +15624350649,44017079362,2025-06-13T02:00:00Z,13.37,1026.86,926.18,1016,64.44,13.27 +15623548623,44015026219,2025-06-13T01:00:00Z,12.7,1022.09,946.27,1014,60.87,12.64 +15623358659,44014378003,2025-06-13T00:00:00Z,12.76,1028.99,941.36,1014,61.2,12.76 +15622176667,44010845845,2025-06-12T23:00:00Z,14.35,1023.57,925.91,1015,62.12,13.83 +15620193040,44007989435,2025-06-12T22:00:00Z,13.19,1027.38,986.19,1014,61.47,13.15 +15620031250,44009155339,2025-06-12T22:00:00Z,12.71,1016.83,936.84,1014,62.24,12.66 +15617200301,44000086806,2025-06-12T19:00:00Z,12.77,1026.74,952.07,1014,63.04,12.73 +15617200301,43996424527,2025-06-12T18:00:00Z,13.55,1023.94,942.68,1014,64.81,13.5 +15595747513,43928023304,2025-06-11T22:00:00Z,13.24,1006.61,937.56,1015,62.81,13.22 +15591303597,43914918634,2025-06-11T18:00:00Z,13.66,,927.47,1028,,13.64 +15574097144,43857046295,2025-06-11T02:00:00Z,13.34,,968.12,1026,,13.32 diff --git a/.ci/scripts/benchmark_tooling/private/qwen-qwen3-0.6b_hf-xnnpack-custom-spda-kv-cache-8da4w_-s22-ultra-private_android-14.csv b/.ci/scripts/benchmark_tooling/private/qwen-qwen3-0.6b_hf-xnnpack-custom-spda-kv-cache-8da4w_-s22-ultra-private_android-14.csv new file mode 100644 index 00000000000..6795ea1ee20 --- /dev/null +++ b/.ci/scripts/benchmark_tooling/private/qwen-qwen3-0.6b_hf-xnnpack-custom-spda-kv-cache-8da4w_-s22-ultra-private_android-14.csv @@ -0,0 +1,38 @@ +workflow_id,job_id,granularity_bucket,avg_inference_latency(ms),llm_model_load_time(ms),model_load_time(ms),ram_pss_usage(mb),token_per_sec,trimmean_inference_latency(ms) +15712320497,44280131792,2025-06-17T17:00:00Z,12.65,1002.56,908.34,996,62.46,12.63 +15706687362,44261351450,2025-06-17T13:00:00Z,12.8,1017.73,919.92,994,61.26,12.68 +15701619570,44244323755,2025-06-17T09:00:00Z,13.05,991.71,941.68,994,63.07,12.99 +15697890915,44230067957,2025-06-17T05:00:00Z,13.95,987.66,918.25,995,63.68,13.91 +15694752722,44221381863,2025-06-17T01:00:00Z,12.84,1018.07,931.21,1014,62.24,12.83 +15690721346,44211034387,2025-06-16T21:00:00Z,12.76,1007.29,919.43,1014,63.23,12.74 +15685858387,44195500217,2025-06-16T17:00:00Z,13.46,1032.09,927.87,1016,62.65,13.44 +15680276053,44184994658,2025-06-16T15:00:00Z,12.99,1032.43,961.68,1014,62.84,12.96 +15675229427,44160356972,2025-06-16T09:00:00Z,12.84,1026.2,926.28,1014,62.88,12.82 +15671609250,44146779212,2025-06-16T05:00:00Z,12.78,1032.06,931.34,1014,62.4,12.73 +15668838280,44139310442,2025-06-16T01:00:00Z,13.08,1025.62,927.85,1014,62.37,13.03 +15666871209,44133842083,2025-06-15T21:00:00Z,12.96,1039.63,934.67,1014,63.16,12.93 +15664964842,44129416866,2025-06-15T17:00:00Z,12.82,1021.37,918.97,1014,61.44,12.77 +15662964566,44125237276,2025-06-15T13:00:00Z,12.67,1041.92,949.66,1014,63.26,12.65 +15661066119,44120683489,2025-06-15T09:00:00Z,13.03,1016.13,930.51,1014,61.02,12.95 +15659315239,44116350825,2025-06-15T05:00:00Z,12.72,1026.22,922.23,1014,64.04,12.68 +15655627252,44107937078,2025-06-14T21:00:00Z,12.88,1022.0,919.87,1014,62.72,12.82 +15653757002,44103768469,2025-06-14T17:00:00Z,13.19,1024.15,916.75,1015,62.81,13.01 +15651807296,44099312849,2025-06-14T13:00:00Z,13.06,1004.62,943.66,1014,64.18,13.01 +15650005042,44095041071,2025-06-14T09:00:00Z,12.56,1004.51,937.89,1014,64.08,12.54 +15648224665,44090821985,2025-06-14T05:00:00Z,12.67,1020.59,921.19,1014,63.49,12.65 +15646186941,44086333101,2025-06-14T01:00:00Z,12.87,1036.56,928.25,1015,64.31,12.83 +15642991544,44079110098,2025-06-13T21:00:00Z,12.99,1018.38,935.96,1014,63.1,12.91 +15638881659,44066590049,2025-06-13T17:00:00Z,13.42,994.64,940.29,1014,63.55,13.33 +15634084872,44050929738,2025-06-13T13:00:00Z,12.85,1027.97,928.56,1014,62.4,12.8 +15629618177,44036960905,2025-06-13T09:00:00Z,12.65,1011.41,930.7,1014,63.36,12.63 +15624350649,44017079362,2025-06-13T02:00:00Z,13.37,1026.86,926.18,1016,64.44,13.27 +15623548623,44015026219,2025-06-13T01:00:00Z,12.7,1022.09,946.27,1014,60.87,12.64 +15623358659,44014378003,2025-06-13T00:00:00Z,12.76,1028.99,941.36,1014,61.2,12.76 +15622176667,44010845845,2025-06-12T23:00:00Z,14.35,1023.57,925.91,1015,62.12,13.83 +15620193040,44007989435,2025-06-12T22:00:00Z,13.19,1027.38,986.19,1014,61.47,13.15 +15620031250,44009155339,2025-06-12T22:00:00Z,12.71,1016.83,936.84,1014,62.24,12.66 +15617200301,44000086806,2025-06-12T19:00:00Z,12.77,1026.74,952.07,1014,63.04,12.73 +15617200301,43996424527,2025-06-12T18:00:00Z,13.55,1023.94,942.68,1014,64.81,13.5 +15595747513,43928023304,2025-06-11T22:00:00Z,13.24,1006.61,937.56,1015,62.81,13.22 +15591303597,43914918634,2025-06-11T18:00:00Z,13.66,,927.47,1028,,13.64 +15574097144,43857046295,2025-06-11T02:00:00Z,13.34,,968.12,1026,,13.32 diff --git a/.ci/scripts/benchmark_tooling/private/qwen-qwen3-0.6b_hf-xnnpack-custom-spda-kv-cache-8da4w_apple-iphone-15-_ios-18.0.csv b/.ci/scripts/benchmark_tooling/private/qwen-qwen3-0.6b_hf-xnnpack-custom-spda-kv-cache-8da4w_apple-iphone-15-_ios-18.0.csv new file mode 100644 index 00000000000..be92a91ca8e --- /dev/null +++ b/.ci/scripts/benchmark_tooling/private/qwen-qwen3-0.6b_hf-xnnpack-custom-spda-kv-cache-8da4w_apple-iphone-15-_ios-18.0.csv @@ -0,0 +1,34 @@ +workflow_id,job_id,granularity_bucket,avg_inference_latency(ms),model_load_time(ms),peak_inference_mem_usage(mb),peak_load_mem_usage(mb),token_per_sec +15712278899,44280789008,2025-06-17T17:00:00Z,131,728,919.5,821.69,6.94 +15706619480,44262431638,2025-06-17T13:00:00Z,122,678,919.38,821.98,7.03 +15701565915,44245403612,2025-06-17T09:00:00Z,118,674,919.37,822.63,7.54 +15697865923,44230646970,2025-06-17T05:00:00Z,131,693,919.39,821.67,7.1 +15694639442,44221536444,2025-06-17T01:00:00Z,130,770,917.51,840.39,7.03 +15690685696,44211619421,2025-06-16T21:00:00Z,132,761,917.86,840.39,6.97 +15685808660,44196632637,2025-06-16T17:00:00Z,110,723,917.51,840.97,7.35 +15680206509,44178256230,2025-06-16T13:00:00Z,122,708,917.95,840.14,7.14 +15675176293,44162005966,2025-06-16T10:00:00Z,123,701,917.9,840.34,6.86 +15671584185,44147537983,2025-06-16T06:00:00Z,112,699,917.57,840.62,6.98 +15661046591,44121071601,2025-06-15T10:00:00Z,111,690,917.74,841.21,6.91 +15659301910,44117138781,2025-06-15T06:00:00Z,108,681,916.76,841.08,7.69 +15655612867,44108084740,2025-06-14T21:00:00Z,120,740,917.74,840.97,6.99 +15653742079,44104013228,2025-06-14T17:00:00Z,109,669,918.07,840.36,7.86 +15651786133,44100160145,2025-06-14T14:00:00Z,110,690,917.93,840.94,7.2 +15649987292,44095314814,2025-06-14T09:00:00Z,117,703,917.78,840.51,7.02 +15646107434,44086831907,2025-06-14T02:00:00Z,120,689,917.56,841.09,7.37 +15642962044,44079703037,2025-06-13T21:00:00Z,111,730,917.46,840.98,6.95 +15638842903,44067697635,2025-06-13T17:00:00Z,111,711,917.68,886.73,7.14 +15634027967,44053427212,2025-06-13T14:00:00Z,119,694,917.7,886.86,7.15 +15629571833,44037516912,2025-06-13T09:00:00Z,108,686,917.69,886.82,7.18 +15626172835,44025076952,2025-06-13T06:00:00Z,125,700,917.54,886.72,7.16 +15624350656,44017427531,2025-06-13T02:00:00Z,118,736,917.63,887.51,6.71 +15623548592,44015550286,2025-06-13T01:00:00Z,124,761,917.56,887.72,6.67 +15623257317,44014658492,2025-06-13T01:00:00Z,115,724,917.57,887.68,7.55 +15622176685,44012291031,2025-06-12T23:00:00Z,117,759,917.44,887.51,6.94 +15620031253,44010493569,2025-06-12T23:00:00Z,116,770,917.69,888.19,6.99 +15620193033,44009980865,2025-06-12T22:00:00Z,118,764,917.79,888.31,6.95 +15619707256,44004376808,2025-06-12T20:00:00Z,109,754,917.7,888.06,6.73 +15618130191,44001150742,2025-06-12T20:00:00Z,117,718,917.58,888.57,7.23 +15617200280,43997116604,2025-06-12T18:00:00Z,109,703,942.32,884.44,7.47 +15595747531,43988060135,2025-06-12T16:00:00Z,124,696,916.63,888.22,6.86 +15595747531,43929140891,2025-06-11T22:00:00Z,164,727,917.5,884.41,7.14 diff --git a/.ci/scripts/benchmark_tooling/private/qwen-qwen3-0.6b_hf-xnnpack-custom-spda-kv-cache-8da4w_apple-iphone-15-plus-_ios-17.4.1.csv b/.ci/scripts/benchmark_tooling/private/qwen-qwen3-0.6b_hf-xnnpack-custom-spda-kv-cache-8da4w_apple-iphone-15-plus-_ios-17.4.1.csv new file mode 100644 index 00000000000..b0b7b9bb6c8 --- /dev/null +++ b/.ci/scripts/benchmark_tooling/private/qwen-qwen3-0.6b_hf-xnnpack-custom-spda-kv-cache-8da4w_apple-iphone-15-plus-_ios-17.4.1.csv @@ -0,0 +1,34 @@ +workflow_id,job_id,granularity_bucket,avg_inference_latency(ms),model_load_time(ms),peak_inference_mem_usage(mb),peak_load_mem_usage(mb),token_per_sec +15712278899,44280789008,2025-06-17T17:00:00Z,138,722,1081.91,1097.75,6.34 +15706619480,44262431638,2025-06-17T13:00:00Z,138,716,1081.93,1097.43,6.47 +15701565915,44245403612,2025-06-17T09:00:00Z,144,715,1081.89,1097.52,6.02 +15697865923,44230646970,2025-06-17T05:00:00Z,133,717,1081.77,1097.34,6.31 +15694639442,44221536444,2025-06-17T01:00:00Z,141,772,1102.59,1116.39,6.0 +15690685696,44211619421,2025-06-16T21:00:00Z,146,786,1102.45,1116.14,5.63 +15685808660,44196632637,2025-06-16T17:00:00Z,132,752,1102.44,1116.54,6.2 +15680206509,44178256230,2025-06-16T13:00:00Z,146,731,1102.42,1116.38,6.06 +15675176293,44162005966,2025-06-16T10:00:00Z,140,738,1102.55,1116.58,6.04 +15671584185,44147537983,2025-06-16T06:00:00Z,135,720,1102.43,1116.39,6.28 +15661046591,44121071601,2025-06-15T10:00:00Z,148,736,1102.51,1116.56,6.06 +15659301910,44117138781,2025-06-15T06:00:00Z,134,693,1102.31,1116.62,6.43 +15655612867,44108084740,2025-06-14T21:00:00Z,148,748,1102.49,1116.46,5.89 +15653742079,44104013228,2025-06-14T17:00:00Z,135,692,1102.36,1116.43,6.66 +15651786133,44100160145,2025-06-14T14:00:00Z,144,748,1102.53,1116.56,6.2 +15649987292,44095314814,2025-06-14T09:00:00Z,138,735,1102.38,1116.56,6.22 +15646107434,44086831907,2025-06-14T02:00:00Z,151,746,1102.56,1116.41,5.46 +15642962044,44079703037,2025-06-13T21:00:00Z,137,761,1102.45,1115.95,6.04 +15638842903,44067697635,2025-06-13T17:00:00Z,138,738,1102.37,1166.21,6.2 +15634027967,44053427212,2025-06-13T14:00:00Z,130,731,1102.55,1166.33,5.51 +15629571833,44037516912,2025-06-13T09:00:00Z,145,730,1102.47,1165.9,6.29 +15626172835,44025076952,2025-06-13T06:00:00Z,142,746,1102.47,1166.36,6.06 +15624350656,44017427531,2025-06-13T02:00:00Z,169,778,1102.42,1165.99,5.51 +15623548592,44015550286,2025-06-13T01:00:00Z,131,771,1102.38,1165.85,5.65 +15623257317,44014658492,2025-06-13T01:00:00Z,134,728,1102.48,1165.98,6.43 +15622176685,44012291031,2025-06-12T23:00:00Z,133,774,1102.59,1166.24,5.98 +15620031253,44010493569,2025-06-12T23:00:00Z,128,784,1102.5,1166.09,5.75 +15620193033,44009980865,2025-06-12T22:00:00Z,144,782,1102.45,1165.88,5.71 +15619707256,44004376808,2025-06-12T20:00:00Z,148,764,1102.51,1165.94,6.09 +15618130191,44001150742,2025-06-12T20:00:00Z,138,743,1102.37,1166.72,5.97 +15617200280,43997116604,2025-06-12T18:00:00Z,138,717,1102.39,1166.51,6.54 +15595747531,43988060135,2025-06-12T16:00:00Z,138,688,1102.39,1166.46,6.51 +15595747531,43929140891,2025-06-11T22:00:00Z,131,748,1102.31,1167.17,6.4 diff --git a/.ci/scripts/benchmark_tooling/private/qwen-qwen3-0.6b_hf-xnnpack-custom-spda-kv-cache-8da4w_apple-iphone-15-plus-private_ios-17.4.1.csv b/.ci/scripts/benchmark_tooling/private/qwen-qwen3-0.6b_hf-xnnpack-custom-spda-kv-cache-8da4w_apple-iphone-15-plus-private_ios-17.4.1.csv new file mode 100644 index 00000000000..b0b7b9bb6c8 --- /dev/null +++ b/.ci/scripts/benchmark_tooling/private/qwen-qwen3-0.6b_hf-xnnpack-custom-spda-kv-cache-8da4w_apple-iphone-15-plus-private_ios-17.4.1.csv @@ -0,0 +1,34 @@ +workflow_id,job_id,granularity_bucket,avg_inference_latency(ms),model_load_time(ms),peak_inference_mem_usage(mb),peak_load_mem_usage(mb),token_per_sec +15712278899,44280789008,2025-06-17T17:00:00Z,138,722,1081.91,1097.75,6.34 +15706619480,44262431638,2025-06-17T13:00:00Z,138,716,1081.93,1097.43,6.47 +15701565915,44245403612,2025-06-17T09:00:00Z,144,715,1081.89,1097.52,6.02 +15697865923,44230646970,2025-06-17T05:00:00Z,133,717,1081.77,1097.34,6.31 +15694639442,44221536444,2025-06-17T01:00:00Z,141,772,1102.59,1116.39,6.0 +15690685696,44211619421,2025-06-16T21:00:00Z,146,786,1102.45,1116.14,5.63 +15685808660,44196632637,2025-06-16T17:00:00Z,132,752,1102.44,1116.54,6.2 +15680206509,44178256230,2025-06-16T13:00:00Z,146,731,1102.42,1116.38,6.06 +15675176293,44162005966,2025-06-16T10:00:00Z,140,738,1102.55,1116.58,6.04 +15671584185,44147537983,2025-06-16T06:00:00Z,135,720,1102.43,1116.39,6.28 +15661046591,44121071601,2025-06-15T10:00:00Z,148,736,1102.51,1116.56,6.06 +15659301910,44117138781,2025-06-15T06:00:00Z,134,693,1102.31,1116.62,6.43 +15655612867,44108084740,2025-06-14T21:00:00Z,148,748,1102.49,1116.46,5.89 +15653742079,44104013228,2025-06-14T17:00:00Z,135,692,1102.36,1116.43,6.66 +15651786133,44100160145,2025-06-14T14:00:00Z,144,748,1102.53,1116.56,6.2 +15649987292,44095314814,2025-06-14T09:00:00Z,138,735,1102.38,1116.56,6.22 +15646107434,44086831907,2025-06-14T02:00:00Z,151,746,1102.56,1116.41,5.46 +15642962044,44079703037,2025-06-13T21:00:00Z,137,761,1102.45,1115.95,6.04 +15638842903,44067697635,2025-06-13T17:00:00Z,138,738,1102.37,1166.21,6.2 +15634027967,44053427212,2025-06-13T14:00:00Z,130,731,1102.55,1166.33,5.51 +15629571833,44037516912,2025-06-13T09:00:00Z,145,730,1102.47,1165.9,6.29 +15626172835,44025076952,2025-06-13T06:00:00Z,142,746,1102.47,1166.36,6.06 +15624350656,44017427531,2025-06-13T02:00:00Z,169,778,1102.42,1165.99,5.51 +15623548592,44015550286,2025-06-13T01:00:00Z,131,771,1102.38,1165.85,5.65 +15623257317,44014658492,2025-06-13T01:00:00Z,134,728,1102.48,1165.98,6.43 +15622176685,44012291031,2025-06-12T23:00:00Z,133,774,1102.59,1166.24,5.98 +15620031253,44010493569,2025-06-12T23:00:00Z,128,784,1102.5,1166.09,5.75 +15620193033,44009980865,2025-06-12T22:00:00Z,144,782,1102.45,1165.88,5.71 +15619707256,44004376808,2025-06-12T20:00:00Z,148,764,1102.51,1165.94,6.09 +15618130191,44001150742,2025-06-12T20:00:00Z,138,743,1102.37,1166.72,5.97 +15617200280,43997116604,2025-06-12T18:00:00Z,138,717,1102.39,1166.51,6.54 +15595747531,43988060135,2025-06-12T16:00:00Z,138,688,1102.39,1166.46,6.51 +15595747531,43929140891,2025-06-11T22:00:00Z,131,748,1102.31,1167.17,6.4 diff --git a/.ci/scripts/benchmark_tooling/private/qwen-qwen3-0.6b_hf-xnnpack-custom-spda-kv-cache-8da4w_apple-iphone-15-private_ios-18.0.csv b/.ci/scripts/benchmark_tooling/private/qwen-qwen3-0.6b_hf-xnnpack-custom-spda-kv-cache-8da4w_apple-iphone-15-private_ios-18.0.csv new file mode 100644 index 00000000000..be92a91ca8e --- /dev/null +++ b/.ci/scripts/benchmark_tooling/private/qwen-qwen3-0.6b_hf-xnnpack-custom-spda-kv-cache-8da4w_apple-iphone-15-private_ios-18.0.csv @@ -0,0 +1,34 @@ +workflow_id,job_id,granularity_bucket,avg_inference_latency(ms),model_load_time(ms),peak_inference_mem_usage(mb),peak_load_mem_usage(mb),token_per_sec +15712278899,44280789008,2025-06-17T17:00:00Z,131,728,919.5,821.69,6.94 +15706619480,44262431638,2025-06-17T13:00:00Z,122,678,919.38,821.98,7.03 +15701565915,44245403612,2025-06-17T09:00:00Z,118,674,919.37,822.63,7.54 +15697865923,44230646970,2025-06-17T05:00:00Z,131,693,919.39,821.67,7.1 +15694639442,44221536444,2025-06-17T01:00:00Z,130,770,917.51,840.39,7.03 +15690685696,44211619421,2025-06-16T21:00:00Z,132,761,917.86,840.39,6.97 +15685808660,44196632637,2025-06-16T17:00:00Z,110,723,917.51,840.97,7.35 +15680206509,44178256230,2025-06-16T13:00:00Z,122,708,917.95,840.14,7.14 +15675176293,44162005966,2025-06-16T10:00:00Z,123,701,917.9,840.34,6.86 +15671584185,44147537983,2025-06-16T06:00:00Z,112,699,917.57,840.62,6.98 +15661046591,44121071601,2025-06-15T10:00:00Z,111,690,917.74,841.21,6.91 +15659301910,44117138781,2025-06-15T06:00:00Z,108,681,916.76,841.08,7.69 +15655612867,44108084740,2025-06-14T21:00:00Z,120,740,917.74,840.97,6.99 +15653742079,44104013228,2025-06-14T17:00:00Z,109,669,918.07,840.36,7.86 +15651786133,44100160145,2025-06-14T14:00:00Z,110,690,917.93,840.94,7.2 +15649987292,44095314814,2025-06-14T09:00:00Z,117,703,917.78,840.51,7.02 +15646107434,44086831907,2025-06-14T02:00:00Z,120,689,917.56,841.09,7.37 +15642962044,44079703037,2025-06-13T21:00:00Z,111,730,917.46,840.98,6.95 +15638842903,44067697635,2025-06-13T17:00:00Z,111,711,917.68,886.73,7.14 +15634027967,44053427212,2025-06-13T14:00:00Z,119,694,917.7,886.86,7.15 +15629571833,44037516912,2025-06-13T09:00:00Z,108,686,917.69,886.82,7.18 +15626172835,44025076952,2025-06-13T06:00:00Z,125,700,917.54,886.72,7.16 +15624350656,44017427531,2025-06-13T02:00:00Z,118,736,917.63,887.51,6.71 +15623548592,44015550286,2025-06-13T01:00:00Z,124,761,917.56,887.72,6.67 +15623257317,44014658492,2025-06-13T01:00:00Z,115,724,917.57,887.68,7.55 +15622176685,44012291031,2025-06-12T23:00:00Z,117,759,917.44,887.51,6.94 +15620031253,44010493569,2025-06-12T23:00:00Z,116,770,917.69,888.19,6.99 +15620193033,44009980865,2025-06-12T22:00:00Z,118,764,917.79,888.31,6.95 +15619707256,44004376808,2025-06-12T20:00:00Z,109,754,917.7,888.06,6.73 +15618130191,44001150742,2025-06-12T20:00:00Z,117,718,917.58,888.57,7.23 +15617200280,43997116604,2025-06-12T18:00:00Z,109,703,942.32,884.44,7.47 +15595747531,43988060135,2025-06-12T16:00:00Z,124,696,916.63,888.22,6.86 +15595747531,43929140891,2025-06-11T22:00:00Z,164,727,917.5,884.41,7.14 diff --git a/.ci/scripts/benchmark_tooling/private/qwen-qwen3-0.6b_hf-xnnpack-custom-spda-kv-cache-8da4w_apple-iphone-15-pro-_ios-18.4.1.csv b/.ci/scripts/benchmark_tooling/private/qwen-qwen3-0.6b_hf-xnnpack-custom-spda-kv-cache-8da4w_apple-iphone-15-pro-_ios-18.4.1.csv new file mode 100644 index 00000000000..343c89d128b --- /dev/null +++ b/.ci/scripts/benchmark_tooling/private/qwen-qwen3-0.6b_hf-xnnpack-custom-spda-kv-cache-8da4w_apple-iphone-15-pro-_ios-18.4.1.csv @@ -0,0 +1,34 @@ +workflow_id,job_id,granularity_bucket,avg_inference_latency(ms),model_load_time(ms),peak_inference_mem_usage(mb),peak_load_mem_usage(mb),token_per_sec +15712278899,44280789008,2025-06-17T17:00:00Z,39,547,1074.67,819.15,23.0 +15706619480,44262431638,2025-06-17T13:00:00Z,37,552,1074.2,819.07,22.88 +15701565915,44245403612,2025-06-17T09:00:00Z,44,551,1074.22,818.93,22.7 +15697865923,44230646970,2025-06-17T05:00:00Z,41,553,1074.6,819.35,23.31 +15694639442,44221536444,2025-06-17T01:00:00Z,39,574,1089.4,838.37,23.01 +15690685696,44211619421,2025-06-16T21:00:00Z,35,578,1089.31,838.15,22.91 +15685808660,44196632637,2025-06-16T17:00:00Z,39,562,1089.34,838.35,22.78 +15680206509,44178256230,2025-06-16T13:00:00Z,41,558,1089.31,838.13,23.4 +15675176293,44162005966,2025-06-16T10:00:00Z,41,562,1089.34,838.25,23.4 +15671584185,44147537983,2025-06-16T06:00:00Z,31,559,1089.76,838.64,21.73 +15661046591,44121071601,2025-06-15T10:00:00Z,42,562,1089.58,838.4,22.6 +15659301910,44117138781,2025-06-15T06:00:00Z,39,549,1089.31,838.42,23.98 +15655612867,44108084740,2025-06-14T21:00:00Z,31,563,1089.32,838.24,24.28 +15653742079,44104013228,2025-06-14T17:00:00Z,46,562,1089.11,838.37,22.98 +15651786133,44100160145,2025-06-14T14:00:00Z,38,557,1089.59,838.49,23.89 +15649987292,44095314814,2025-06-14T09:00:00Z,36,557,1089.39,838.36,23.34 +15646107434,44086831907,2025-06-14T02:00:00Z,40,556,1089.35,838.3,22.91 +15642962044,44079703037,2025-06-13T21:00:00Z,41,562,1089.34,838.07,23.01 +15638842903,44067697635,2025-06-13T17:00:00Z,38,559,1089.36,881.82,23.39 +15634027967,44053427212,2025-06-13T14:00:00Z,41,562,1089.22,881.69,23.04 +15629571833,44037516912,2025-06-13T09:00:00Z,35,556,1089.74,881.74,23.05 +15626172835,44025076952,2025-06-13T06:00:00Z,36,564,1089.16,881.55,23.66 +15624350656,44017427531,2025-06-13T02:00:00Z,41,560,1089.29,881.56,23.68 +15623548592,44015550286,2025-06-13T01:00:00Z,46,563,1089.34,881.14,22.63 +15623257317,44014658492,2025-06-13T01:00:00Z,34,559,1089.34,881.33,23.27 +15622176685,44012291031,2025-06-12T23:00:00Z,34,566,1089.47,881.19,22.88 +15620031253,44010493569,2025-06-12T23:00:00Z,41,571,1089.4,882.21,23.42 +15620193033,44009980865,2025-06-12T22:00:00Z,42,578,1089.87,882.13,21.0 +15619707256,44004376808,2025-06-12T20:00:00Z,36,566,1089.51,882.13,22.52 +15618130191,44001150742,2025-06-12T20:00:00Z,41,560,1089.35,881.54,22.48 +15617200280,43997116604,2025-06-12T18:00:00Z,39,549,1089.28,882.8,23.74 +15595747531,43988060135,2025-06-12T16:00:00Z,37,554,1089.57,882.89,24.09 +15595747531,43929140891,2025-06-11T22:00:00Z,32,560,1089.27,881.61,23.9 diff --git a/.ci/scripts/benchmark_tooling/private/qwen-qwen3-0.6b_hf-xnnpack-custom-spda-kv-cache-8da4w_apple-iphone-15-pro-private_ios-18.4.1.csv b/.ci/scripts/benchmark_tooling/private/qwen-qwen3-0.6b_hf-xnnpack-custom-spda-kv-cache-8da4w_apple-iphone-15-pro-private_ios-18.4.1.csv new file mode 100644 index 00000000000..343c89d128b --- /dev/null +++ b/.ci/scripts/benchmark_tooling/private/qwen-qwen3-0.6b_hf-xnnpack-custom-spda-kv-cache-8da4w_apple-iphone-15-pro-private_ios-18.4.1.csv @@ -0,0 +1,34 @@ +workflow_id,job_id,granularity_bucket,avg_inference_latency(ms),model_load_time(ms),peak_inference_mem_usage(mb),peak_load_mem_usage(mb),token_per_sec +15712278899,44280789008,2025-06-17T17:00:00Z,39,547,1074.67,819.15,23.0 +15706619480,44262431638,2025-06-17T13:00:00Z,37,552,1074.2,819.07,22.88 +15701565915,44245403612,2025-06-17T09:00:00Z,44,551,1074.22,818.93,22.7 +15697865923,44230646970,2025-06-17T05:00:00Z,41,553,1074.6,819.35,23.31 +15694639442,44221536444,2025-06-17T01:00:00Z,39,574,1089.4,838.37,23.01 +15690685696,44211619421,2025-06-16T21:00:00Z,35,578,1089.31,838.15,22.91 +15685808660,44196632637,2025-06-16T17:00:00Z,39,562,1089.34,838.35,22.78 +15680206509,44178256230,2025-06-16T13:00:00Z,41,558,1089.31,838.13,23.4 +15675176293,44162005966,2025-06-16T10:00:00Z,41,562,1089.34,838.25,23.4 +15671584185,44147537983,2025-06-16T06:00:00Z,31,559,1089.76,838.64,21.73 +15661046591,44121071601,2025-06-15T10:00:00Z,42,562,1089.58,838.4,22.6 +15659301910,44117138781,2025-06-15T06:00:00Z,39,549,1089.31,838.42,23.98 +15655612867,44108084740,2025-06-14T21:00:00Z,31,563,1089.32,838.24,24.28 +15653742079,44104013228,2025-06-14T17:00:00Z,46,562,1089.11,838.37,22.98 +15651786133,44100160145,2025-06-14T14:00:00Z,38,557,1089.59,838.49,23.89 +15649987292,44095314814,2025-06-14T09:00:00Z,36,557,1089.39,838.36,23.34 +15646107434,44086831907,2025-06-14T02:00:00Z,40,556,1089.35,838.3,22.91 +15642962044,44079703037,2025-06-13T21:00:00Z,41,562,1089.34,838.07,23.01 +15638842903,44067697635,2025-06-13T17:00:00Z,38,559,1089.36,881.82,23.39 +15634027967,44053427212,2025-06-13T14:00:00Z,41,562,1089.22,881.69,23.04 +15629571833,44037516912,2025-06-13T09:00:00Z,35,556,1089.74,881.74,23.05 +15626172835,44025076952,2025-06-13T06:00:00Z,36,564,1089.16,881.55,23.66 +15624350656,44017427531,2025-06-13T02:00:00Z,41,560,1089.29,881.56,23.68 +15623548592,44015550286,2025-06-13T01:00:00Z,46,563,1089.34,881.14,22.63 +15623257317,44014658492,2025-06-13T01:00:00Z,34,559,1089.34,881.33,23.27 +15622176685,44012291031,2025-06-12T23:00:00Z,34,566,1089.47,881.19,22.88 +15620031253,44010493569,2025-06-12T23:00:00Z,41,571,1089.4,882.21,23.42 +15620193033,44009980865,2025-06-12T22:00:00Z,42,578,1089.87,882.13,21.0 +15619707256,44004376808,2025-06-12T20:00:00Z,36,566,1089.51,882.13,22.52 +15618130191,44001150742,2025-06-12T20:00:00Z,41,560,1089.35,881.54,22.48 +15617200280,43997116604,2025-06-12T18:00:00Z,39,549,1089.28,882.8,23.74 +15595747531,43988060135,2025-06-12T16:00:00Z,37,554,1089.57,882.89,24.09 +15595747531,43929140891,2025-06-11T22:00:00Z,32,560,1089.27,881.61,23.9 From d33ce72b11b1659580a32bcce0e9d606a8c80d27 Mon Sep 17 00:00:00 2001 From: Yang Wang Date: Wed, 18 Jun 2025 00:44:35 -0700 Subject: [PATCH 18/46] final Signed-off-by: Yang Wang --- ...m-spda-kv-cache-8da4w_-s22-_android-13.csv | 30 --------------- ...kv-cache-8da4w_-s22-private_android-13.csv | 30 --------------- ...-kv-cache-8da4w_-s22-ultra-_android-14.csv | 30 --------------- ...he-8da4w_-s22-ultra-private_android-14.csv | 30 --------------- ...-cache-8da4w_apple-iphone-15-_ios-18.0.csv | 28 -------------- ...8da4w_apple-iphone-15-plus-_ios-17.4.1.csv | 28 -------------- ...pple-iphone-15-plus-private_ios-17.4.1.csv | 28 -------------- ...8da4w_apple-iphone-15-private_ios-18.0.csv | 28 -------------- ...-8da4w_apple-iphone-15-pro-_ios-18.4.1.csv | 28 -------------- ...apple-iphone-15-pro-private_ios-18.4.1.csv | 28 -------------- ...m-spda-kv-cache-8da4w_-s22-_android-13.csv | 29 -------------- ...kv-cache-8da4w_-s22-private_android-13.csv | 29 -------------- ...-kv-cache-8da4w_-s22-ultra-_android-14.csv | 29 -------------- ...he-8da4w_-s22-ultra-private_android-14.csv | 29 -------------- ...-cache-8da4w_apple-iphone-15-_ios-18.0.csv | 29 -------------- ...8da4w_apple-iphone-15-plus-_ios-17.4.1.csv | 28 -------------- ...pple-iphone-15-plus-private_ios-17.4.1.csv | 28 -------------- ...8da4w_apple-iphone-15-private_ios-18.0.csv | 29 -------------- ...-8da4w_apple-iphone-15-pro-_ios-18.4.1.csv | 29 -------------- ...apple-iphone-15-pro-private_ios-18.4.1.csv | 29 -------------- ...int4-eo8_llama3-qlora_-s22-_android-13.csv | 11 ------ ...8_llama3-qlora_-s22-private_android-13.csv | 11 ------ ...o8_llama3-qlora_-s22-ultra-_android-14.csv | 11 ------ ...a3-qlora_-s22-ultra-private_android-14.csv | 11 ------ ...llama3-qlora_apple-iphone-15-_ios-18.0.csv | 11 ------ ...qlora_apple-iphone-15-plus-_ios-17.4.1.csv | 11 ------ ...pple-iphone-15-plus-private_ios-17.4.1.csv | 11 ------ ...qlora_apple-iphone-15-private_ios-18.0.csv | 11 ------ ...-qlora_apple-iphone-15-pro-_ios-18.4.1.csv | 11 ------ ...apple-iphone-15-pro-private_ios-18.4.1.csv | 11 ------ ...-eo8_llama3-spinquant_-s22-_android-13.csv | 12 ------ ...ama3-spinquant_-s22-private_android-13.csv | 12 ------ ...lama3-spinquant_-s22-ultra-_android-14.csv | 12 ------ ...pinquant_-s22-ultra-private_android-14.csv | 12 ------ ...a3-spinquant_apple-iphone-15-_ios-18.0.csv | 11 ------ ...quant_apple-iphone-15-plus-_ios-17.4.1.csv | 11 ------ ...pple-iphone-15-plus-private_ios-17.4.1.csv | 11 ------ ...quant_apple-iphone-15-private_ios-18.0.csv | 11 ------ ...nquant_apple-iphone-15-pro-_ios-18.4.1.csv | 11 ------ ...apple-iphone-15-pro-private_ios-18.4.1.csv | 11 ------ ...m-spda-kv-cache-8da4w_-s22-_android-13.csv | 29 -------------- ...kv-cache-8da4w_-s22-private_android-13.csv | 29 -------------- ...-kv-cache-8da4w_-s22-ultra-_android-14.csv | 29 -------------- ...he-8da4w_-s22-ultra-private_android-14.csv | 29 -------------- ...-cache-8da4w_apple-iphone-15-_ios-18.0.csv | 29 -------------- ...8da4w_apple-iphone-15-plus-_ios-17.4.1.csv | 29 -------------- ...pple-iphone-15-plus-private_ios-17.4.1.csv | 29 -------------- ...8da4w_apple-iphone-15-private_ios-18.0.csv | 29 -------------- ...-8da4w_apple-iphone-15-pro-_ios-18.4.1.csv | 29 -------------- ...apple-iphone-15-pro-private_ios-18.4.1.csv | 29 -------------- ...m-spda-kv-cache-8da4w_-s22-_android-13.csv | 28 -------------- ...kv-cache-8da4w_-s22-private_android-13.csv | 28 -------------- ...-kv-cache-8da4w_-s22-ultra-_android-14.csv | 28 -------------- ...he-8da4w_-s22-ultra-private_android-14.csv | 28 -------------- ...-cache-8da4w_apple-iphone-15-_ios-18.0.csv | 28 -------------- ...8da4w_apple-iphone-15-plus-_ios-17.4.1.csv | 28 -------------- ...pple-iphone-15-plus-private_ios-17.4.1.csv | 28 -------------- ...8da4w_apple-iphone-15-private_ios-18.0.csv | 28 -------------- ...-8da4w_apple-iphone-15-pro-_ios-18.4.1.csv | 28 -------------- ...apple-iphone-15-pro-private_ios-18.4.1.csv | 28 -------------- ..._llama3-fb16_apple-iphone-15-_ios-18.0.csv | 29 -------------- ....2-1b_llama3-fb16_apple-iphone-15-_ios.csv | 2 - ...-fb16_apple-iphone-15-plus-_ios-17.4.1.csv | 29 -------------- ...pple-iphone-15-plus-private_ios-17.4.1.csv | 29 -------------- ...-fb16_apple-iphone-15-private_ios-18.0.csv | 29 -------------- ...lama3-fb16_apple-iphone-15-private_ios.csv | 2 - ...3-fb16_apple-iphone-15-pro-_ios-18.4.1.csv | 29 -------------- ...apple-iphone-15-pro-private_ios-18.4.1.csv | 29 -------------- ..._coreml-fp16_apple-iphone-15-_ios-18.0.csv | 11 ------ .../mv3_coreml-fp16_apple-iphone-15-_ios.csv | 2 - ...-fp16_apple-iphone-15-plus-_ios-17.4.1.csv | 11 ------ ...pple-iphone-15-plus-private_ios-17.4.1.csv | 11 ------ ...-fp16_apple-iphone-15-private_ios-18.0.csv | 11 ------ ...oreml-fp16_apple-iphone-15-private_ios.csv | 2 - ...l-fp16_apple-iphone-15-pro-_ios-18.4.1.csv | 11 ------ ...apple-iphone-15-pro-private_ios-18.4.1.csv | 11 ------ .../mv3_mps_apple-iphone-15-_ios-18.0.csv | 9 ----- .../private/mv3_mps_apple-iphone-15-_ios.csv | 2 - ...3_mps_apple-iphone-15-plus-_ios-17.4.1.csv | 9 ----- ...pple-iphone-15-plus-private_ios-17.4.1.csv | 9 ----- ...3_mps_apple-iphone-15-private_ios-18.0.csv | 9 ----- .../mv3_mps_apple-iphone-15-private_ios.csv | 2 - ...v3_mps_apple-iphone-15-pro-_ios-18.4.1.csv | 9 ----- ...apple-iphone-15-pro-private_ios-18.4.1.csv | 9 ----- .../private/mv3_qnn-q8_-s22-_android-13.csv | 12 ------ .../mv3_qnn-q8_-s22-private_android-13.csv | 12 ------ .../mv3_qnn-q8_-s22-ultra-_android-14.csv | 12 ------ ...3_qnn-q8_-s22-ultra-private_android-14.csv | 12 ------ .../mv3_xnnpack-q8_-s22-_android-13.csv | 11 ------ ...mv3_xnnpack-q8_-s22-private_android-13.csv | 11 ------ .../mv3_xnnpack-q8_-s22-ultra-_android-14.csv | 11 ------ ...npack-q8_-s22-ultra-private_android-14.csv | 11 ------ ...3_xnnpack-q8_apple-iphone-15-_ios-18.0.csv | 11 ------ .../mv3_xnnpack-q8_apple-iphone-15-_ios.csv | 2 - ...ck-q8_apple-iphone-15-plus-_ios-17.4.1.csv | 11 ------ ...pple-iphone-15-plus-private_ios-17.4.1.csv | 11 ------ ...ck-q8_apple-iphone-15-private_ios-18.0.csv | 11 ------ ...xnnpack-q8_apple-iphone-15-private_ios.csv | 2 - ...ack-q8_apple-iphone-15-pro-_ios-18.4.1.csv | 11 ------ ...apple-iphone-15-pro-private_ios-18.4.1.csv | 11 ------ ...m-spda-kv-cache-8da4w_-s22-_android-13.csv | 37 ------------------ ...kv-cache-8da4w_-s22-private_android-13.csv | 37 ------------------ ...-kv-cache-8da4w_-s22-ultra-_android-14.csv | 37 ------------------ ...he-8da4w_-s22-ultra-private_android-14.csv | 37 ------------------ ...-cache-8da4w_apple-iphone-15-_ios-18.0.csv | 36 ------------------ ...8da4w_apple-iphone-15-plus-_ios-17.4.1.csv | 35 ----------------- ...pple-iphone-15-plus-private_ios-17.4.1.csv | 35 ----------------- ...8da4w_apple-iphone-15-private_ios-18.0.csv | 36 ------------------ ...-8da4w_apple-iphone-15-pro-_ios-18.4.1.csv | 36 ------------------ ...apple-iphone-15-pro-private_ios-18.4.1.csv | 36 ------------------ ...m-spda-kv-cache-8da4w_-s22-_android-13.csv | 38 ------------------- ...kv-cache-8da4w_-s22-private_android-13.csv | 38 ------------------- ...-kv-cache-8da4w_-s22-ultra-_android-14.csv | 38 ------------------- ...he-8da4w_-s22-ultra-private_android-14.csv | 38 ------------------- ...-cache-8da4w_apple-iphone-15-_ios-18.0.csv | 34 ----------------- ...8da4w_apple-iphone-15-plus-_ios-17.4.1.csv | 34 ----------------- ...pple-iphone-15-plus-private_ios-17.4.1.csv | 34 ----------------- ...8da4w_apple-iphone-15-private_ios-18.0.csv | 34 ----------------- ...-8da4w_apple-iphone-15-pro-_ios-18.4.1.csv | 34 ----------------- ...apple-iphone-15-pro-private_ios-18.4.1.csv | 34 ----------------- 120 files changed, 2556 deletions(-) delete mode 100644 .ci/scripts/benchmark_tooling/private/allenai-olmo-1b-hf_hf-xnnpack-custom-spda-kv-cache-8da4w_-s22-_android-13.csv delete mode 100644 .ci/scripts/benchmark_tooling/private/allenai-olmo-1b-hf_hf-xnnpack-custom-spda-kv-cache-8da4w_-s22-private_android-13.csv delete mode 100644 .ci/scripts/benchmark_tooling/private/allenai-olmo-1b-hf_hf-xnnpack-custom-spda-kv-cache-8da4w_-s22-ultra-_android-14.csv delete mode 100644 .ci/scripts/benchmark_tooling/private/allenai-olmo-1b-hf_hf-xnnpack-custom-spda-kv-cache-8da4w_-s22-ultra-private_android-14.csv delete mode 100644 .ci/scripts/benchmark_tooling/private/allenai-olmo-1b-hf_hf-xnnpack-custom-spda-kv-cache-8da4w_apple-iphone-15-_ios-18.0.csv delete mode 100644 .ci/scripts/benchmark_tooling/private/allenai-olmo-1b-hf_hf-xnnpack-custom-spda-kv-cache-8da4w_apple-iphone-15-plus-_ios-17.4.1.csv delete mode 100644 .ci/scripts/benchmark_tooling/private/allenai-olmo-1b-hf_hf-xnnpack-custom-spda-kv-cache-8da4w_apple-iphone-15-plus-private_ios-17.4.1.csv delete mode 100644 .ci/scripts/benchmark_tooling/private/allenai-olmo-1b-hf_hf-xnnpack-custom-spda-kv-cache-8da4w_apple-iphone-15-private_ios-18.0.csv delete mode 100644 .ci/scripts/benchmark_tooling/private/allenai-olmo-1b-hf_hf-xnnpack-custom-spda-kv-cache-8da4w_apple-iphone-15-pro-_ios-18.4.1.csv delete mode 100644 .ci/scripts/benchmark_tooling/private/allenai-olmo-1b-hf_hf-xnnpack-custom-spda-kv-cache-8da4w_apple-iphone-15-pro-private_ios-18.4.1.csv delete mode 100644 .ci/scripts/benchmark_tooling/private/huggingfacetb-smollm2-135m_hf-xnnpack-custom-spda-kv-cache-8da4w_-s22-_android-13.csv delete mode 100644 .ci/scripts/benchmark_tooling/private/huggingfacetb-smollm2-135m_hf-xnnpack-custom-spda-kv-cache-8da4w_-s22-private_android-13.csv delete mode 100644 .ci/scripts/benchmark_tooling/private/huggingfacetb-smollm2-135m_hf-xnnpack-custom-spda-kv-cache-8da4w_-s22-ultra-_android-14.csv delete mode 100644 .ci/scripts/benchmark_tooling/private/huggingfacetb-smollm2-135m_hf-xnnpack-custom-spda-kv-cache-8da4w_-s22-ultra-private_android-14.csv delete mode 100644 .ci/scripts/benchmark_tooling/private/huggingfacetb-smollm2-135m_hf-xnnpack-custom-spda-kv-cache-8da4w_apple-iphone-15-_ios-18.0.csv delete mode 100644 .ci/scripts/benchmark_tooling/private/huggingfacetb-smollm2-135m_hf-xnnpack-custom-spda-kv-cache-8da4w_apple-iphone-15-plus-_ios-17.4.1.csv delete mode 100644 .ci/scripts/benchmark_tooling/private/huggingfacetb-smollm2-135m_hf-xnnpack-custom-spda-kv-cache-8da4w_apple-iphone-15-plus-private_ios-17.4.1.csv delete mode 100644 .ci/scripts/benchmark_tooling/private/huggingfacetb-smollm2-135m_hf-xnnpack-custom-spda-kv-cache-8da4w_apple-iphone-15-private_ios-18.0.csv delete mode 100644 .ci/scripts/benchmark_tooling/private/huggingfacetb-smollm2-135m_hf-xnnpack-custom-spda-kv-cache-8da4w_apple-iphone-15-pro-_ios-18.4.1.csv delete mode 100644 .ci/scripts/benchmark_tooling/private/huggingfacetb-smollm2-135m_hf-xnnpack-custom-spda-kv-cache-8da4w_apple-iphone-15-pro-private_ios-18.4.1.csv delete mode 100644 .ci/scripts/benchmark_tooling/private/meta-llama-llama-3.2-1b-instruct-qlora-int4-eo8_llama3-qlora_-s22-_android-13.csv delete mode 100644 .ci/scripts/benchmark_tooling/private/meta-llama-llama-3.2-1b-instruct-qlora-int4-eo8_llama3-qlora_-s22-private_android-13.csv delete mode 100644 .ci/scripts/benchmark_tooling/private/meta-llama-llama-3.2-1b-instruct-qlora-int4-eo8_llama3-qlora_-s22-ultra-_android-14.csv delete mode 100644 .ci/scripts/benchmark_tooling/private/meta-llama-llama-3.2-1b-instruct-qlora-int4-eo8_llama3-qlora_-s22-ultra-private_android-14.csv delete mode 100644 .ci/scripts/benchmark_tooling/private/meta-llama-llama-3.2-1b-instruct-qlora-int4-eo8_llama3-qlora_apple-iphone-15-_ios-18.0.csv delete mode 100644 .ci/scripts/benchmark_tooling/private/meta-llama-llama-3.2-1b-instruct-qlora-int4-eo8_llama3-qlora_apple-iphone-15-plus-_ios-17.4.1.csv delete mode 100644 .ci/scripts/benchmark_tooling/private/meta-llama-llama-3.2-1b-instruct-qlora-int4-eo8_llama3-qlora_apple-iphone-15-plus-private_ios-17.4.1.csv delete mode 100644 .ci/scripts/benchmark_tooling/private/meta-llama-llama-3.2-1b-instruct-qlora-int4-eo8_llama3-qlora_apple-iphone-15-private_ios-18.0.csv delete mode 100644 .ci/scripts/benchmark_tooling/private/meta-llama-llama-3.2-1b-instruct-qlora-int4-eo8_llama3-qlora_apple-iphone-15-pro-_ios-18.4.1.csv delete mode 100644 .ci/scripts/benchmark_tooling/private/meta-llama-llama-3.2-1b-instruct-qlora-int4-eo8_llama3-qlora_apple-iphone-15-pro-private_ios-18.4.1.csv delete mode 100644 .ci/scripts/benchmark_tooling/private/meta-llama-llama-3.2-1b-instruct-spinquant-int4-eo8_llama3-spinquant_-s22-_android-13.csv delete mode 100644 .ci/scripts/benchmark_tooling/private/meta-llama-llama-3.2-1b-instruct-spinquant-int4-eo8_llama3-spinquant_-s22-private_android-13.csv delete mode 100644 .ci/scripts/benchmark_tooling/private/meta-llama-llama-3.2-1b-instruct-spinquant-int4-eo8_llama3-spinquant_-s22-ultra-_android-14.csv delete mode 100644 .ci/scripts/benchmark_tooling/private/meta-llama-llama-3.2-1b-instruct-spinquant-int4-eo8_llama3-spinquant_-s22-ultra-private_android-14.csv delete mode 100644 .ci/scripts/benchmark_tooling/private/meta-llama-llama-3.2-1b-instruct-spinquant-int4-eo8_llama3-spinquant_apple-iphone-15-_ios-18.0.csv delete mode 100644 .ci/scripts/benchmark_tooling/private/meta-llama-llama-3.2-1b-instruct-spinquant-int4-eo8_llama3-spinquant_apple-iphone-15-plus-_ios-17.4.1.csv delete mode 100644 .ci/scripts/benchmark_tooling/private/meta-llama-llama-3.2-1b-instruct-spinquant-int4-eo8_llama3-spinquant_apple-iphone-15-plus-private_ios-17.4.1.csv delete mode 100644 .ci/scripts/benchmark_tooling/private/meta-llama-llama-3.2-1b-instruct-spinquant-int4-eo8_llama3-spinquant_apple-iphone-15-private_ios-18.0.csv delete mode 100644 .ci/scripts/benchmark_tooling/private/meta-llama-llama-3.2-1b-instruct-spinquant-int4-eo8_llama3-spinquant_apple-iphone-15-pro-_ios-18.4.1.csv delete mode 100644 .ci/scripts/benchmark_tooling/private/meta-llama-llama-3.2-1b-instruct-spinquant-int4-eo8_llama3-spinquant_apple-iphone-15-pro-private_ios-18.4.1.csv delete mode 100644 .ci/scripts/benchmark_tooling/private/meta-llama-llama-3.2-1b_et-xnnpack-custom-spda-kv-cache-8da4w_-s22-_android-13.csv delete mode 100644 .ci/scripts/benchmark_tooling/private/meta-llama-llama-3.2-1b_et-xnnpack-custom-spda-kv-cache-8da4w_-s22-private_android-13.csv delete mode 100644 .ci/scripts/benchmark_tooling/private/meta-llama-llama-3.2-1b_et-xnnpack-custom-spda-kv-cache-8da4w_-s22-ultra-_android-14.csv delete mode 100644 .ci/scripts/benchmark_tooling/private/meta-llama-llama-3.2-1b_et-xnnpack-custom-spda-kv-cache-8da4w_-s22-ultra-private_android-14.csv delete mode 100644 .ci/scripts/benchmark_tooling/private/meta-llama-llama-3.2-1b_et-xnnpack-custom-spda-kv-cache-8da4w_apple-iphone-15-_ios-18.0.csv delete mode 100644 .ci/scripts/benchmark_tooling/private/meta-llama-llama-3.2-1b_et-xnnpack-custom-spda-kv-cache-8da4w_apple-iphone-15-plus-_ios-17.4.1.csv delete mode 100644 .ci/scripts/benchmark_tooling/private/meta-llama-llama-3.2-1b_et-xnnpack-custom-spda-kv-cache-8da4w_apple-iphone-15-plus-private_ios-17.4.1.csv delete mode 100644 .ci/scripts/benchmark_tooling/private/meta-llama-llama-3.2-1b_et-xnnpack-custom-spda-kv-cache-8da4w_apple-iphone-15-private_ios-18.0.csv delete mode 100644 .ci/scripts/benchmark_tooling/private/meta-llama-llama-3.2-1b_et-xnnpack-custom-spda-kv-cache-8da4w_apple-iphone-15-pro-_ios-18.4.1.csv delete mode 100644 .ci/scripts/benchmark_tooling/private/meta-llama-llama-3.2-1b_et-xnnpack-custom-spda-kv-cache-8da4w_apple-iphone-15-pro-private_ios-18.4.1.csv delete mode 100644 .ci/scripts/benchmark_tooling/private/meta-llama-llama-3.2-1b_hf-xnnpack-custom-spda-kv-cache-8da4w_-s22-_android-13.csv delete mode 100644 .ci/scripts/benchmark_tooling/private/meta-llama-llama-3.2-1b_hf-xnnpack-custom-spda-kv-cache-8da4w_-s22-private_android-13.csv delete mode 100644 .ci/scripts/benchmark_tooling/private/meta-llama-llama-3.2-1b_hf-xnnpack-custom-spda-kv-cache-8da4w_-s22-ultra-_android-14.csv delete mode 100644 .ci/scripts/benchmark_tooling/private/meta-llama-llama-3.2-1b_hf-xnnpack-custom-spda-kv-cache-8da4w_-s22-ultra-private_android-14.csv delete mode 100644 .ci/scripts/benchmark_tooling/private/meta-llama-llama-3.2-1b_hf-xnnpack-custom-spda-kv-cache-8da4w_apple-iphone-15-_ios-18.0.csv delete mode 100644 .ci/scripts/benchmark_tooling/private/meta-llama-llama-3.2-1b_hf-xnnpack-custom-spda-kv-cache-8da4w_apple-iphone-15-plus-_ios-17.4.1.csv delete mode 100644 .ci/scripts/benchmark_tooling/private/meta-llama-llama-3.2-1b_hf-xnnpack-custom-spda-kv-cache-8da4w_apple-iphone-15-plus-private_ios-17.4.1.csv delete mode 100644 .ci/scripts/benchmark_tooling/private/meta-llama-llama-3.2-1b_hf-xnnpack-custom-spda-kv-cache-8da4w_apple-iphone-15-private_ios-18.0.csv delete mode 100644 .ci/scripts/benchmark_tooling/private/meta-llama-llama-3.2-1b_hf-xnnpack-custom-spda-kv-cache-8da4w_apple-iphone-15-pro-_ios-18.4.1.csv delete mode 100644 .ci/scripts/benchmark_tooling/private/meta-llama-llama-3.2-1b_hf-xnnpack-custom-spda-kv-cache-8da4w_apple-iphone-15-pro-private_ios-18.4.1.csv delete mode 100644 .ci/scripts/benchmark_tooling/private/meta-llama-llama-3.2-1b_llama3-fb16_apple-iphone-15-_ios-18.0.csv delete mode 100644 .ci/scripts/benchmark_tooling/private/meta-llama-llama-3.2-1b_llama3-fb16_apple-iphone-15-_ios.csv delete mode 100644 .ci/scripts/benchmark_tooling/private/meta-llama-llama-3.2-1b_llama3-fb16_apple-iphone-15-plus-_ios-17.4.1.csv delete mode 100644 .ci/scripts/benchmark_tooling/private/meta-llama-llama-3.2-1b_llama3-fb16_apple-iphone-15-plus-private_ios-17.4.1.csv delete mode 100644 .ci/scripts/benchmark_tooling/private/meta-llama-llama-3.2-1b_llama3-fb16_apple-iphone-15-private_ios-18.0.csv delete mode 100644 .ci/scripts/benchmark_tooling/private/meta-llama-llama-3.2-1b_llama3-fb16_apple-iphone-15-private_ios.csv delete mode 100644 .ci/scripts/benchmark_tooling/private/meta-llama-llama-3.2-1b_llama3-fb16_apple-iphone-15-pro-_ios-18.4.1.csv delete mode 100644 .ci/scripts/benchmark_tooling/private/meta-llama-llama-3.2-1b_llama3-fb16_apple-iphone-15-pro-private_ios-18.4.1.csv delete mode 100644 .ci/scripts/benchmark_tooling/private/mv3_coreml-fp16_apple-iphone-15-_ios-18.0.csv delete mode 100644 .ci/scripts/benchmark_tooling/private/mv3_coreml-fp16_apple-iphone-15-_ios.csv delete mode 100644 .ci/scripts/benchmark_tooling/private/mv3_coreml-fp16_apple-iphone-15-plus-_ios-17.4.1.csv delete mode 100644 .ci/scripts/benchmark_tooling/private/mv3_coreml-fp16_apple-iphone-15-plus-private_ios-17.4.1.csv delete mode 100644 .ci/scripts/benchmark_tooling/private/mv3_coreml-fp16_apple-iphone-15-private_ios-18.0.csv delete mode 100644 .ci/scripts/benchmark_tooling/private/mv3_coreml-fp16_apple-iphone-15-private_ios.csv delete mode 100644 .ci/scripts/benchmark_tooling/private/mv3_coreml-fp16_apple-iphone-15-pro-_ios-18.4.1.csv delete mode 100644 .ci/scripts/benchmark_tooling/private/mv3_coreml-fp16_apple-iphone-15-pro-private_ios-18.4.1.csv delete mode 100644 .ci/scripts/benchmark_tooling/private/mv3_mps_apple-iphone-15-_ios-18.0.csv delete mode 100644 .ci/scripts/benchmark_tooling/private/mv3_mps_apple-iphone-15-_ios.csv delete mode 100644 .ci/scripts/benchmark_tooling/private/mv3_mps_apple-iphone-15-plus-_ios-17.4.1.csv delete mode 100644 .ci/scripts/benchmark_tooling/private/mv3_mps_apple-iphone-15-plus-private_ios-17.4.1.csv delete mode 100644 .ci/scripts/benchmark_tooling/private/mv3_mps_apple-iphone-15-private_ios-18.0.csv delete mode 100644 .ci/scripts/benchmark_tooling/private/mv3_mps_apple-iphone-15-private_ios.csv delete mode 100644 .ci/scripts/benchmark_tooling/private/mv3_mps_apple-iphone-15-pro-_ios-18.4.1.csv delete mode 100644 .ci/scripts/benchmark_tooling/private/mv3_mps_apple-iphone-15-pro-private_ios-18.4.1.csv delete mode 100644 .ci/scripts/benchmark_tooling/private/mv3_qnn-q8_-s22-_android-13.csv delete mode 100644 .ci/scripts/benchmark_tooling/private/mv3_qnn-q8_-s22-private_android-13.csv delete mode 100644 .ci/scripts/benchmark_tooling/private/mv3_qnn-q8_-s22-ultra-_android-14.csv delete mode 100644 .ci/scripts/benchmark_tooling/private/mv3_qnn-q8_-s22-ultra-private_android-14.csv delete mode 100644 .ci/scripts/benchmark_tooling/private/mv3_xnnpack-q8_-s22-_android-13.csv delete mode 100644 .ci/scripts/benchmark_tooling/private/mv3_xnnpack-q8_-s22-private_android-13.csv delete mode 100644 .ci/scripts/benchmark_tooling/private/mv3_xnnpack-q8_-s22-ultra-_android-14.csv delete mode 100644 .ci/scripts/benchmark_tooling/private/mv3_xnnpack-q8_-s22-ultra-private_android-14.csv delete mode 100644 .ci/scripts/benchmark_tooling/private/mv3_xnnpack-q8_apple-iphone-15-_ios-18.0.csv delete mode 100644 .ci/scripts/benchmark_tooling/private/mv3_xnnpack-q8_apple-iphone-15-_ios.csv delete mode 100644 .ci/scripts/benchmark_tooling/private/mv3_xnnpack-q8_apple-iphone-15-plus-_ios-17.4.1.csv delete mode 100644 .ci/scripts/benchmark_tooling/private/mv3_xnnpack-q8_apple-iphone-15-plus-private_ios-17.4.1.csv delete mode 100644 .ci/scripts/benchmark_tooling/private/mv3_xnnpack-q8_apple-iphone-15-private_ios-18.0.csv delete mode 100644 .ci/scripts/benchmark_tooling/private/mv3_xnnpack-q8_apple-iphone-15-private_ios.csv delete mode 100644 .ci/scripts/benchmark_tooling/private/mv3_xnnpack-q8_apple-iphone-15-pro-_ios-18.4.1.csv delete mode 100644 .ci/scripts/benchmark_tooling/private/mv3_xnnpack-q8_apple-iphone-15-pro-private_ios-18.4.1.csv delete mode 100644 .ci/scripts/benchmark_tooling/private/qwen-qwen3-0.6b_et-xnnpack-custom-spda-kv-cache-8da4w_-s22-_android-13.csv delete mode 100644 .ci/scripts/benchmark_tooling/private/qwen-qwen3-0.6b_et-xnnpack-custom-spda-kv-cache-8da4w_-s22-private_android-13.csv delete mode 100644 .ci/scripts/benchmark_tooling/private/qwen-qwen3-0.6b_et-xnnpack-custom-spda-kv-cache-8da4w_-s22-ultra-_android-14.csv delete mode 100644 .ci/scripts/benchmark_tooling/private/qwen-qwen3-0.6b_et-xnnpack-custom-spda-kv-cache-8da4w_-s22-ultra-private_android-14.csv delete mode 100644 .ci/scripts/benchmark_tooling/private/qwen-qwen3-0.6b_et-xnnpack-custom-spda-kv-cache-8da4w_apple-iphone-15-_ios-18.0.csv delete mode 100644 .ci/scripts/benchmark_tooling/private/qwen-qwen3-0.6b_et-xnnpack-custom-spda-kv-cache-8da4w_apple-iphone-15-plus-_ios-17.4.1.csv delete mode 100644 .ci/scripts/benchmark_tooling/private/qwen-qwen3-0.6b_et-xnnpack-custom-spda-kv-cache-8da4w_apple-iphone-15-plus-private_ios-17.4.1.csv delete mode 100644 .ci/scripts/benchmark_tooling/private/qwen-qwen3-0.6b_et-xnnpack-custom-spda-kv-cache-8da4w_apple-iphone-15-private_ios-18.0.csv delete mode 100644 .ci/scripts/benchmark_tooling/private/qwen-qwen3-0.6b_et-xnnpack-custom-spda-kv-cache-8da4w_apple-iphone-15-pro-_ios-18.4.1.csv delete mode 100644 .ci/scripts/benchmark_tooling/private/qwen-qwen3-0.6b_et-xnnpack-custom-spda-kv-cache-8da4w_apple-iphone-15-pro-private_ios-18.4.1.csv delete mode 100644 .ci/scripts/benchmark_tooling/private/qwen-qwen3-0.6b_hf-xnnpack-custom-spda-kv-cache-8da4w_-s22-_android-13.csv delete mode 100644 .ci/scripts/benchmark_tooling/private/qwen-qwen3-0.6b_hf-xnnpack-custom-spda-kv-cache-8da4w_-s22-private_android-13.csv delete mode 100644 .ci/scripts/benchmark_tooling/private/qwen-qwen3-0.6b_hf-xnnpack-custom-spda-kv-cache-8da4w_-s22-ultra-_android-14.csv delete mode 100644 .ci/scripts/benchmark_tooling/private/qwen-qwen3-0.6b_hf-xnnpack-custom-spda-kv-cache-8da4w_-s22-ultra-private_android-14.csv delete mode 100644 .ci/scripts/benchmark_tooling/private/qwen-qwen3-0.6b_hf-xnnpack-custom-spda-kv-cache-8da4w_apple-iphone-15-_ios-18.0.csv delete mode 100644 .ci/scripts/benchmark_tooling/private/qwen-qwen3-0.6b_hf-xnnpack-custom-spda-kv-cache-8da4w_apple-iphone-15-plus-_ios-17.4.1.csv delete mode 100644 .ci/scripts/benchmark_tooling/private/qwen-qwen3-0.6b_hf-xnnpack-custom-spda-kv-cache-8da4w_apple-iphone-15-plus-private_ios-17.4.1.csv delete mode 100644 .ci/scripts/benchmark_tooling/private/qwen-qwen3-0.6b_hf-xnnpack-custom-spda-kv-cache-8da4w_apple-iphone-15-private_ios-18.0.csv delete mode 100644 .ci/scripts/benchmark_tooling/private/qwen-qwen3-0.6b_hf-xnnpack-custom-spda-kv-cache-8da4w_apple-iphone-15-pro-_ios-18.4.1.csv delete mode 100644 .ci/scripts/benchmark_tooling/private/qwen-qwen3-0.6b_hf-xnnpack-custom-spda-kv-cache-8da4w_apple-iphone-15-pro-private_ios-18.4.1.csv diff --git a/.ci/scripts/benchmark_tooling/private/allenai-olmo-1b-hf_hf-xnnpack-custom-spda-kv-cache-8da4w_-s22-_android-13.csv b/.ci/scripts/benchmark_tooling/private/allenai-olmo-1b-hf_hf-xnnpack-custom-spda-kv-cache-8da4w_-s22-_android-13.csv deleted file mode 100644 index 11135a34396..00000000000 --- a/.ci/scripts/benchmark_tooling/private/allenai-olmo-1b-hf_hf-xnnpack-custom-spda-kv-cache-8da4w_-s22-_android-13.csv +++ /dev/null @@ -1,30 +0,0 @@ -workflow_id,job_id,granularity_bucket,avg_inference_latency(ms),llm_model_load_time(ms),model_load_time(ms),ram_pss_usage(mb),token_per_sec,trimmean_inference_latency(ms) -15712320497,44280131792,2025-06-17T17:00:00Z,19.87,2992.46,2231.31,1329,42.39,19.84 -15706687362,44261351450,2025-06-17T13:00:00Z,18.73,3043.96,2039.23,1332,43.49,18.68 -15701619570,44244323755,2025-06-17T09:00:00Z,18.76,2993.67,2008.01,1331,42.9,18.69 -15697890915,44230067957,2025-06-17T05:00:00Z,18.78,2735.56,2799.45,1319,44.65,18.55 -15694752722,44221381863,2025-06-17T01:00:00Z,19.48,3185.18,2176.53,1339,42.17,19.43 -15690721346,44211034387,2025-06-16T21:00:00Z,19.93,3213.73,3021.92,1337,42.58,19.4 -15685858387,44195500217,2025-06-16T17:00:00Z,24.35,3093.45,2172.81,1348,42.39,23.49 -15680276053,44184994658,2025-06-16T15:00:00Z,20.43,3083.59,2291.09,1349,43.38,18.25 -15675229427,44160356972,2025-06-16T09:00:00Z,18.2,3124.3,2228.0,1338,43.72,18.15 -15671609250,44146779212,2025-06-16T05:00:00Z,23.75,2758.77,2192.73,1350,44.86,23.05 -15668838280,44139310442,2025-06-16T01:00:00Z,21.56,2911.96,2217.92,1351,41.96,20.78 -15666871209,44133842083,2025-06-15T21:00:00Z,30.68,3062.95,2256.9,1338,43.17,27.95 -15664964842,44129416866,2025-06-15T17:00:00Z,18.62,3327.39,2387.9,1339,45.48,18.6 -15662964566,44125237276,2025-06-15T13:00:00Z,19.01,2916.11,2400.39,1350,46.72,18.94 -15661066119,44120683489,2025-06-15T09:00:00Z,27.7,2940.28,2207.83,1349,43.69,25.28 -15659315239,44116350825,2025-06-15T05:00:00Z,19.46,3064.22,2362.22,1349,46.54,19.03 -15657426823,44114267880,2025-06-15T03:00:00Z,18.63,3157.62,2395.24,1349,42.29,18.58 -15655627252,44107937078,2025-06-14T21:00:00Z,23.45,3054.54,2239.07,1340,42.53,22.26 -15653757002,44103768469,2025-06-14T17:00:00Z,18.36,3030.64,2260.04,1349,43.5,18.33 -15651807296,44099312849,2025-06-14T13:00:00Z,19.21,3179.48,2147.97,1350,45.25,19.19 -15650005042,44095041071,2025-06-14T09:00:00Z,24.66,3130.55,2174.11,1349,43.89,23.77 -15648224665,44090821985,2025-06-14T05:00:00Z,18.16,2943.73,2227.73,1349,44.03,18.15 -15646186941,44086333101,2025-06-14T01:00:00Z,18.75,3061.87,2408.56,1348,43.41,18.68 -15642991544,44079110098,2025-06-13T21:00:00Z,18.78,3092.03,2319.81,1348,45.88,18.62 -15638881659,44066590049,2025-06-13T17:00:00Z,20.9,3137.71,2179.04,1350,43.14,19.39 -15634084872,44050929738,2025-06-13T13:00:00Z,19.52,3177.13,2201.48,1340,43.73,19.45 -15629618177,44036960905,2025-06-13T09:00:00Z,22.06,3302.4,2233.09,1339,44.73,20.56 -15626198493,44024980719,2025-06-13T06:00:00Z,19.43,3424.57,2198.18,1349,44.3,19.33 -15620031250,44009155339,2025-06-12T22:00:00Z,18.86,3521.01,2261.87,1348,45.8,18.79 diff --git a/.ci/scripts/benchmark_tooling/private/allenai-olmo-1b-hf_hf-xnnpack-custom-spda-kv-cache-8da4w_-s22-private_android-13.csv b/.ci/scripts/benchmark_tooling/private/allenai-olmo-1b-hf_hf-xnnpack-custom-spda-kv-cache-8da4w_-s22-private_android-13.csv deleted file mode 100644 index 11135a34396..00000000000 --- a/.ci/scripts/benchmark_tooling/private/allenai-olmo-1b-hf_hf-xnnpack-custom-spda-kv-cache-8da4w_-s22-private_android-13.csv +++ /dev/null @@ -1,30 +0,0 @@ -workflow_id,job_id,granularity_bucket,avg_inference_latency(ms),llm_model_load_time(ms),model_load_time(ms),ram_pss_usage(mb),token_per_sec,trimmean_inference_latency(ms) -15712320497,44280131792,2025-06-17T17:00:00Z,19.87,2992.46,2231.31,1329,42.39,19.84 -15706687362,44261351450,2025-06-17T13:00:00Z,18.73,3043.96,2039.23,1332,43.49,18.68 -15701619570,44244323755,2025-06-17T09:00:00Z,18.76,2993.67,2008.01,1331,42.9,18.69 -15697890915,44230067957,2025-06-17T05:00:00Z,18.78,2735.56,2799.45,1319,44.65,18.55 -15694752722,44221381863,2025-06-17T01:00:00Z,19.48,3185.18,2176.53,1339,42.17,19.43 -15690721346,44211034387,2025-06-16T21:00:00Z,19.93,3213.73,3021.92,1337,42.58,19.4 -15685858387,44195500217,2025-06-16T17:00:00Z,24.35,3093.45,2172.81,1348,42.39,23.49 -15680276053,44184994658,2025-06-16T15:00:00Z,20.43,3083.59,2291.09,1349,43.38,18.25 -15675229427,44160356972,2025-06-16T09:00:00Z,18.2,3124.3,2228.0,1338,43.72,18.15 -15671609250,44146779212,2025-06-16T05:00:00Z,23.75,2758.77,2192.73,1350,44.86,23.05 -15668838280,44139310442,2025-06-16T01:00:00Z,21.56,2911.96,2217.92,1351,41.96,20.78 -15666871209,44133842083,2025-06-15T21:00:00Z,30.68,3062.95,2256.9,1338,43.17,27.95 -15664964842,44129416866,2025-06-15T17:00:00Z,18.62,3327.39,2387.9,1339,45.48,18.6 -15662964566,44125237276,2025-06-15T13:00:00Z,19.01,2916.11,2400.39,1350,46.72,18.94 -15661066119,44120683489,2025-06-15T09:00:00Z,27.7,2940.28,2207.83,1349,43.69,25.28 -15659315239,44116350825,2025-06-15T05:00:00Z,19.46,3064.22,2362.22,1349,46.54,19.03 -15657426823,44114267880,2025-06-15T03:00:00Z,18.63,3157.62,2395.24,1349,42.29,18.58 -15655627252,44107937078,2025-06-14T21:00:00Z,23.45,3054.54,2239.07,1340,42.53,22.26 -15653757002,44103768469,2025-06-14T17:00:00Z,18.36,3030.64,2260.04,1349,43.5,18.33 -15651807296,44099312849,2025-06-14T13:00:00Z,19.21,3179.48,2147.97,1350,45.25,19.19 -15650005042,44095041071,2025-06-14T09:00:00Z,24.66,3130.55,2174.11,1349,43.89,23.77 -15648224665,44090821985,2025-06-14T05:00:00Z,18.16,2943.73,2227.73,1349,44.03,18.15 -15646186941,44086333101,2025-06-14T01:00:00Z,18.75,3061.87,2408.56,1348,43.41,18.68 -15642991544,44079110098,2025-06-13T21:00:00Z,18.78,3092.03,2319.81,1348,45.88,18.62 -15638881659,44066590049,2025-06-13T17:00:00Z,20.9,3137.71,2179.04,1350,43.14,19.39 -15634084872,44050929738,2025-06-13T13:00:00Z,19.52,3177.13,2201.48,1340,43.73,19.45 -15629618177,44036960905,2025-06-13T09:00:00Z,22.06,3302.4,2233.09,1339,44.73,20.56 -15626198493,44024980719,2025-06-13T06:00:00Z,19.43,3424.57,2198.18,1349,44.3,19.33 -15620031250,44009155339,2025-06-12T22:00:00Z,18.86,3521.01,2261.87,1348,45.8,18.79 diff --git a/.ci/scripts/benchmark_tooling/private/allenai-olmo-1b-hf_hf-xnnpack-custom-spda-kv-cache-8da4w_-s22-ultra-_android-14.csv b/.ci/scripts/benchmark_tooling/private/allenai-olmo-1b-hf_hf-xnnpack-custom-spda-kv-cache-8da4w_-s22-ultra-_android-14.csv deleted file mode 100644 index 5e8b9e2e88c..00000000000 --- a/.ci/scripts/benchmark_tooling/private/allenai-olmo-1b-hf_hf-xnnpack-custom-spda-kv-cache-8da4w_-s22-ultra-_android-14.csv +++ /dev/null @@ -1,30 +0,0 @@ -workflow_id,job_id,granularity_bucket,avg_inference_latency(ms),llm_model_load_time(ms),model_load_time(ms),ram_pss_usage(mb),token_per_sec,trimmean_inference_latency(ms) -15712320497,44280131792,2025-06-17T17:00:00Z,18.9,1860.28,1674.87,1333,47.43,18.8 -15706687362,44261351450,2025-06-17T13:00:00Z,20.61,1823.81,1683.54,1333,44.85,20.54 -15701619570,44244323755,2025-06-17T09:00:00Z,20.57,1828.4,1694.09,1333,42.89,20.52 -15697890915,44230067957,2025-06-17T05:00:00Z,20.43,1848.06,1670.42,1332,43.28,20.34 -15694752722,44221381863,2025-06-17T01:00:00Z,18.7,1877.38,1708.67,1352,42.4,18.67 -15690721346,44211034387,2025-06-16T21:00:00Z,19.13,1855.92,1714.1,1351,41.29,19.09 -15685858387,44195500217,2025-06-16T17:00:00Z,18.86,1881.26,1698.45,1351,44.35,18.82 -15680276053,44184994658,2025-06-16T15:00:00Z,19.07,1871.61,1709.23,1352,46.41,18.96 -15675229427,44160356972,2025-06-16T09:00:00Z,18.97,1874.94,1686.68,1352,44.0,18.94 -15671609250,44146779212,2025-06-16T05:00:00Z,19.17,1858.27,1760.15,1351,43.2,19.12 -15668838280,44139310442,2025-06-16T01:00:00Z,19.27,1864.35,1713.11,1353,42.62,19.2 -15666871209,44133842083,2025-06-15T21:00:00Z,18.85,1866.6,1690.11,1351,43.32,18.8 -15664964842,44129416866,2025-06-15T17:00:00Z,18.87,1856.11,1716.2,1351,49.5,18.85 -15662964566,44125237276,2025-06-15T13:00:00Z,19.17,1855.79,1701.12,1352,41.75,19.04 -15661066119,44120683489,2025-06-15T09:00:00Z,19.55,1856.66,1721.06,1351,43.26,19.52 -15659315239,44116350825,2025-06-15T05:00:00Z,19.01,1876.11,1726.46,1351,45.58,18.97 -15657426823,44114267880,2025-06-15T03:00:00Z,19.75,1868.04,1703.94,1351,43.56,19.74 -15655627252,44107937078,2025-06-14T21:00:00Z,19.4,1862.94,1686.67,1351,43.11,19.36 -15653757002,44103768469,2025-06-14T17:00:00Z,18.74,1869.79,1707.86,1352,42.87,18.63 -15651807296,44099312849,2025-06-14T13:00:00Z,19.15,1861.55,1732.35,1351,44.73,19.09 -15650005042,44095041071,2025-06-14T09:00:00Z,19.39,1875.61,1697.8,1351,43.11,19.3 -15648224665,44090821985,2025-06-14T05:00:00Z,18.87,1858.97,1731.5,1352,47.61,18.82 -15646186941,44086333101,2025-06-14T01:00:00Z,19.02,1862.57,1674.29,1352,42.87,18.93 -15642991544,44079110098,2025-06-13T21:00:00Z,19.13,1859.25,1743.6,1351,42.11,19.1 -15638881659,44066590049,2025-06-13T17:00:00Z,18.92,1867.61,1722.68,1351,42.64,18.84 -15634084872,44050929738,2025-06-13T13:00:00Z,19.78,1871.78,1694.16,1353,43.22,19.67 -15629618177,44036960905,2025-06-13T09:00:00Z,19.24,1868.1,1703.61,1352,46.42,19.23 -15626198493,44024980719,2025-06-13T06:00:00Z,19.34,1864.31,1704.63,1351,42.27,19.29 -15620031250,44009155339,2025-06-12T22:00:00Z,20.24,1869.64,1703.58,1352,43.59,20.13 diff --git a/.ci/scripts/benchmark_tooling/private/allenai-olmo-1b-hf_hf-xnnpack-custom-spda-kv-cache-8da4w_-s22-ultra-private_android-14.csv b/.ci/scripts/benchmark_tooling/private/allenai-olmo-1b-hf_hf-xnnpack-custom-spda-kv-cache-8da4w_-s22-ultra-private_android-14.csv deleted file mode 100644 index 5e8b9e2e88c..00000000000 --- a/.ci/scripts/benchmark_tooling/private/allenai-olmo-1b-hf_hf-xnnpack-custom-spda-kv-cache-8da4w_-s22-ultra-private_android-14.csv +++ /dev/null @@ -1,30 +0,0 @@ -workflow_id,job_id,granularity_bucket,avg_inference_latency(ms),llm_model_load_time(ms),model_load_time(ms),ram_pss_usage(mb),token_per_sec,trimmean_inference_latency(ms) -15712320497,44280131792,2025-06-17T17:00:00Z,18.9,1860.28,1674.87,1333,47.43,18.8 -15706687362,44261351450,2025-06-17T13:00:00Z,20.61,1823.81,1683.54,1333,44.85,20.54 -15701619570,44244323755,2025-06-17T09:00:00Z,20.57,1828.4,1694.09,1333,42.89,20.52 -15697890915,44230067957,2025-06-17T05:00:00Z,20.43,1848.06,1670.42,1332,43.28,20.34 -15694752722,44221381863,2025-06-17T01:00:00Z,18.7,1877.38,1708.67,1352,42.4,18.67 -15690721346,44211034387,2025-06-16T21:00:00Z,19.13,1855.92,1714.1,1351,41.29,19.09 -15685858387,44195500217,2025-06-16T17:00:00Z,18.86,1881.26,1698.45,1351,44.35,18.82 -15680276053,44184994658,2025-06-16T15:00:00Z,19.07,1871.61,1709.23,1352,46.41,18.96 -15675229427,44160356972,2025-06-16T09:00:00Z,18.97,1874.94,1686.68,1352,44.0,18.94 -15671609250,44146779212,2025-06-16T05:00:00Z,19.17,1858.27,1760.15,1351,43.2,19.12 -15668838280,44139310442,2025-06-16T01:00:00Z,19.27,1864.35,1713.11,1353,42.62,19.2 -15666871209,44133842083,2025-06-15T21:00:00Z,18.85,1866.6,1690.11,1351,43.32,18.8 -15664964842,44129416866,2025-06-15T17:00:00Z,18.87,1856.11,1716.2,1351,49.5,18.85 -15662964566,44125237276,2025-06-15T13:00:00Z,19.17,1855.79,1701.12,1352,41.75,19.04 -15661066119,44120683489,2025-06-15T09:00:00Z,19.55,1856.66,1721.06,1351,43.26,19.52 -15659315239,44116350825,2025-06-15T05:00:00Z,19.01,1876.11,1726.46,1351,45.58,18.97 -15657426823,44114267880,2025-06-15T03:00:00Z,19.75,1868.04,1703.94,1351,43.56,19.74 -15655627252,44107937078,2025-06-14T21:00:00Z,19.4,1862.94,1686.67,1351,43.11,19.36 -15653757002,44103768469,2025-06-14T17:00:00Z,18.74,1869.79,1707.86,1352,42.87,18.63 -15651807296,44099312849,2025-06-14T13:00:00Z,19.15,1861.55,1732.35,1351,44.73,19.09 -15650005042,44095041071,2025-06-14T09:00:00Z,19.39,1875.61,1697.8,1351,43.11,19.3 -15648224665,44090821985,2025-06-14T05:00:00Z,18.87,1858.97,1731.5,1352,47.61,18.82 -15646186941,44086333101,2025-06-14T01:00:00Z,19.02,1862.57,1674.29,1352,42.87,18.93 -15642991544,44079110098,2025-06-13T21:00:00Z,19.13,1859.25,1743.6,1351,42.11,19.1 -15638881659,44066590049,2025-06-13T17:00:00Z,18.92,1867.61,1722.68,1351,42.64,18.84 -15634084872,44050929738,2025-06-13T13:00:00Z,19.78,1871.78,1694.16,1353,43.22,19.67 -15629618177,44036960905,2025-06-13T09:00:00Z,19.24,1868.1,1703.61,1352,46.42,19.23 -15626198493,44024980719,2025-06-13T06:00:00Z,19.34,1864.31,1704.63,1351,42.27,19.29 -15620031250,44009155339,2025-06-12T22:00:00Z,20.24,1869.64,1703.58,1352,43.59,20.13 diff --git a/.ci/scripts/benchmark_tooling/private/allenai-olmo-1b-hf_hf-xnnpack-custom-spda-kv-cache-8da4w_apple-iphone-15-_ios-18.0.csv b/.ci/scripts/benchmark_tooling/private/allenai-olmo-1b-hf_hf-xnnpack-custom-spda-kv-cache-8da4w_apple-iphone-15-_ios-18.0.csv deleted file mode 100644 index 68f4fe4efc1..00000000000 --- a/.ci/scripts/benchmark_tooling/private/allenai-olmo-1b-hf_hf-xnnpack-custom-spda-kv-cache-8da4w_apple-iphone-15-_ios-18.0.csv +++ /dev/null @@ -1,28 +0,0 @@ -workflow_id,job_id,granularity_bucket,avg_inference_latency(ms),model_load_time(ms),peak_inference_mem_usage(mb),peak_load_mem_usage(mb),token_per_sec -15712278899,44280789008,2025-06-17T17:00:00Z,56,1300,1300.61,1366.44,14.4 -15706619480,44262431638,2025-06-17T13:00:00Z,69,1287,1300.58,1366.36,13.56 -15701565915,44245403612,2025-06-17T09:00:00Z,58,1284,1300.56,1366.5,13.41 -15697865923,44230646970,2025-06-17T05:00:00Z,58,1274,1300.51,1366.28,14.67 -15694639442,44221536444,2025-06-17T01:00:00Z,66,1416,1300.44,1379.13,13.76 -15690685696,44211619421,2025-06-16T21:00:00Z,59,1482,1300.33,1378.86,12.9 -15685808660,44196632637,2025-06-16T17:00:00Z,60,1364,1300.42,1379.2,14.1 -15680206509,44178256230,2025-06-16T13:00:00Z,59,1333,1300.26,1379.11,13.46 -15675176293,44162005966,2025-06-16T10:00:00Z,63,1320,1300.31,1379.18,14.18 -15671584185,44147537983,2025-06-16T06:00:00Z,59,1265,1300.6,1379.38,13.67 -15668756024,44140855631,2025-06-16T02:00:00Z,57,1368,1300.38,1378.91,14.21 -15666856809,44134617851,2025-06-15T22:00:00Z,60,1333,1300.39,1378.83,14.29 -15664949756,44129710892,2025-06-15T17:00:00Z,57,1304,1300.04,1379.16,14.4 -15662940074,44126695148,2025-06-15T15:00:00Z,64,1338,1300.43,1379.2,13.67 -15661046591,44121071601,2025-06-15T10:00:00Z,63,1292,1300.19,1379.17,14.43 -15659301910,44117138781,2025-06-15T06:00:00Z,54,1328,1300.47,1379.08,11.89 -15657354121,44112759100,2025-06-15T02:00:00Z,62,1435,1300.68,1378.99,13.67 -15655612867,44108084740,2025-06-14T21:00:00Z,55,1355,1300.35,1379.18,16.02 -15653742079,44104013228,2025-06-14T17:00:00Z,59,1301,1300.26,1378.84,14.64 -15651786133,44100160145,2025-06-14T14:00:00Z,56,1302,1300.24,1379.23,13.56 -15649987292,44095314814,2025-06-14T09:00:00Z,58,1323,1300.39,1379.15,13.06 -15646107434,44086831907,2025-06-14T02:00:00Z,57,1319,1299.52,1379.48,14.36 -15642962044,44079703037,2025-06-13T21:00:00Z,62,1386,1300.3,1379.56,13.54 -15638842903,44067697635,2025-06-13T17:00:00Z,69,1361,1300.28,1424.93,13.7 -15634027967,44053427212,2025-06-13T14:00:00Z,56,1280,1300.44,1424.99,15.08 -15629571833,44037516912,2025-06-13T09:00:00Z,59,1283,1300.15,1424.83,15.26 -15620031253,44010493569,2025-06-12T23:00:00Z,71,1469,1300.31,1424.9,12.81 diff --git a/.ci/scripts/benchmark_tooling/private/allenai-olmo-1b-hf_hf-xnnpack-custom-spda-kv-cache-8da4w_apple-iphone-15-plus-_ios-17.4.1.csv b/.ci/scripts/benchmark_tooling/private/allenai-olmo-1b-hf_hf-xnnpack-custom-spda-kv-cache-8da4w_apple-iphone-15-plus-_ios-17.4.1.csv deleted file mode 100644 index d553923606d..00000000000 --- a/.ci/scripts/benchmark_tooling/private/allenai-olmo-1b-hf_hf-xnnpack-custom-spda-kv-cache-8da4w_apple-iphone-15-plus-_ios-17.4.1.csv +++ /dev/null @@ -1,28 +0,0 @@ -workflow_id,job_id,granularity_bucket,avg_inference_latency(ms),model_load_time(ms),peak_inference_mem_usage(mb),peak_load_mem_usage(mb),token_per_sec -15712278899,44280789008,2025-06-17T17:00:00Z,63,1260,1379.78,1397.78,12.66 -15706619480,44262431638,2025-06-17T13:00:00Z,70,1341,1379.8,1397.51,12.26 -15701565915,44245403612,2025-06-17T09:00:00Z,70,1327,1379.73,1397.69,11.22 -15697865923,44230646970,2025-06-17T05:00:00Z,189,1341,1379.53,1397.03,6.57 -15694639442,44221536444,2025-06-17T01:00:00Z,77,1444,1398.5,1418.91,10.15 -15690685696,44211619421,2025-06-16T21:00:00Z,193,1493,1398.51,1419.32,9.53 -15685808660,44196632637,2025-06-16T17:00:00Z,80,1400,1398.62,1420.05,11.39 -15680206509,44178256230,2025-06-16T13:00:00Z,82,1360,1398.37,1419.42,11.28 -15675176293,44162005966,2025-06-16T10:00:00Z,172,1382,1398.4,1417.93,11.91 -15671584185,44147537983,2025-06-16T06:00:00Z,67,1311,1398.49,1418.27,11.88 -15668756024,44140855631,2025-06-16T02:00:00Z,71,1378,1398.48,1418.89,13.22 -15666856809,44134617851,2025-06-15T22:00:00Z,63,1325,1398.46,1419.6,12.82 -15664949756,44129710892,2025-06-15T17:00:00Z,67,1359,1398.49,1419.55,10.87 -15662940074,44126695148,2025-06-15T15:00:00Z,71,1377,1398.44,1417.56,12.11 -15661046591,44121071601,2025-06-15T10:00:00Z,77,1376,1398.39,1417.53,10.28 -15659301910,44117138781,2025-06-15T06:00:00Z,157,1401,1398.32,1418.1,12.32 -15657354121,44112759100,2025-06-15T02:00:00Z,73,1486,1398.5,1417.45,10.82 -15655612867,44108084740,2025-06-14T21:00:00Z,105,1391,1398.53,1418.45,6.19 -15653742079,44104013228,2025-06-14T17:00:00Z,73,1362,1398.51,1418.32,10.79 -15651786133,44100160145,2025-06-14T14:00:00Z,72,1368,1398.58,1418.91,10.89 -15649987292,44095314814,2025-06-14T09:00:00Z,137,1361,1398.44,1417.28,10.61 -15646107434,44086831907,2025-06-14T02:00:00Z,68,1300,1398.36,1419.42,12.65 -15642962044,44079703037,2025-06-13T21:00:00Z,181,1410,1398.57,1417.75,11.92 -15638842903,44067697635,2025-06-13T17:00:00Z,70,1351,1398.43,1467.03,12.18 -15634027967,44053427212,2025-06-13T14:00:00Z,70,1292,1398.49,1467.27,13.09 -15629571833,44037516912,2025-06-13T09:00:00Z,66,1358,1398.54,1467.08,10.68 -15620031253,44010493569,2025-06-12T23:00:00Z,73,1444,1398.5,1471.71,9.61 diff --git a/.ci/scripts/benchmark_tooling/private/allenai-olmo-1b-hf_hf-xnnpack-custom-spda-kv-cache-8da4w_apple-iphone-15-plus-private_ios-17.4.1.csv b/.ci/scripts/benchmark_tooling/private/allenai-olmo-1b-hf_hf-xnnpack-custom-spda-kv-cache-8da4w_apple-iphone-15-plus-private_ios-17.4.1.csv deleted file mode 100644 index d553923606d..00000000000 --- a/.ci/scripts/benchmark_tooling/private/allenai-olmo-1b-hf_hf-xnnpack-custom-spda-kv-cache-8da4w_apple-iphone-15-plus-private_ios-17.4.1.csv +++ /dev/null @@ -1,28 +0,0 @@ -workflow_id,job_id,granularity_bucket,avg_inference_latency(ms),model_load_time(ms),peak_inference_mem_usage(mb),peak_load_mem_usage(mb),token_per_sec -15712278899,44280789008,2025-06-17T17:00:00Z,63,1260,1379.78,1397.78,12.66 -15706619480,44262431638,2025-06-17T13:00:00Z,70,1341,1379.8,1397.51,12.26 -15701565915,44245403612,2025-06-17T09:00:00Z,70,1327,1379.73,1397.69,11.22 -15697865923,44230646970,2025-06-17T05:00:00Z,189,1341,1379.53,1397.03,6.57 -15694639442,44221536444,2025-06-17T01:00:00Z,77,1444,1398.5,1418.91,10.15 -15690685696,44211619421,2025-06-16T21:00:00Z,193,1493,1398.51,1419.32,9.53 -15685808660,44196632637,2025-06-16T17:00:00Z,80,1400,1398.62,1420.05,11.39 -15680206509,44178256230,2025-06-16T13:00:00Z,82,1360,1398.37,1419.42,11.28 -15675176293,44162005966,2025-06-16T10:00:00Z,172,1382,1398.4,1417.93,11.91 -15671584185,44147537983,2025-06-16T06:00:00Z,67,1311,1398.49,1418.27,11.88 -15668756024,44140855631,2025-06-16T02:00:00Z,71,1378,1398.48,1418.89,13.22 -15666856809,44134617851,2025-06-15T22:00:00Z,63,1325,1398.46,1419.6,12.82 -15664949756,44129710892,2025-06-15T17:00:00Z,67,1359,1398.49,1419.55,10.87 -15662940074,44126695148,2025-06-15T15:00:00Z,71,1377,1398.44,1417.56,12.11 -15661046591,44121071601,2025-06-15T10:00:00Z,77,1376,1398.39,1417.53,10.28 -15659301910,44117138781,2025-06-15T06:00:00Z,157,1401,1398.32,1418.1,12.32 -15657354121,44112759100,2025-06-15T02:00:00Z,73,1486,1398.5,1417.45,10.82 -15655612867,44108084740,2025-06-14T21:00:00Z,105,1391,1398.53,1418.45,6.19 -15653742079,44104013228,2025-06-14T17:00:00Z,73,1362,1398.51,1418.32,10.79 -15651786133,44100160145,2025-06-14T14:00:00Z,72,1368,1398.58,1418.91,10.89 -15649987292,44095314814,2025-06-14T09:00:00Z,137,1361,1398.44,1417.28,10.61 -15646107434,44086831907,2025-06-14T02:00:00Z,68,1300,1398.36,1419.42,12.65 -15642962044,44079703037,2025-06-13T21:00:00Z,181,1410,1398.57,1417.75,11.92 -15638842903,44067697635,2025-06-13T17:00:00Z,70,1351,1398.43,1467.03,12.18 -15634027967,44053427212,2025-06-13T14:00:00Z,70,1292,1398.49,1467.27,13.09 -15629571833,44037516912,2025-06-13T09:00:00Z,66,1358,1398.54,1467.08,10.68 -15620031253,44010493569,2025-06-12T23:00:00Z,73,1444,1398.5,1471.71,9.61 diff --git a/.ci/scripts/benchmark_tooling/private/allenai-olmo-1b-hf_hf-xnnpack-custom-spda-kv-cache-8da4w_apple-iphone-15-private_ios-18.0.csv b/.ci/scripts/benchmark_tooling/private/allenai-olmo-1b-hf_hf-xnnpack-custom-spda-kv-cache-8da4w_apple-iphone-15-private_ios-18.0.csv deleted file mode 100644 index 68f4fe4efc1..00000000000 --- a/.ci/scripts/benchmark_tooling/private/allenai-olmo-1b-hf_hf-xnnpack-custom-spda-kv-cache-8da4w_apple-iphone-15-private_ios-18.0.csv +++ /dev/null @@ -1,28 +0,0 @@ -workflow_id,job_id,granularity_bucket,avg_inference_latency(ms),model_load_time(ms),peak_inference_mem_usage(mb),peak_load_mem_usage(mb),token_per_sec -15712278899,44280789008,2025-06-17T17:00:00Z,56,1300,1300.61,1366.44,14.4 -15706619480,44262431638,2025-06-17T13:00:00Z,69,1287,1300.58,1366.36,13.56 -15701565915,44245403612,2025-06-17T09:00:00Z,58,1284,1300.56,1366.5,13.41 -15697865923,44230646970,2025-06-17T05:00:00Z,58,1274,1300.51,1366.28,14.67 -15694639442,44221536444,2025-06-17T01:00:00Z,66,1416,1300.44,1379.13,13.76 -15690685696,44211619421,2025-06-16T21:00:00Z,59,1482,1300.33,1378.86,12.9 -15685808660,44196632637,2025-06-16T17:00:00Z,60,1364,1300.42,1379.2,14.1 -15680206509,44178256230,2025-06-16T13:00:00Z,59,1333,1300.26,1379.11,13.46 -15675176293,44162005966,2025-06-16T10:00:00Z,63,1320,1300.31,1379.18,14.18 -15671584185,44147537983,2025-06-16T06:00:00Z,59,1265,1300.6,1379.38,13.67 -15668756024,44140855631,2025-06-16T02:00:00Z,57,1368,1300.38,1378.91,14.21 -15666856809,44134617851,2025-06-15T22:00:00Z,60,1333,1300.39,1378.83,14.29 -15664949756,44129710892,2025-06-15T17:00:00Z,57,1304,1300.04,1379.16,14.4 -15662940074,44126695148,2025-06-15T15:00:00Z,64,1338,1300.43,1379.2,13.67 -15661046591,44121071601,2025-06-15T10:00:00Z,63,1292,1300.19,1379.17,14.43 -15659301910,44117138781,2025-06-15T06:00:00Z,54,1328,1300.47,1379.08,11.89 -15657354121,44112759100,2025-06-15T02:00:00Z,62,1435,1300.68,1378.99,13.67 -15655612867,44108084740,2025-06-14T21:00:00Z,55,1355,1300.35,1379.18,16.02 -15653742079,44104013228,2025-06-14T17:00:00Z,59,1301,1300.26,1378.84,14.64 -15651786133,44100160145,2025-06-14T14:00:00Z,56,1302,1300.24,1379.23,13.56 -15649987292,44095314814,2025-06-14T09:00:00Z,58,1323,1300.39,1379.15,13.06 -15646107434,44086831907,2025-06-14T02:00:00Z,57,1319,1299.52,1379.48,14.36 -15642962044,44079703037,2025-06-13T21:00:00Z,62,1386,1300.3,1379.56,13.54 -15638842903,44067697635,2025-06-13T17:00:00Z,69,1361,1300.28,1424.93,13.7 -15634027967,44053427212,2025-06-13T14:00:00Z,56,1280,1300.44,1424.99,15.08 -15629571833,44037516912,2025-06-13T09:00:00Z,59,1283,1300.15,1424.83,15.26 -15620031253,44010493569,2025-06-12T23:00:00Z,71,1469,1300.31,1424.9,12.81 diff --git a/.ci/scripts/benchmark_tooling/private/allenai-olmo-1b-hf_hf-xnnpack-custom-spda-kv-cache-8da4w_apple-iphone-15-pro-_ios-18.4.1.csv b/.ci/scripts/benchmark_tooling/private/allenai-olmo-1b-hf_hf-xnnpack-custom-spda-kv-cache-8da4w_apple-iphone-15-pro-_ios-18.4.1.csv deleted file mode 100644 index 54f9777d4ff..00000000000 --- a/.ci/scripts/benchmark_tooling/private/allenai-olmo-1b-hf_hf-xnnpack-custom-spda-kv-cache-8da4w_apple-iphone-15-pro-_ios-18.4.1.csv +++ /dev/null @@ -1,28 +0,0 @@ -workflow_id,job_id,granularity_bucket,avg_inference_latency(ms),model_load_time(ms),peak_inference_mem_usage(mb),peak_load_mem_usage(mb),token_per_sec -15712278899,44280789008,2025-06-17T17:00:00Z,27,1030,1380.34,1383.34,30.47 -15706619480,44262431638,2025-06-17T13:00:00Z,33,1048,1380.57,1383.46,29.49 -15701565915,44245403612,2025-06-17T09:00:00Z,30,1049,1380.37,1383.51,27.37 -15697865923,44230646970,2025-06-17T05:00:00Z,32,1049,1380.18,1383.21,29.56 -15694639442,44221536444,2025-06-17T01:00:00Z,29,1102,1399.79,1402.2,30.9 -15690685696,44211619421,2025-06-16T21:00:00Z,35,1122,1399.82,1402.34,24.44 -15685808660,44196632637,2025-06-16T17:00:00Z,35,1076,1399.63,1402.31,29.58 -15680206509,44178256230,2025-06-16T13:00:00Z,30,1067,1399.69,1402.33,28.18 -15675176293,44162005966,2025-06-16T10:00:00Z,30,1075,1399.93,1402.18,27.05 -15671584185,44147537983,2025-06-16T06:00:00Z,30,1047,1399.71,1402.22,27.77 -15668756024,44140855631,2025-06-16T02:00:00Z,29,1078,1399.41,1401.96,30.98 -15666856809,44134617851,2025-06-15T22:00:00Z,29,1062,1399.74,1402.38,30.14 -15664949756,44129710892,2025-06-15T17:00:00Z,29,1075,1399.79,1402.14,30.22 -15662940074,44126695148,2025-06-15T15:00:00Z,39,1071,1399.62,1402.17,30.15 -15661046591,44121071601,2025-06-15T10:00:00Z,30,1075,1399.47,1401.87,30.1 -15659301910,44117138781,2025-06-15T06:00:00Z,30,1068,1399.97,1402.3,28.95 -15657354121,44112759100,2025-06-15T02:00:00Z,33,1074,1399.74,1402.29,29.58 -15655612867,44108084740,2025-06-14T21:00:00Z,30,1071,1399.47,1402.03,29.3 -15653742079,44104013228,2025-06-14T17:00:00Z,26,1081,1399.76,1402.46,30.29 -15651786133,44100160145,2025-06-14T14:00:00Z,27,1093,1400.0,1402.35,29.24 -15649987292,44095314814,2025-06-14T09:00:00Z,30,1065,1399.49,1402.11,29.37 -15646107434,44086831907,2025-06-14T02:00:00Z,27,1047,1399.6,1402.01,31.92 -15642962044,44079703037,2025-06-13T21:00:00Z,29,1065,1399.47,1402.06,30.63 -15638842903,44067697635,2025-06-13T17:00:00Z,30,1068,1399.68,1445.3,29.78 -15634027967,44053427212,2025-06-13T14:00:00Z,27,1051,1399.59,1445.3,27.92 -15629571833,44037516912,2025-06-13T09:00:00Z,27,1068,1399.59,1445.11,27.49 -15620031253,44010493569,2025-06-12T23:00:00Z,29,1096,1399.8,1448.08,29.3 diff --git a/.ci/scripts/benchmark_tooling/private/allenai-olmo-1b-hf_hf-xnnpack-custom-spda-kv-cache-8da4w_apple-iphone-15-pro-private_ios-18.4.1.csv b/.ci/scripts/benchmark_tooling/private/allenai-olmo-1b-hf_hf-xnnpack-custom-spda-kv-cache-8da4w_apple-iphone-15-pro-private_ios-18.4.1.csv deleted file mode 100644 index 54f9777d4ff..00000000000 --- a/.ci/scripts/benchmark_tooling/private/allenai-olmo-1b-hf_hf-xnnpack-custom-spda-kv-cache-8da4w_apple-iphone-15-pro-private_ios-18.4.1.csv +++ /dev/null @@ -1,28 +0,0 @@ -workflow_id,job_id,granularity_bucket,avg_inference_latency(ms),model_load_time(ms),peak_inference_mem_usage(mb),peak_load_mem_usage(mb),token_per_sec -15712278899,44280789008,2025-06-17T17:00:00Z,27,1030,1380.34,1383.34,30.47 -15706619480,44262431638,2025-06-17T13:00:00Z,33,1048,1380.57,1383.46,29.49 -15701565915,44245403612,2025-06-17T09:00:00Z,30,1049,1380.37,1383.51,27.37 -15697865923,44230646970,2025-06-17T05:00:00Z,32,1049,1380.18,1383.21,29.56 -15694639442,44221536444,2025-06-17T01:00:00Z,29,1102,1399.79,1402.2,30.9 -15690685696,44211619421,2025-06-16T21:00:00Z,35,1122,1399.82,1402.34,24.44 -15685808660,44196632637,2025-06-16T17:00:00Z,35,1076,1399.63,1402.31,29.58 -15680206509,44178256230,2025-06-16T13:00:00Z,30,1067,1399.69,1402.33,28.18 -15675176293,44162005966,2025-06-16T10:00:00Z,30,1075,1399.93,1402.18,27.05 -15671584185,44147537983,2025-06-16T06:00:00Z,30,1047,1399.71,1402.22,27.77 -15668756024,44140855631,2025-06-16T02:00:00Z,29,1078,1399.41,1401.96,30.98 -15666856809,44134617851,2025-06-15T22:00:00Z,29,1062,1399.74,1402.38,30.14 -15664949756,44129710892,2025-06-15T17:00:00Z,29,1075,1399.79,1402.14,30.22 -15662940074,44126695148,2025-06-15T15:00:00Z,39,1071,1399.62,1402.17,30.15 -15661046591,44121071601,2025-06-15T10:00:00Z,30,1075,1399.47,1401.87,30.1 -15659301910,44117138781,2025-06-15T06:00:00Z,30,1068,1399.97,1402.3,28.95 -15657354121,44112759100,2025-06-15T02:00:00Z,33,1074,1399.74,1402.29,29.58 -15655612867,44108084740,2025-06-14T21:00:00Z,30,1071,1399.47,1402.03,29.3 -15653742079,44104013228,2025-06-14T17:00:00Z,26,1081,1399.76,1402.46,30.29 -15651786133,44100160145,2025-06-14T14:00:00Z,27,1093,1400.0,1402.35,29.24 -15649987292,44095314814,2025-06-14T09:00:00Z,30,1065,1399.49,1402.11,29.37 -15646107434,44086831907,2025-06-14T02:00:00Z,27,1047,1399.6,1402.01,31.92 -15642962044,44079703037,2025-06-13T21:00:00Z,29,1065,1399.47,1402.06,30.63 -15638842903,44067697635,2025-06-13T17:00:00Z,30,1068,1399.68,1445.3,29.78 -15634027967,44053427212,2025-06-13T14:00:00Z,27,1051,1399.59,1445.3,27.92 -15629571833,44037516912,2025-06-13T09:00:00Z,27,1068,1399.59,1445.11,27.49 -15620031253,44010493569,2025-06-12T23:00:00Z,29,1096,1399.8,1448.08,29.3 diff --git a/.ci/scripts/benchmark_tooling/private/huggingfacetb-smollm2-135m_hf-xnnpack-custom-spda-kv-cache-8da4w_-s22-_android-13.csv b/.ci/scripts/benchmark_tooling/private/huggingfacetb-smollm2-135m_hf-xnnpack-custom-spda-kv-cache-8da4w_-s22-_android-13.csv deleted file mode 100644 index 61c9e6ae5ff..00000000000 --- a/.ci/scripts/benchmark_tooling/private/huggingfacetb-smollm2-135m_hf-xnnpack-custom-spda-kv-cache-8da4w_-s22-_android-13.csv +++ /dev/null @@ -1,29 +0,0 @@ -workflow_id,job_id,granularity_bucket,avg_inference_latency(ms),llm_model_load_time(ms),model_load_time(ms),ram_pss_usage(mb),token_per_sec,trimmean_inference_latency(ms) -15712320497,44280131792,2025-06-17T17:00:00Z,5.08,232.69,275.42,253,200.0,5.07 -15706687362,44261351450,2025-06-17T13:00:00Z,5.17,230.2,266.26,254,194.05,5.16 -15701619570,44244323755,2025-06-17T09:00:00Z,4.99,244.06,285.43,253,201.62,4.97 -15697890915,44230067957,2025-06-17T05:00:00Z,9.39,232.02,295.16,254,200.64,8.71 -15694752722,44221381863,2025-06-17T01:00:00Z,5.56,238.37,305.1,266,199.35,5.28 -15690721346,44211034387,2025-06-16T21:00:00Z,5.02,231.47,269.43,266,193.75,5.0 -15685858387,44195500217,2025-06-16T17:00:00Z,5.37,240.25,295.35,258,204.62,5.36 -15680276053,44184994658,2025-06-16T15:00:00Z,7.66,234.92,292.62,258,201.95,7.33 -15675229427,44160356972,2025-06-16T09:00:00Z,5.68,254.5,297.29,257,197.45,5.2 -15671609250,44146779212,2025-06-16T05:00:00Z,7.3,238.07,293.64,267,195.27,7.07 -15668838280,44139310442,2025-06-16T01:00:00Z,5.34,249.16,288.35,256,200.32,5.33 -15666871209,44133842083,2025-06-15T21:00:00Z,5.23,237.91,277.42,267,193.43,5.21 -15664964842,44129416866,2025-06-15T17:00:00Z,8.6,234.82,298.22,257,198.4,7.83 -15662964566,44125237276,2025-06-15T13:00:00Z,6.0,238.79,267.51,267,195.89,5.92 -15661066119,44120683489,2025-06-15T09:00:00Z,5.2,239.11,285.29,257,197.45,5.18 -15659315239,44116350825,2025-06-15T05:00:00Z,8.96,240.8,286.01,257,197.76,8.18 -15655627252,44107937078,2025-06-14T21:00:00Z,5.39,243.39,277.95,257,202.94,5.16 -15653757002,44103768469,2025-06-14T17:00:00Z,8.91,240.81,300.09,257,197.76,6.91 -15651807296,44099312849,2025-06-14T13:00:00Z,8.73,232.6,275.32,258,207.35,7.37 -15650005042,44095041071,2025-06-14T09:00:00Z,5.16,259.72,302.52,267,199.35,5.14 -15648224665,44090821985,2025-06-14T05:00:00Z,5.16,245.14,285.66,267,194.05,5.15 -15646186941,44086333101,2025-06-14T01:00:00Z,5.23,234.8,276.14,257,201.95,5.2 -15642991544,44079110098,2025-06-13T21:00:00Z,5.15,237.13,270.49,257,198.71,5.13 -15638881659,44066590049,2025-06-13T17:00:00Z,9.08,233.25,280.43,258,197.13,8.53 -15634084872,44050929738,2025-06-13T13:00:00Z,4.99,236.5,286.66,259,197.45,4.98 -15629618177,44036960905,2025-06-13T09:00:00Z,5.48,240.87,285.86,257,198.71,5.32 -15626198493,44024980719,2025-06-13T06:00:00Z,8.0,232.58,290.41,266,203.94,6.45 -15620031250,44009155339,2025-06-12T22:00:00Z,5.17,236.38,295.29,257,202.61,5.16 diff --git a/.ci/scripts/benchmark_tooling/private/huggingfacetb-smollm2-135m_hf-xnnpack-custom-spda-kv-cache-8da4w_-s22-private_android-13.csv b/.ci/scripts/benchmark_tooling/private/huggingfacetb-smollm2-135m_hf-xnnpack-custom-spda-kv-cache-8da4w_-s22-private_android-13.csv deleted file mode 100644 index 61c9e6ae5ff..00000000000 --- a/.ci/scripts/benchmark_tooling/private/huggingfacetb-smollm2-135m_hf-xnnpack-custom-spda-kv-cache-8da4w_-s22-private_android-13.csv +++ /dev/null @@ -1,29 +0,0 @@ -workflow_id,job_id,granularity_bucket,avg_inference_latency(ms),llm_model_load_time(ms),model_load_time(ms),ram_pss_usage(mb),token_per_sec,trimmean_inference_latency(ms) -15712320497,44280131792,2025-06-17T17:00:00Z,5.08,232.69,275.42,253,200.0,5.07 -15706687362,44261351450,2025-06-17T13:00:00Z,5.17,230.2,266.26,254,194.05,5.16 -15701619570,44244323755,2025-06-17T09:00:00Z,4.99,244.06,285.43,253,201.62,4.97 -15697890915,44230067957,2025-06-17T05:00:00Z,9.39,232.02,295.16,254,200.64,8.71 -15694752722,44221381863,2025-06-17T01:00:00Z,5.56,238.37,305.1,266,199.35,5.28 -15690721346,44211034387,2025-06-16T21:00:00Z,5.02,231.47,269.43,266,193.75,5.0 -15685858387,44195500217,2025-06-16T17:00:00Z,5.37,240.25,295.35,258,204.62,5.36 -15680276053,44184994658,2025-06-16T15:00:00Z,7.66,234.92,292.62,258,201.95,7.33 -15675229427,44160356972,2025-06-16T09:00:00Z,5.68,254.5,297.29,257,197.45,5.2 -15671609250,44146779212,2025-06-16T05:00:00Z,7.3,238.07,293.64,267,195.27,7.07 -15668838280,44139310442,2025-06-16T01:00:00Z,5.34,249.16,288.35,256,200.32,5.33 -15666871209,44133842083,2025-06-15T21:00:00Z,5.23,237.91,277.42,267,193.43,5.21 -15664964842,44129416866,2025-06-15T17:00:00Z,8.6,234.82,298.22,257,198.4,7.83 -15662964566,44125237276,2025-06-15T13:00:00Z,6.0,238.79,267.51,267,195.89,5.92 -15661066119,44120683489,2025-06-15T09:00:00Z,5.2,239.11,285.29,257,197.45,5.18 -15659315239,44116350825,2025-06-15T05:00:00Z,8.96,240.8,286.01,257,197.76,8.18 -15655627252,44107937078,2025-06-14T21:00:00Z,5.39,243.39,277.95,257,202.94,5.16 -15653757002,44103768469,2025-06-14T17:00:00Z,8.91,240.81,300.09,257,197.76,6.91 -15651807296,44099312849,2025-06-14T13:00:00Z,8.73,232.6,275.32,258,207.35,7.37 -15650005042,44095041071,2025-06-14T09:00:00Z,5.16,259.72,302.52,267,199.35,5.14 -15648224665,44090821985,2025-06-14T05:00:00Z,5.16,245.14,285.66,267,194.05,5.15 -15646186941,44086333101,2025-06-14T01:00:00Z,5.23,234.8,276.14,257,201.95,5.2 -15642991544,44079110098,2025-06-13T21:00:00Z,5.15,237.13,270.49,257,198.71,5.13 -15638881659,44066590049,2025-06-13T17:00:00Z,9.08,233.25,280.43,258,197.13,8.53 -15634084872,44050929738,2025-06-13T13:00:00Z,4.99,236.5,286.66,259,197.45,4.98 -15629618177,44036960905,2025-06-13T09:00:00Z,5.48,240.87,285.86,257,198.71,5.32 -15626198493,44024980719,2025-06-13T06:00:00Z,8.0,232.58,290.41,266,203.94,6.45 -15620031250,44009155339,2025-06-12T22:00:00Z,5.17,236.38,295.29,257,202.61,5.16 diff --git a/.ci/scripts/benchmark_tooling/private/huggingfacetb-smollm2-135m_hf-xnnpack-custom-spda-kv-cache-8da4w_-s22-ultra-_android-14.csv b/.ci/scripts/benchmark_tooling/private/huggingfacetb-smollm2-135m_hf-xnnpack-custom-spda-kv-cache-8da4w_-s22-ultra-_android-14.csv deleted file mode 100644 index 80033dd907a..00000000000 --- a/.ci/scripts/benchmark_tooling/private/huggingfacetb-smollm2-135m_hf-xnnpack-custom-spda-kv-cache-8da4w_-s22-ultra-_android-14.csv +++ /dev/null @@ -1,29 +0,0 @@ -workflow_id,job_id,granularity_bucket,avg_inference_latency(ms),llm_model_load_time(ms),model_load_time(ms),ram_pss_usage(mb),token_per_sec,trimmean_inference_latency(ms) -15712320497,44280131792,2025-06-17T17:00:00Z,5.03,195.96,237.56,263,202.28,5.01 -15706687362,44261351450,2025-06-17T13:00:00Z,5.32,195.38,229.2,262,202.28,5.3 -15701619570,44244323755,2025-06-17T09:00:00Z,6.15,193.76,236.57,263,193.75,6.1 -15697890915,44230067957,2025-06-17T05:00:00Z,5.22,197.65,243.81,264,198.71,5.18 -15694752722,44221381863,2025-06-17T01:00:00Z,5.18,198.54,238.15,266,204.28,5.15 -15690721346,44211034387,2025-06-16T21:00:00Z,5.34,197.21,261.05,266,200.64,5.31 -15685858387,44195500217,2025-06-16T17:00:00Z,5.3,198.32,248.27,266,199.35,5.28 -15680276053,44184994658,2025-06-16T15:00:00Z,5.17,195.91,257.7,266,202.61,5.16 -15675229427,44160356972,2025-06-16T09:00:00Z,5.23,196.07,248.92,266,204.95,5.21 -15671609250,44146779212,2025-06-16T05:00:00Z,5.14,197.32,249.71,266,200.64,5.12 -15668838280,44139310442,2025-06-16T01:00:00Z,5.05,201.42,236.03,266,200.0,5.03 -15666871209,44133842083,2025-06-15T21:00:00Z,5.24,195.81,240.72,266,199.03,5.23 -15664964842,44129416866,2025-06-15T17:00:00Z,5.28,199.56,238.46,266,198.08,5.27 -15662964566,44125237276,2025-06-15T13:00:00Z,5.12,198.17,236.21,266,201.29,5.11 -15661066119,44120683489,2025-06-15T09:00:00Z,9.35,202.12,242.07,267,199.67,8.02 -15659315239,44116350825,2025-06-15T05:00:00Z,5.47,200.86,249.01,266,198.08,5.26 -15655627252,44107937078,2025-06-14T21:00:00Z,6.5,198.51,238.13,266,199.67,6.36 -15653757002,44103768469,2025-06-14T17:00:00Z,5.33,194.3,240.72,266,202.61,5.31 -15651807296,44099312849,2025-06-14T13:00:00Z,5.16,199.73,240.33,267,203.27,5.13 -15650005042,44095041071,2025-06-14T09:00:00Z,5.49,200.71,239.28,266,198.4,5.47 -15648224665,44090821985,2025-06-14T05:00:00Z,5.31,195.78,269.08,267,200.0,5.29 -15646186941,44086333101,2025-06-14T01:00:00Z,6.15,198.59,287.55,266,197.13,5.8 -15642991544,44079110098,2025-06-13T21:00:00Z,6.76,209.17,235.16,266,188.73,6.59 -15638881659,44066590049,2025-06-13T17:00:00Z,5.05,199.15,234.27,266,198.4,5.04 -15634084872,44050929738,2025-06-13T13:00:00Z,5.23,197.45,246.25,266,198.71,5.22 -15629618177,44036960905,2025-06-13T09:00:00Z,5.48,196.3,260.76,266,200.32,5.39 -15626198493,44024980719,2025-06-13T06:00:00Z,5.23,201.71,238.06,266,200.97,5.21 -15620031250,44009155339,2025-06-12T22:00:00Z,5.29,197.19,249.2,266,193.14,5.29 diff --git a/.ci/scripts/benchmark_tooling/private/huggingfacetb-smollm2-135m_hf-xnnpack-custom-spda-kv-cache-8da4w_-s22-ultra-private_android-14.csv b/.ci/scripts/benchmark_tooling/private/huggingfacetb-smollm2-135m_hf-xnnpack-custom-spda-kv-cache-8da4w_-s22-ultra-private_android-14.csv deleted file mode 100644 index 80033dd907a..00000000000 --- a/.ci/scripts/benchmark_tooling/private/huggingfacetb-smollm2-135m_hf-xnnpack-custom-spda-kv-cache-8da4w_-s22-ultra-private_android-14.csv +++ /dev/null @@ -1,29 +0,0 @@ -workflow_id,job_id,granularity_bucket,avg_inference_latency(ms),llm_model_load_time(ms),model_load_time(ms),ram_pss_usage(mb),token_per_sec,trimmean_inference_latency(ms) -15712320497,44280131792,2025-06-17T17:00:00Z,5.03,195.96,237.56,263,202.28,5.01 -15706687362,44261351450,2025-06-17T13:00:00Z,5.32,195.38,229.2,262,202.28,5.3 -15701619570,44244323755,2025-06-17T09:00:00Z,6.15,193.76,236.57,263,193.75,6.1 -15697890915,44230067957,2025-06-17T05:00:00Z,5.22,197.65,243.81,264,198.71,5.18 -15694752722,44221381863,2025-06-17T01:00:00Z,5.18,198.54,238.15,266,204.28,5.15 -15690721346,44211034387,2025-06-16T21:00:00Z,5.34,197.21,261.05,266,200.64,5.31 -15685858387,44195500217,2025-06-16T17:00:00Z,5.3,198.32,248.27,266,199.35,5.28 -15680276053,44184994658,2025-06-16T15:00:00Z,5.17,195.91,257.7,266,202.61,5.16 -15675229427,44160356972,2025-06-16T09:00:00Z,5.23,196.07,248.92,266,204.95,5.21 -15671609250,44146779212,2025-06-16T05:00:00Z,5.14,197.32,249.71,266,200.64,5.12 -15668838280,44139310442,2025-06-16T01:00:00Z,5.05,201.42,236.03,266,200.0,5.03 -15666871209,44133842083,2025-06-15T21:00:00Z,5.24,195.81,240.72,266,199.03,5.23 -15664964842,44129416866,2025-06-15T17:00:00Z,5.28,199.56,238.46,266,198.08,5.27 -15662964566,44125237276,2025-06-15T13:00:00Z,5.12,198.17,236.21,266,201.29,5.11 -15661066119,44120683489,2025-06-15T09:00:00Z,9.35,202.12,242.07,267,199.67,8.02 -15659315239,44116350825,2025-06-15T05:00:00Z,5.47,200.86,249.01,266,198.08,5.26 -15655627252,44107937078,2025-06-14T21:00:00Z,6.5,198.51,238.13,266,199.67,6.36 -15653757002,44103768469,2025-06-14T17:00:00Z,5.33,194.3,240.72,266,202.61,5.31 -15651807296,44099312849,2025-06-14T13:00:00Z,5.16,199.73,240.33,267,203.27,5.13 -15650005042,44095041071,2025-06-14T09:00:00Z,5.49,200.71,239.28,266,198.4,5.47 -15648224665,44090821985,2025-06-14T05:00:00Z,5.31,195.78,269.08,267,200.0,5.29 -15646186941,44086333101,2025-06-14T01:00:00Z,6.15,198.59,287.55,266,197.13,5.8 -15642991544,44079110098,2025-06-13T21:00:00Z,6.76,209.17,235.16,266,188.73,6.59 -15638881659,44066590049,2025-06-13T17:00:00Z,5.05,199.15,234.27,266,198.4,5.04 -15634084872,44050929738,2025-06-13T13:00:00Z,5.23,197.45,246.25,266,198.71,5.22 -15629618177,44036960905,2025-06-13T09:00:00Z,5.48,196.3,260.76,266,200.32,5.39 -15626198493,44024980719,2025-06-13T06:00:00Z,5.23,201.71,238.06,266,200.97,5.21 -15620031250,44009155339,2025-06-12T22:00:00Z,5.29,197.19,249.2,266,193.14,5.29 diff --git a/.ci/scripts/benchmark_tooling/private/huggingfacetb-smollm2-135m_hf-xnnpack-custom-spda-kv-cache-8da4w_apple-iphone-15-_ios-18.0.csv b/.ci/scripts/benchmark_tooling/private/huggingfacetb-smollm2-135m_hf-xnnpack-custom-spda-kv-cache-8da4w_apple-iphone-15-_ios-18.0.csv deleted file mode 100644 index 5d203d158a4..00000000000 --- a/.ci/scripts/benchmark_tooling/private/huggingfacetb-smollm2-135m_hf-xnnpack-custom-spda-kv-cache-8da4w_apple-iphone-15-_ios-18.0.csv +++ /dev/null @@ -1,29 +0,0 @@ -workflow_id,job_id,granularity_bucket,avg_inference_latency(ms),model_load_time(ms),peak_inference_mem_usage(mb),peak_load_mem_usage(mb),token_per_sec -15712278899,44280789008,2025-06-17T17:00:00Z,117,156,207.02,183.08,8.01 -15706619480,44262431638,2025-06-17T13:00:00Z,103,147,207.3,182.98,8.05 -15701565915,44245403612,2025-06-17T09:00:00Z,111,148,207.04,182.97,7.92 -15697865923,44230646970,2025-06-17T05:00:00Z,123,150,207.34,183.02,7.68 -15694639442,44221536444,2025-06-17T01:00:00Z,112,163,208.11,186.57,7.67 -15690685696,44211619421,2025-06-16T21:00:00Z,99,152,207.76,186.35,7.97 -15685808660,44196632637,2025-06-16T17:00:00Z,118,159,208.38,186.71,7.45 -15680206509,44178256230,2025-06-16T13:00:00Z,115,144,207.91,186.65,8.3 -15675176293,44162005966,2025-06-16T10:00:00Z,117,150,207.65,186.37,8.19 -15671584185,44147537983,2025-06-16T06:00:00Z,118,149,208.47,186.82,7.9 -15668756024,44140855631,2025-06-16T02:00:00Z,113,165,208.07,186.53,6.93 -15666856809,44134617851,2025-06-15T22:00:00Z,133,162,208.09,186.62,7.55 -15664949756,44129710892,2025-06-15T17:00:00Z,103,151,207.89,186.59,8.08 -15662940074,44126695148,2025-06-15T15:00:00Z,107,144,207.82,186.56,8.66 -15661046591,44121071601,2025-06-15T10:00:00Z,118,151,208.23,186.63,8.16 -15659301910,44117138781,2025-06-15T06:00:00Z,115,151,207.87,186.61,7.78 -15657354121,44112759100,2025-06-15T02:00:00Z,133,163,207.9,186.46,7.86 -15655612867,44108084740,2025-06-14T21:00:00Z,114,147,207.76,186.47,7.83 -15653742079,44104013228,2025-06-14T17:00:00Z,120,151,208.1,186.52,8.01 -15651786133,44100160145,2025-06-14T14:00:00Z,133,152,208.16,186.47,7.76 -15649987292,44095314814,2025-06-14T09:00:00Z,125,151,207.78,186.41,7.51 -15646107434,44086831907,2025-06-14T02:00:00Z,113,154,208.16,186.72,7.94 -15642962044,44079703037,2025-06-13T21:00:00Z,120,157,207.79,186.47,7.85 -15638842903,44067697635,2025-06-13T17:00:00Z,116,154,207.92,228.97,7.77 -15634027967,44053427212,2025-06-13T14:00:00Z,123,150,207.94,229.22,7.89 -15629571833,44037516912,2025-06-13T09:00:00Z,113,148,208.2,229.06,8.17 -15626172835,44025076952,2025-06-13T06:00:00Z,113,154,208.13,229.03,7.9 -15620031253,44010493569,2025-06-12T23:00:00Z,118,162,207.91,228.92,8.01 diff --git a/.ci/scripts/benchmark_tooling/private/huggingfacetb-smollm2-135m_hf-xnnpack-custom-spda-kv-cache-8da4w_apple-iphone-15-plus-_ios-17.4.1.csv b/.ci/scripts/benchmark_tooling/private/huggingfacetb-smollm2-135m_hf-xnnpack-custom-spda-kv-cache-8da4w_apple-iphone-15-plus-_ios-17.4.1.csv deleted file mode 100644 index fdb949f89c5..00000000000 --- a/.ci/scripts/benchmark_tooling/private/huggingfacetb-smollm2-135m_hf-xnnpack-custom-spda-kv-cache-8da4w_apple-iphone-15-plus-_ios-17.4.1.csv +++ /dev/null @@ -1,28 +0,0 @@ -workflow_id,job_id,granularity_bucket,avg_inference_latency(ms),model_load_time(ms),peak_inference_mem_usage(mb),peak_load_mem_usage(mb),token_per_sec -15712278899,44280789008,2025-06-17T17:00:00Z,150,152,238.13,248.56,5.68 -15706619480,44262431638,2025-06-17T13:00:00Z,132,145,237.89,248.55,6.49 -15701565915,44245403612,2025-06-17T09:00:00Z,132,150,238.24,249.03,5.86 -15697865923,44230646970,2025-06-17T05:00:00Z,122,145,237.93,248.63,6.79 -15694639442,44221536444,2025-06-17T01:00:00Z,124,155,242.11,253.23,6.5 -15690685696,44211619421,2025-06-16T21:00:00Z,125,152,241.97,253.27,6.61 -15685808660,44196632637,2025-06-16T17:00:00Z,130,152,242.17,252.51,6.24 -15680206509,44178256230,2025-06-16T13:00:00Z,122,142,241.98,252.14,6.95 -15675176293,44162005966,2025-06-16T10:00:00Z,142,155,242.0,252.4,6.41 -15671584185,44147537983,2025-06-16T06:00:00Z,131,149,241.94,253.23,6.65 -15666856809,44134617851,2025-06-15T22:00:00Z,137,156,242.04,253.36,6.4 -15664949756,44129710892,2025-06-15T17:00:00Z,132,149,242.11,253.27,6.53 -15662940074,44126695148,2025-06-15T15:00:00Z,150,147,242.14,252.42,6.84 -15661046591,44121071601,2025-06-15T10:00:00Z,133,152,242.18,252.67,6.51 -15659301910,44117138781,2025-06-15T06:00:00Z,132,150,242.08,252.49,6.57 -15657354121,44112759100,2025-06-15T02:00:00Z,147,155,241.97,253.11,6.48 -15655612867,44108084740,2025-06-14T21:00:00Z,130,141,242.13,252.72,6.72 -15653742079,44104013228,2025-06-14T17:00:00Z,134,151,242.14,252.49,6.34 -15651786133,44100160145,2025-06-14T14:00:00Z,131,151,242.2,253.38,6.72 -15649987292,44095314814,2025-06-14T09:00:00Z,142,148,242.1,253.37,6.68 -15646107434,44086831907,2025-06-14T02:00:00Z,134,153,242.1,253.25,5.99 -15642962044,44079703037,2025-06-13T21:00:00Z,131,155,242.03,253.77,6.5 -15638842903,44067697635,2025-06-13T17:00:00Z,135,150,241.97,301.24,6.56 -15634027967,44053427212,2025-06-13T14:00:00Z,159,154,242.2,300.63,6.02 -15629571833,44037516912,2025-06-13T09:00:00Z,134,152,241.96,300.48,6.64 -15626172835,44025076952,2025-06-13T06:00:00Z,116,151,242.03,301.21,6.59 -15620031253,44010493569,2025-06-12T23:00:00Z,139,161,242.18,302.08,5.8 diff --git a/.ci/scripts/benchmark_tooling/private/huggingfacetb-smollm2-135m_hf-xnnpack-custom-spda-kv-cache-8da4w_apple-iphone-15-plus-private_ios-17.4.1.csv b/.ci/scripts/benchmark_tooling/private/huggingfacetb-smollm2-135m_hf-xnnpack-custom-spda-kv-cache-8da4w_apple-iphone-15-plus-private_ios-17.4.1.csv deleted file mode 100644 index fdb949f89c5..00000000000 --- a/.ci/scripts/benchmark_tooling/private/huggingfacetb-smollm2-135m_hf-xnnpack-custom-spda-kv-cache-8da4w_apple-iphone-15-plus-private_ios-17.4.1.csv +++ /dev/null @@ -1,28 +0,0 @@ -workflow_id,job_id,granularity_bucket,avg_inference_latency(ms),model_load_time(ms),peak_inference_mem_usage(mb),peak_load_mem_usage(mb),token_per_sec -15712278899,44280789008,2025-06-17T17:00:00Z,150,152,238.13,248.56,5.68 -15706619480,44262431638,2025-06-17T13:00:00Z,132,145,237.89,248.55,6.49 -15701565915,44245403612,2025-06-17T09:00:00Z,132,150,238.24,249.03,5.86 -15697865923,44230646970,2025-06-17T05:00:00Z,122,145,237.93,248.63,6.79 -15694639442,44221536444,2025-06-17T01:00:00Z,124,155,242.11,253.23,6.5 -15690685696,44211619421,2025-06-16T21:00:00Z,125,152,241.97,253.27,6.61 -15685808660,44196632637,2025-06-16T17:00:00Z,130,152,242.17,252.51,6.24 -15680206509,44178256230,2025-06-16T13:00:00Z,122,142,241.98,252.14,6.95 -15675176293,44162005966,2025-06-16T10:00:00Z,142,155,242.0,252.4,6.41 -15671584185,44147537983,2025-06-16T06:00:00Z,131,149,241.94,253.23,6.65 -15666856809,44134617851,2025-06-15T22:00:00Z,137,156,242.04,253.36,6.4 -15664949756,44129710892,2025-06-15T17:00:00Z,132,149,242.11,253.27,6.53 -15662940074,44126695148,2025-06-15T15:00:00Z,150,147,242.14,252.42,6.84 -15661046591,44121071601,2025-06-15T10:00:00Z,133,152,242.18,252.67,6.51 -15659301910,44117138781,2025-06-15T06:00:00Z,132,150,242.08,252.49,6.57 -15657354121,44112759100,2025-06-15T02:00:00Z,147,155,241.97,253.11,6.48 -15655612867,44108084740,2025-06-14T21:00:00Z,130,141,242.13,252.72,6.72 -15653742079,44104013228,2025-06-14T17:00:00Z,134,151,242.14,252.49,6.34 -15651786133,44100160145,2025-06-14T14:00:00Z,131,151,242.2,253.38,6.72 -15649987292,44095314814,2025-06-14T09:00:00Z,142,148,242.1,253.37,6.68 -15646107434,44086831907,2025-06-14T02:00:00Z,134,153,242.1,253.25,5.99 -15642962044,44079703037,2025-06-13T21:00:00Z,131,155,242.03,253.77,6.5 -15638842903,44067697635,2025-06-13T17:00:00Z,135,150,241.97,301.24,6.56 -15634027967,44053427212,2025-06-13T14:00:00Z,159,154,242.2,300.63,6.02 -15629571833,44037516912,2025-06-13T09:00:00Z,134,152,241.96,300.48,6.64 -15626172835,44025076952,2025-06-13T06:00:00Z,116,151,242.03,301.21,6.59 -15620031253,44010493569,2025-06-12T23:00:00Z,139,161,242.18,302.08,5.8 diff --git a/.ci/scripts/benchmark_tooling/private/huggingfacetb-smollm2-135m_hf-xnnpack-custom-spda-kv-cache-8da4w_apple-iphone-15-private_ios-18.0.csv b/.ci/scripts/benchmark_tooling/private/huggingfacetb-smollm2-135m_hf-xnnpack-custom-spda-kv-cache-8da4w_apple-iphone-15-private_ios-18.0.csv deleted file mode 100644 index 5d203d158a4..00000000000 --- a/.ci/scripts/benchmark_tooling/private/huggingfacetb-smollm2-135m_hf-xnnpack-custom-spda-kv-cache-8da4w_apple-iphone-15-private_ios-18.0.csv +++ /dev/null @@ -1,29 +0,0 @@ -workflow_id,job_id,granularity_bucket,avg_inference_latency(ms),model_load_time(ms),peak_inference_mem_usage(mb),peak_load_mem_usage(mb),token_per_sec -15712278899,44280789008,2025-06-17T17:00:00Z,117,156,207.02,183.08,8.01 -15706619480,44262431638,2025-06-17T13:00:00Z,103,147,207.3,182.98,8.05 -15701565915,44245403612,2025-06-17T09:00:00Z,111,148,207.04,182.97,7.92 -15697865923,44230646970,2025-06-17T05:00:00Z,123,150,207.34,183.02,7.68 -15694639442,44221536444,2025-06-17T01:00:00Z,112,163,208.11,186.57,7.67 -15690685696,44211619421,2025-06-16T21:00:00Z,99,152,207.76,186.35,7.97 -15685808660,44196632637,2025-06-16T17:00:00Z,118,159,208.38,186.71,7.45 -15680206509,44178256230,2025-06-16T13:00:00Z,115,144,207.91,186.65,8.3 -15675176293,44162005966,2025-06-16T10:00:00Z,117,150,207.65,186.37,8.19 -15671584185,44147537983,2025-06-16T06:00:00Z,118,149,208.47,186.82,7.9 -15668756024,44140855631,2025-06-16T02:00:00Z,113,165,208.07,186.53,6.93 -15666856809,44134617851,2025-06-15T22:00:00Z,133,162,208.09,186.62,7.55 -15664949756,44129710892,2025-06-15T17:00:00Z,103,151,207.89,186.59,8.08 -15662940074,44126695148,2025-06-15T15:00:00Z,107,144,207.82,186.56,8.66 -15661046591,44121071601,2025-06-15T10:00:00Z,118,151,208.23,186.63,8.16 -15659301910,44117138781,2025-06-15T06:00:00Z,115,151,207.87,186.61,7.78 -15657354121,44112759100,2025-06-15T02:00:00Z,133,163,207.9,186.46,7.86 -15655612867,44108084740,2025-06-14T21:00:00Z,114,147,207.76,186.47,7.83 -15653742079,44104013228,2025-06-14T17:00:00Z,120,151,208.1,186.52,8.01 -15651786133,44100160145,2025-06-14T14:00:00Z,133,152,208.16,186.47,7.76 -15649987292,44095314814,2025-06-14T09:00:00Z,125,151,207.78,186.41,7.51 -15646107434,44086831907,2025-06-14T02:00:00Z,113,154,208.16,186.72,7.94 -15642962044,44079703037,2025-06-13T21:00:00Z,120,157,207.79,186.47,7.85 -15638842903,44067697635,2025-06-13T17:00:00Z,116,154,207.92,228.97,7.77 -15634027967,44053427212,2025-06-13T14:00:00Z,123,150,207.94,229.22,7.89 -15629571833,44037516912,2025-06-13T09:00:00Z,113,148,208.2,229.06,8.17 -15626172835,44025076952,2025-06-13T06:00:00Z,113,154,208.13,229.03,7.9 -15620031253,44010493569,2025-06-12T23:00:00Z,118,162,207.91,228.92,8.01 diff --git a/.ci/scripts/benchmark_tooling/private/huggingfacetb-smollm2-135m_hf-xnnpack-custom-spda-kv-cache-8da4w_apple-iphone-15-pro-_ios-18.4.1.csv b/.ci/scripts/benchmark_tooling/private/huggingfacetb-smollm2-135m_hf-xnnpack-custom-spda-kv-cache-8da4w_apple-iphone-15-pro-_ios-18.4.1.csv deleted file mode 100644 index c9ecc8ad9b8..00000000000 --- a/.ci/scripts/benchmark_tooling/private/huggingfacetb-smollm2-135m_hf-xnnpack-custom-spda-kv-cache-8da4w_apple-iphone-15-pro-_ios-18.4.1.csv +++ /dev/null @@ -1,29 +0,0 @@ -workflow_id,job_id,granularity_bucket,avg_inference_latency(ms),model_load_time(ms),peak_inference_mem_usage(mb),peak_load_mem_usage(mb),token_per_sec -15712278899,44280789008,2025-06-17T17:00:00Z,33,111,240.14,253.16,28.45 -15706619480,44262431638,2025-06-17T13:00:00Z,40,112,240.09,253.21,29.42 -15701565915,44245403612,2025-06-17T09:00:00Z,24,110,240.11,253.15,33.05 -15697865923,44230646970,2025-06-17T05:00:00Z,36,111,240.02,253.05,31.65 -15694639442,44221536444,2025-06-17T01:00:00Z,41,118,244.68,257.48,27.45 -15690685696,44211619421,2025-06-16T21:00:00Z,36,113,244.58,257.66,29.83 -15685808660,44196632637,2025-06-16T17:00:00Z,30,114,244.55,257.56,29.0 -15680206509,44178256230,2025-06-16T13:00:00Z,52,111,244.83,257.45,29.59 -15675176293,44162005966,2025-06-16T10:00:00Z,34,113,244.5,257.12,31.62 -15671584185,44147537983,2025-06-16T06:00:00Z,28,113,244.46,257.3,30.29 -15668756024,44140855631,2025-06-16T02:00:00Z,31,117,244.41,257.37,30.72 -15666856809,44134617851,2025-06-15T22:00:00Z,34,114,244.4,257.18,31.75 -15664949756,44129710892,2025-06-15T17:00:00Z,30,112,244.34,257.19,31.34 -15662940074,44126695148,2025-06-15T15:00:00Z,37,111,244.69,257.48,32.76 -15661046591,44121071601,2025-06-15T10:00:00Z,29,113,244.5,257.37,30.9 -15659301910,44117138781,2025-06-15T06:00:00Z,31,112,244.55,257.21,32.42 -15657354121,44112759100,2025-06-15T02:00:00Z,34,115,244.81,257.58,31.94 -15655612867,44108084740,2025-06-14T21:00:00Z,38,112,244.76,257.74,32.83 -15653742079,44104013228,2025-06-14T17:00:00Z,37,114,244.6,257.34,31.83 -15651786133,44100160145,2025-06-14T14:00:00Z,33,113,244.43,257.32,31.8 -15649987292,44095314814,2025-06-14T09:00:00Z,36,115,244.7,257.38,32.07 -15646107434,44086831907,2025-06-14T02:00:00Z,36,112,244.56,257.45,32.28 -15642962044,44079703037,2025-06-13T21:00:00Z,32,114,244.76,257.43,31.81 -15638842903,44067697635,2025-06-13T17:00:00Z,29,113,244.56,317.1,31.97 -15634027967,44053427212,2025-06-13T14:00:00Z,36,112,244.7,317.29,30.37 -15629571833,44037516912,2025-06-13T09:00:00Z,25,112,244.49,316.86,31.12 -15626172835,44025076952,2025-06-13T06:00:00Z,31,113,244.5,317.26,31.94 -15620031253,44010493569,2025-06-12T23:00:00Z,25,114,244.47,317.61,29.58 diff --git a/.ci/scripts/benchmark_tooling/private/huggingfacetb-smollm2-135m_hf-xnnpack-custom-spda-kv-cache-8da4w_apple-iphone-15-pro-private_ios-18.4.1.csv b/.ci/scripts/benchmark_tooling/private/huggingfacetb-smollm2-135m_hf-xnnpack-custom-spda-kv-cache-8da4w_apple-iphone-15-pro-private_ios-18.4.1.csv deleted file mode 100644 index c9ecc8ad9b8..00000000000 --- a/.ci/scripts/benchmark_tooling/private/huggingfacetb-smollm2-135m_hf-xnnpack-custom-spda-kv-cache-8da4w_apple-iphone-15-pro-private_ios-18.4.1.csv +++ /dev/null @@ -1,29 +0,0 @@ -workflow_id,job_id,granularity_bucket,avg_inference_latency(ms),model_load_time(ms),peak_inference_mem_usage(mb),peak_load_mem_usage(mb),token_per_sec -15712278899,44280789008,2025-06-17T17:00:00Z,33,111,240.14,253.16,28.45 -15706619480,44262431638,2025-06-17T13:00:00Z,40,112,240.09,253.21,29.42 -15701565915,44245403612,2025-06-17T09:00:00Z,24,110,240.11,253.15,33.05 -15697865923,44230646970,2025-06-17T05:00:00Z,36,111,240.02,253.05,31.65 -15694639442,44221536444,2025-06-17T01:00:00Z,41,118,244.68,257.48,27.45 -15690685696,44211619421,2025-06-16T21:00:00Z,36,113,244.58,257.66,29.83 -15685808660,44196632637,2025-06-16T17:00:00Z,30,114,244.55,257.56,29.0 -15680206509,44178256230,2025-06-16T13:00:00Z,52,111,244.83,257.45,29.59 -15675176293,44162005966,2025-06-16T10:00:00Z,34,113,244.5,257.12,31.62 -15671584185,44147537983,2025-06-16T06:00:00Z,28,113,244.46,257.3,30.29 -15668756024,44140855631,2025-06-16T02:00:00Z,31,117,244.41,257.37,30.72 -15666856809,44134617851,2025-06-15T22:00:00Z,34,114,244.4,257.18,31.75 -15664949756,44129710892,2025-06-15T17:00:00Z,30,112,244.34,257.19,31.34 -15662940074,44126695148,2025-06-15T15:00:00Z,37,111,244.69,257.48,32.76 -15661046591,44121071601,2025-06-15T10:00:00Z,29,113,244.5,257.37,30.9 -15659301910,44117138781,2025-06-15T06:00:00Z,31,112,244.55,257.21,32.42 -15657354121,44112759100,2025-06-15T02:00:00Z,34,115,244.81,257.58,31.94 -15655612867,44108084740,2025-06-14T21:00:00Z,38,112,244.76,257.74,32.83 -15653742079,44104013228,2025-06-14T17:00:00Z,37,114,244.6,257.34,31.83 -15651786133,44100160145,2025-06-14T14:00:00Z,33,113,244.43,257.32,31.8 -15649987292,44095314814,2025-06-14T09:00:00Z,36,115,244.7,257.38,32.07 -15646107434,44086831907,2025-06-14T02:00:00Z,36,112,244.56,257.45,32.28 -15642962044,44079703037,2025-06-13T21:00:00Z,32,114,244.76,257.43,31.81 -15638842903,44067697635,2025-06-13T17:00:00Z,29,113,244.56,317.1,31.97 -15634027967,44053427212,2025-06-13T14:00:00Z,36,112,244.7,317.29,30.37 -15629571833,44037516912,2025-06-13T09:00:00Z,25,112,244.49,316.86,31.12 -15626172835,44025076952,2025-06-13T06:00:00Z,31,113,244.5,317.26,31.94 -15620031253,44010493569,2025-06-12T23:00:00Z,25,114,244.47,317.61,29.58 diff --git a/.ci/scripts/benchmark_tooling/private/meta-llama-llama-3.2-1b-instruct-qlora-int4-eo8_llama3-qlora_-s22-_android-13.csv b/.ci/scripts/benchmark_tooling/private/meta-llama-llama-3.2-1b-instruct-qlora-int4-eo8_llama3-qlora_-s22-_android-13.csv deleted file mode 100644 index 4ed141f4107..00000000000 --- a/.ci/scripts/benchmark_tooling/private/meta-llama-llama-3.2-1b-instruct-qlora-int4-eo8_llama3-qlora_-s22-_android-13.csv +++ /dev/null @@ -1,11 +0,0 @@ -workflow_id,job_id,granularity_bucket,avg_inference_latency(ms),llm_model_load_time(ms),model_load_time(ms),ram_pss_usage(mb),token_per_sec,trimmean_inference_latency(ms) -15615520755,43991248116,2025-06-12T17:00:00Z,23503.87,5191.83,2519.01,1846,29.15,23347.41 -15605026631,43956669874,2025-06-12T09:00:00Z,21553.89,4849.82,2679.69,1855,32.12,21448.13 -15601359910,43943792457,2025-06-12T05:00:00Z,22456.68,4796.66,2704.24,1853,31.44,22354.05 -15598383765,43935960659,2025-06-12T01:00:00Z,23815.42,4976.46,2934.02,1844,28.87,23680.55 -15594484786,43925468969,2025-06-11T21:00:00Z,24441.16,5174.44,3534.68,1852,27.77,24267.86 -15589858447,43914218724,2025-06-11T18:00:00Z,23176.6,4967.04,3028.98,1856,29.55,23031.2 -15584331831,43891253427,2025-06-11T13:00:00Z,22153.79,5063.66,2214.28,1857,31.73,22037.97 -15579400247,43875126572,2025-06-11T09:00:00Z,23223.04,5085.34,2656.79,1846,29.59,23157.0 -15575806493,43862405466,2025-06-11T05:00:00Z,24185.54,5605.22,3360.71,1853,27.85,24081.04 -15572893795,43854545007,2025-06-11T01:00:00Z,24385.09,5129.64,3049.4,1855,30.92,24227.06 diff --git a/.ci/scripts/benchmark_tooling/private/meta-llama-llama-3.2-1b-instruct-qlora-int4-eo8_llama3-qlora_-s22-private_android-13.csv b/.ci/scripts/benchmark_tooling/private/meta-llama-llama-3.2-1b-instruct-qlora-int4-eo8_llama3-qlora_-s22-private_android-13.csv deleted file mode 100644 index 4ed141f4107..00000000000 --- a/.ci/scripts/benchmark_tooling/private/meta-llama-llama-3.2-1b-instruct-qlora-int4-eo8_llama3-qlora_-s22-private_android-13.csv +++ /dev/null @@ -1,11 +0,0 @@ -workflow_id,job_id,granularity_bucket,avg_inference_latency(ms),llm_model_load_time(ms),model_load_time(ms),ram_pss_usage(mb),token_per_sec,trimmean_inference_latency(ms) -15615520755,43991248116,2025-06-12T17:00:00Z,23503.87,5191.83,2519.01,1846,29.15,23347.41 -15605026631,43956669874,2025-06-12T09:00:00Z,21553.89,4849.82,2679.69,1855,32.12,21448.13 -15601359910,43943792457,2025-06-12T05:00:00Z,22456.68,4796.66,2704.24,1853,31.44,22354.05 -15598383765,43935960659,2025-06-12T01:00:00Z,23815.42,4976.46,2934.02,1844,28.87,23680.55 -15594484786,43925468969,2025-06-11T21:00:00Z,24441.16,5174.44,3534.68,1852,27.77,24267.86 -15589858447,43914218724,2025-06-11T18:00:00Z,23176.6,4967.04,3028.98,1856,29.55,23031.2 -15584331831,43891253427,2025-06-11T13:00:00Z,22153.79,5063.66,2214.28,1857,31.73,22037.97 -15579400247,43875126572,2025-06-11T09:00:00Z,23223.04,5085.34,2656.79,1846,29.59,23157.0 -15575806493,43862405466,2025-06-11T05:00:00Z,24185.54,5605.22,3360.71,1853,27.85,24081.04 -15572893795,43854545007,2025-06-11T01:00:00Z,24385.09,5129.64,3049.4,1855,30.92,24227.06 diff --git a/.ci/scripts/benchmark_tooling/private/meta-llama-llama-3.2-1b-instruct-qlora-int4-eo8_llama3-qlora_-s22-ultra-_android-14.csv b/.ci/scripts/benchmark_tooling/private/meta-llama-llama-3.2-1b-instruct-qlora-int4-eo8_llama3-qlora_-s22-ultra-_android-14.csv deleted file mode 100644 index 87d5d3ebdfd..00000000000 --- a/.ci/scripts/benchmark_tooling/private/meta-llama-llama-3.2-1b-instruct-qlora-int4-eo8_llama3-qlora_-s22-ultra-_android-14.csv +++ /dev/null @@ -1,11 +0,0 @@ -workflow_id,job_id,granularity_bucket,avg_inference_latency(ms),llm_model_load_time(ms),model_load_time(ms),ram_pss_usage(mb),token_per_sec,trimmean_inference_latency(ms) -15615520755,43991248116,2025-06-12T17:00:00Z,22835.06,2927.2,1725.54,1860,31.1,22675.01 -15605026631,43956669874,2025-06-12T09:00:00Z,21961.37,2553.17,1722.09,1860,33.25,21886.96 -15601359910,43943792457,2025-06-12T05:00:00Z,22970.58,2943.64,1693.81,1860,29.89,22860.58 -15598383765,43935960659,2025-06-12T01:00:00Z,23708.65,3257.09,1736.01,1860,28.84,23290.23 -15594484786,43925468969,2025-06-11T21:00:00Z,24924.29,3248.96,1709.81,1860,27.68,24494.91 -15589858447,43914218724,2025-06-11T18:00:00Z,23084.6,2936.75,1706.62,1860,30.51,22969.77 -15584331831,43891253427,2025-06-11T13:00:00Z,23209.99,2989.91,1726.29,1861,31.57,23076.05 -15579400247,43875126572,2025-06-11T09:00:00Z,24611.81,3265.23,1708.76,1860,27.59,24053.0 -15575806493,43862405466,2025-06-11T05:00:00Z,26795.63,3460.04,1755.55,1850,22.57,26662.57 -15572893795,43854545007,2025-06-11T01:00:00Z,33650.53,4056.73,1740.23,1849,22.55,33450.83 diff --git a/.ci/scripts/benchmark_tooling/private/meta-llama-llama-3.2-1b-instruct-qlora-int4-eo8_llama3-qlora_-s22-ultra-private_android-14.csv b/.ci/scripts/benchmark_tooling/private/meta-llama-llama-3.2-1b-instruct-qlora-int4-eo8_llama3-qlora_-s22-ultra-private_android-14.csv deleted file mode 100644 index 87d5d3ebdfd..00000000000 --- a/.ci/scripts/benchmark_tooling/private/meta-llama-llama-3.2-1b-instruct-qlora-int4-eo8_llama3-qlora_-s22-ultra-private_android-14.csv +++ /dev/null @@ -1,11 +0,0 @@ -workflow_id,job_id,granularity_bucket,avg_inference_latency(ms),llm_model_load_time(ms),model_load_time(ms),ram_pss_usage(mb),token_per_sec,trimmean_inference_latency(ms) -15615520755,43991248116,2025-06-12T17:00:00Z,22835.06,2927.2,1725.54,1860,31.1,22675.01 -15605026631,43956669874,2025-06-12T09:00:00Z,21961.37,2553.17,1722.09,1860,33.25,21886.96 -15601359910,43943792457,2025-06-12T05:00:00Z,22970.58,2943.64,1693.81,1860,29.89,22860.58 -15598383765,43935960659,2025-06-12T01:00:00Z,23708.65,3257.09,1736.01,1860,28.84,23290.23 -15594484786,43925468969,2025-06-11T21:00:00Z,24924.29,3248.96,1709.81,1860,27.68,24494.91 -15589858447,43914218724,2025-06-11T18:00:00Z,23084.6,2936.75,1706.62,1860,30.51,22969.77 -15584331831,43891253427,2025-06-11T13:00:00Z,23209.99,2989.91,1726.29,1861,31.57,23076.05 -15579400247,43875126572,2025-06-11T09:00:00Z,24611.81,3265.23,1708.76,1860,27.59,24053.0 -15575806493,43862405466,2025-06-11T05:00:00Z,26795.63,3460.04,1755.55,1850,22.57,26662.57 -15572893795,43854545007,2025-06-11T01:00:00Z,33650.53,4056.73,1740.23,1849,22.55,33450.83 diff --git a/.ci/scripts/benchmark_tooling/private/meta-llama-llama-3.2-1b-instruct-qlora-int4-eo8_llama3-qlora_apple-iphone-15-_ios-18.0.csv b/.ci/scripts/benchmark_tooling/private/meta-llama-llama-3.2-1b-instruct-qlora-int4-eo8_llama3-qlora_apple-iphone-15-_ios-18.0.csv deleted file mode 100644 index 33a6b1cc0ae..00000000000 --- a/.ci/scripts/benchmark_tooling/private/meta-llama-llama-3.2-1b-instruct-qlora-int4-eo8_llama3-qlora_apple-iphone-15-_ios-18.0.csv +++ /dev/null @@ -1,11 +0,0 @@ -workflow_id,job_id,granularity_bucket,avg_inference_latency(ms),model_load_time(ms),peak_inference_mem_usage(mb),peak_load_mem_usage(mb),token_per_sec -15615480751,43993124686,2025-06-12T17:00:00Z,14371,1682,1876.36,2106.54,10.14 -15604974289,43958007180,2025-06-12T09:00:00Z,14075,1571,1878.11,2106.82,6.28 -15601337433,43944770836,2025-06-12T05:00:00Z,14215,1599,1876.56,2106.06,6.15 -15598277481,43937275861,2025-06-12T01:00:00Z,15161,1674,1879.25,2106.17,5.78 -15594453833,43926877649,2025-06-11T21:00:00Z,15381,1719,1881.74,2106.38,5.64 -15589818422,43912035344,2025-06-11T17:00:00Z,14440,1677,1883.31,2106.69,5.95 -15584268753,43893469529,2025-06-11T13:00:00Z,20351,2097,1882.81,2106.13,3.79 -15579346239,43876994524,2025-06-11T09:00:00Z,15769,1767,1882.89,2106.45,4.16 -15575781424,43864061188,2025-06-11T05:00:00Z,18880,1958,1882.28,2106.45,3.93 -15572789992,43855812660,2025-06-11T01:00:00Z,16685,1994,1878.63,2105.17,4.61 diff --git a/.ci/scripts/benchmark_tooling/private/meta-llama-llama-3.2-1b-instruct-qlora-int4-eo8_llama3-qlora_apple-iphone-15-plus-_ios-17.4.1.csv b/.ci/scripts/benchmark_tooling/private/meta-llama-llama-3.2-1b-instruct-qlora-int4-eo8_llama3-qlora_apple-iphone-15-plus-_ios-17.4.1.csv deleted file mode 100644 index 8139b86a208..00000000000 --- a/.ci/scripts/benchmark_tooling/private/meta-llama-llama-3.2-1b-instruct-qlora-int4-eo8_llama3-qlora_apple-iphone-15-plus-_ios-17.4.1.csv +++ /dev/null @@ -1,11 +0,0 @@ -workflow_id,job_id,granularity_bucket,avg_inference_latency(ms),model_load_time(ms),peak_inference_mem_usage(mb),peak_load_mem_usage(mb),token_per_sec -15615480751,43993124686,2025-06-12T17:00:00Z,14135,1612,1900.48,2217.44,5.0 -15604974289,43958007180,2025-06-12T09:00:00Z,14106,1572,1900.54,2217.53,4.91 -15601337433,43944770836,2025-06-12T05:00:00Z,14097,1591,1900.55,2217.39,5.0 -15598277481,43937275861,2025-06-12T01:00:00Z,15316,1495,1900.52,2217.31,4.97 -15594453833,43926877649,2025-06-11T21:00:00Z,15431,1659,1900.53,2217.83,4.83 -15589818422,43912035344,2025-06-11T17:00:00Z,14292,1617,1898.46,2217.97,4.98 -15584268753,43893469529,2025-06-11T13:00:00Z,14139,1522,1900.47,2217.73,5.05 -15579346239,43876994524,2025-06-11T09:00:00Z,14046,1563,1900.38,2217.7,4.59 -15575781424,43864061188,2025-06-11T05:00:00Z,14261,1556,1900.34,2217.93,4.93 -15572789992,43855812660,2025-06-11T01:00:00Z,14645,1589,1900.47,2216.15,4.86 diff --git a/.ci/scripts/benchmark_tooling/private/meta-llama-llama-3.2-1b-instruct-qlora-int4-eo8_llama3-qlora_apple-iphone-15-plus-private_ios-17.4.1.csv b/.ci/scripts/benchmark_tooling/private/meta-llama-llama-3.2-1b-instruct-qlora-int4-eo8_llama3-qlora_apple-iphone-15-plus-private_ios-17.4.1.csv deleted file mode 100644 index 8139b86a208..00000000000 --- a/.ci/scripts/benchmark_tooling/private/meta-llama-llama-3.2-1b-instruct-qlora-int4-eo8_llama3-qlora_apple-iphone-15-plus-private_ios-17.4.1.csv +++ /dev/null @@ -1,11 +0,0 @@ -workflow_id,job_id,granularity_bucket,avg_inference_latency(ms),model_load_time(ms),peak_inference_mem_usage(mb),peak_load_mem_usage(mb),token_per_sec -15615480751,43993124686,2025-06-12T17:00:00Z,14135,1612,1900.48,2217.44,5.0 -15604974289,43958007180,2025-06-12T09:00:00Z,14106,1572,1900.54,2217.53,4.91 -15601337433,43944770836,2025-06-12T05:00:00Z,14097,1591,1900.55,2217.39,5.0 -15598277481,43937275861,2025-06-12T01:00:00Z,15316,1495,1900.52,2217.31,4.97 -15594453833,43926877649,2025-06-11T21:00:00Z,15431,1659,1900.53,2217.83,4.83 -15589818422,43912035344,2025-06-11T17:00:00Z,14292,1617,1898.46,2217.97,4.98 -15584268753,43893469529,2025-06-11T13:00:00Z,14139,1522,1900.47,2217.73,5.05 -15579346239,43876994524,2025-06-11T09:00:00Z,14046,1563,1900.38,2217.7,4.59 -15575781424,43864061188,2025-06-11T05:00:00Z,14261,1556,1900.34,2217.93,4.93 -15572789992,43855812660,2025-06-11T01:00:00Z,14645,1589,1900.47,2216.15,4.86 diff --git a/.ci/scripts/benchmark_tooling/private/meta-llama-llama-3.2-1b-instruct-qlora-int4-eo8_llama3-qlora_apple-iphone-15-private_ios-18.0.csv b/.ci/scripts/benchmark_tooling/private/meta-llama-llama-3.2-1b-instruct-qlora-int4-eo8_llama3-qlora_apple-iphone-15-private_ios-18.0.csv deleted file mode 100644 index 33a6b1cc0ae..00000000000 --- a/.ci/scripts/benchmark_tooling/private/meta-llama-llama-3.2-1b-instruct-qlora-int4-eo8_llama3-qlora_apple-iphone-15-private_ios-18.0.csv +++ /dev/null @@ -1,11 +0,0 @@ -workflow_id,job_id,granularity_bucket,avg_inference_latency(ms),model_load_time(ms),peak_inference_mem_usage(mb),peak_load_mem_usage(mb),token_per_sec -15615480751,43993124686,2025-06-12T17:00:00Z,14371,1682,1876.36,2106.54,10.14 -15604974289,43958007180,2025-06-12T09:00:00Z,14075,1571,1878.11,2106.82,6.28 -15601337433,43944770836,2025-06-12T05:00:00Z,14215,1599,1876.56,2106.06,6.15 -15598277481,43937275861,2025-06-12T01:00:00Z,15161,1674,1879.25,2106.17,5.78 -15594453833,43926877649,2025-06-11T21:00:00Z,15381,1719,1881.74,2106.38,5.64 -15589818422,43912035344,2025-06-11T17:00:00Z,14440,1677,1883.31,2106.69,5.95 -15584268753,43893469529,2025-06-11T13:00:00Z,20351,2097,1882.81,2106.13,3.79 -15579346239,43876994524,2025-06-11T09:00:00Z,15769,1767,1882.89,2106.45,4.16 -15575781424,43864061188,2025-06-11T05:00:00Z,18880,1958,1882.28,2106.45,3.93 -15572789992,43855812660,2025-06-11T01:00:00Z,16685,1994,1878.63,2105.17,4.61 diff --git a/.ci/scripts/benchmark_tooling/private/meta-llama-llama-3.2-1b-instruct-qlora-int4-eo8_llama3-qlora_apple-iphone-15-pro-_ios-18.4.1.csv b/.ci/scripts/benchmark_tooling/private/meta-llama-llama-3.2-1b-instruct-qlora-int4-eo8_llama3-qlora_apple-iphone-15-pro-_ios-18.4.1.csv deleted file mode 100644 index 7a36f76167f..00000000000 --- a/.ci/scripts/benchmark_tooling/private/meta-llama-llama-3.2-1b-instruct-qlora-int4-eo8_llama3-qlora_apple-iphone-15-pro-_ios-18.4.1.csv +++ /dev/null @@ -1,11 +0,0 @@ -workflow_id,job_id,granularity_bucket,avg_inference_latency(ms),model_load_time(ms),peak_inference_mem_usage(mb),peak_load_mem_usage(mb),token_per_sec -15615480751,43993124686,2025-06-12T17:00:00Z,12248,1240,2228.26,2125.32,12.38 -15604974289,43958007180,2025-06-12T09:00:00Z,12262,1243,2228.34,2125.28,12.29 -15601337433,43944770836,2025-06-12T05:00:00Z,12224,1234,2228.23,2125.53,12.82 -15598277481,43937275861,2025-06-12T01:00:00Z,12337,1247,2228.19,2125.03,12.29 -15594453833,43926877649,2025-06-11T21:00:00Z,12374,1253,2228.28,2125.48,12.08 -15589818422,43912035344,2025-06-11T17:00:00Z,12300,1247,2228.19,2125.54,12.44 -15584268753,43893469529,2025-06-11T13:00:00Z,12338,1244,2228.22,2125.18,12.29 -15579346239,43876994524,2025-06-11T09:00:00Z,12259,1248,2228.19,2125.15,12.45 -15575781424,43864061188,2025-06-11T05:00:00Z,12382,1246,2228.21,2125.27,12.27 -15572789992,43855812660,2025-06-11T01:00:00Z,12795,1283,2228.17,2124.4,11.73 diff --git a/.ci/scripts/benchmark_tooling/private/meta-llama-llama-3.2-1b-instruct-qlora-int4-eo8_llama3-qlora_apple-iphone-15-pro-private_ios-18.4.1.csv b/.ci/scripts/benchmark_tooling/private/meta-llama-llama-3.2-1b-instruct-qlora-int4-eo8_llama3-qlora_apple-iphone-15-pro-private_ios-18.4.1.csv deleted file mode 100644 index 7a36f76167f..00000000000 --- a/.ci/scripts/benchmark_tooling/private/meta-llama-llama-3.2-1b-instruct-qlora-int4-eo8_llama3-qlora_apple-iphone-15-pro-private_ios-18.4.1.csv +++ /dev/null @@ -1,11 +0,0 @@ -workflow_id,job_id,granularity_bucket,avg_inference_latency(ms),model_load_time(ms),peak_inference_mem_usage(mb),peak_load_mem_usage(mb),token_per_sec -15615480751,43993124686,2025-06-12T17:00:00Z,12248,1240,2228.26,2125.32,12.38 -15604974289,43958007180,2025-06-12T09:00:00Z,12262,1243,2228.34,2125.28,12.29 -15601337433,43944770836,2025-06-12T05:00:00Z,12224,1234,2228.23,2125.53,12.82 -15598277481,43937275861,2025-06-12T01:00:00Z,12337,1247,2228.19,2125.03,12.29 -15594453833,43926877649,2025-06-11T21:00:00Z,12374,1253,2228.28,2125.48,12.08 -15589818422,43912035344,2025-06-11T17:00:00Z,12300,1247,2228.19,2125.54,12.44 -15584268753,43893469529,2025-06-11T13:00:00Z,12338,1244,2228.22,2125.18,12.29 -15579346239,43876994524,2025-06-11T09:00:00Z,12259,1248,2228.19,2125.15,12.45 -15575781424,43864061188,2025-06-11T05:00:00Z,12382,1246,2228.21,2125.27,12.27 -15572789992,43855812660,2025-06-11T01:00:00Z,12795,1283,2228.17,2124.4,11.73 diff --git a/.ci/scripts/benchmark_tooling/private/meta-llama-llama-3.2-1b-instruct-spinquant-int4-eo8_llama3-spinquant_-s22-_android-13.csv b/.ci/scripts/benchmark_tooling/private/meta-llama-llama-3.2-1b-instruct-spinquant-int4-eo8_llama3-spinquant_-s22-_android-13.csv deleted file mode 100644 index a2fb8569ee0..00000000000 --- a/.ci/scripts/benchmark_tooling/private/meta-llama-llama-3.2-1b-instruct-spinquant-int4-eo8_llama3-spinquant_-s22-_android-13.csv +++ /dev/null @@ -1,12 +0,0 @@ -workflow_id,job_id,granularity_bucket,avg_inference_latency(ms),llm_model_load_time(ms),model_load_time(ms),ram_pss_usage(mb),token_per_sec,trimmean_inference_latency(ms) -15615520755,43991248116,2025-06-12T17:00:00Z,22013.41,4251.64,3148.64,1473,32.65,21926.85 -15609976846,43972978640,2025-06-12T13:00:00Z,21798.08,4561.45,2589.85,1479,36.31,21667.06 -15605026631,43956669874,2025-06-12T09:00:00Z,21490.5,4653.6,2150.01,1481,34.39,21367.61 -15601359910,43943792457,2025-06-12T05:00:00Z,21020.11,4541.74,2233.61,1479,34.01,20884.95 -15598383765,43935960659,2025-06-12T01:00:00Z,22526.58,4576.39,2172.29,1480,34.11,22420.59 -15594484786,43925468969,2025-06-11T21:00:00Z,22588.16,5175.36,2085.37,1479,30.04,22480.96 -15589858447,43914218724,2025-06-11T18:00:00Z,22002.38,4576.92,2178.61,1478,35.84,21864.97 -15584331831,43891253427,2025-06-11T13:00:00Z,21931.83,4529.22,2245.6,1479,34.62,21827.08 -15579400247,43875126572,2025-06-11T09:00:00Z,22433.95,4972.81,2647.57,1487,32.45,22314.91 -15575806493,43862405466,2025-06-11T05:00:00Z,23151.53,5096.7,2160.32,1481,30.98,23004.06 -15572893795,43854545007,2025-06-11T01:00:00Z,23589.88,4900.33,3340.95,1477,29.84,23423.93 diff --git a/.ci/scripts/benchmark_tooling/private/meta-llama-llama-3.2-1b-instruct-spinquant-int4-eo8_llama3-spinquant_-s22-private_android-13.csv b/.ci/scripts/benchmark_tooling/private/meta-llama-llama-3.2-1b-instruct-spinquant-int4-eo8_llama3-spinquant_-s22-private_android-13.csv deleted file mode 100644 index a2fb8569ee0..00000000000 --- a/.ci/scripts/benchmark_tooling/private/meta-llama-llama-3.2-1b-instruct-spinquant-int4-eo8_llama3-spinquant_-s22-private_android-13.csv +++ /dev/null @@ -1,12 +0,0 @@ -workflow_id,job_id,granularity_bucket,avg_inference_latency(ms),llm_model_load_time(ms),model_load_time(ms),ram_pss_usage(mb),token_per_sec,trimmean_inference_latency(ms) -15615520755,43991248116,2025-06-12T17:00:00Z,22013.41,4251.64,3148.64,1473,32.65,21926.85 -15609976846,43972978640,2025-06-12T13:00:00Z,21798.08,4561.45,2589.85,1479,36.31,21667.06 -15605026631,43956669874,2025-06-12T09:00:00Z,21490.5,4653.6,2150.01,1481,34.39,21367.61 -15601359910,43943792457,2025-06-12T05:00:00Z,21020.11,4541.74,2233.61,1479,34.01,20884.95 -15598383765,43935960659,2025-06-12T01:00:00Z,22526.58,4576.39,2172.29,1480,34.11,22420.59 -15594484786,43925468969,2025-06-11T21:00:00Z,22588.16,5175.36,2085.37,1479,30.04,22480.96 -15589858447,43914218724,2025-06-11T18:00:00Z,22002.38,4576.92,2178.61,1478,35.84,21864.97 -15584331831,43891253427,2025-06-11T13:00:00Z,21931.83,4529.22,2245.6,1479,34.62,21827.08 -15579400247,43875126572,2025-06-11T09:00:00Z,22433.95,4972.81,2647.57,1487,32.45,22314.91 -15575806493,43862405466,2025-06-11T05:00:00Z,23151.53,5096.7,2160.32,1481,30.98,23004.06 -15572893795,43854545007,2025-06-11T01:00:00Z,23589.88,4900.33,3340.95,1477,29.84,23423.93 diff --git a/.ci/scripts/benchmark_tooling/private/meta-llama-llama-3.2-1b-instruct-spinquant-int4-eo8_llama3-spinquant_-s22-ultra-_android-14.csv b/.ci/scripts/benchmark_tooling/private/meta-llama-llama-3.2-1b-instruct-spinquant-int4-eo8_llama3-spinquant_-s22-ultra-_android-14.csv deleted file mode 100644 index b2f2e20c423..00000000000 --- a/.ci/scripts/benchmark_tooling/private/meta-llama-llama-3.2-1b-instruct-spinquant-int4-eo8_llama3-spinquant_-s22-ultra-_android-14.csv +++ /dev/null @@ -1,12 +0,0 @@ -workflow_id,job_id,granularity_bucket,avg_inference_latency(ms),llm_model_load_time(ms),model_load_time(ms),ram_pss_usage(mb),token_per_sec,trimmean_inference_latency(ms) -15615520755,43991248116,2025-06-12T17:00:00Z,21634.66,2749.25,1659.95,1491,32.64,21454.1 -15609976846,43972978640,2025-06-12T13:00:00Z,22082.97,2774.17,1683.79,1492,32.87,21912.8 -15605026631,43956669874,2025-06-12T09:00:00Z,22542.64,2747.83,1675.36,1491,32.42,22463.58 -15601359910,43943792457,2025-06-12T05:00:00Z,21148.7,2245.86,1647.79,1492,35.02,21068.08 -15598383765,43935960659,2025-06-12T01:00:00Z,22623.33,2753.8,1665.34,1492,32.7,22556.31 -15594484786,43925468969,2025-06-11T21:00:00Z,22401.86,2758.76,1639.35,1492,32.47,22281.43 -15589858447,43914218724,2025-06-11T18:00:00Z,22542.41,2765.19,1648.67,1493,33.59,22423.24 -15584331831,43891253427,2025-06-11T13:00:00Z,25017.47,3121.07,1668.57,1492,29.59,24702.05 -15579400247,43875126572,2025-06-11T09:00:00Z,22725.65,2785.63,1658.05,1491,32.4,22634.68 -15575806493,43862405466,2025-06-11T05:00:00Z,27851.53,3889.12,1662.34,1480,24.26,26461.98 -15572893795,43854545007,2025-06-11T01:00:00Z,29188.93,3855.22,1654.71,1482,24.05,28071.68 diff --git a/.ci/scripts/benchmark_tooling/private/meta-llama-llama-3.2-1b-instruct-spinquant-int4-eo8_llama3-spinquant_-s22-ultra-private_android-14.csv b/.ci/scripts/benchmark_tooling/private/meta-llama-llama-3.2-1b-instruct-spinquant-int4-eo8_llama3-spinquant_-s22-ultra-private_android-14.csv deleted file mode 100644 index b2f2e20c423..00000000000 --- a/.ci/scripts/benchmark_tooling/private/meta-llama-llama-3.2-1b-instruct-spinquant-int4-eo8_llama3-spinquant_-s22-ultra-private_android-14.csv +++ /dev/null @@ -1,12 +0,0 @@ -workflow_id,job_id,granularity_bucket,avg_inference_latency(ms),llm_model_load_time(ms),model_load_time(ms),ram_pss_usage(mb),token_per_sec,trimmean_inference_latency(ms) -15615520755,43991248116,2025-06-12T17:00:00Z,21634.66,2749.25,1659.95,1491,32.64,21454.1 -15609976846,43972978640,2025-06-12T13:00:00Z,22082.97,2774.17,1683.79,1492,32.87,21912.8 -15605026631,43956669874,2025-06-12T09:00:00Z,22542.64,2747.83,1675.36,1491,32.42,22463.58 -15601359910,43943792457,2025-06-12T05:00:00Z,21148.7,2245.86,1647.79,1492,35.02,21068.08 -15598383765,43935960659,2025-06-12T01:00:00Z,22623.33,2753.8,1665.34,1492,32.7,22556.31 -15594484786,43925468969,2025-06-11T21:00:00Z,22401.86,2758.76,1639.35,1492,32.47,22281.43 -15589858447,43914218724,2025-06-11T18:00:00Z,22542.41,2765.19,1648.67,1493,33.59,22423.24 -15584331831,43891253427,2025-06-11T13:00:00Z,25017.47,3121.07,1668.57,1492,29.59,24702.05 -15579400247,43875126572,2025-06-11T09:00:00Z,22725.65,2785.63,1658.05,1491,32.4,22634.68 -15575806493,43862405466,2025-06-11T05:00:00Z,27851.53,3889.12,1662.34,1480,24.26,26461.98 -15572893795,43854545007,2025-06-11T01:00:00Z,29188.93,3855.22,1654.71,1482,24.05,28071.68 diff --git a/.ci/scripts/benchmark_tooling/private/meta-llama-llama-3.2-1b-instruct-spinquant-int4-eo8_llama3-spinquant_apple-iphone-15-_ios-18.0.csv b/.ci/scripts/benchmark_tooling/private/meta-llama-llama-3.2-1b-instruct-spinquant-int4-eo8_llama3-spinquant_apple-iphone-15-_ios-18.0.csv deleted file mode 100644 index 8386fe85a08..00000000000 --- a/.ci/scripts/benchmark_tooling/private/meta-llama-llama-3.2-1b-instruct-spinquant-int4-eo8_llama3-spinquant_apple-iphone-15-_ios-18.0.csv +++ /dev/null @@ -1,11 +0,0 @@ -workflow_id,job_id,granularity_bucket,avg_inference_latency(ms),model_load_time(ms),peak_inference_mem_usage(mb),peak_load_mem_usage(mb),token_per_sec -15615480751,43993124686,2025-06-12T17:00:00Z,13706,1505,1505.21,1777.68,8.74 -15604974289,43958007180,2025-06-12T09:00:00Z,13318,1401,1505.87,1777.97,8.72 -15601337433,43944770836,2025-06-12T05:00:00Z,13476,1400,1505.23,1778.01,8.58 -15598277481,43937275861,2025-06-12T01:00:00Z,14325,1495,1505.94,1777.78,7.97 -15594453833,43926877649,2025-06-11T21:00:00Z,14834,1564,1505.24,1777.9,8.0 -15589818422,43912035344,2025-06-11T17:00:00Z,13760,1518,1505.98,1777.72,8.61 -15584268753,43893469529,2025-06-11T13:00:00Z,21839,2042,1506.07,1777.9,4.88 -15579346239,43876994524,2025-06-11T09:00:00Z,16574,1560,1506.05,1777.95,6.51 -15575781424,43864061188,2025-06-11T05:00:00Z,20286,1982,1505.25,1777.81,5.06 -15572789992,43855812660,2025-06-11T01:00:00Z,17055,1610,1505.22,1777.02,6.24 diff --git a/.ci/scripts/benchmark_tooling/private/meta-llama-llama-3.2-1b-instruct-spinquant-int4-eo8_llama3-spinquant_apple-iphone-15-plus-_ios-17.4.1.csv b/.ci/scripts/benchmark_tooling/private/meta-llama-llama-3.2-1b-instruct-spinquant-int4-eo8_llama3-spinquant_apple-iphone-15-plus-_ios-17.4.1.csv deleted file mode 100644 index 7ceaacbf1f2..00000000000 --- a/.ci/scripts/benchmark_tooling/private/meta-llama-llama-3.2-1b-instruct-spinquant-int4-eo8_llama3-spinquant_apple-iphone-15-plus-_ios-17.4.1.csv +++ /dev/null @@ -1,11 +0,0 @@ -workflow_id,job_id,granularity_bucket,avg_inference_latency(ms),model_load_time(ms),peak_inference_mem_usage(mb),peak_load_mem_usage(mb),token_per_sec -15615480751,43993124686,2025-06-12T17:00:00Z,13481,1402,1519.68,1839.34,7.4 -15604974289,43958007180,2025-06-12T09:00:00Z,13288,1388,1519.65,1839.22,7.64 -15601337433,43944770836,2025-06-12T05:00:00Z,13394,1414,1519.65,1839.22,7.58 -15598277481,43937275861,2025-06-12T01:00:00Z,14106,1459,1519.69,1839.21,6.98 -15594453833,43926877649,2025-06-11T21:00:00Z,14506,1532,1519.72,1839.57,7.0 -15589818422,43912035344,2025-06-11T17:00:00Z,13574,1425,1519.66,1839.33,7.45 -15584268753,43893469529,2025-06-11T13:00:00Z,13865,1348,1519.72,1839.15,7.65 -15579346239,43876994524,2025-06-11T09:00:00Z,13446,1361,1519.69,1839.6,7.45 -15575781424,43864061188,2025-06-11T05:00:00Z,13529,1415,1519.65,1839.38,7.67 -15572789992,43855812660,2025-06-11T01:00:00Z,14179,1417,1519.72,1838.08,7.32 diff --git a/.ci/scripts/benchmark_tooling/private/meta-llama-llama-3.2-1b-instruct-spinquant-int4-eo8_llama3-spinquant_apple-iphone-15-plus-private_ios-17.4.1.csv b/.ci/scripts/benchmark_tooling/private/meta-llama-llama-3.2-1b-instruct-spinquant-int4-eo8_llama3-spinquant_apple-iphone-15-plus-private_ios-17.4.1.csv deleted file mode 100644 index 7ceaacbf1f2..00000000000 --- a/.ci/scripts/benchmark_tooling/private/meta-llama-llama-3.2-1b-instruct-spinquant-int4-eo8_llama3-spinquant_apple-iphone-15-plus-private_ios-17.4.1.csv +++ /dev/null @@ -1,11 +0,0 @@ -workflow_id,job_id,granularity_bucket,avg_inference_latency(ms),model_load_time(ms),peak_inference_mem_usage(mb),peak_load_mem_usage(mb),token_per_sec -15615480751,43993124686,2025-06-12T17:00:00Z,13481,1402,1519.68,1839.34,7.4 -15604974289,43958007180,2025-06-12T09:00:00Z,13288,1388,1519.65,1839.22,7.64 -15601337433,43944770836,2025-06-12T05:00:00Z,13394,1414,1519.65,1839.22,7.58 -15598277481,43937275861,2025-06-12T01:00:00Z,14106,1459,1519.69,1839.21,6.98 -15594453833,43926877649,2025-06-11T21:00:00Z,14506,1532,1519.72,1839.57,7.0 -15589818422,43912035344,2025-06-11T17:00:00Z,13574,1425,1519.66,1839.33,7.45 -15584268753,43893469529,2025-06-11T13:00:00Z,13865,1348,1519.72,1839.15,7.65 -15579346239,43876994524,2025-06-11T09:00:00Z,13446,1361,1519.69,1839.6,7.45 -15575781424,43864061188,2025-06-11T05:00:00Z,13529,1415,1519.65,1839.38,7.67 -15572789992,43855812660,2025-06-11T01:00:00Z,14179,1417,1519.72,1838.08,7.32 diff --git a/.ci/scripts/benchmark_tooling/private/meta-llama-llama-3.2-1b-instruct-spinquant-int4-eo8_llama3-spinquant_apple-iphone-15-private_ios-18.0.csv b/.ci/scripts/benchmark_tooling/private/meta-llama-llama-3.2-1b-instruct-spinquant-int4-eo8_llama3-spinquant_apple-iphone-15-private_ios-18.0.csv deleted file mode 100644 index 8386fe85a08..00000000000 --- a/.ci/scripts/benchmark_tooling/private/meta-llama-llama-3.2-1b-instruct-spinquant-int4-eo8_llama3-spinquant_apple-iphone-15-private_ios-18.0.csv +++ /dev/null @@ -1,11 +0,0 @@ -workflow_id,job_id,granularity_bucket,avg_inference_latency(ms),model_load_time(ms),peak_inference_mem_usage(mb),peak_load_mem_usage(mb),token_per_sec -15615480751,43993124686,2025-06-12T17:00:00Z,13706,1505,1505.21,1777.68,8.74 -15604974289,43958007180,2025-06-12T09:00:00Z,13318,1401,1505.87,1777.97,8.72 -15601337433,43944770836,2025-06-12T05:00:00Z,13476,1400,1505.23,1778.01,8.58 -15598277481,43937275861,2025-06-12T01:00:00Z,14325,1495,1505.94,1777.78,7.97 -15594453833,43926877649,2025-06-11T21:00:00Z,14834,1564,1505.24,1777.9,8.0 -15589818422,43912035344,2025-06-11T17:00:00Z,13760,1518,1505.98,1777.72,8.61 -15584268753,43893469529,2025-06-11T13:00:00Z,21839,2042,1506.07,1777.9,4.88 -15579346239,43876994524,2025-06-11T09:00:00Z,16574,1560,1506.05,1777.95,6.51 -15575781424,43864061188,2025-06-11T05:00:00Z,20286,1982,1505.25,1777.81,5.06 -15572789992,43855812660,2025-06-11T01:00:00Z,17055,1610,1505.22,1777.02,6.24 diff --git a/.ci/scripts/benchmark_tooling/private/meta-llama-llama-3.2-1b-instruct-spinquant-int4-eo8_llama3-spinquant_apple-iphone-15-pro-_ios-18.4.1.csv b/.ci/scripts/benchmark_tooling/private/meta-llama-llama-3.2-1b-instruct-spinquant-int4-eo8_llama3-spinquant_apple-iphone-15-pro-_ios-18.4.1.csv deleted file mode 100644 index 4dbab44a751..00000000000 --- a/.ci/scripts/benchmark_tooling/private/meta-llama-llama-3.2-1b-instruct-spinquant-int4-eo8_llama3-spinquant_apple-iphone-15-pro-_ios-18.4.1.csv +++ /dev/null @@ -1,11 +0,0 @@ -workflow_id,job_id,granularity_bucket,avg_inference_latency(ms),model_load_time(ms),peak_inference_mem_usage(mb),peak_load_mem_usage(mb),token_per_sec -15615480751,43993124686,2025-06-12T17:00:00Z,11666,1221,1828.87,1796.4,16.48 -15604974289,43958007180,2025-06-12T09:00:00Z,11645,1217,1827.43,1795.11,16.37 -15601337433,43944770836,2025-06-12T05:00:00Z,11683,1224,1828.88,1796.04,17.0 -15598277481,43937275861,2025-06-12T01:00:00Z,11709,1221,1828.84,1796.21,16.51 -15594453833,43926877649,2025-06-11T21:00:00Z,11708,1249,1828.93,1796.26,16.2 -15589818422,43912035344,2025-06-11T17:00:00Z,11639,1214,1828.88,1795.96,17.25 -15584268753,43893469529,2025-06-11T13:00:00Z,11751,1224,1828.8,1796.16,16.07 -15579346239,43876994524,2025-06-11T09:00:00Z,11778,1205,1828.85,1795.74,16.11 -15575781424,43864061188,2025-06-11T05:00:00Z,11731,1223,1827.44,1794.56,16.62 -15572789992,43855812660,2025-06-11T01:00:00Z,12831,1264,1828.84,1794.75,15.7 diff --git a/.ci/scripts/benchmark_tooling/private/meta-llama-llama-3.2-1b-instruct-spinquant-int4-eo8_llama3-spinquant_apple-iphone-15-pro-private_ios-18.4.1.csv b/.ci/scripts/benchmark_tooling/private/meta-llama-llama-3.2-1b-instruct-spinquant-int4-eo8_llama3-spinquant_apple-iphone-15-pro-private_ios-18.4.1.csv deleted file mode 100644 index 4dbab44a751..00000000000 --- a/.ci/scripts/benchmark_tooling/private/meta-llama-llama-3.2-1b-instruct-spinquant-int4-eo8_llama3-spinquant_apple-iphone-15-pro-private_ios-18.4.1.csv +++ /dev/null @@ -1,11 +0,0 @@ -workflow_id,job_id,granularity_bucket,avg_inference_latency(ms),model_load_time(ms),peak_inference_mem_usage(mb),peak_load_mem_usage(mb),token_per_sec -15615480751,43993124686,2025-06-12T17:00:00Z,11666,1221,1828.87,1796.4,16.48 -15604974289,43958007180,2025-06-12T09:00:00Z,11645,1217,1827.43,1795.11,16.37 -15601337433,43944770836,2025-06-12T05:00:00Z,11683,1224,1828.88,1796.04,17.0 -15598277481,43937275861,2025-06-12T01:00:00Z,11709,1221,1828.84,1796.21,16.51 -15594453833,43926877649,2025-06-11T21:00:00Z,11708,1249,1828.93,1796.26,16.2 -15589818422,43912035344,2025-06-11T17:00:00Z,11639,1214,1828.88,1795.96,17.25 -15584268753,43893469529,2025-06-11T13:00:00Z,11751,1224,1828.8,1796.16,16.07 -15579346239,43876994524,2025-06-11T09:00:00Z,11778,1205,1828.85,1795.74,16.11 -15575781424,43864061188,2025-06-11T05:00:00Z,11731,1223,1827.44,1794.56,16.62 -15572789992,43855812660,2025-06-11T01:00:00Z,12831,1264,1828.84,1794.75,15.7 diff --git a/.ci/scripts/benchmark_tooling/private/meta-llama-llama-3.2-1b_et-xnnpack-custom-spda-kv-cache-8da4w_-s22-_android-13.csv b/.ci/scripts/benchmark_tooling/private/meta-llama-llama-3.2-1b_et-xnnpack-custom-spda-kv-cache-8da4w_-s22-_android-13.csv deleted file mode 100644 index 61e21120809..00000000000 --- a/.ci/scripts/benchmark_tooling/private/meta-llama-llama-3.2-1b_et-xnnpack-custom-spda-kv-cache-8da4w_-s22-_android-13.csv +++ /dev/null @@ -1,29 +0,0 @@ -workflow_id,job_id,granularity_bucket,avg_inference_latency(ms),llm_model_load_time(ms),model_load_time(ms),ram_pss_usage(mb),token_per_sec,trimmean_inference_latency(ms) -15712320497,44280131792,2025-06-17T17:00:00Z,888.34,3091.09,2048.06,981,39.38,880.81 -15706687362,44261351450,2025-06-17T13:00:00Z,857.13,3198.35,2090.47,983,40.16,849.49 -15701619570,44244323755,2025-06-17T09:00:00Z,851.4,2799.08,2064.24,993,42.58,846.23 -15697890915,44230067957,2025-06-17T05:00:00Z,824.22,3176.47,2077.07,992,42.65,819.62 -15694752722,44221381863,2025-06-17T01:00:00Z,834.85,3280.35,2246.8,991,40.48,828.41 -15690721346,44211034387,2025-06-16T21:00:00Z,993.57,3469.86,2283.5,991,38.07,977.76 -15685858387,44195500217,2025-06-16T17:00:00Z,851.48,3370.02,2129.2,981,40.41,845.85 -15680276053,44184994658,2025-06-16T15:00:00Z,843.05,3279.49,2095.04,981,40.14,836.64 -15675229427,44160356972,2025-06-16T09:00:00Z,881.83,2922.13,2109.79,991,39.97,872.85 -15671609250,44146779212,2025-06-16T05:00:00Z,841.81,3352.61,2107.04,981,41.77,836.83 -15668838280,44139310442,2025-06-16T01:00:00Z,892.99,3424.04,2094.66,981,39.12,884.58 -15666871209,44133842083,2025-06-15T21:00:00Z,907.13,3451.14,2106.58,992,39.36,902.74 -15664964842,44129416866,2025-06-15T17:00:00Z,878.63,3289.46,2082.21,992,39.69,866.94 -15662964566,44125237276,2025-06-15T13:00:00Z,856.36,2940.3,2052.1,992,39.83,846.96 -15661066119,44120683489,2025-06-15T09:00:00Z,848.82,3005.12,2060.92,991,40.84,842.21 -15659315239,44116350825,2025-06-15T05:00:00Z,851.32,3022.83,2077.01,981,41.11,845.31 -15655627252,44107937078,2025-06-14T21:00:00Z,866.16,3137.83,2057.24,991,39.84,856.96 -15653757002,44103768469,2025-06-14T17:00:00Z,839.33,3379.78,2080.57,990,40.77,834.72 -15651807296,44099312849,2025-06-14T13:00:00Z,868.36,2961.04,2092.0,982,39.74,862.47 -15650005042,44095041071,2025-06-14T09:00:00Z,865.83,3401.09,2069.28,981,40.58,859.83 -15648224665,44090821985,2025-06-14T05:00:00Z,816.07,3160.29,2091.08,991,41.7,807.82 -15646186941,44086333101,2025-06-14T01:00:00Z,860.33,2767.46,2165.45,991,40.01,851.34 -15642991544,44079110098,2025-06-13T21:00:00Z,862.04,2989.29,2060.21,983,40.52,854.75 -15638881659,44066590049,2025-06-13T17:00:00Z,894.7,3571.27,2123.17,981,38.35,888.53 -15634084872,44050929738,2025-06-13T13:00:00Z,871.03,3082.71,2132.48,991,39.85,866.24 -15629618177,44036960905,2025-06-13T09:00:00Z,825.21,3234.28,2058.12,991,41.27,821.35 -15626198493,44024980719,2025-06-13T06:00:00Z,840.63,3025.27,2047.96,982,40.53,834.99 -15620031250,44009155339,2025-06-12T22:00:00Z,904.03,3487.91,2092.89,983,39.1,893.38 diff --git a/.ci/scripts/benchmark_tooling/private/meta-llama-llama-3.2-1b_et-xnnpack-custom-spda-kv-cache-8da4w_-s22-private_android-13.csv b/.ci/scripts/benchmark_tooling/private/meta-llama-llama-3.2-1b_et-xnnpack-custom-spda-kv-cache-8da4w_-s22-private_android-13.csv deleted file mode 100644 index 61e21120809..00000000000 --- a/.ci/scripts/benchmark_tooling/private/meta-llama-llama-3.2-1b_et-xnnpack-custom-spda-kv-cache-8da4w_-s22-private_android-13.csv +++ /dev/null @@ -1,29 +0,0 @@ -workflow_id,job_id,granularity_bucket,avg_inference_latency(ms),llm_model_load_time(ms),model_load_time(ms),ram_pss_usage(mb),token_per_sec,trimmean_inference_latency(ms) -15712320497,44280131792,2025-06-17T17:00:00Z,888.34,3091.09,2048.06,981,39.38,880.81 -15706687362,44261351450,2025-06-17T13:00:00Z,857.13,3198.35,2090.47,983,40.16,849.49 -15701619570,44244323755,2025-06-17T09:00:00Z,851.4,2799.08,2064.24,993,42.58,846.23 -15697890915,44230067957,2025-06-17T05:00:00Z,824.22,3176.47,2077.07,992,42.65,819.62 -15694752722,44221381863,2025-06-17T01:00:00Z,834.85,3280.35,2246.8,991,40.48,828.41 -15690721346,44211034387,2025-06-16T21:00:00Z,993.57,3469.86,2283.5,991,38.07,977.76 -15685858387,44195500217,2025-06-16T17:00:00Z,851.48,3370.02,2129.2,981,40.41,845.85 -15680276053,44184994658,2025-06-16T15:00:00Z,843.05,3279.49,2095.04,981,40.14,836.64 -15675229427,44160356972,2025-06-16T09:00:00Z,881.83,2922.13,2109.79,991,39.97,872.85 -15671609250,44146779212,2025-06-16T05:00:00Z,841.81,3352.61,2107.04,981,41.77,836.83 -15668838280,44139310442,2025-06-16T01:00:00Z,892.99,3424.04,2094.66,981,39.12,884.58 -15666871209,44133842083,2025-06-15T21:00:00Z,907.13,3451.14,2106.58,992,39.36,902.74 -15664964842,44129416866,2025-06-15T17:00:00Z,878.63,3289.46,2082.21,992,39.69,866.94 -15662964566,44125237276,2025-06-15T13:00:00Z,856.36,2940.3,2052.1,992,39.83,846.96 -15661066119,44120683489,2025-06-15T09:00:00Z,848.82,3005.12,2060.92,991,40.84,842.21 -15659315239,44116350825,2025-06-15T05:00:00Z,851.32,3022.83,2077.01,981,41.11,845.31 -15655627252,44107937078,2025-06-14T21:00:00Z,866.16,3137.83,2057.24,991,39.84,856.96 -15653757002,44103768469,2025-06-14T17:00:00Z,839.33,3379.78,2080.57,990,40.77,834.72 -15651807296,44099312849,2025-06-14T13:00:00Z,868.36,2961.04,2092.0,982,39.74,862.47 -15650005042,44095041071,2025-06-14T09:00:00Z,865.83,3401.09,2069.28,981,40.58,859.83 -15648224665,44090821985,2025-06-14T05:00:00Z,816.07,3160.29,2091.08,991,41.7,807.82 -15646186941,44086333101,2025-06-14T01:00:00Z,860.33,2767.46,2165.45,991,40.01,851.34 -15642991544,44079110098,2025-06-13T21:00:00Z,862.04,2989.29,2060.21,983,40.52,854.75 -15638881659,44066590049,2025-06-13T17:00:00Z,894.7,3571.27,2123.17,981,38.35,888.53 -15634084872,44050929738,2025-06-13T13:00:00Z,871.03,3082.71,2132.48,991,39.85,866.24 -15629618177,44036960905,2025-06-13T09:00:00Z,825.21,3234.28,2058.12,991,41.27,821.35 -15626198493,44024980719,2025-06-13T06:00:00Z,840.63,3025.27,2047.96,982,40.53,834.99 -15620031250,44009155339,2025-06-12T22:00:00Z,904.03,3487.91,2092.89,983,39.1,893.38 diff --git a/.ci/scripts/benchmark_tooling/private/meta-llama-llama-3.2-1b_et-xnnpack-custom-spda-kv-cache-8da4w_-s22-ultra-_android-14.csv b/.ci/scripts/benchmark_tooling/private/meta-llama-llama-3.2-1b_et-xnnpack-custom-spda-kv-cache-8da4w_-s22-ultra-_android-14.csv deleted file mode 100644 index 45eb5db4c2d..00000000000 --- a/.ci/scripts/benchmark_tooling/private/meta-llama-llama-3.2-1b_et-xnnpack-custom-spda-kv-cache-8da4w_-s22-ultra-_android-14.csv +++ /dev/null @@ -1,29 +0,0 @@ -workflow_id,job_id,granularity_bucket,avg_inference_latency(ms),llm_model_load_time(ms),model_load_time(ms),ram_pss_usage(mb),token_per_sec,trimmean_inference_latency(ms) -15712320497,44280131792,2025-06-17T17:00:00Z,836.96,1884.67,1773.67,995,38.83,830.24 -15706687362,44261351450,2025-06-17T13:00:00Z,848.1,1880.28,1761.07,994,39.36,837.57 -15701619570,44244323755,2025-06-17T09:00:00Z,847.93,1873.94,1746.93,994,39.77,840.52 -15697890915,44230067957,2025-06-17T05:00:00Z,846.79,1902.19,1763.67,994,38.5,837.66 -15694752722,44221381863,2025-06-17T01:00:00Z,830.17,1855.04,1761.97,994,40.1,824.15 -15690721346,44211034387,2025-06-16T21:00:00Z,903.14,1984.66,1761.46,994,38.43,893.97 -15685858387,44195500217,2025-06-16T17:00:00Z,803.65,1827.81,1785.61,994,39.97,799.47 -15680276053,44184994658,2025-06-16T15:00:00Z,806.24,1826.32,1755.44,996,40.43,800.78 -15675229427,44160356972,2025-06-16T09:00:00Z,851.94,1886.05,1759.11,994,39.75,846.55 -15671609250,44146779212,2025-06-16T05:00:00Z,842.18,1864.66,1746.88,994,42.04,833.95 -15668838280,44139310442,2025-06-16T01:00:00Z,876.18,1942.14,1764.64,995,38.64,866.73 -15666871209,44133842083,2025-06-15T21:00:00Z,862.35,1903.87,1730.84,994,38.43,853.06 -15664964842,44129416866,2025-06-15T17:00:00Z,868.79,1952.38,1771.78,994,38.34,860.73 -15662964566,44125237276,2025-06-15T13:00:00Z,849.35,1900.52,1759.75,994,39.49,843.24 -15661066119,44120683489,2025-06-15T09:00:00Z,845.08,1919.57,1769.18,994,42.03,836.56 -15659315239,44116350825,2025-06-15T05:00:00Z,851.37,1915.03,1728.28,994,39.52,843.57 -15655627252,44107937078,2025-06-14T21:00:00Z,810.72,1829.7,1782.07,994,40.03,805.99 -15653757002,44103768469,2025-06-14T17:00:00Z,802.66,1827.8,1815.02,995,40.27,798.26 -15651807296,44099312849,2025-06-14T13:00:00Z,848.18,1906.01,1735.88,994,38.71,839.98 -15650005042,44095041071,2025-06-14T09:00:00Z,844.39,1890.09,1763.19,994,39.39,838.59 -15648224665,44090821985,2025-06-14T05:00:00Z,810.27,1820.26,1787.58,994,40.33,805.27 -15646186941,44086333101,2025-06-14T01:00:00Z,839.42,1885.13,1764.2,995,39.24,830.7 -15642991544,44079110098,2025-06-13T21:00:00Z,860.72,1904.2,1760.02,994,38.41,850.64 -15638881659,44066590049,2025-06-13T17:00:00Z,860.16,1922.63,1764.77,994,38.46,852.82 -15634084872,44050929738,2025-06-13T13:00:00Z,855.82,1913.58,1769.38,994,38.47,848.96 -15629618177,44036960905,2025-06-13T09:00:00Z,854.86,1916.09,1740.21,994,39.36,846.01 -15626198493,44024980719,2025-06-13T06:00:00Z,858.73,1910.25,1759.06,993,38.65,850.54 -15620031250,44009155339,2025-06-12T22:00:00Z,905.26,1992.86,1775.43,994,37.78,896.63 diff --git a/.ci/scripts/benchmark_tooling/private/meta-llama-llama-3.2-1b_et-xnnpack-custom-spda-kv-cache-8da4w_-s22-ultra-private_android-14.csv b/.ci/scripts/benchmark_tooling/private/meta-llama-llama-3.2-1b_et-xnnpack-custom-spda-kv-cache-8da4w_-s22-ultra-private_android-14.csv deleted file mode 100644 index 45eb5db4c2d..00000000000 --- a/.ci/scripts/benchmark_tooling/private/meta-llama-llama-3.2-1b_et-xnnpack-custom-spda-kv-cache-8da4w_-s22-ultra-private_android-14.csv +++ /dev/null @@ -1,29 +0,0 @@ -workflow_id,job_id,granularity_bucket,avg_inference_latency(ms),llm_model_load_time(ms),model_load_time(ms),ram_pss_usage(mb),token_per_sec,trimmean_inference_latency(ms) -15712320497,44280131792,2025-06-17T17:00:00Z,836.96,1884.67,1773.67,995,38.83,830.24 -15706687362,44261351450,2025-06-17T13:00:00Z,848.1,1880.28,1761.07,994,39.36,837.57 -15701619570,44244323755,2025-06-17T09:00:00Z,847.93,1873.94,1746.93,994,39.77,840.52 -15697890915,44230067957,2025-06-17T05:00:00Z,846.79,1902.19,1763.67,994,38.5,837.66 -15694752722,44221381863,2025-06-17T01:00:00Z,830.17,1855.04,1761.97,994,40.1,824.15 -15690721346,44211034387,2025-06-16T21:00:00Z,903.14,1984.66,1761.46,994,38.43,893.97 -15685858387,44195500217,2025-06-16T17:00:00Z,803.65,1827.81,1785.61,994,39.97,799.47 -15680276053,44184994658,2025-06-16T15:00:00Z,806.24,1826.32,1755.44,996,40.43,800.78 -15675229427,44160356972,2025-06-16T09:00:00Z,851.94,1886.05,1759.11,994,39.75,846.55 -15671609250,44146779212,2025-06-16T05:00:00Z,842.18,1864.66,1746.88,994,42.04,833.95 -15668838280,44139310442,2025-06-16T01:00:00Z,876.18,1942.14,1764.64,995,38.64,866.73 -15666871209,44133842083,2025-06-15T21:00:00Z,862.35,1903.87,1730.84,994,38.43,853.06 -15664964842,44129416866,2025-06-15T17:00:00Z,868.79,1952.38,1771.78,994,38.34,860.73 -15662964566,44125237276,2025-06-15T13:00:00Z,849.35,1900.52,1759.75,994,39.49,843.24 -15661066119,44120683489,2025-06-15T09:00:00Z,845.08,1919.57,1769.18,994,42.03,836.56 -15659315239,44116350825,2025-06-15T05:00:00Z,851.37,1915.03,1728.28,994,39.52,843.57 -15655627252,44107937078,2025-06-14T21:00:00Z,810.72,1829.7,1782.07,994,40.03,805.99 -15653757002,44103768469,2025-06-14T17:00:00Z,802.66,1827.8,1815.02,995,40.27,798.26 -15651807296,44099312849,2025-06-14T13:00:00Z,848.18,1906.01,1735.88,994,38.71,839.98 -15650005042,44095041071,2025-06-14T09:00:00Z,844.39,1890.09,1763.19,994,39.39,838.59 -15648224665,44090821985,2025-06-14T05:00:00Z,810.27,1820.26,1787.58,994,40.33,805.27 -15646186941,44086333101,2025-06-14T01:00:00Z,839.42,1885.13,1764.2,995,39.24,830.7 -15642991544,44079110098,2025-06-13T21:00:00Z,860.72,1904.2,1760.02,994,38.41,850.64 -15638881659,44066590049,2025-06-13T17:00:00Z,860.16,1922.63,1764.77,994,38.46,852.82 -15634084872,44050929738,2025-06-13T13:00:00Z,855.82,1913.58,1769.38,994,38.47,848.96 -15629618177,44036960905,2025-06-13T09:00:00Z,854.86,1916.09,1740.21,994,39.36,846.01 -15626198493,44024980719,2025-06-13T06:00:00Z,858.73,1910.25,1759.06,993,38.65,850.54 -15620031250,44009155339,2025-06-12T22:00:00Z,905.26,1992.86,1775.43,994,37.78,896.63 diff --git a/.ci/scripts/benchmark_tooling/private/meta-llama-llama-3.2-1b_et-xnnpack-custom-spda-kv-cache-8da4w_apple-iphone-15-_ios-18.0.csv b/.ci/scripts/benchmark_tooling/private/meta-llama-llama-3.2-1b_et-xnnpack-custom-spda-kv-cache-8da4w_apple-iphone-15-_ios-18.0.csv deleted file mode 100644 index e4fc76993d9..00000000000 --- a/.ci/scripts/benchmark_tooling/private/meta-llama-llama-3.2-1b_et-xnnpack-custom-spda-kv-cache-8da4w_apple-iphone-15-_ios-18.0.csv +++ /dev/null @@ -1,29 +0,0 @@ -workflow_id,job_id,granularity_bucket,avg_inference_latency(ms),model_load_time(ms),peak_inference_mem_usage(mb),peak_load_mem_usage(mb),token_per_sec -15712278899,44280789008,2025-06-17T17:00:00Z,759,1559,988.8,1124.91,11.25 -15706619480,44262431638,2025-06-17T13:00:00Z,725,1455,989.55,1125.0,11.75 -15701565915,44245403612,2025-06-17T09:00:00Z,727,1451,989.5,1124.89,11.5 -15697865923,44230646970,2025-06-17T05:00:00Z,710,1461,989.49,1125.08,11.38 -15694639442,44221536444,2025-06-17T01:00:00Z,730,1511,990.21,1124.95,11.44 -15690685696,44211619421,2025-06-16T21:00:00Z,806,1699,989.46,1124.9,9.76 -15685808660,44196632637,2025-06-16T17:00:00Z,770,1545,989.57,1124.99,11.43 -15680206509,44178256230,2025-06-16T13:00:00Z,709,1475,989.44,1124.94,11.17 -15675176293,44162005966,2025-06-16T10:00:00Z,733,1469,990.3,1124.87,11.47 -15671584185,44147537983,2025-06-16T06:00:00Z,746,1482,989.44,1124.72,10.36 -15668756024,44140855631,2025-06-16T02:00:00Z,781,1619,990.29,1125.18,11.25 -15666856809,44134617851,2025-06-15T22:00:00Z,762,1538,988.75,1124.95,11.67 -15664949756,44129710892,2025-06-15T17:00:00Z,701,1455,989.54,1125.11,11.56 -15662940074,44126695148,2025-06-15T15:00:00Z,724,1467,989.69,1125.07,11.61 -15661046591,44121071601,2025-06-15T10:00:00Z,748,1450,988.8,1124.93,11.35 -15659301910,44117138781,2025-06-15T06:00:00Z,720,1488,989.58,1124.98,11.39 -15657354121,44112759100,2025-06-15T02:00:00Z,758,1603,989.61,1125.05,10.76 -15655612867,44108084740,2025-06-14T21:00:00Z,749,1536,988.91,1125.14,10.98 -15653742079,44104013228,2025-06-14T17:00:00Z,719,1443,989.62,1125.22,11.55 -15651786133,44100160145,2025-06-14T14:00:00Z,739,1451,989.51,1124.91,11.43 -15649987292,44095314814,2025-06-14T09:00:00Z,711,1462,988.84,1124.84,11.31 -15646107434,44086831907,2025-06-14T02:00:00Z,739,1498,989.54,1125.05,11.34 -15642962044,44079703037,2025-06-13T21:00:00Z,743,1521,989.49,1125.05,11.0 -15638842903,44067697635,2025-06-13T17:00:00Z,710,1442,989.53,1167.29,11.77 -15634027967,44053427212,2025-06-13T14:00:00Z,719,1447,988.75,1167.24,11.5 -15629571833,44037516912,2025-06-13T09:00:00Z,732,1424,989.34,1167.46,11.26 -15626172835,44025076952,2025-06-13T06:00:00Z,739,1495,988.84,1167.23,10.95 -15620031253,44010493569,2025-06-12T23:00:00Z,807,1636,989.63,1167.31,11.06 diff --git a/.ci/scripts/benchmark_tooling/private/meta-llama-llama-3.2-1b_et-xnnpack-custom-spda-kv-cache-8da4w_apple-iphone-15-plus-_ios-17.4.1.csv b/.ci/scripts/benchmark_tooling/private/meta-llama-llama-3.2-1b_et-xnnpack-custom-spda-kv-cache-8da4w_apple-iphone-15-plus-_ios-17.4.1.csv deleted file mode 100644 index bc063da4f85..00000000000 --- a/.ci/scripts/benchmark_tooling/private/meta-llama-llama-3.2-1b_et-xnnpack-custom-spda-kv-cache-8da4w_apple-iphone-15-plus-_ios-17.4.1.csv +++ /dev/null @@ -1,29 +0,0 @@ -workflow_id,job_id,granularity_bucket,avg_inference_latency(ms),model_load_time(ms),peak_inference_mem_usage(mb),peak_load_mem_usage(mb),token_per_sec -15712278899,44280789008,2025-06-17T17:00:00Z,866,1561,1001.97,1178.75,6.08 -15706619480,44262431638,2025-06-17T13:00:00Z,848,1537,1002.0,1178.72,9.53 -15701565915,44245403612,2025-06-17T09:00:00Z,769,1505,1002.08,1178.83,8.81 -15697865923,44230646970,2025-06-17T05:00:00Z,773,1519,1002.2,1178.9,9.59 -15694639442,44221536444,2025-06-17T01:00:00Z,753,1529,1001.93,1178.9,9.57 -15690685696,44211619421,2025-06-16T21:00:00Z,904,1634,1002.13,1178.93,9.4 -15685808660,44196632637,2025-06-16T17:00:00Z,753,1526,1002.09,1178.79,9.41 -15680206509,44178256230,2025-06-16T13:00:00Z,793,1515,1001.94,1178.68,4.88 -15675176293,44162005966,2025-06-16T10:00:00Z,730,1441,1002.0,1178.95,9.99 -15671584185,44147537983,2025-06-16T06:00:00Z,736,1513,1002.17,1178.93,9.45 -15668756024,44140855631,2025-06-16T02:00:00Z,831,1609,1002.12,1179.15,9.13 -15666856809,44134617851,2025-06-15T22:00:00Z,895,1615,1002.0,1178.93,9.42 -15664949756,44129710892,2025-06-15T17:00:00Z,715,1428,1001.92,1178.76,10.19 -15662940074,44126695148,2025-06-15T15:00:00Z,770,1506,1001.96,1178.71,9.29 -15661046591,44121071601,2025-06-15T10:00:00Z,882,1529,1002.03,1179.06,3.58 -15659301910,44117138781,2025-06-15T06:00:00Z,803,1532,1002.02,1178.83,9.28 -15657354121,44112759100,2025-06-15T02:00:00Z,819,1584,1002.15,1178.87,8.71 -15655612867,44108084740,2025-06-14T21:00:00Z,914,1557,1002.13,1178.91,9.5 -15653742079,44104013228,2025-06-14T17:00:00Z,750,1528,1002.02,1178.76,9.34 -15651786133,44100160145,2025-06-14T14:00:00Z,832,1528,1002.09,1178.89,9.26 -15649987292,44095314814,2025-06-14T09:00:00Z,1131,1611,1002.02,1178.73,5.69 -15646107434,44086831907,2025-06-14T02:00:00Z,828,1541,1002.18,1179.03,9.51 -15642962044,44079703037,2025-06-13T21:00:00Z,881,1593,1002.12,1179.02,4.32 -15638842903,44067697635,2025-06-13T17:00:00Z,707,1437,1001.88,1227.58,10.09 -15634027967,44053427212,2025-06-13T14:00:00Z,810,1534,1002.14,1225.58,8.82 -15629571833,44037516912,2025-06-13T09:00:00Z,705,1430,1002.09,1227.29,10.48 -15626172835,44025076952,2025-06-13T06:00:00Z,1123,1646,1002.16,1227.7,5.9 -15620031253,44010493569,2025-06-12T23:00:00Z,857,1631,1002.22,1227.75,9.23 diff --git a/.ci/scripts/benchmark_tooling/private/meta-llama-llama-3.2-1b_et-xnnpack-custom-spda-kv-cache-8da4w_apple-iphone-15-plus-private_ios-17.4.1.csv b/.ci/scripts/benchmark_tooling/private/meta-llama-llama-3.2-1b_et-xnnpack-custom-spda-kv-cache-8da4w_apple-iphone-15-plus-private_ios-17.4.1.csv deleted file mode 100644 index bc063da4f85..00000000000 --- a/.ci/scripts/benchmark_tooling/private/meta-llama-llama-3.2-1b_et-xnnpack-custom-spda-kv-cache-8da4w_apple-iphone-15-plus-private_ios-17.4.1.csv +++ /dev/null @@ -1,29 +0,0 @@ -workflow_id,job_id,granularity_bucket,avg_inference_latency(ms),model_load_time(ms),peak_inference_mem_usage(mb),peak_load_mem_usage(mb),token_per_sec -15712278899,44280789008,2025-06-17T17:00:00Z,866,1561,1001.97,1178.75,6.08 -15706619480,44262431638,2025-06-17T13:00:00Z,848,1537,1002.0,1178.72,9.53 -15701565915,44245403612,2025-06-17T09:00:00Z,769,1505,1002.08,1178.83,8.81 -15697865923,44230646970,2025-06-17T05:00:00Z,773,1519,1002.2,1178.9,9.59 -15694639442,44221536444,2025-06-17T01:00:00Z,753,1529,1001.93,1178.9,9.57 -15690685696,44211619421,2025-06-16T21:00:00Z,904,1634,1002.13,1178.93,9.4 -15685808660,44196632637,2025-06-16T17:00:00Z,753,1526,1002.09,1178.79,9.41 -15680206509,44178256230,2025-06-16T13:00:00Z,793,1515,1001.94,1178.68,4.88 -15675176293,44162005966,2025-06-16T10:00:00Z,730,1441,1002.0,1178.95,9.99 -15671584185,44147537983,2025-06-16T06:00:00Z,736,1513,1002.17,1178.93,9.45 -15668756024,44140855631,2025-06-16T02:00:00Z,831,1609,1002.12,1179.15,9.13 -15666856809,44134617851,2025-06-15T22:00:00Z,895,1615,1002.0,1178.93,9.42 -15664949756,44129710892,2025-06-15T17:00:00Z,715,1428,1001.92,1178.76,10.19 -15662940074,44126695148,2025-06-15T15:00:00Z,770,1506,1001.96,1178.71,9.29 -15661046591,44121071601,2025-06-15T10:00:00Z,882,1529,1002.03,1179.06,3.58 -15659301910,44117138781,2025-06-15T06:00:00Z,803,1532,1002.02,1178.83,9.28 -15657354121,44112759100,2025-06-15T02:00:00Z,819,1584,1002.15,1178.87,8.71 -15655612867,44108084740,2025-06-14T21:00:00Z,914,1557,1002.13,1178.91,9.5 -15653742079,44104013228,2025-06-14T17:00:00Z,750,1528,1002.02,1178.76,9.34 -15651786133,44100160145,2025-06-14T14:00:00Z,832,1528,1002.09,1178.89,9.26 -15649987292,44095314814,2025-06-14T09:00:00Z,1131,1611,1002.02,1178.73,5.69 -15646107434,44086831907,2025-06-14T02:00:00Z,828,1541,1002.18,1179.03,9.51 -15642962044,44079703037,2025-06-13T21:00:00Z,881,1593,1002.12,1179.02,4.32 -15638842903,44067697635,2025-06-13T17:00:00Z,707,1437,1001.88,1227.58,10.09 -15634027967,44053427212,2025-06-13T14:00:00Z,810,1534,1002.14,1225.58,8.82 -15629571833,44037516912,2025-06-13T09:00:00Z,705,1430,1002.09,1227.29,10.48 -15626172835,44025076952,2025-06-13T06:00:00Z,1123,1646,1002.16,1227.7,5.9 -15620031253,44010493569,2025-06-12T23:00:00Z,857,1631,1002.22,1227.75,9.23 diff --git a/.ci/scripts/benchmark_tooling/private/meta-llama-llama-3.2-1b_et-xnnpack-custom-spda-kv-cache-8da4w_apple-iphone-15-private_ios-18.0.csv b/.ci/scripts/benchmark_tooling/private/meta-llama-llama-3.2-1b_et-xnnpack-custom-spda-kv-cache-8da4w_apple-iphone-15-private_ios-18.0.csv deleted file mode 100644 index e4fc76993d9..00000000000 --- a/.ci/scripts/benchmark_tooling/private/meta-llama-llama-3.2-1b_et-xnnpack-custom-spda-kv-cache-8da4w_apple-iphone-15-private_ios-18.0.csv +++ /dev/null @@ -1,29 +0,0 @@ -workflow_id,job_id,granularity_bucket,avg_inference_latency(ms),model_load_time(ms),peak_inference_mem_usage(mb),peak_load_mem_usage(mb),token_per_sec -15712278899,44280789008,2025-06-17T17:00:00Z,759,1559,988.8,1124.91,11.25 -15706619480,44262431638,2025-06-17T13:00:00Z,725,1455,989.55,1125.0,11.75 -15701565915,44245403612,2025-06-17T09:00:00Z,727,1451,989.5,1124.89,11.5 -15697865923,44230646970,2025-06-17T05:00:00Z,710,1461,989.49,1125.08,11.38 -15694639442,44221536444,2025-06-17T01:00:00Z,730,1511,990.21,1124.95,11.44 -15690685696,44211619421,2025-06-16T21:00:00Z,806,1699,989.46,1124.9,9.76 -15685808660,44196632637,2025-06-16T17:00:00Z,770,1545,989.57,1124.99,11.43 -15680206509,44178256230,2025-06-16T13:00:00Z,709,1475,989.44,1124.94,11.17 -15675176293,44162005966,2025-06-16T10:00:00Z,733,1469,990.3,1124.87,11.47 -15671584185,44147537983,2025-06-16T06:00:00Z,746,1482,989.44,1124.72,10.36 -15668756024,44140855631,2025-06-16T02:00:00Z,781,1619,990.29,1125.18,11.25 -15666856809,44134617851,2025-06-15T22:00:00Z,762,1538,988.75,1124.95,11.67 -15664949756,44129710892,2025-06-15T17:00:00Z,701,1455,989.54,1125.11,11.56 -15662940074,44126695148,2025-06-15T15:00:00Z,724,1467,989.69,1125.07,11.61 -15661046591,44121071601,2025-06-15T10:00:00Z,748,1450,988.8,1124.93,11.35 -15659301910,44117138781,2025-06-15T06:00:00Z,720,1488,989.58,1124.98,11.39 -15657354121,44112759100,2025-06-15T02:00:00Z,758,1603,989.61,1125.05,10.76 -15655612867,44108084740,2025-06-14T21:00:00Z,749,1536,988.91,1125.14,10.98 -15653742079,44104013228,2025-06-14T17:00:00Z,719,1443,989.62,1125.22,11.55 -15651786133,44100160145,2025-06-14T14:00:00Z,739,1451,989.51,1124.91,11.43 -15649987292,44095314814,2025-06-14T09:00:00Z,711,1462,988.84,1124.84,11.31 -15646107434,44086831907,2025-06-14T02:00:00Z,739,1498,989.54,1125.05,11.34 -15642962044,44079703037,2025-06-13T21:00:00Z,743,1521,989.49,1125.05,11.0 -15638842903,44067697635,2025-06-13T17:00:00Z,710,1442,989.53,1167.29,11.77 -15634027967,44053427212,2025-06-13T14:00:00Z,719,1447,988.75,1167.24,11.5 -15629571833,44037516912,2025-06-13T09:00:00Z,732,1424,989.34,1167.46,11.26 -15626172835,44025076952,2025-06-13T06:00:00Z,739,1495,988.84,1167.23,10.95 -15620031253,44010493569,2025-06-12T23:00:00Z,807,1636,989.63,1167.31,11.06 diff --git a/.ci/scripts/benchmark_tooling/private/meta-llama-llama-3.2-1b_et-xnnpack-custom-spda-kv-cache-8da4w_apple-iphone-15-pro-_ios-18.4.1.csv b/.ci/scripts/benchmark_tooling/private/meta-llama-llama-3.2-1b_et-xnnpack-custom-spda-kv-cache-8da4w_apple-iphone-15-pro-_ios-18.4.1.csv deleted file mode 100644 index 58fe4392ce4..00000000000 --- a/.ci/scripts/benchmark_tooling/private/meta-llama-llama-3.2-1b_et-xnnpack-custom-spda-kv-cache-8da4w_apple-iphone-15-pro-_ios-18.4.1.csv +++ /dev/null @@ -1,29 +0,0 @@ -workflow_id,job_id,granularity_bucket,avg_inference_latency(ms),model_load_time(ms),peak_inference_mem_usage(mb),peak_load_mem_usage(mb),token_per_sec -15712278899,44280789008,2025-06-17T17:00:00Z,551,1150,1159.11,1140.51,25.99 -15706619480,44262431638,2025-06-17T13:00:00Z,535,1141,1159.1,1140.43,26.18 -15701565915,44245403612,2025-06-17T09:00:00Z,539,1152,1159.19,1140.53,26.14 -15697865923,44230646970,2025-06-17T05:00:00Z,553,1158,1159.23,1140.67,26.23 -15694639442,44221536444,2025-06-17T01:00:00Z,534,1153,1159.3,1140.81,26.87 -15690685696,44211619421,2025-06-16T21:00:00Z,547,1169,1159.13,1140.4,26.09 -15685808660,44196632637,2025-06-16T17:00:00Z,539,1137,1159.16,1140.49,26.84 -15680206509,44178256230,2025-06-16T13:00:00Z,541,1155,1159.03,1140.44,26.86 -15675176293,44162005966,2025-06-16T10:00:00Z,552,1143,1159.13,1140.62,26.7 -15671584185,44147537983,2025-06-16T06:00:00Z,549,1154,1159.07,1140.52,25.42 -15668756024,44140855631,2025-06-16T02:00:00Z,545,1170,1159.16,1140.75,26.42 -15666856809,44134617851,2025-06-15T22:00:00Z,544,1164,1159.31,1140.68,26.14 -15664949756,44129710892,2025-06-15T17:00:00Z,524,1103,1159.25,1140.68,26.18 -15662940074,44126695148,2025-06-15T15:00:00Z,534,1129,1159.09,1140.6,26.65 -15661046591,44121071601,2025-06-15T10:00:00Z,545,1133,1159.3,1140.75,26.23 -15659301910,44117138781,2025-06-15T06:00:00Z,548,1147,1159.25,1140.76,26.11 -15657354121,44112759100,2025-06-15T02:00:00Z,550,1163,1159.05,1140.46,26.1 -15655612867,44108084740,2025-06-14T21:00:00Z,528,1132,1159.13,1140.49,24.96 -15653742079,44104013228,2025-06-14T17:00:00Z,546,1155,1159.05,1140.38,25.23 -15651786133,44100160145,2025-06-14T14:00:00Z,547,1156,1159.07,1140.65,26.5 -15649987292,44095314814,2025-06-14T09:00:00Z,560,1131,1159.12,1140.72,27.61 -15646107434,44086831907,2025-06-14T02:00:00Z,546,1132,1159.04,1140.52,26.91 -15642962044,44079703037,2025-06-13T21:00:00Z,544,1128,1159.16,1140.51,27.22 -15638842903,44067697635,2025-06-13T17:00:00Z,523,1115,1159.08,1183.71,27.39 -15634027967,44053427212,2025-06-13T14:00:00Z,535,1132,1159.2,1184.08,26.44 -15629571833,44037516912,2025-06-13T09:00:00Z,537,1114,1159.19,1183.58,25.66 -15626172835,44025076952,2025-06-13T06:00:00Z,538,1136,1159.02,1183.62,26.12 -15620031253,44010493569,2025-06-12T23:00:00Z,540,1173,1159.06,1183.98,25.56 diff --git a/.ci/scripts/benchmark_tooling/private/meta-llama-llama-3.2-1b_et-xnnpack-custom-spda-kv-cache-8da4w_apple-iphone-15-pro-private_ios-18.4.1.csv b/.ci/scripts/benchmark_tooling/private/meta-llama-llama-3.2-1b_et-xnnpack-custom-spda-kv-cache-8da4w_apple-iphone-15-pro-private_ios-18.4.1.csv deleted file mode 100644 index 58fe4392ce4..00000000000 --- a/.ci/scripts/benchmark_tooling/private/meta-llama-llama-3.2-1b_et-xnnpack-custom-spda-kv-cache-8da4w_apple-iphone-15-pro-private_ios-18.4.1.csv +++ /dev/null @@ -1,29 +0,0 @@ -workflow_id,job_id,granularity_bucket,avg_inference_latency(ms),model_load_time(ms),peak_inference_mem_usage(mb),peak_load_mem_usage(mb),token_per_sec -15712278899,44280789008,2025-06-17T17:00:00Z,551,1150,1159.11,1140.51,25.99 -15706619480,44262431638,2025-06-17T13:00:00Z,535,1141,1159.1,1140.43,26.18 -15701565915,44245403612,2025-06-17T09:00:00Z,539,1152,1159.19,1140.53,26.14 -15697865923,44230646970,2025-06-17T05:00:00Z,553,1158,1159.23,1140.67,26.23 -15694639442,44221536444,2025-06-17T01:00:00Z,534,1153,1159.3,1140.81,26.87 -15690685696,44211619421,2025-06-16T21:00:00Z,547,1169,1159.13,1140.4,26.09 -15685808660,44196632637,2025-06-16T17:00:00Z,539,1137,1159.16,1140.49,26.84 -15680206509,44178256230,2025-06-16T13:00:00Z,541,1155,1159.03,1140.44,26.86 -15675176293,44162005966,2025-06-16T10:00:00Z,552,1143,1159.13,1140.62,26.7 -15671584185,44147537983,2025-06-16T06:00:00Z,549,1154,1159.07,1140.52,25.42 -15668756024,44140855631,2025-06-16T02:00:00Z,545,1170,1159.16,1140.75,26.42 -15666856809,44134617851,2025-06-15T22:00:00Z,544,1164,1159.31,1140.68,26.14 -15664949756,44129710892,2025-06-15T17:00:00Z,524,1103,1159.25,1140.68,26.18 -15662940074,44126695148,2025-06-15T15:00:00Z,534,1129,1159.09,1140.6,26.65 -15661046591,44121071601,2025-06-15T10:00:00Z,545,1133,1159.3,1140.75,26.23 -15659301910,44117138781,2025-06-15T06:00:00Z,548,1147,1159.25,1140.76,26.11 -15657354121,44112759100,2025-06-15T02:00:00Z,550,1163,1159.05,1140.46,26.1 -15655612867,44108084740,2025-06-14T21:00:00Z,528,1132,1159.13,1140.49,24.96 -15653742079,44104013228,2025-06-14T17:00:00Z,546,1155,1159.05,1140.38,25.23 -15651786133,44100160145,2025-06-14T14:00:00Z,547,1156,1159.07,1140.65,26.5 -15649987292,44095314814,2025-06-14T09:00:00Z,560,1131,1159.12,1140.72,27.61 -15646107434,44086831907,2025-06-14T02:00:00Z,546,1132,1159.04,1140.52,26.91 -15642962044,44079703037,2025-06-13T21:00:00Z,544,1128,1159.16,1140.51,27.22 -15638842903,44067697635,2025-06-13T17:00:00Z,523,1115,1159.08,1183.71,27.39 -15634027967,44053427212,2025-06-13T14:00:00Z,535,1132,1159.2,1184.08,26.44 -15629571833,44037516912,2025-06-13T09:00:00Z,537,1114,1159.19,1183.58,25.66 -15626172835,44025076952,2025-06-13T06:00:00Z,538,1136,1159.02,1183.62,26.12 -15620031253,44010493569,2025-06-12T23:00:00Z,540,1173,1159.06,1183.98,25.56 diff --git a/.ci/scripts/benchmark_tooling/private/meta-llama-llama-3.2-1b_hf-xnnpack-custom-spda-kv-cache-8da4w_-s22-_android-13.csv b/.ci/scripts/benchmark_tooling/private/meta-llama-llama-3.2-1b_hf-xnnpack-custom-spda-kv-cache-8da4w_-s22-_android-13.csv deleted file mode 100644 index 198f100dc4b..00000000000 --- a/.ci/scripts/benchmark_tooling/private/meta-llama-llama-3.2-1b_hf-xnnpack-custom-spda-kv-cache-8da4w_-s22-_android-13.csv +++ /dev/null @@ -1,28 +0,0 @@ -workflow_id,job_id,granularity_bucket,avg_inference_latency(ms),llm_model_load_time(ms),model_load_time(ms),ram_pss_usage(mb),token_per_sec,trimmean_inference_latency(ms) -15712320497,44280131792,2025-06-17T17:00:00Z,20.45,3322.36,2131.4,1130,41.12,20.42 -15706687362,44261351450,2025-06-17T13:00:00Z,19.59,3249.18,2099.19,1132,42.33,19.53 -15701619570,44244323755,2025-06-17T09:00:00Z,19.47,3137.9,2122.6,1130,43.08,19.42 -15697890915,44230067957,2025-06-17T05:00:00Z,20.97,3210.23,2114.38,1140,42.48,20.86 -15694752722,44221381863,2025-06-17T01:00:00Z,19.64,3307.7,2152.57,1178,41.18,19.6 -15690721346,44211034387,2025-06-16T21:00:00Z,19.63,4416.25,2619.41,1167,39.29,19.51 -15685858387,44195500217,2025-06-16T17:00:00Z,20.2,3255.73,2198.67,1169,41.1,20.03 -15680276053,44184994658,2025-06-16T15:00:00Z,20.79,3362.02,2154.37,1168,40.74,20.6 -15675229427,44160356972,2025-06-16T09:00:00Z,19.53,3267.27,2242.42,1169,41.58,19.46 -15671609250,44146779212,2025-06-16T05:00:00Z,20.47,3244.06,2286.54,1169,43.04,20.35 -15668838280,44139310442,2025-06-16T01:00:00Z,19.44,3346.74,2404.77,1167,42.06,19.34 -15666871209,44133842083,2025-06-15T21:00:00Z,23.03,3155.2,2297.11,1177,41.07,22.82 -15662964566,44125237276,2025-06-15T13:00:00Z,19.64,3463.81,2235.05,1168,42.39,19.59 -15661066119,44120683489,2025-06-15T09:00:00Z,19.96,3260.76,2175.15,1168,43.49,19.85 -15659315239,44116350825,2025-06-15T05:00:00Z,20.3,3156.07,2306.88,1169,43.23,20.22 -15655627252,44107937078,2025-06-14T21:00:00Z,20.96,3277.12,2198.58,1178,40.88,20.91 -15653757002,44103768469,2025-06-14T17:00:00Z,24.96,3387.31,2317.64,1168,40.69,23.95 -15651807296,44099312849,2025-06-14T13:00:00Z,19.58,3204.35,2238.33,1179,42.46,19.54 -15650005042,44095041071,2025-06-14T09:00:00Z,21.38,3217.97,2310.76,1168,41.8,21.23 -15648224665,44090821985,2025-06-14T05:00:00Z,20.13,3283.84,2276.5,1169,42.53,19.96 -15646186941,44086333101,2025-06-14T01:00:00Z,20.41,3283.49,2289.36,1179,42.62,20.26 -15642991544,44079110098,2025-06-13T21:00:00Z,20.12,3591.95,2234.52,1178,42.65,19.96 -15638881659,44066590049,2025-06-13T17:00:00Z,20.12,3486.11,2392.17,1178,40.99,20.0 -15634084872,44050929738,2025-06-13T13:00:00Z,19.57,3533.56,2233.31,1168,42.55,19.54 -15629618177,44036960905,2025-06-13T09:00:00Z,20.34,3787.07,2159.24,1178,44.23,20.3 -15626198493,44024980719,2025-06-13T06:00:00Z,20.18,3202.43,2319.6,1179,42.99,20.11 -15620031250,44009155339,2025-06-12T22:00:00Z,19.93,3884.54,2140.6,1178,40.44,19.73 diff --git a/.ci/scripts/benchmark_tooling/private/meta-llama-llama-3.2-1b_hf-xnnpack-custom-spda-kv-cache-8da4w_-s22-private_android-13.csv b/.ci/scripts/benchmark_tooling/private/meta-llama-llama-3.2-1b_hf-xnnpack-custom-spda-kv-cache-8da4w_-s22-private_android-13.csv deleted file mode 100644 index 198f100dc4b..00000000000 --- a/.ci/scripts/benchmark_tooling/private/meta-llama-llama-3.2-1b_hf-xnnpack-custom-spda-kv-cache-8da4w_-s22-private_android-13.csv +++ /dev/null @@ -1,28 +0,0 @@ -workflow_id,job_id,granularity_bucket,avg_inference_latency(ms),llm_model_load_time(ms),model_load_time(ms),ram_pss_usage(mb),token_per_sec,trimmean_inference_latency(ms) -15712320497,44280131792,2025-06-17T17:00:00Z,20.45,3322.36,2131.4,1130,41.12,20.42 -15706687362,44261351450,2025-06-17T13:00:00Z,19.59,3249.18,2099.19,1132,42.33,19.53 -15701619570,44244323755,2025-06-17T09:00:00Z,19.47,3137.9,2122.6,1130,43.08,19.42 -15697890915,44230067957,2025-06-17T05:00:00Z,20.97,3210.23,2114.38,1140,42.48,20.86 -15694752722,44221381863,2025-06-17T01:00:00Z,19.64,3307.7,2152.57,1178,41.18,19.6 -15690721346,44211034387,2025-06-16T21:00:00Z,19.63,4416.25,2619.41,1167,39.29,19.51 -15685858387,44195500217,2025-06-16T17:00:00Z,20.2,3255.73,2198.67,1169,41.1,20.03 -15680276053,44184994658,2025-06-16T15:00:00Z,20.79,3362.02,2154.37,1168,40.74,20.6 -15675229427,44160356972,2025-06-16T09:00:00Z,19.53,3267.27,2242.42,1169,41.58,19.46 -15671609250,44146779212,2025-06-16T05:00:00Z,20.47,3244.06,2286.54,1169,43.04,20.35 -15668838280,44139310442,2025-06-16T01:00:00Z,19.44,3346.74,2404.77,1167,42.06,19.34 -15666871209,44133842083,2025-06-15T21:00:00Z,23.03,3155.2,2297.11,1177,41.07,22.82 -15662964566,44125237276,2025-06-15T13:00:00Z,19.64,3463.81,2235.05,1168,42.39,19.59 -15661066119,44120683489,2025-06-15T09:00:00Z,19.96,3260.76,2175.15,1168,43.49,19.85 -15659315239,44116350825,2025-06-15T05:00:00Z,20.3,3156.07,2306.88,1169,43.23,20.22 -15655627252,44107937078,2025-06-14T21:00:00Z,20.96,3277.12,2198.58,1178,40.88,20.91 -15653757002,44103768469,2025-06-14T17:00:00Z,24.96,3387.31,2317.64,1168,40.69,23.95 -15651807296,44099312849,2025-06-14T13:00:00Z,19.58,3204.35,2238.33,1179,42.46,19.54 -15650005042,44095041071,2025-06-14T09:00:00Z,21.38,3217.97,2310.76,1168,41.8,21.23 -15648224665,44090821985,2025-06-14T05:00:00Z,20.13,3283.84,2276.5,1169,42.53,19.96 -15646186941,44086333101,2025-06-14T01:00:00Z,20.41,3283.49,2289.36,1179,42.62,20.26 -15642991544,44079110098,2025-06-13T21:00:00Z,20.12,3591.95,2234.52,1178,42.65,19.96 -15638881659,44066590049,2025-06-13T17:00:00Z,20.12,3486.11,2392.17,1178,40.99,20.0 -15634084872,44050929738,2025-06-13T13:00:00Z,19.57,3533.56,2233.31,1168,42.55,19.54 -15629618177,44036960905,2025-06-13T09:00:00Z,20.34,3787.07,2159.24,1178,44.23,20.3 -15626198493,44024980719,2025-06-13T06:00:00Z,20.18,3202.43,2319.6,1179,42.99,20.11 -15620031250,44009155339,2025-06-12T22:00:00Z,19.93,3884.54,2140.6,1178,40.44,19.73 diff --git a/.ci/scripts/benchmark_tooling/private/meta-llama-llama-3.2-1b_hf-xnnpack-custom-spda-kv-cache-8da4w_-s22-ultra-_android-14.csv b/.ci/scripts/benchmark_tooling/private/meta-llama-llama-3.2-1b_hf-xnnpack-custom-spda-kv-cache-8da4w_-s22-ultra-_android-14.csv deleted file mode 100644 index 022b7b0e994..00000000000 --- a/.ci/scripts/benchmark_tooling/private/meta-llama-llama-3.2-1b_hf-xnnpack-custom-spda-kv-cache-8da4w_-s22-ultra-_android-14.csv +++ /dev/null @@ -1,28 +0,0 @@ -workflow_id,job_id,granularity_bucket,avg_inference_latency(ms),llm_model_load_time(ms),model_load_time(ms),ram_pss_usage(mb),token_per_sec,trimmean_inference_latency(ms) -15712320497,44280131792,2025-06-17T17:00:00Z,19.93,1828.35,1768.33,1144,41.36,19.79 -15706687362,44261351450,2025-06-17T13:00:00Z,19.98,1855.61,1763.29,1144,42.52,19.89 -15701619570,44244323755,2025-06-17T09:00:00Z,21.14,1848.56,1756.7,1143,41.15,21.0 -15697890915,44230067957,2025-06-17T05:00:00Z,20.41,1836.4,1749.35,1143,40.73,20.07 -15694752722,44221381863,2025-06-17T01:00:00Z,21.42,1861.8,1805.56,1182,40.27,20.87 -15690721346,44211034387,2025-06-16T21:00:00Z,21.16,1866.51,1800.61,1181,40.11,21.09 -15685858387,44195500217,2025-06-16T17:00:00Z,20.78,1877.17,1803.17,1181,40.85,20.59 -15680276053,44184994658,2025-06-16T15:00:00Z,20.5,1872.69,1795.65,1181,40.89,20.33 -15675229427,44160356972,2025-06-16T09:00:00Z,20.78,1870.57,1808.34,1181,40.68,20.62 -15671609250,44146779212,2025-06-16T05:00:00Z,20.13,1834.18,1804.47,1181,42.78,20.07 -15668838280,44139310442,2025-06-16T01:00:00Z,20.33,1864.93,1812.67,1183,40.01,20.08 -15666871209,44133842083,2025-06-15T21:00:00Z,20.06,1871.36,1806.37,1181,40.65,19.85 -15662964566,44125237276,2025-06-15T13:00:00Z,20.46,1861.18,1823.38,1181,42.04,20.42 -15661066119,44120683489,2025-06-15T09:00:00Z,21.03,1859.54,1799.05,1183,42.26,20.9 -15659315239,44116350825,2025-06-15T05:00:00Z,20.44,1843.76,1807.28,1181,41.23,20.34 -15655627252,44107937078,2025-06-14T21:00:00Z,21.07,1863.9,1806.03,1181,40.77,21.03 -15653757002,44103768469,2025-06-14T17:00:00Z,20.51,1835.94,1813.87,1181,41.55,20.35 -15651807296,44099312849,2025-06-14T13:00:00Z,20.56,1860.27,1799.21,1181,40.91,20.34 -15650005042,44095041071,2025-06-14T09:00:00Z,20.19,1909.71,1794.18,1181,40.64,20.11 -15648224665,44090821985,2025-06-14T05:00:00Z,20.78,1850.13,1791.31,1181,40.87,20.69 -15646186941,44086333101,2025-06-14T01:00:00Z,20.56,1875.16,1775.1,1181,40.4,20.4 -15642991544,44079110098,2025-06-13T21:00:00Z,20.53,1841.54,1807.76,1181,42.19,20.35 -15638881659,44066590049,2025-06-13T17:00:00Z,20.97,1874.18,1782.29,1181,40.2,20.81 -15634084872,44050929738,2025-06-13T13:00:00Z,20.59,1870.98,1799.09,1181,40.61,20.52 -15629618177,44036960905,2025-06-13T09:00:00Z,20.99,1848.78,1802.27,1181,42.42,20.87 -15626198493,44024980719,2025-06-13T06:00:00Z,20.88,1871.15,1790.58,1181,40.76,20.59 -15620031250,44009155339,2025-06-12T22:00:00Z,20.21,1878.54,1773.55,1181,40.01,20.14 diff --git a/.ci/scripts/benchmark_tooling/private/meta-llama-llama-3.2-1b_hf-xnnpack-custom-spda-kv-cache-8da4w_-s22-ultra-private_android-14.csv b/.ci/scripts/benchmark_tooling/private/meta-llama-llama-3.2-1b_hf-xnnpack-custom-spda-kv-cache-8da4w_-s22-ultra-private_android-14.csv deleted file mode 100644 index 022b7b0e994..00000000000 --- a/.ci/scripts/benchmark_tooling/private/meta-llama-llama-3.2-1b_hf-xnnpack-custom-spda-kv-cache-8da4w_-s22-ultra-private_android-14.csv +++ /dev/null @@ -1,28 +0,0 @@ -workflow_id,job_id,granularity_bucket,avg_inference_latency(ms),llm_model_load_time(ms),model_load_time(ms),ram_pss_usage(mb),token_per_sec,trimmean_inference_latency(ms) -15712320497,44280131792,2025-06-17T17:00:00Z,19.93,1828.35,1768.33,1144,41.36,19.79 -15706687362,44261351450,2025-06-17T13:00:00Z,19.98,1855.61,1763.29,1144,42.52,19.89 -15701619570,44244323755,2025-06-17T09:00:00Z,21.14,1848.56,1756.7,1143,41.15,21.0 -15697890915,44230067957,2025-06-17T05:00:00Z,20.41,1836.4,1749.35,1143,40.73,20.07 -15694752722,44221381863,2025-06-17T01:00:00Z,21.42,1861.8,1805.56,1182,40.27,20.87 -15690721346,44211034387,2025-06-16T21:00:00Z,21.16,1866.51,1800.61,1181,40.11,21.09 -15685858387,44195500217,2025-06-16T17:00:00Z,20.78,1877.17,1803.17,1181,40.85,20.59 -15680276053,44184994658,2025-06-16T15:00:00Z,20.5,1872.69,1795.65,1181,40.89,20.33 -15675229427,44160356972,2025-06-16T09:00:00Z,20.78,1870.57,1808.34,1181,40.68,20.62 -15671609250,44146779212,2025-06-16T05:00:00Z,20.13,1834.18,1804.47,1181,42.78,20.07 -15668838280,44139310442,2025-06-16T01:00:00Z,20.33,1864.93,1812.67,1183,40.01,20.08 -15666871209,44133842083,2025-06-15T21:00:00Z,20.06,1871.36,1806.37,1181,40.65,19.85 -15662964566,44125237276,2025-06-15T13:00:00Z,20.46,1861.18,1823.38,1181,42.04,20.42 -15661066119,44120683489,2025-06-15T09:00:00Z,21.03,1859.54,1799.05,1183,42.26,20.9 -15659315239,44116350825,2025-06-15T05:00:00Z,20.44,1843.76,1807.28,1181,41.23,20.34 -15655627252,44107937078,2025-06-14T21:00:00Z,21.07,1863.9,1806.03,1181,40.77,21.03 -15653757002,44103768469,2025-06-14T17:00:00Z,20.51,1835.94,1813.87,1181,41.55,20.35 -15651807296,44099312849,2025-06-14T13:00:00Z,20.56,1860.27,1799.21,1181,40.91,20.34 -15650005042,44095041071,2025-06-14T09:00:00Z,20.19,1909.71,1794.18,1181,40.64,20.11 -15648224665,44090821985,2025-06-14T05:00:00Z,20.78,1850.13,1791.31,1181,40.87,20.69 -15646186941,44086333101,2025-06-14T01:00:00Z,20.56,1875.16,1775.1,1181,40.4,20.4 -15642991544,44079110098,2025-06-13T21:00:00Z,20.53,1841.54,1807.76,1181,42.19,20.35 -15638881659,44066590049,2025-06-13T17:00:00Z,20.97,1874.18,1782.29,1181,40.2,20.81 -15634084872,44050929738,2025-06-13T13:00:00Z,20.59,1870.98,1799.09,1181,40.61,20.52 -15629618177,44036960905,2025-06-13T09:00:00Z,20.99,1848.78,1802.27,1181,42.42,20.87 -15626198493,44024980719,2025-06-13T06:00:00Z,20.88,1871.15,1790.58,1181,40.76,20.59 -15620031250,44009155339,2025-06-12T22:00:00Z,20.21,1878.54,1773.55,1181,40.01,20.14 diff --git a/.ci/scripts/benchmark_tooling/private/meta-llama-llama-3.2-1b_hf-xnnpack-custom-spda-kv-cache-8da4w_apple-iphone-15-_ios-18.0.csv b/.ci/scripts/benchmark_tooling/private/meta-llama-llama-3.2-1b_hf-xnnpack-custom-spda-kv-cache-8da4w_apple-iphone-15-_ios-18.0.csv deleted file mode 100644 index 8a25f11badb..00000000000 --- a/.ci/scripts/benchmark_tooling/private/meta-llama-llama-3.2-1b_hf-xnnpack-custom-spda-kv-cache-8da4w_apple-iphone-15-_ios-18.0.csv +++ /dev/null @@ -1,28 +0,0 @@ -workflow_id,job_id,granularity_bucket,avg_inference_latency(ms),model_load_time(ms),peak_inference_mem_usage(mb),peak_load_mem_usage(mb),token_per_sec -15712278899,44280789008,2025-06-17T17:00:00Z,77,1390,1094.38,1231.49,10.89 -15706619480,44262431638,2025-06-17T13:00:00Z,76,1332,1096.86,1231.75,11.66 -15701565915,44245403612,2025-06-17T09:00:00Z,70,1356,1096.27,1231.5,11.44 -15697865923,44230646970,2025-06-17T05:00:00Z,78,1379,1092.6,1231.53,11.37 -15694639442,44221536444,2025-06-17T01:00:00Z,73,1479,1092.16,1264.09,10.77 -15690685696,44211619421,2025-06-16T21:00:00Z,81,1500,1095.98,1263.96,10.88 -15685808660,44196632637,2025-06-16T17:00:00Z,78,1454,1092.07,1263.88,11.32 -15680206509,44178256230,2025-06-16T13:00:00Z,76,1389,1094.42,1263.95,11.23 -15675176293,44162005966,2025-06-16T10:00:00Z,76,1372,1093.17,1263.92,11.52 -15671584185,44147537983,2025-06-16T06:00:00Z,67,1384,1093.46,1263.88,11.31 -15668756024,44140855631,2025-06-16T02:00:00Z,113,1533,1094.5,1264.04,10.99 -15666856809,44134617851,2025-06-15T22:00:00Z,78,1438,1095.31,1264.03,11.42 -15664949756,44129710892,2025-06-15T17:00:00Z,74,1408,1092.54,1263.86,11.24 -15662940074,44126695148,2025-06-15T15:00:00Z,70,1373,1096.14,1264.0,11.17 -15661046591,44121071601,2025-06-15T10:00:00Z,69,1358,1094.41,1264.16,11.52 -15657354121,44112759100,2025-06-15T02:00:00Z,75,1486,1092.65,1263.96,11.03 -15655612867,44108084740,2025-06-14T21:00:00Z,75,1457,1094.35,1263.93,11.42 -15653742079,44104013228,2025-06-14T17:00:00Z,80,1378,1095.95,1263.95,11.35 -15651786133,44100160145,2025-06-14T14:00:00Z,72,1380,1092.72,1263.97,11.81 -15649987292,44095314814,2025-06-14T09:00:00Z,71,1340,1095.53,1264.13,11.76 -15646107434,44086831907,2025-06-14T02:00:00Z,89,1411,1095.98,1263.85,11.53 -15642962044,44079703037,2025-06-13T21:00:00Z,67,1452,1092.89,1264.02,11.34 -15638842903,44067697635,2025-06-13T17:00:00Z,76,1414,1094.33,1306.31,11.14 -15634027967,44053427212,2025-06-13T14:00:00Z,69,1391,1094.08,1306.52,11.47 -15629571833,44037516912,2025-06-13T09:00:00Z,78,1360,1095.62,1306.39,11.3 -15626172835,44025076952,2025-06-13T06:00:00Z,77,1406,1090.95,1306.12,10.99 -15620031253,44010493569,2025-06-12T23:00:00Z,67,1446,1094.12,1306.4,11.55 diff --git a/.ci/scripts/benchmark_tooling/private/meta-llama-llama-3.2-1b_hf-xnnpack-custom-spda-kv-cache-8da4w_apple-iphone-15-plus-_ios-17.4.1.csv b/.ci/scripts/benchmark_tooling/private/meta-llama-llama-3.2-1b_hf-xnnpack-custom-spda-kv-cache-8da4w_apple-iphone-15-plus-_ios-17.4.1.csv deleted file mode 100644 index 3fde1b5ddd0..00000000000 --- a/.ci/scripts/benchmark_tooling/private/meta-llama-llama-3.2-1b_hf-xnnpack-custom-spda-kv-cache-8da4w_apple-iphone-15-plus-_ios-17.4.1.csv +++ /dev/null @@ -1,28 +0,0 @@ -workflow_id,job_id,granularity_bucket,avg_inference_latency(ms),model_load_time(ms),peak_inference_mem_usage(mb),peak_load_mem_usage(mb),token_per_sec -15712278899,44280789008,2025-06-17T17:00:00Z,80,1439,1282.09,1296.58,9.04 -15706619480,44262431638,2025-06-17T13:00:00Z,137,1443,1282.14,1295.65,9.56 -15701565915,44245403612,2025-06-17T09:00:00Z,82,1417,1282.23,1296.27,9.6 -15697865923,44230646970,2025-06-17T05:00:00Z,92,1399,1282.07,1296.05,4.17 -15694639442,44221536444,2025-06-17T01:00:00Z,131,1618,1320.36,1337.35,7.03 -15690685696,44211619421,2025-06-16T21:00:00Z,92,1564,1320.48,1336.64,8.77 -15685808660,44196632637,2025-06-16T17:00:00Z,97,1531,1320.31,1336.72,9.6 -15680206509,44178256230,2025-06-16T13:00:00Z,117,1458,1320.39,1335.87,9.63 -15675176293,44162005966,2025-06-16T10:00:00Z,85,1474,1320.36,1335.97,8.96 -15671584185,44147537983,2025-06-16T06:00:00Z,117,1457,1320.18,1336.25,9.88 -15668756024,44140855631,2025-06-16T02:00:00Z,90,1534,1320.35,1335.98,9.28 -15666856809,44134617851,2025-06-15T22:00:00Z,96,1599,1320.07,1336.25,9.32 -15664949756,44129710892,2025-06-15T17:00:00Z,90,1477,1320.34,1335.85,9.67 -15662940074,44126695148,2025-06-15T15:00:00Z,91,1436,1320.17,1335.78,9.56 -15661046591,44121071601,2025-06-15T10:00:00Z,93,1401,1320.11,1336.66,10.07 -15657354121,44112759100,2025-06-15T02:00:00Z,85,1592,1320.23,1335.91,9.43 -15655612867,44108084740,2025-06-14T21:00:00Z,206,1502,1320.21,1335.7,8.79 -15653742079,44104013228,2025-06-14T17:00:00Z,115,1430,1320.32,1336.47,9.7 -15651786133,44100160145,2025-06-14T14:00:00Z,88,1480,1320.42,1336.96,9.96 -15649987292,44095314814,2025-06-14T09:00:00Z,90,1375,1320.39,1336.79,10.27 -15646107434,44086831907,2025-06-14T02:00:00Z,85,1442,1320.37,1335.83,8.85 -15642962044,44079703037,2025-06-13T21:00:00Z,203,1554,1320.41,1337.4,9.25 -15638842903,44067697635,2025-06-13T17:00:00Z,94,1478,1320.35,1399.18,9.79 -15634027967,44053427212,2025-06-13T14:00:00Z,89,1489,1320.28,1398.64,9.3 -15629571833,44037516912,2025-06-13T09:00:00Z,82,1482,1320.4,1399.82,7.71 -15626172835,44025076952,2025-06-13T06:00:00Z,258,1593,1320.4,1398.47,5.73 -15620031253,44010493569,2025-06-12T23:00:00Z,93,1469,1320.28,1403.52,9.82 diff --git a/.ci/scripts/benchmark_tooling/private/meta-llama-llama-3.2-1b_hf-xnnpack-custom-spda-kv-cache-8da4w_apple-iphone-15-plus-private_ios-17.4.1.csv b/.ci/scripts/benchmark_tooling/private/meta-llama-llama-3.2-1b_hf-xnnpack-custom-spda-kv-cache-8da4w_apple-iphone-15-plus-private_ios-17.4.1.csv deleted file mode 100644 index 3fde1b5ddd0..00000000000 --- a/.ci/scripts/benchmark_tooling/private/meta-llama-llama-3.2-1b_hf-xnnpack-custom-spda-kv-cache-8da4w_apple-iphone-15-plus-private_ios-17.4.1.csv +++ /dev/null @@ -1,28 +0,0 @@ -workflow_id,job_id,granularity_bucket,avg_inference_latency(ms),model_load_time(ms),peak_inference_mem_usage(mb),peak_load_mem_usage(mb),token_per_sec -15712278899,44280789008,2025-06-17T17:00:00Z,80,1439,1282.09,1296.58,9.04 -15706619480,44262431638,2025-06-17T13:00:00Z,137,1443,1282.14,1295.65,9.56 -15701565915,44245403612,2025-06-17T09:00:00Z,82,1417,1282.23,1296.27,9.6 -15697865923,44230646970,2025-06-17T05:00:00Z,92,1399,1282.07,1296.05,4.17 -15694639442,44221536444,2025-06-17T01:00:00Z,131,1618,1320.36,1337.35,7.03 -15690685696,44211619421,2025-06-16T21:00:00Z,92,1564,1320.48,1336.64,8.77 -15685808660,44196632637,2025-06-16T17:00:00Z,97,1531,1320.31,1336.72,9.6 -15680206509,44178256230,2025-06-16T13:00:00Z,117,1458,1320.39,1335.87,9.63 -15675176293,44162005966,2025-06-16T10:00:00Z,85,1474,1320.36,1335.97,8.96 -15671584185,44147537983,2025-06-16T06:00:00Z,117,1457,1320.18,1336.25,9.88 -15668756024,44140855631,2025-06-16T02:00:00Z,90,1534,1320.35,1335.98,9.28 -15666856809,44134617851,2025-06-15T22:00:00Z,96,1599,1320.07,1336.25,9.32 -15664949756,44129710892,2025-06-15T17:00:00Z,90,1477,1320.34,1335.85,9.67 -15662940074,44126695148,2025-06-15T15:00:00Z,91,1436,1320.17,1335.78,9.56 -15661046591,44121071601,2025-06-15T10:00:00Z,93,1401,1320.11,1336.66,10.07 -15657354121,44112759100,2025-06-15T02:00:00Z,85,1592,1320.23,1335.91,9.43 -15655612867,44108084740,2025-06-14T21:00:00Z,206,1502,1320.21,1335.7,8.79 -15653742079,44104013228,2025-06-14T17:00:00Z,115,1430,1320.32,1336.47,9.7 -15651786133,44100160145,2025-06-14T14:00:00Z,88,1480,1320.42,1336.96,9.96 -15649987292,44095314814,2025-06-14T09:00:00Z,90,1375,1320.39,1336.79,10.27 -15646107434,44086831907,2025-06-14T02:00:00Z,85,1442,1320.37,1335.83,8.85 -15642962044,44079703037,2025-06-13T21:00:00Z,203,1554,1320.41,1337.4,9.25 -15638842903,44067697635,2025-06-13T17:00:00Z,94,1478,1320.35,1399.18,9.79 -15634027967,44053427212,2025-06-13T14:00:00Z,89,1489,1320.28,1398.64,9.3 -15629571833,44037516912,2025-06-13T09:00:00Z,82,1482,1320.4,1399.82,7.71 -15626172835,44025076952,2025-06-13T06:00:00Z,258,1593,1320.4,1398.47,5.73 -15620031253,44010493569,2025-06-12T23:00:00Z,93,1469,1320.28,1403.52,9.82 diff --git a/.ci/scripts/benchmark_tooling/private/meta-llama-llama-3.2-1b_hf-xnnpack-custom-spda-kv-cache-8da4w_apple-iphone-15-private_ios-18.0.csv b/.ci/scripts/benchmark_tooling/private/meta-llama-llama-3.2-1b_hf-xnnpack-custom-spda-kv-cache-8da4w_apple-iphone-15-private_ios-18.0.csv deleted file mode 100644 index 8a25f11badb..00000000000 --- a/.ci/scripts/benchmark_tooling/private/meta-llama-llama-3.2-1b_hf-xnnpack-custom-spda-kv-cache-8da4w_apple-iphone-15-private_ios-18.0.csv +++ /dev/null @@ -1,28 +0,0 @@ -workflow_id,job_id,granularity_bucket,avg_inference_latency(ms),model_load_time(ms),peak_inference_mem_usage(mb),peak_load_mem_usage(mb),token_per_sec -15712278899,44280789008,2025-06-17T17:00:00Z,77,1390,1094.38,1231.49,10.89 -15706619480,44262431638,2025-06-17T13:00:00Z,76,1332,1096.86,1231.75,11.66 -15701565915,44245403612,2025-06-17T09:00:00Z,70,1356,1096.27,1231.5,11.44 -15697865923,44230646970,2025-06-17T05:00:00Z,78,1379,1092.6,1231.53,11.37 -15694639442,44221536444,2025-06-17T01:00:00Z,73,1479,1092.16,1264.09,10.77 -15690685696,44211619421,2025-06-16T21:00:00Z,81,1500,1095.98,1263.96,10.88 -15685808660,44196632637,2025-06-16T17:00:00Z,78,1454,1092.07,1263.88,11.32 -15680206509,44178256230,2025-06-16T13:00:00Z,76,1389,1094.42,1263.95,11.23 -15675176293,44162005966,2025-06-16T10:00:00Z,76,1372,1093.17,1263.92,11.52 -15671584185,44147537983,2025-06-16T06:00:00Z,67,1384,1093.46,1263.88,11.31 -15668756024,44140855631,2025-06-16T02:00:00Z,113,1533,1094.5,1264.04,10.99 -15666856809,44134617851,2025-06-15T22:00:00Z,78,1438,1095.31,1264.03,11.42 -15664949756,44129710892,2025-06-15T17:00:00Z,74,1408,1092.54,1263.86,11.24 -15662940074,44126695148,2025-06-15T15:00:00Z,70,1373,1096.14,1264.0,11.17 -15661046591,44121071601,2025-06-15T10:00:00Z,69,1358,1094.41,1264.16,11.52 -15657354121,44112759100,2025-06-15T02:00:00Z,75,1486,1092.65,1263.96,11.03 -15655612867,44108084740,2025-06-14T21:00:00Z,75,1457,1094.35,1263.93,11.42 -15653742079,44104013228,2025-06-14T17:00:00Z,80,1378,1095.95,1263.95,11.35 -15651786133,44100160145,2025-06-14T14:00:00Z,72,1380,1092.72,1263.97,11.81 -15649987292,44095314814,2025-06-14T09:00:00Z,71,1340,1095.53,1264.13,11.76 -15646107434,44086831907,2025-06-14T02:00:00Z,89,1411,1095.98,1263.85,11.53 -15642962044,44079703037,2025-06-13T21:00:00Z,67,1452,1092.89,1264.02,11.34 -15638842903,44067697635,2025-06-13T17:00:00Z,76,1414,1094.33,1306.31,11.14 -15634027967,44053427212,2025-06-13T14:00:00Z,69,1391,1094.08,1306.52,11.47 -15629571833,44037516912,2025-06-13T09:00:00Z,78,1360,1095.62,1306.39,11.3 -15626172835,44025076952,2025-06-13T06:00:00Z,77,1406,1090.95,1306.12,10.99 -15620031253,44010493569,2025-06-12T23:00:00Z,67,1446,1094.12,1306.4,11.55 diff --git a/.ci/scripts/benchmark_tooling/private/meta-llama-llama-3.2-1b_hf-xnnpack-custom-spda-kv-cache-8da4w_apple-iphone-15-pro-_ios-18.4.1.csv b/.ci/scripts/benchmark_tooling/private/meta-llama-llama-3.2-1b_hf-xnnpack-custom-spda-kv-cache-8da4w_apple-iphone-15-pro-_ios-18.4.1.csv deleted file mode 100644 index 9398b9c848c..00000000000 --- a/.ci/scripts/benchmark_tooling/private/meta-llama-llama-3.2-1b_hf-xnnpack-custom-spda-kv-cache-8da4w_apple-iphone-15-pro-_ios-18.4.1.csv +++ /dev/null @@ -1,28 +0,0 @@ -workflow_id,job_id,granularity_bucket,avg_inference_latency(ms),model_load_time(ms),peak_inference_mem_usage(mb),peak_load_mem_usage(mb),token_per_sec -15712278899,44280789008,2025-06-17T17:00:00Z,35,1105,1272.46,1255.45,23.92 -15706619480,44262431638,2025-06-17T13:00:00Z,35,1123,1272.41,1255.43,25.37 -15701565915,44245403612,2025-06-17T09:00:00Z,34,1114,1272.32,1255.24,25.38 -15697865923,44230646970,2025-06-17T05:00:00Z,33,1106,1272.45,1255.46,26.12 -15694639442,44221536444,2025-06-17T01:00:00Z,33,1145,1312.09,1293.27,25.79 -15690685696,44211619421,2025-06-16T21:00:00Z,33,1182,1312.03,1293.54,25.63 -15685808660,44196632637,2025-06-16T17:00:00Z,34,1137,1312.06,1293.76,26.36 -15680206509,44178256230,2025-06-16T13:00:00Z,35,1143,1312.06,1293.28,26.04 -15675176293,44162005966,2025-06-16T10:00:00Z,33,1136,1312.28,1293.55,25.2 -15671584185,44147537983,2025-06-16T06:00:00Z,34,1148,1312.11,1293.73,24.22 -15668756024,44140855631,2025-06-16T02:00:00Z,45,1186,1312.09,1293.56,25.25 -15666856809,44134617851,2025-06-15T22:00:00Z,32,1151,1312.19,1293.6,25.72 -15664949756,44129710892,2025-06-15T17:00:00Z,37,1150,1312.38,1294.2,25.76 -15662940074,44126695148,2025-06-15T15:00:00Z,34,1136,1312.1,1294.9,25.83 -15661046591,44121071601,2025-06-15T10:00:00Z,32,1122,1312.3,1293.62,25.55 -15657354121,44112759100,2025-06-15T02:00:00Z,30,1159,1312.26,1293.72,25.97 -15655612867,44108084740,2025-06-14T21:00:00Z,34,1142,1312.04,1293.46,26.5 -15653742079,44104013228,2025-06-14T17:00:00Z,31,1112,1312.26,1293.63,26.67 -15651786133,44100160145,2025-06-14T14:00:00Z,37,1143,1312.09,1293.34,26.01 -15649987292,44095314814,2025-06-14T09:00:00Z,35,1110,1311.93,1293.47,26.88 -15646107434,44086831907,2025-06-14T02:00:00Z,33,1121,1312.11,1293.38,24.57 -15642962044,44079703037,2025-06-13T21:00:00Z,38,1144,1312.35,1293.6,25.34 -15638842903,44067697635,2025-06-13T17:00:00Z,33,1145,1312.37,1351.73,24.64 -15634027967,44053427212,2025-06-13T14:00:00Z,33,1157,1312.39,1351.78,26.2 -15629571833,44037516912,2025-06-13T09:00:00Z,35,1119,1312.07,1351.97,26.23 -15626172835,44025076952,2025-06-13T06:00:00Z,30,1140,1312.41,1350.36,26.03 -15620031253,44010493569,2025-06-12T23:00:00Z,32,1137,1312.48,1353.23,26.07 diff --git a/.ci/scripts/benchmark_tooling/private/meta-llama-llama-3.2-1b_hf-xnnpack-custom-spda-kv-cache-8da4w_apple-iphone-15-pro-private_ios-18.4.1.csv b/.ci/scripts/benchmark_tooling/private/meta-llama-llama-3.2-1b_hf-xnnpack-custom-spda-kv-cache-8da4w_apple-iphone-15-pro-private_ios-18.4.1.csv deleted file mode 100644 index 9398b9c848c..00000000000 --- a/.ci/scripts/benchmark_tooling/private/meta-llama-llama-3.2-1b_hf-xnnpack-custom-spda-kv-cache-8da4w_apple-iphone-15-pro-private_ios-18.4.1.csv +++ /dev/null @@ -1,28 +0,0 @@ -workflow_id,job_id,granularity_bucket,avg_inference_latency(ms),model_load_time(ms),peak_inference_mem_usage(mb),peak_load_mem_usage(mb),token_per_sec -15712278899,44280789008,2025-06-17T17:00:00Z,35,1105,1272.46,1255.45,23.92 -15706619480,44262431638,2025-06-17T13:00:00Z,35,1123,1272.41,1255.43,25.37 -15701565915,44245403612,2025-06-17T09:00:00Z,34,1114,1272.32,1255.24,25.38 -15697865923,44230646970,2025-06-17T05:00:00Z,33,1106,1272.45,1255.46,26.12 -15694639442,44221536444,2025-06-17T01:00:00Z,33,1145,1312.09,1293.27,25.79 -15690685696,44211619421,2025-06-16T21:00:00Z,33,1182,1312.03,1293.54,25.63 -15685808660,44196632637,2025-06-16T17:00:00Z,34,1137,1312.06,1293.76,26.36 -15680206509,44178256230,2025-06-16T13:00:00Z,35,1143,1312.06,1293.28,26.04 -15675176293,44162005966,2025-06-16T10:00:00Z,33,1136,1312.28,1293.55,25.2 -15671584185,44147537983,2025-06-16T06:00:00Z,34,1148,1312.11,1293.73,24.22 -15668756024,44140855631,2025-06-16T02:00:00Z,45,1186,1312.09,1293.56,25.25 -15666856809,44134617851,2025-06-15T22:00:00Z,32,1151,1312.19,1293.6,25.72 -15664949756,44129710892,2025-06-15T17:00:00Z,37,1150,1312.38,1294.2,25.76 -15662940074,44126695148,2025-06-15T15:00:00Z,34,1136,1312.1,1294.9,25.83 -15661046591,44121071601,2025-06-15T10:00:00Z,32,1122,1312.3,1293.62,25.55 -15657354121,44112759100,2025-06-15T02:00:00Z,30,1159,1312.26,1293.72,25.97 -15655612867,44108084740,2025-06-14T21:00:00Z,34,1142,1312.04,1293.46,26.5 -15653742079,44104013228,2025-06-14T17:00:00Z,31,1112,1312.26,1293.63,26.67 -15651786133,44100160145,2025-06-14T14:00:00Z,37,1143,1312.09,1293.34,26.01 -15649987292,44095314814,2025-06-14T09:00:00Z,35,1110,1311.93,1293.47,26.88 -15646107434,44086831907,2025-06-14T02:00:00Z,33,1121,1312.11,1293.38,24.57 -15642962044,44079703037,2025-06-13T21:00:00Z,38,1144,1312.35,1293.6,25.34 -15638842903,44067697635,2025-06-13T17:00:00Z,33,1145,1312.37,1351.73,24.64 -15634027967,44053427212,2025-06-13T14:00:00Z,33,1157,1312.39,1351.78,26.2 -15629571833,44037516912,2025-06-13T09:00:00Z,35,1119,1312.07,1351.97,26.23 -15626172835,44025076952,2025-06-13T06:00:00Z,30,1140,1312.41,1350.36,26.03 -15620031253,44010493569,2025-06-12T23:00:00Z,32,1137,1312.48,1353.23,26.07 diff --git a/.ci/scripts/benchmark_tooling/private/meta-llama-llama-3.2-1b_llama3-fb16_apple-iphone-15-_ios-18.0.csv b/.ci/scripts/benchmark_tooling/private/meta-llama-llama-3.2-1b_llama3-fb16_apple-iphone-15-_ios-18.0.csv deleted file mode 100644 index f7971909fe4..00000000000 --- a/.ci/scripts/benchmark_tooling/private/meta-llama-llama-3.2-1b_llama3-fb16_apple-iphone-15-_ios-18.0.csv +++ /dev/null @@ -1,29 +0,0 @@ -workflow_id,job_id,granularity_bucket,avg_inference_latency(ms),model_load_time(ms),peak_inference_mem_usage(mb),peak_load_mem_usage(mb),token_per_sec -15712278899,44280789008,2025-06-17T17:00:00Z,23960,1446,2453.43,2465.29,2.97 -15706619480,44262431638,2025-06-17T13:00:00Z,23798,3043,2453.46,2465.03,3.0 -15701565915,44245403612,2025-06-17T09:00:00Z,23482,1443,2453.53,2465.02,2.99 -15697865923,44230646970,2025-06-17T05:00:00Z,23748,1463,2453.53,2465.15,3.0 -15694639442,44221536444,2025-06-17T01:00:00Z,25139,1824,2453.52,2465.01,2.8 -15690685696,44211619421,2025-06-16T21:00:00Z,24436,1396,2453.5,2464.97,2.78 -15685808660,44196632637,2025-06-16T17:00:00Z,23948,3102,2453.54,2464.99,3.03 -15680206509,44178256230,2025-06-16T13:00:00Z,23867,1423,2453.45,2465.03,3.0 -15675176293,44162005966,2025-06-16T10:00:00Z,23919,2719,2453.46,2465.27,3.0 -15671584185,44147537983,2025-06-16T06:00:00Z,23755,2916,2453.56,2466.25,3.0 -15668756024,44140855631,2025-06-16T02:00:00Z,25202,2648,2453.52,2465.58,2.78 -15666856809,44134617851,2025-06-15T22:00:00Z,23989,1415,2453.47,2465.49,2.96 -15664949756,44129710892,2025-06-15T17:00:00Z,23860,1422,2453.41,2465.53,2.99 -15662940074,44126695148,2025-06-15T15:00:00Z,24000,1433,2453.4,2465.17,3.01 -15661046591,44121071601,2025-06-15T10:00:00Z,23797,1449,2453.47,2465.09,3.02 -15659301910,44117138781,2025-06-15T06:00:00Z,24072,1421,2453.55,2466.27,3.02 -15657354121,44112759100,2025-06-15T02:00:00Z,25079,1402,2453.51,2465.59,2.78 -15655612867,44108084740,2025-06-14T21:00:00Z,24073,1442,2453.39,2465.54,2.98 -15653742079,44104013228,2025-06-14T17:00:00Z,23914,1431,2453.5,2464.85,2.98 -15651786133,44100160145,2025-06-14T14:00:00Z,23813,1434,2453.46,2464.93,3.0 -15649987292,44095314814,2025-06-14T09:00:00Z,23810,1427,2453.44,2465.49,3.01 -15646107434,44086831907,2025-06-14T02:00:00Z,23899,1429,2453.47,2465.51,2.98 -15642962044,44079703037,2025-06-13T21:00:00Z,23972,1826,2453.51,2464.91,2.96 -15638842903,44067697635,2025-06-13T17:00:00Z,24042,1431,2453.59,2508.12,3.0 -15634027967,44053427212,2025-06-13T14:00:00Z,23661,1427,2453.49,2507.82,3.01 -15629571833,44037516912,2025-06-13T09:00:00Z,23628,2673,2453.33,2510.88,3.04 -15626172835,44025076952,2025-06-13T06:00:00Z,23797,2655,2453.51,2512.55,3.04 -15620031253,44010493569,2025-06-12T23:00:00Z,25432,3109,2453.42,2507.92,2.79 diff --git a/.ci/scripts/benchmark_tooling/private/meta-llama-llama-3.2-1b_llama3-fb16_apple-iphone-15-_ios.csv b/.ci/scripts/benchmark_tooling/private/meta-llama-llama-3.2-1b_llama3-fb16_apple-iphone-15-_ios.csv deleted file mode 100644 index 32437da3a05..00000000000 --- a/.ci/scripts/benchmark_tooling/private/meta-llama-llama-3.2-1b_llama3-fb16_apple-iphone-15-_ios.csv +++ /dev/null @@ -1,2 +0,0 @@ -workflow_id,job_id,granularity_bucket,FAILURE_REPORT -15648210927,44089445706,2025-06-14T04:00:00Z,0 diff --git a/.ci/scripts/benchmark_tooling/private/meta-llama-llama-3.2-1b_llama3-fb16_apple-iphone-15-plus-_ios-17.4.1.csv b/.ci/scripts/benchmark_tooling/private/meta-llama-llama-3.2-1b_llama3-fb16_apple-iphone-15-plus-_ios-17.4.1.csv deleted file mode 100644 index 46cfb823549..00000000000 --- a/.ci/scripts/benchmark_tooling/private/meta-llama-llama-3.2-1b_llama3-fb16_apple-iphone-15-plus-_ios-17.4.1.csv +++ /dev/null @@ -1,29 +0,0 @@ -workflow_id,job_id,granularity_bucket,avg_inference_latency(ms),model_load_time(ms),peak_inference_mem_usage(mb),peak_load_mem_usage(mb),token_per_sec -15712278899,44280789008,2025-06-17T17:00:00Z,24630,1531,2452.75,2471.23,2.9 -15706619480,44262431638,2025-06-17T13:00:00Z,25256,1599,2452.72,2471.26,2.93 -15701565915,44245403612,2025-06-17T09:00:00Z,24587,2152,2452.65,2471.19,2.92 -15697865923,44230646970,2025-06-17T05:00:00Z,27455,2045,2452.45,2471.1,2.9 -15694639442,44221536444,2025-06-17T01:00:00Z,24756,2148,2452.6,2471.22,2.76 -15690685696,44211619421,2025-06-16T21:00:00Z,25596,1507,2452.48,2470.97,2.75 -15685808660,44196632637,2025-06-16T17:00:00Z,24458,1945,2452.64,2471.25,2.94 -15680206509,44178256230,2025-06-16T13:00:00Z,24494,1511,2452.68,2471.2,2.91 -15675176293,44162005966,2025-06-16T10:00:00Z,24537,1831,2452.71,2471.27,2.9 -15671584185,44147537983,2025-06-16T06:00:00Z,24670,1909,2452.62,2471.06,2.93 -15668756024,44140855631,2025-06-16T02:00:00Z,25030,1744,2452.76,2471.35,2.76 -15666856809,44134617851,2025-06-15T22:00:00Z,24497,1655,2452.6,2471.12,2.79 -15664949756,44129710892,2025-06-15T17:00:00Z,24363,1515,2452.69,2471.16,2.91 -15662940074,44126695148,2025-06-15T15:00:00Z,24381,2053,2452.59,2471.21,2.93 -15661046591,44121071601,2025-06-15T10:00:00Z,24353,1622,2452.61,2471.1,2.9 -15659301910,44117138781,2025-06-15T06:00:00Z,24344,1820,2452.67,2471.23,2.92 -15657354121,44112759100,2025-06-15T02:00:00Z,24852,2042,2452.68,2471.35,2.75 -15655612867,44108084740,2025-06-14T21:00:00Z,24420,1815,2452.58,2471.06,2.9 -15653742079,44104013228,2025-06-14T17:00:00Z,24402,1533,2452.56,2471.22,2.91 -15651786133,44100160145,2025-06-14T14:00:00Z,24372,1925,2452.6,2471.27,2.9 -15649987292,44095314814,2025-06-14T09:00:00Z,25234,1940,2452.5,2471.08,2.9 -15646107434,44086831907,2025-06-14T02:00:00Z,24363,1581,2452.47,2471.08,2.91 -15642962044,44079703037,2025-06-13T21:00:00Z,24528,1901,2452.71,2471.22,2.83 -15638842903,44067697635,2025-06-13T17:00:00Z,24804,1551,2452.64,2538.36,2.91 -15634027967,44053427212,2025-06-13T14:00:00Z,24384,2059,2452.71,2538.44,2.88 -15629571833,44037516912,2025-06-13T09:00:00Z,24317,2159,2452.64,2538.44,2.91 -15626172835,44025076952,2025-06-13T06:00:00Z,25270,1550,2452.62,2538.32,2.89 -15620031253,44010493569,2025-06-12T23:00:00Z,25535,2167,2452.58,2535.55,2.76 diff --git a/.ci/scripts/benchmark_tooling/private/meta-llama-llama-3.2-1b_llama3-fb16_apple-iphone-15-plus-private_ios-17.4.1.csv b/.ci/scripts/benchmark_tooling/private/meta-llama-llama-3.2-1b_llama3-fb16_apple-iphone-15-plus-private_ios-17.4.1.csv deleted file mode 100644 index 46cfb823549..00000000000 --- a/.ci/scripts/benchmark_tooling/private/meta-llama-llama-3.2-1b_llama3-fb16_apple-iphone-15-plus-private_ios-17.4.1.csv +++ /dev/null @@ -1,29 +0,0 @@ -workflow_id,job_id,granularity_bucket,avg_inference_latency(ms),model_load_time(ms),peak_inference_mem_usage(mb),peak_load_mem_usage(mb),token_per_sec -15712278899,44280789008,2025-06-17T17:00:00Z,24630,1531,2452.75,2471.23,2.9 -15706619480,44262431638,2025-06-17T13:00:00Z,25256,1599,2452.72,2471.26,2.93 -15701565915,44245403612,2025-06-17T09:00:00Z,24587,2152,2452.65,2471.19,2.92 -15697865923,44230646970,2025-06-17T05:00:00Z,27455,2045,2452.45,2471.1,2.9 -15694639442,44221536444,2025-06-17T01:00:00Z,24756,2148,2452.6,2471.22,2.76 -15690685696,44211619421,2025-06-16T21:00:00Z,25596,1507,2452.48,2470.97,2.75 -15685808660,44196632637,2025-06-16T17:00:00Z,24458,1945,2452.64,2471.25,2.94 -15680206509,44178256230,2025-06-16T13:00:00Z,24494,1511,2452.68,2471.2,2.91 -15675176293,44162005966,2025-06-16T10:00:00Z,24537,1831,2452.71,2471.27,2.9 -15671584185,44147537983,2025-06-16T06:00:00Z,24670,1909,2452.62,2471.06,2.93 -15668756024,44140855631,2025-06-16T02:00:00Z,25030,1744,2452.76,2471.35,2.76 -15666856809,44134617851,2025-06-15T22:00:00Z,24497,1655,2452.6,2471.12,2.79 -15664949756,44129710892,2025-06-15T17:00:00Z,24363,1515,2452.69,2471.16,2.91 -15662940074,44126695148,2025-06-15T15:00:00Z,24381,2053,2452.59,2471.21,2.93 -15661046591,44121071601,2025-06-15T10:00:00Z,24353,1622,2452.61,2471.1,2.9 -15659301910,44117138781,2025-06-15T06:00:00Z,24344,1820,2452.67,2471.23,2.92 -15657354121,44112759100,2025-06-15T02:00:00Z,24852,2042,2452.68,2471.35,2.75 -15655612867,44108084740,2025-06-14T21:00:00Z,24420,1815,2452.58,2471.06,2.9 -15653742079,44104013228,2025-06-14T17:00:00Z,24402,1533,2452.56,2471.22,2.91 -15651786133,44100160145,2025-06-14T14:00:00Z,24372,1925,2452.6,2471.27,2.9 -15649987292,44095314814,2025-06-14T09:00:00Z,25234,1940,2452.5,2471.08,2.9 -15646107434,44086831907,2025-06-14T02:00:00Z,24363,1581,2452.47,2471.08,2.91 -15642962044,44079703037,2025-06-13T21:00:00Z,24528,1901,2452.71,2471.22,2.83 -15638842903,44067697635,2025-06-13T17:00:00Z,24804,1551,2452.64,2538.36,2.91 -15634027967,44053427212,2025-06-13T14:00:00Z,24384,2059,2452.71,2538.44,2.88 -15629571833,44037516912,2025-06-13T09:00:00Z,24317,2159,2452.64,2538.44,2.91 -15626172835,44025076952,2025-06-13T06:00:00Z,25270,1550,2452.62,2538.32,2.89 -15620031253,44010493569,2025-06-12T23:00:00Z,25535,2167,2452.58,2535.55,2.76 diff --git a/.ci/scripts/benchmark_tooling/private/meta-llama-llama-3.2-1b_llama3-fb16_apple-iphone-15-private_ios-18.0.csv b/.ci/scripts/benchmark_tooling/private/meta-llama-llama-3.2-1b_llama3-fb16_apple-iphone-15-private_ios-18.0.csv deleted file mode 100644 index f7971909fe4..00000000000 --- a/.ci/scripts/benchmark_tooling/private/meta-llama-llama-3.2-1b_llama3-fb16_apple-iphone-15-private_ios-18.0.csv +++ /dev/null @@ -1,29 +0,0 @@ -workflow_id,job_id,granularity_bucket,avg_inference_latency(ms),model_load_time(ms),peak_inference_mem_usage(mb),peak_load_mem_usage(mb),token_per_sec -15712278899,44280789008,2025-06-17T17:00:00Z,23960,1446,2453.43,2465.29,2.97 -15706619480,44262431638,2025-06-17T13:00:00Z,23798,3043,2453.46,2465.03,3.0 -15701565915,44245403612,2025-06-17T09:00:00Z,23482,1443,2453.53,2465.02,2.99 -15697865923,44230646970,2025-06-17T05:00:00Z,23748,1463,2453.53,2465.15,3.0 -15694639442,44221536444,2025-06-17T01:00:00Z,25139,1824,2453.52,2465.01,2.8 -15690685696,44211619421,2025-06-16T21:00:00Z,24436,1396,2453.5,2464.97,2.78 -15685808660,44196632637,2025-06-16T17:00:00Z,23948,3102,2453.54,2464.99,3.03 -15680206509,44178256230,2025-06-16T13:00:00Z,23867,1423,2453.45,2465.03,3.0 -15675176293,44162005966,2025-06-16T10:00:00Z,23919,2719,2453.46,2465.27,3.0 -15671584185,44147537983,2025-06-16T06:00:00Z,23755,2916,2453.56,2466.25,3.0 -15668756024,44140855631,2025-06-16T02:00:00Z,25202,2648,2453.52,2465.58,2.78 -15666856809,44134617851,2025-06-15T22:00:00Z,23989,1415,2453.47,2465.49,2.96 -15664949756,44129710892,2025-06-15T17:00:00Z,23860,1422,2453.41,2465.53,2.99 -15662940074,44126695148,2025-06-15T15:00:00Z,24000,1433,2453.4,2465.17,3.01 -15661046591,44121071601,2025-06-15T10:00:00Z,23797,1449,2453.47,2465.09,3.02 -15659301910,44117138781,2025-06-15T06:00:00Z,24072,1421,2453.55,2466.27,3.02 -15657354121,44112759100,2025-06-15T02:00:00Z,25079,1402,2453.51,2465.59,2.78 -15655612867,44108084740,2025-06-14T21:00:00Z,24073,1442,2453.39,2465.54,2.98 -15653742079,44104013228,2025-06-14T17:00:00Z,23914,1431,2453.5,2464.85,2.98 -15651786133,44100160145,2025-06-14T14:00:00Z,23813,1434,2453.46,2464.93,3.0 -15649987292,44095314814,2025-06-14T09:00:00Z,23810,1427,2453.44,2465.49,3.01 -15646107434,44086831907,2025-06-14T02:00:00Z,23899,1429,2453.47,2465.51,2.98 -15642962044,44079703037,2025-06-13T21:00:00Z,23972,1826,2453.51,2464.91,2.96 -15638842903,44067697635,2025-06-13T17:00:00Z,24042,1431,2453.59,2508.12,3.0 -15634027967,44053427212,2025-06-13T14:00:00Z,23661,1427,2453.49,2507.82,3.01 -15629571833,44037516912,2025-06-13T09:00:00Z,23628,2673,2453.33,2510.88,3.04 -15626172835,44025076952,2025-06-13T06:00:00Z,23797,2655,2453.51,2512.55,3.04 -15620031253,44010493569,2025-06-12T23:00:00Z,25432,3109,2453.42,2507.92,2.79 diff --git a/.ci/scripts/benchmark_tooling/private/meta-llama-llama-3.2-1b_llama3-fb16_apple-iphone-15-private_ios.csv b/.ci/scripts/benchmark_tooling/private/meta-llama-llama-3.2-1b_llama3-fb16_apple-iphone-15-private_ios.csv deleted file mode 100644 index 32437da3a05..00000000000 --- a/.ci/scripts/benchmark_tooling/private/meta-llama-llama-3.2-1b_llama3-fb16_apple-iphone-15-private_ios.csv +++ /dev/null @@ -1,2 +0,0 @@ -workflow_id,job_id,granularity_bucket,FAILURE_REPORT -15648210927,44089445706,2025-06-14T04:00:00Z,0 diff --git a/.ci/scripts/benchmark_tooling/private/meta-llama-llama-3.2-1b_llama3-fb16_apple-iphone-15-pro-_ios-18.4.1.csv b/.ci/scripts/benchmark_tooling/private/meta-llama-llama-3.2-1b_llama3-fb16_apple-iphone-15-pro-_ios-18.4.1.csv deleted file mode 100644 index 0fae5da675e..00000000000 --- a/.ci/scripts/benchmark_tooling/private/meta-llama-llama-3.2-1b_llama3-fb16_apple-iphone-15-pro-_ios-18.4.1.csv +++ /dev/null @@ -1,29 +0,0 @@ -workflow_id,job_id,granularity_bucket,avg_inference_latency(ms),model_load_time(ms),peak_inference_mem_usage(mb),peak_load_mem_usage(mb),token_per_sec -15712278899,44280789008,2025-06-17T17:00:00Z,20720,797,2455.36,2465.4,3.11 -15706619480,44262431638,2025-06-17T13:00:00Z,20532,558,2455.34,2465.47,3.45 -15701565915,44245403612,2025-06-17T09:00:00Z,21099,586,2455.34,2465.46,3.45 -15697865923,44230646970,2025-06-17T05:00:00Z,20890,967,2455.47,2465.78,3.34 -15694639442,44221536444,2025-06-17T01:00:00Z,20752,702,2455.39,2465.63,3.29 -15690685696,44211619421,2025-06-16T21:00:00Z,21017,649,2455.35,2465.57,3.27 -15685808660,44196632637,2025-06-16T17:00:00Z,20605,753,2454.03,2464.38,3.47 -15680206509,44178256230,2025-06-16T13:00:00Z,20902,754,2455.47,2465.57,3.4 -15675176293,44162005966,2025-06-16T10:00:00Z,20670,752,2455.33,2465.5,3.41 -15671584185,44147537983,2025-06-16T06:00:00Z,20620,644,2455.36,2465.42,3.42 -15668756024,44140855631,2025-06-16T02:00:00Z,21148,751,2455.47,2465.53,3.35 -15666856809,44134617851,2025-06-15T22:00:00Z,20658,704,2455.39,2465.58,3.41 -15664949756,44129710892,2025-06-15T17:00:00Z,20658,704,2455.32,2465.57,3.43 -15662940074,44126695148,2025-06-15T15:00:00Z,21773,1073,2455.42,2465.5,3.42 -15661046591,44121071601,2025-06-15T10:00:00Z,20831,628,2455.51,2465.65,3.41 -15659301910,44117138781,2025-06-15T06:00:00Z,20680,745,2455.39,2465.69,3.44 -15657354121,44112759100,2025-06-15T02:00:00Z,20754,743,2455.36,2465.66,3.39 -15655612867,44108084740,2025-06-14T21:00:00Z,20901,733,2455.43,2465.61,3.43 -15653742079,44104013228,2025-06-14T17:00:00Z,20610,1665,2455.42,2465.74,3.43 -15651786133,44100160145,2025-06-14T14:00:00Z,20550,633,2455.34,2465.41,3.46 -15649987292,44095314814,2025-06-14T09:00:00Z,21390,753,2455.34,2465.28,3.18 -15646107434,44086831907,2025-06-14T02:00:00Z,20539,1135,2455.29,2465.63,3.4 -15642962044,44079703037,2025-06-13T21:00:00Z,20819,740,2455.44,2465.5,3.45 -15638842903,44067697635,2025-06-13T17:00:00Z,20930,691,2455.37,2508.35,3.43 -15634027967,44053427212,2025-06-13T14:00:00Z,20596,1557,2455.35,2508.36,3.43 -15629571833,44037516912,2025-06-13T09:00:00Z,20691,772,2455.35,2508.54,3.43 -15626172835,44025076952,2025-06-13T06:00:00Z,20664,824,2455.39,2508.3,3.42 -15620031253,44010493569,2025-06-12T23:00:00Z,20829,785,2455.44,2508.73,3.27 diff --git a/.ci/scripts/benchmark_tooling/private/meta-llama-llama-3.2-1b_llama3-fb16_apple-iphone-15-pro-private_ios-18.4.1.csv b/.ci/scripts/benchmark_tooling/private/meta-llama-llama-3.2-1b_llama3-fb16_apple-iphone-15-pro-private_ios-18.4.1.csv deleted file mode 100644 index 0fae5da675e..00000000000 --- a/.ci/scripts/benchmark_tooling/private/meta-llama-llama-3.2-1b_llama3-fb16_apple-iphone-15-pro-private_ios-18.4.1.csv +++ /dev/null @@ -1,29 +0,0 @@ -workflow_id,job_id,granularity_bucket,avg_inference_latency(ms),model_load_time(ms),peak_inference_mem_usage(mb),peak_load_mem_usage(mb),token_per_sec -15712278899,44280789008,2025-06-17T17:00:00Z,20720,797,2455.36,2465.4,3.11 -15706619480,44262431638,2025-06-17T13:00:00Z,20532,558,2455.34,2465.47,3.45 -15701565915,44245403612,2025-06-17T09:00:00Z,21099,586,2455.34,2465.46,3.45 -15697865923,44230646970,2025-06-17T05:00:00Z,20890,967,2455.47,2465.78,3.34 -15694639442,44221536444,2025-06-17T01:00:00Z,20752,702,2455.39,2465.63,3.29 -15690685696,44211619421,2025-06-16T21:00:00Z,21017,649,2455.35,2465.57,3.27 -15685808660,44196632637,2025-06-16T17:00:00Z,20605,753,2454.03,2464.38,3.47 -15680206509,44178256230,2025-06-16T13:00:00Z,20902,754,2455.47,2465.57,3.4 -15675176293,44162005966,2025-06-16T10:00:00Z,20670,752,2455.33,2465.5,3.41 -15671584185,44147537983,2025-06-16T06:00:00Z,20620,644,2455.36,2465.42,3.42 -15668756024,44140855631,2025-06-16T02:00:00Z,21148,751,2455.47,2465.53,3.35 -15666856809,44134617851,2025-06-15T22:00:00Z,20658,704,2455.39,2465.58,3.41 -15664949756,44129710892,2025-06-15T17:00:00Z,20658,704,2455.32,2465.57,3.43 -15662940074,44126695148,2025-06-15T15:00:00Z,21773,1073,2455.42,2465.5,3.42 -15661046591,44121071601,2025-06-15T10:00:00Z,20831,628,2455.51,2465.65,3.41 -15659301910,44117138781,2025-06-15T06:00:00Z,20680,745,2455.39,2465.69,3.44 -15657354121,44112759100,2025-06-15T02:00:00Z,20754,743,2455.36,2465.66,3.39 -15655612867,44108084740,2025-06-14T21:00:00Z,20901,733,2455.43,2465.61,3.43 -15653742079,44104013228,2025-06-14T17:00:00Z,20610,1665,2455.42,2465.74,3.43 -15651786133,44100160145,2025-06-14T14:00:00Z,20550,633,2455.34,2465.41,3.46 -15649987292,44095314814,2025-06-14T09:00:00Z,21390,753,2455.34,2465.28,3.18 -15646107434,44086831907,2025-06-14T02:00:00Z,20539,1135,2455.29,2465.63,3.4 -15642962044,44079703037,2025-06-13T21:00:00Z,20819,740,2455.44,2465.5,3.45 -15638842903,44067697635,2025-06-13T17:00:00Z,20930,691,2455.37,2508.35,3.43 -15634027967,44053427212,2025-06-13T14:00:00Z,20596,1557,2455.35,2508.36,3.43 -15629571833,44037516912,2025-06-13T09:00:00Z,20691,772,2455.35,2508.54,3.43 -15626172835,44025076952,2025-06-13T06:00:00Z,20664,824,2455.39,2508.3,3.42 -15620031253,44010493569,2025-06-12T23:00:00Z,20829,785,2455.44,2508.73,3.27 diff --git a/.ci/scripts/benchmark_tooling/private/mv3_coreml-fp16_apple-iphone-15-_ios-18.0.csv b/.ci/scripts/benchmark_tooling/private/mv3_coreml-fp16_apple-iphone-15-_ios-18.0.csv deleted file mode 100644 index 0f36498a010..00000000000 --- a/.ci/scripts/benchmark_tooling/private/mv3_coreml-fp16_apple-iphone-15-_ios-18.0.csv +++ /dev/null @@ -1,11 +0,0 @@ -workflow_id,job_id,granularity_bucket,avg_inference_latency(ms),model_load_time(ms),peak_inference_mem_usage(mb),peak_load_mem_usage(mb) -15615480751,43993124686,2025-06-12T17:00:00Z,1,29,22.88,83.49 -15604974289,43958007180,2025-06-12T09:00:00Z,1,30,22.89,83.9 -15601337433,43944770836,2025-06-12T05:00:00Z,1,51,22.93,79.86 -15598277481,43937275861,2025-06-12T01:00:00Z,1,51,22.93,79.99 -15594453833,43926877649,2025-06-11T21:00:00Z,1,48,22.72,80.7 -15589818422,43912035344,2025-06-11T17:00:00Z,1,31,22.81,84.0 -15584268753,43893469529,2025-06-11T13:00:00Z,1,52,23.07,80.51 -15579346239,43876994524,2025-06-11T09:00:00Z,1,34,22.94,83.77 -15575781424,43864061188,2025-06-11T05:00:00Z,1,36,22.97,83.56 -15572789992,43855812660,2025-06-11T01:00:00Z,1,34,22.75,82.72 diff --git a/.ci/scripts/benchmark_tooling/private/mv3_coreml-fp16_apple-iphone-15-_ios.csv b/.ci/scripts/benchmark_tooling/private/mv3_coreml-fp16_apple-iphone-15-_ios.csv deleted file mode 100644 index d6f458a8830..00000000000 --- a/.ci/scripts/benchmark_tooling/private/mv3_coreml-fp16_apple-iphone-15-_ios.csv +++ /dev/null @@ -1,2 +0,0 @@ -workflow_id,job_id,granularity_bucket,FAILURE_REPORT -15609910174,43969026143,2025-06-12T12:00:00Z,0 diff --git a/.ci/scripts/benchmark_tooling/private/mv3_coreml-fp16_apple-iphone-15-plus-_ios-17.4.1.csv b/.ci/scripts/benchmark_tooling/private/mv3_coreml-fp16_apple-iphone-15-plus-_ios-17.4.1.csv deleted file mode 100644 index 2992754922b..00000000000 --- a/.ci/scripts/benchmark_tooling/private/mv3_coreml-fp16_apple-iphone-15-plus-_ios-17.4.1.csv +++ /dev/null @@ -1,11 +0,0 @@ -workflow_id,job_id,granularity_bucket,avg_inference_latency(ms),model_load_time(ms),peak_inference_mem_usage(mb),peak_load_mem_usage(mb) -15615480751,43993124686,2025-06-12T17:00:00Z,1,68,36.16,113.1 -15604974289,43958007180,2025-06-12T09:00:00Z,1,64,36.22,112.95 -15601337433,43944770836,2025-06-12T05:00:00Z,1,65,36.22,112.83 -15598277481,43937275861,2025-06-12T01:00:00Z,1,68,36.17,113.0 -15594453833,43926877649,2025-06-11T21:00:00Z,1,67,36.14,112.62 -15589818422,43912035344,2025-06-11T17:00:00Z,1,66,36.04,112.63 -15584268753,43893469529,2025-06-11T13:00:00Z,1,66,36.17,112.82 -15579346239,43876994524,2025-06-11T09:00:00Z,1,63,36.12,112.61 -15575781424,43864061188,2025-06-11T05:00:00Z,1,67,36.16,112.64 -15572789992,43855812660,2025-06-11T01:00:00Z,1,70,36.24,112.12 diff --git a/.ci/scripts/benchmark_tooling/private/mv3_coreml-fp16_apple-iphone-15-plus-private_ios-17.4.1.csv b/.ci/scripts/benchmark_tooling/private/mv3_coreml-fp16_apple-iphone-15-plus-private_ios-17.4.1.csv deleted file mode 100644 index 2992754922b..00000000000 --- a/.ci/scripts/benchmark_tooling/private/mv3_coreml-fp16_apple-iphone-15-plus-private_ios-17.4.1.csv +++ /dev/null @@ -1,11 +0,0 @@ -workflow_id,job_id,granularity_bucket,avg_inference_latency(ms),model_load_time(ms),peak_inference_mem_usage(mb),peak_load_mem_usage(mb) -15615480751,43993124686,2025-06-12T17:00:00Z,1,68,36.16,113.1 -15604974289,43958007180,2025-06-12T09:00:00Z,1,64,36.22,112.95 -15601337433,43944770836,2025-06-12T05:00:00Z,1,65,36.22,112.83 -15598277481,43937275861,2025-06-12T01:00:00Z,1,68,36.17,113.0 -15594453833,43926877649,2025-06-11T21:00:00Z,1,67,36.14,112.62 -15589818422,43912035344,2025-06-11T17:00:00Z,1,66,36.04,112.63 -15584268753,43893469529,2025-06-11T13:00:00Z,1,66,36.17,112.82 -15579346239,43876994524,2025-06-11T09:00:00Z,1,63,36.12,112.61 -15575781424,43864061188,2025-06-11T05:00:00Z,1,67,36.16,112.64 -15572789992,43855812660,2025-06-11T01:00:00Z,1,70,36.24,112.12 diff --git a/.ci/scripts/benchmark_tooling/private/mv3_coreml-fp16_apple-iphone-15-private_ios-18.0.csv b/.ci/scripts/benchmark_tooling/private/mv3_coreml-fp16_apple-iphone-15-private_ios-18.0.csv deleted file mode 100644 index 0f36498a010..00000000000 --- a/.ci/scripts/benchmark_tooling/private/mv3_coreml-fp16_apple-iphone-15-private_ios-18.0.csv +++ /dev/null @@ -1,11 +0,0 @@ -workflow_id,job_id,granularity_bucket,avg_inference_latency(ms),model_load_time(ms),peak_inference_mem_usage(mb),peak_load_mem_usage(mb) -15615480751,43993124686,2025-06-12T17:00:00Z,1,29,22.88,83.49 -15604974289,43958007180,2025-06-12T09:00:00Z,1,30,22.89,83.9 -15601337433,43944770836,2025-06-12T05:00:00Z,1,51,22.93,79.86 -15598277481,43937275861,2025-06-12T01:00:00Z,1,51,22.93,79.99 -15594453833,43926877649,2025-06-11T21:00:00Z,1,48,22.72,80.7 -15589818422,43912035344,2025-06-11T17:00:00Z,1,31,22.81,84.0 -15584268753,43893469529,2025-06-11T13:00:00Z,1,52,23.07,80.51 -15579346239,43876994524,2025-06-11T09:00:00Z,1,34,22.94,83.77 -15575781424,43864061188,2025-06-11T05:00:00Z,1,36,22.97,83.56 -15572789992,43855812660,2025-06-11T01:00:00Z,1,34,22.75,82.72 diff --git a/.ci/scripts/benchmark_tooling/private/mv3_coreml-fp16_apple-iphone-15-private_ios.csv b/.ci/scripts/benchmark_tooling/private/mv3_coreml-fp16_apple-iphone-15-private_ios.csv deleted file mode 100644 index d6f458a8830..00000000000 --- a/.ci/scripts/benchmark_tooling/private/mv3_coreml-fp16_apple-iphone-15-private_ios.csv +++ /dev/null @@ -1,2 +0,0 @@ -workflow_id,job_id,granularity_bucket,FAILURE_REPORT -15609910174,43969026143,2025-06-12T12:00:00Z,0 diff --git a/.ci/scripts/benchmark_tooling/private/mv3_coreml-fp16_apple-iphone-15-pro-_ios-18.4.1.csv b/.ci/scripts/benchmark_tooling/private/mv3_coreml-fp16_apple-iphone-15-pro-_ios-18.4.1.csv deleted file mode 100644 index b25c8004f67..00000000000 --- a/.ci/scripts/benchmark_tooling/private/mv3_coreml-fp16_apple-iphone-15-pro-_ios-18.4.1.csv +++ /dev/null @@ -1,11 +0,0 @@ -workflow_id,job_id,granularity_bucket,avg_inference_latency(ms),model_load_time(ms),peak_inference_mem_usage(mb),peak_load_mem_usage(mb) -15615480751,43993124686,2025-06-12T17:00:00Z,1,45,33.47,109.42 -15604974289,43958007180,2025-06-12T09:00:00Z,1,46,33.41,108.93 -15601337433,43944770836,2025-06-12T05:00:00Z,1,46,33.38,108.75 -15598277481,43937275861,2025-06-12T01:00:00Z,1,46,33.56,109.12 -15594453833,43926877649,2025-06-11T21:00:00Z,1,46,33.55,109.58 -15589818422,43912035344,2025-06-11T17:00:00Z,1,46,33.55,109.35 -15584268753,43893469529,2025-06-11T13:00:00Z,1,46,33.6,109.56 -15579346239,43876994524,2025-06-11T09:00:00Z,1,46,33.44,109.55 -15575781424,43864061188,2025-06-11T05:00:00Z,1,46,33.6,109.55 -15572789992,43855812660,2025-06-11T01:00:00Z,1,47,33.2,107.57 diff --git a/.ci/scripts/benchmark_tooling/private/mv3_coreml-fp16_apple-iphone-15-pro-private_ios-18.4.1.csv b/.ci/scripts/benchmark_tooling/private/mv3_coreml-fp16_apple-iphone-15-pro-private_ios-18.4.1.csv deleted file mode 100644 index b25c8004f67..00000000000 --- a/.ci/scripts/benchmark_tooling/private/mv3_coreml-fp16_apple-iphone-15-pro-private_ios-18.4.1.csv +++ /dev/null @@ -1,11 +0,0 @@ -workflow_id,job_id,granularity_bucket,avg_inference_latency(ms),model_load_time(ms),peak_inference_mem_usage(mb),peak_load_mem_usage(mb) -15615480751,43993124686,2025-06-12T17:00:00Z,1,45,33.47,109.42 -15604974289,43958007180,2025-06-12T09:00:00Z,1,46,33.41,108.93 -15601337433,43944770836,2025-06-12T05:00:00Z,1,46,33.38,108.75 -15598277481,43937275861,2025-06-12T01:00:00Z,1,46,33.56,109.12 -15594453833,43926877649,2025-06-11T21:00:00Z,1,46,33.55,109.58 -15589818422,43912035344,2025-06-11T17:00:00Z,1,46,33.55,109.35 -15584268753,43893469529,2025-06-11T13:00:00Z,1,46,33.6,109.56 -15579346239,43876994524,2025-06-11T09:00:00Z,1,46,33.44,109.55 -15575781424,43864061188,2025-06-11T05:00:00Z,1,46,33.6,109.55 -15572789992,43855812660,2025-06-11T01:00:00Z,1,47,33.2,107.57 diff --git a/.ci/scripts/benchmark_tooling/private/mv3_mps_apple-iphone-15-_ios-18.0.csv b/.ci/scripts/benchmark_tooling/private/mv3_mps_apple-iphone-15-_ios-18.0.csv deleted file mode 100644 index 8b57937ca89..00000000000 --- a/.ci/scripts/benchmark_tooling/private/mv3_mps_apple-iphone-15-_ios-18.0.csv +++ /dev/null @@ -1,9 +0,0 @@ -workflow_id,job_id,granularity_bucket,avg_inference_latency(ms),model_load_time(ms),peak_inference_mem_usage(mb),peak_load_mem_usage(mb) -15615480751,43993124686,2025-06-12T17:00:00Z,4,11,48.19,129.33 -15604974289,43958007180,2025-06-12T09:00:00Z,4,11,48.17,131.19 -15601337433,43944770836,2025-06-12T05:00:00Z,4,11,48.11,130.28 -15598277481,43937275861,2025-06-12T01:00:00Z,4,12,48.31,130.98 -15594453833,43926877649,2025-06-11T21:00:00Z,4,13,48.11,128.34 -15589818422,43912035344,2025-06-11T17:00:00Z,4,11,48.15,129.98 -15584268753,43893469529,2025-06-11T13:00:00Z,4,11,48.06,130.13 -15579346239,43876994524,2025-06-11T09:00:00Z,4,14,48.33,129.58 diff --git a/.ci/scripts/benchmark_tooling/private/mv3_mps_apple-iphone-15-_ios.csv b/.ci/scripts/benchmark_tooling/private/mv3_mps_apple-iphone-15-_ios.csv deleted file mode 100644 index d6f458a8830..00000000000 --- a/.ci/scripts/benchmark_tooling/private/mv3_mps_apple-iphone-15-_ios.csv +++ /dev/null @@ -1,2 +0,0 @@ -workflow_id,job_id,granularity_bucket,FAILURE_REPORT -15609910174,43969026143,2025-06-12T12:00:00Z,0 diff --git a/.ci/scripts/benchmark_tooling/private/mv3_mps_apple-iphone-15-plus-_ios-17.4.1.csv b/.ci/scripts/benchmark_tooling/private/mv3_mps_apple-iphone-15-plus-_ios-17.4.1.csv deleted file mode 100644 index 449deec06b7..00000000000 --- a/.ci/scripts/benchmark_tooling/private/mv3_mps_apple-iphone-15-plus-_ios-17.4.1.csv +++ /dev/null @@ -1,9 +0,0 @@ -workflow_id,job_id,granularity_bucket,avg_inference_latency(ms),model_load_time(ms),peak_inference_mem_usage(mb),peak_load_mem_usage(mb) -15615480751,43993124686,2025-06-12T17:00:00Z,1,48,60.17,201.68 -15604974289,43958007180,2025-06-12T09:00:00Z,1,50,59.91,201.66 -15601337433,43944770836,2025-06-12T05:00:00Z,1,47,60.03,200.79 -15598277481,43937275861,2025-06-12T01:00:00Z,1,51,60.15,200.01 -15594453833,43926877649,2025-06-11T21:00:00Z,1,49,59.94,199.05 -15589818422,43912035344,2025-06-11T17:00:00Z,1,48,59.78,194.77 -15584268753,43893469529,2025-06-11T13:00:00Z,1,46,59.83,197.74 -15579346239,43876994524,2025-06-11T09:00:00Z,1,48,59.98,198.29 diff --git a/.ci/scripts/benchmark_tooling/private/mv3_mps_apple-iphone-15-plus-private_ios-17.4.1.csv b/.ci/scripts/benchmark_tooling/private/mv3_mps_apple-iphone-15-plus-private_ios-17.4.1.csv deleted file mode 100644 index 449deec06b7..00000000000 --- a/.ci/scripts/benchmark_tooling/private/mv3_mps_apple-iphone-15-plus-private_ios-17.4.1.csv +++ /dev/null @@ -1,9 +0,0 @@ -workflow_id,job_id,granularity_bucket,avg_inference_latency(ms),model_load_time(ms),peak_inference_mem_usage(mb),peak_load_mem_usage(mb) -15615480751,43993124686,2025-06-12T17:00:00Z,1,48,60.17,201.68 -15604974289,43958007180,2025-06-12T09:00:00Z,1,50,59.91,201.66 -15601337433,43944770836,2025-06-12T05:00:00Z,1,47,60.03,200.79 -15598277481,43937275861,2025-06-12T01:00:00Z,1,51,60.15,200.01 -15594453833,43926877649,2025-06-11T21:00:00Z,1,49,59.94,199.05 -15589818422,43912035344,2025-06-11T17:00:00Z,1,48,59.78,194.77 -15584268753,43893469529,2025-06-11T13:00:00Z,1,46,59.83,197.74 -15579346239,43876994524,2025-06-11T09:00:00Z,1,48,59.98,198.29 diff --git a/.ci/scripts/benchmark_tooling/private/mv3_mps_apple-iphone-15-private_ios-18.0.csv b/.ci/scripts/benchmark_tooling/private/mv3_mps_apple-iphone-15-private_ios-18.0.csv deleted file mode 100644 index 8b57937ca89..00000000000 --- a/.ci/scripts/benchmark_tooling/private/mv3_mps_apple-iphone-15-private_ios-18.0.csv +++ /dev/null @@ -1,9 +0,0 @@ -workflow_id,job_id,granularity_bucket,avg_inference_latency(ms),model_load_time(ms),peak_inference_mem_usage(mb),peak_load_mem_usage(mb) -15615480751,43993124686,2025-06-12T17:00:00Z,4,11,48.19,129.33 -15604974289,43958007180,2025-06-12T09:00:00Z,4,11,48.17,131.19 -15601337433,43944770836,2025-06-12T05:00:00Z,4,11,48.11,130.28 -15598277481,43937275861,2025-06-12T01:00:00Z,4,12,48.31,130.98 -15594453833,43926877649,2025-06-11T21:00:00Z,4,13,48.11,128.34 -15589818422,43912035344,2025-06-11T17:00:00Z,4,11,48.15,129.98 -15584268753,43893469529,2025-06-11T13:00:00Z,4,11,48.06,130.13 -15579346239,43876994524,2025-06-11T09:00:00Z,4,14,48.33,129.58 diff --git a/.ci/scripts/benchmark_tooling/private/mv3_mps_apple-iphone-15-private_ios.csv b/.ci/scripts/benchmark_tooling/private/mv3_mps_apple-iphone-15-private_ios.csv deleted file mode 100644 index d6f458a8830..00000000000 --- a/.ci/scripts/benchmark_tooling/private/mv3_mps_apple-iphone-15-private_ios.csv +++ /dev/null @@ -1,2 +0,0 @@ -workflow_id,job_id,granularity_bucket,FAILURE_REPORT -15609910174,43969026143,2025-06-12T12:00:00Z,0 diff --git a/.ci/scripts/benchmark_tooling/private/mv3_mps_apple-iphone-15-pro-_ios-18.4.1.csv b/.ci/scripts/benchmark_tooling/private/mv3_mps_apple-iphone-15-pro-_ios-18.4.1.csv deleted file mode 100644 index fafffca3d7a..00000000000 --- a/.ci/scripts/benchmark_tooling/private/mv3_mps_apple-iphone-15-pro-_ios-18.4.1.csv +++ /dev/null @@ -1,9 +0,0 @@ -workflow_id,job_id,granularity_bucket,avg_inference_latency(ms),model_load_time(ms),peak_inference_mem_usage(mb),peak_load_mem_usage(mb) -15615480751,43993124686,2025-06-12T17:00:00Z,3,19,81.41,200.73 -15604974289,43958007180,2025-06-12T09:00:00Z,3,19,81.63,199.29 -15601337433,43944770836,2025-06-12T05:00:00Z,3,19,81.43,200.56 -15598277481,43937275861,2025-06-12T01:00:00Z,3,19,81.47,199.37 -15594453833,43926877649,2025-06-11T21:00:00Z,2,20,81.2,201.12 -15589818422,43912035344,2025-06-11T17:00:00Z,3,18,81.27,199.6 -15584268753,43893469529,2025-06-11T13:00:00Z,3,19,81.36,199.19 -15579346239,43876994524,2025-06-11T09:00:00Z,3,19,81.48,200.98 diff --git a/.ci/scripts/benchmark_tooling/private/mv3_mps_apple-iphone-15-pro-private_ios-18.4.1.csv b/.ci/scripts/benchmark_tooling/private/mv3_mps_apple-iphone-15-pro-private_ios-18.4.1.csv deleted file mode 100644 index fafffca3d7a..00000000000 --- a/.ci/scripts/benchmark_tooling/private/mv3_mps_apple-iphone-15-pro-private_ios-18.4.1.csv +++ /dev/null @@ -1,9 +0,0 @@ -workflow_id,job_id,granularity_bucket,avg_inference_latency(ms),model_load_time(ms),peak_inference_mem_usage(mb),peak_load_mem_usage(mb) -15615480751,43993124686,2025-06-12T17:00:00Z,3,19,81.41,200.73 -15604974289,43958007180,2025-06-12T09:00:00Z,3,19,81.63,199.29 -15601337433,43944770836,2025-06-12T05:00:00Z,3,19,81.43,200.56 -15598277481,43937275861,2025-06-12T01:00:00Z,3,19,81.47,199.37 -15594453833,43926877649,2025-06-11T21:00:00Z,2,20,81.2,201.12 -15589818422,43912035344,2025-06-11T17:00:00Z,3,18,81.27,199.6 -15584268753,43893469529,2025-06-11T13:00:00Z,3,19,81.36,199.19 -15579346239,43876994524,2025-06-11T09:00:00Z,3,19,81.48,200.98 diff --git a/.ci/scripts/benchmark_tooling/private/mv3_qnn-q8_-s22-_android-13.csv b/.ci/scripts/benchmark_tooling/private/mv3_qnn-q8_-s22-_android-13.csv deleted file mode 100644 index dfddce4a136..00000000000 --- a/.ci/scripts/benchmark_tooling/private/mv3_qnn-q8_-s22-_android-13.csv +++ /dev/null @@ -1,12 +0,0 @@ -workflow_id,job_id,granularity_bucket,avg_inference_latency(ms),model_load_time(ms),ram_pss_usage(mb),trimmean_inference_latency(ms) -15615520755,43991248116,2025-06-12T17:00:00Z,1.01,170.05,46,1.01 -15609976846,43972978640,2025-06-12T13:00:00Z,1.01,153.75,46,1.01 -15605026631,43956669874,2025-06-12T09:00:00Z,1.02,171.24,46,1.01 -15601359910,43943792457,2025-06-12T05:00:00Z,1.02,153.27,49,1.01 -15598383765,43935960659,2025-06-12T01:00:00Z,1.22,171.28,48,1.22 -15594484786,43925468969,2025-06-11T21:00:00Z,1.02,166.8,46,1.01 -15589858447,43914218724,2025-06-11T18:00:00Z,1.02,167.79,47,1.01 -15584331831,43891253427,2025-06-11T13:00:00Z,1.01,158.58,46,1.01 -15579400247,43875126572,2025-06-11T09:00:00Z,1.01,164.24,47,1.01 -15575806493,43862405466,2025-06-11T05:00:00Z,1.01,166.56,47,1.01 -15572893795,43854545007,2025-06-11T01:00:00Z,1.01,176.1,46,1.01 diff --git a/.ci/scripts/benchmark_tooling/private/mv3_qnn-q8_-s22-private_android-13.csv b/.ci/scripts/benchmark_tooling/private/mv3_qnn-q8_-s22-private_android-13.csv deleted file mode 100644 index dfddce4a136..00000000000 --- a/.ci/scripts/benchmark_tooling/private/mv3_qnn-q8_-s22-private_android-13.csv +++ /dev/null @@ -1,12 +0,0 @@ -workflow_id,job_id,granularity_bucket,avg_inference_latency(ms),model_load_time(ms),ram_pss_usage(mb),trimmean_inference_latency(ms) -15615520755,43991248116,2025-06-12T17:00:00Z,1.01,170.05,46,1.01 -15609976846,43972978640,2025-06-12T13:00:00Z,1.01,153.75,46,1.01 -15605026631,43956669874,2025-06-12T09:00:00Z,1.02,171.24,46,1.01 -15601359910,43943792457,2025-06-12T05:00:00Z,1.02,153.27,49,1.01 -15598383765,43935960659,2025-06-12T01:00:00Z,1.22,171.28,48,1.22 -15594484786,43925468969,2025-06-11T21:00:00Z,1.02,166.8,46,1.01 -15589858447,43914218724,2025-06-11T18:00:00Z,1.02,167.79,47,1.01 -15584331831,43891253427,2025-06-11T13:00:00Z,1.01,158.58,46,1.01 -15579400247,43875126572,2025-06-11T09:00:00Z,1.01,164.24,47,1.01 -15575806493,43862405466,2025-06-11T05:00:00Z,1.01,166.56,47,1.01 -15572893795,43854545007,2025-06-11T01:00:00Z,1.01,176.1,46,1.01 diff --git a/.ci/scripts/benchmark_tooling/private/mv3_qnn-q8_-s22-ultra-_android-14.csv b/.ci/scripts/benchmark_tooling/private/mv3_qnn-q8_-s22-ultra-_android-14.csv deleted file mode 100644 index 33e0301e336..00000000000 --- a/.ci/scripts/benchmark_tooling/private/mv3_qnn-q8_-s22-ultra-_android-14.csv +++ /dev/null @@ -1,12 +0,0 @@ -workflow_id,job_id,granularity_bucket,avg_inference_latency(ms),model_load_time(ms),ram_pss_usage(mb),trimmean_inference_latency(ms) -15615520755,43991248116,2025-06-12T17:00:00Z,1.02,152.77,56,1.02 -15609976846,43972978640,2025-06-12T13:00:00Z,1.02,148.74,57,1.02 -15605026631,43956669874,2025-06-12T09:00:00Z,1.03,179.8,57,1.02 -15601359910,43943792457,2025-06-12T05:00:00Z,1.03,146.91,56,1.02 -15598383765,43935960659,2025-06-12T01:00:00Z,1.02,162.13,56,1.02 -15594484786,43925468969,2025-06-11T21:00:00Z,1.02,155.48,55,1.02 -15589858447,43914218724,2025-06-11T18:00:00Z,1.03,154.35,55,1.03 -15584331831,43891253427,2025-06-11T13:00:00Z,1.02,169.34,56,1.02 -15579400247,43875126572,2025-06-11T09:00:00Z,1.03,161.18,56,1.03 -15575806493,43862405466,2025-06-11T05:00:00Z,1.02,195.87,56,1.02 -15572893795,43854545007,2025-06-11T01:00:00Z,1.03,190.67,55,1.03 diff --git a/.ci/scripts/benchmark_tooling/private/mv3_qnn-q8_-s22-ultra-private_android-14.csv b/.ci/scripts/benchmark_tooling/private/mv3_qnn-q8_-s22-ultra-private_android-14.csv deleted file mode 100644 index 33e0301e336..00000000000 --- a/.ci/scripts/benchmark_tooling/private/mv3_qnn-q8_-s22-ultra-private_android-14.csv +++ /dev/null @@ -1,12 +0,0 @@ -workflow_id,job_id,granularity_bucket,avg_inference_latency(ms),model_load_time(ms),ram_pss_usage(mb),trimmean_inference_latency(ms) -15615520755,43991248116,2025-06-12T17:00:00Z,1.02,152.77,56,1.02 -15609976846,43972978640,2025-06-12T13:00:00Z,1.02,148.74,57,1.02 -15605026631,43956669874,2025-06-12T09:00:00Z,1.03,179.8,57,1.02 -15601359910,43943792457,2025-06-12T05:00:00Z,1.03,146.91,56,1.02 -15598383765,43935960659,2025-06-12T01:00:00Z,1.02,162.13,56,1.02 -15594484786,43925468969,2025-06-11T21:00:00Z,1.02,155.48,55,1.02 -15589858447,43914218724,2025-06-11T18:00:00Z,1.03,154.35,55,1.03 -15584331831,43891253427,2025-06-11T13:00:00Z,1.02,169.34,56,1.02 -15579400247,43875126572,2025-06-11T09:00:00Z,1.03,161.18,56,1.03 -15575806493,43862405466,2025-06-11T05:00:00Z,1.02,195.87,56,1.02 -15572893795,43854545007,2025-06-11T01:00:00Z,1.03,190.67,55,1.03 diff --git a/.ci/scripts/benchmark_tooling/private/mv3_xnnpack-q8_-s22-_android-13.csv b/.ci/scripts/benchmark_tooling/private/mv3_xnnpack-q8_-s22-_android-13.csv deleted file mode 100644 index b5c661d3a32..00000000000 --- a/.ci/scripts/benchmark_tooling/private/mv3_xnnpack-q8_-s22-_android-13.csv +++ /dev/null @@ -1,11 +0,0 @@ -workflow_id,job_id,granularity_bucket,avg_inference_latency(ms),model_load_time(ms),ram_pss_usage(mb),trimmean_inference_latency(ms) -15615520755,43991248116,2025-06-12T17:00:00Z,3.36,19.61,51,2.41 -15605026631,43956669874,2025-06-12T09:00:00Z,3.1,23.52,61,2.92 -15601359910,43943792457,2025-06-12T05:00:00Z,3.91,19.92,52,2.92 -15598383765,43935960659,2025-06-12T01:00:00Z,2.27,18.91,61,2.17 -15594484786,43925468969,2025-06-11T21:00:00Z,5.56,19.86,61,4.39 -15589858447,43914218724,2025-06-11T18:00:00Z,2.39,19.99,61,2.29 -15584331831,43891253427,2025-06-11T13:00:00Z,2.25,22.18,53,2.16 -15579400247,43875126572,2025-06-11T09:00:00Z,3.27,19.52,61,2.3 -15575806493,43862405466,2025-06-11T05:00:00Z,2.12,26.88,51,2.12 -15572893795,43854545007,2025-06-11T01:00:00Z,2.7,21.89,61,2.34 diff --git a/.ci/scripts/benchmark_tooling/private/mv3_xnnpack-q8_-s22-private_android-13.csv b/.ci/scripts/benchmark_tooling/private/mv3_xnnpack-q8_-s22-private_android-13.csv deleted file mode 100644 index b5c661d3a32..00000000000 --- a/.ci/scripts/benchmark_tooling/private/mv3_xnnpack-q8_-s22-private_android-13.csv +++ /dev/null @@ -1,11 +0,0 @@ -workflow_id,job_id,granularity_bucket,avg_inference_latency(ms),model_load_time(ms),ram_pss_usage(mb),trimmean_inference_latency(ms) -15615520755,43991248116,2025-06-12T17:00:00Z,3.36,19.61,51,2.41 -15605026631,43956669874,2025-06-12T09:00:00Z,3.1,23.52,61,2.92 -15601359910,43943792457,2025-06-12T05:00:00Z,3.91,19.92,52,2.92 -15598383765,43935960659,2025-06-12T01:00:00Z,2.27,18.91,61,2.17 -15594484786,43925468969,2025-06-11T21:00:00Z,5.56,19.86,61,4.39 -15589858447,43914218724,2025-06-11T18:00:00Z,2.39,19.99,61,2.29 -15584331831,43891253427,2025-06-11T13:00:00Z,2.25,22.18,53,2.16 -15579400247,43875126572,2025-06-11T09:00:00Z,3.27,19.52,61,2.3 -15575806493,43862405466,2025-06-11T05:00:00Z,2.12,26.88,51,2.12 -15572893795,43854545007,2025-06-11T01:00:00Z,2.7,21.89,61,2.34 diff --git a/.ci/scripts/benchmark_tooling/private/mv3_xnnpack-q8_-s22-ultra-_android-14.csv b/.ci/scripts/benchmark_tooling/private/mv3_xnnpack-q8_-s22-ultra-_android-14.csv deleted file mode 100644 index baa889eefdd..00000000000 --- a/.ci/scripts/benchmark_tooling/private/mv3_xnnpack-q8_-s22-ultra-_android-14.csv +++ /dev/null @@ -1,11 +0,0 @@ -workflow_id,job_id,granularity_bucket,avg_inference_latency(ms),model_load_time(ms),ram_pss_usage(mb),trimmean_inference_latency(ms) -15615520755,43991248116,2025-06-12T17:00:00Z,2.52,16.74,61,2.28 -15605026631,43956669874,2025-06-12T09:00:00Z,6.1,16.49,60,5.44 -15601359910,43943792457,2025-06-12T05:00:00Z,2.6,18.68,61,2.27 -15598383765,43935960659,2025-06-12T01:00:00Z,2.4,19.2,61,2.16 -15594484786,43925468969,2025-06-11T21:00:00Z,2.45,18.41,60,2.21 -15589858447,43914218724,2025-06-11T18:00:00Z,2.59,15.78,60,2.28 -15584331831,43891253427,2025-06-11T13:00:00Z,2.34,21.5,61,2.31 -15579400247,43875126572,2025-06-11T09:00:00Z,2.48,16.43,61,2.23 -15575806493,43862405466,2025-06-11T05:00:00Z,3.78,20.11,61,3.75 -15572893795,43854545007,2025-06-11T01:00:00Z,2.52,23.28,60,2.41 diff --git a/.ci/scripts/benchmark_tooling/private/mv3_xnnpack-q8_-s22-ultra-private_android-14.csv b/.ci/scripts/benchmark_tooling/private/mv3_xnnpack-q8_-s22-ultra-private_android-14.csv deleted file mode 100644 index baa889eefdd..00000000000 --- a/.ci/scripts/benchmark_tooling/private/mv3_xnnpack-q8_-s22-ultra-private_android-14.csv +++ /dev/null @@ -1,11 +0,0 @@ -workflow_id,job_id,granularity_bucket,avg_inference_latency(ms),model_load_time(ms),ram_pss_usage(mb),trimmean_inference_latency(ms) -15615520755,43991248116,2025-06-12T17:00:00Z,2.52,16.74,61,2.28 -15605026631,43956669874,2025-06-12T09:00:00Z,6.1,16.49,60,5.44 -15601359910,43943792457,2025-06-12T05:00:00Z,2.6,18.68,61,2.27 -15598383765,43935960659,2025-06-12T01:00:00Z,2.4,19.2,61,2.16 -15594484786,43925468969,2025-06-11T21:00:00Z,2.45,18.41,60,2.21 -15589858447,43914218724,2025-06-11T18:00:00Z,2.59,15.78,60,2.28 -15584331831,43891253427,2025-06-11T13:00:00Z,2.34,21.5,61,2.31 -15579400247,43875126572,2025-06-11T09:00:00Z,2.48,16.43,61,2.23 -15575806493,43862405466,2025-06-11T05:00:00Z,3.78,20.11,61,3.75 -15572893795,43854545007,2025-06-11T01:00:00Z,2.52,23.28,60,2.41 diff --git a/.ci/scripts/benchmark_tooling/private/mv3_xnnpack-q8_apple-iphone-15-_ios-18.0.csv b/.ci/scripts/benchmark_tooling/private/mv3_xnnpack-q8_apple-iphone-15-_ios-18.0.csv deleted file mode 100644 index 9d1b4cf5fe7..00000000000 --- a/.ci/scripts/benchmark_tooling/private/mv3_xnnpack-q8_apple-iphone-15-_ios-18.0.csv +++ /dev/null @@ -1,11 +0,0 @@ -workflow_id,job_id,granularity_bucket,avg_inference_latency(ms),model_load_time(ms),peak_inference_mem_usage(mb),peak_load_mem_usage(mb) -15615480751,43993124686,2025-06-12T17:00:00Z,45,2,27.21,79.02 -15604974289,43958007180,2025-06-12T09:00:00Z,41,2,27.15,79.34 -15601337433,43944770836,2025-06-12T05:00:00Z,50,2,26.89,78.89 -15598277481,43937275861,2025-06-12T01:00:00Z,44,2,27.16,79.4 -15594453833,43926877649,2025-06-11T21:00:00Z,47,2,27.2,79.18 -15589818422,43912035344,2025-06-11T17:00:00Z,43,2,27.08,79.26 -15584268753,43893469529,2025-06-11T13:00:00Z,45,2,27.04,78.96 -15579346239,43876994524,2025-06-11T09:00:00Z,44,2,27.15,79.34 -15575781424,43864061188,2025-06-11T05:00:00Z,45,2,27.18,79.05 -15572789992,43855812660,2025-06-11T01:00:00Z,45,2,27.15,77.44 diff --git a/.ci/scripts/benchmark_tooling/private/mv3_xnnpack-q8_apple-iphone-15-_ios.csv b/.ci/scripts/benchmark_tooling/private/mv3_xnnpack-q8_apple-iphone-15-_ios.csv deleted file mode 100644 index d6f458a8830..00000000000 --- a/.ci/scripts/benchmark_tooling/private/mv3_xnnpack-q8_apple-iphone-15-_ios.csv +++ /dev/null @@ -1,2 +0,0 @@ -workflow_id,job_id,granularity_bucket,FAILURE_REPORT -15609910174,43969026143,2025-06-12T12:00:00Z,0 diff --git a/.ci/scripts/benchmark_tooling/private/mv3_xnnpack-q8_apple-iphone-15-plus-_ios-17.4.1.csv b/.ci/scripts/benchmark_tooling/private/mv3_xnnpack-q8_apple-iphone-15-plus-_ios-17.4.1.csv deleted file mode 100644 index 8e34beefbca..00000000000 --- a/.ci/scripts/benchmark_tooling/private/mv3_xnnpack-q8_apple-iphone-15-plus-_ios-17.4.1.csv +++ /dev/null @@ -1,11 +0,0 @@ -workflow_id,job_id,granularity_bucket,avg_inference_latency(ms),model_load_time(ms),peak_inference_mem_usage(mb),peak_load_mem_usage(mb) -15615480751,43993124686,2025-06-12T17:00:00Z,42,2,29.55,90.4 -15604974289,43958007180,2025-06-12T09:00:00Z,37,2,29.55,90.4 -15601337433,43944770836,2025-06-12T05:00:00Z,39,2,29.45,90.31 -15598277481,43937275861,2025-06-12T01:00:00Z,37,2,29.55,90.38 -15594453833,43926877649,2025-06-11T21:00:00Z,51,2,29.47,90.1 -15589818422,43912035344,2025-06-11T17:00:00Z,42,2,29.44,90.25 -15584268753,43893469529,2025-06-11T13:00:00Z,37,2,29.47,90.3 -15579346239,43876994524,2025-06-11T09:00:00Z,40,2,29.55,90.38 -15575781424,43864061188,2025-06-11T05:00:00Z,38,2,29.45,90.35 -15572789992,43855812660,2025-06-11T01:00:00Z,43,2,29.54,89.2 diff --git a/.ci/scripts/benchmark_tooling/private/mv3_xnnpack-q8_apple-iphone-15-plus-private_ios-17.4.1.csv b/.ci/scripts/benchmark_tooling/private/mv3_xnnpack-q8_apple-iphone-15-plus-private_ios-17.4.1.csv deleted file mode 100644 index 8e34beefbca..00000000000 --- a/.ci/scripts/benchmark_tooling/private/mv3_xnnpack-q8_apple-iphone-15-plus-private_ios-17.4.1.csv +++ /dev/null @@ -1,11 +0,0 @@ -workflow_id,job_id,granularity_bucket,avg_inference_latency(ms),model_load_time(ms),peak_inference_mem_usage(mb),peak_load_mem_usage(mb) -15615480751,43993124686,2025-06-12T17:00:00Z,42,2,29.55,90.4 -15604974289,43958007180,2025-06-12T09:00:00Z,37,2,29.55,90.4 -15601337433,43944770836,2025-06-12T05:00:00Z,39,2,29.45,90.31 -15598277481,43937275861,2025-06-12T01:00:00Z,37,2,29.55,90.38 -15594453833,43926877649,2025-06-11T21:00:00Z,51,2,29.47,90.1 -15589818422,43912035344,2025-06-11T17:00:00Z,42,2,29.44,90.25 -15584268753,43893469529,2025-06-11T13:00:00Z,37,2,29.47,90.3 -15579346239,43876994524,2025-06-11T09:00:00Z,40,2,29.55,90.38 -15575781424,43864061188,2025-06-11T05:00:00Z,38,2,29.45,90.35 -15572789992,43855812660,2025-06-11T01:00:00Z,43,2,29.54,89.2 diff --git a/.ci/scripts/benchmark_tooling/private/mv3_xnnpack-q8_apple-iphone-15-private_ios-18.0.csv b/.ci/scripts/benchmark_tooling/private/mv3_xnnpack-q8_apple-iphone-15-private_ios-18.0.csv deleted file mode 100644 index 9d1b4cf5fe7..00000000000 --- a/.ci/scripts/benchmark_tooling/private/mv3_xnnpack-q8_apple-iphone-15-private_ios-18.0.csv +++ /dev/null @@ -1,11 +0,0 @@ -workflow_id,job_id,granularity_bucket,avg_inference_latency(ms),model_load_time(ms),peak_inference_mem_usage(mb),peak_load_mem_usage(mb) -15615480751,43993124686,2025-06-12T17:00:00Z,45,2,27.21,79.02 -15604974289,43958007180,2025-06-12T09:00:00Z,41,2,27.15,79.34 -15601337433,43944770836,2025-06-12T05:00:00Z,50,2,26.89,78.89 -15598277481,43937275861,2025-06-12T01:00:00Z,44,2,27.16,79.4 -15594453833,43926877649,2025-06-11T21:00:00Z,47,2,27.2,79.18 -15589818422,43912035344,2025-06-11T17:00:00Z,43,2,27.08,79.26 -15584268753,43893469529,2025-06-11T13:00:00Z,45,2,27.04,78.96 -15579346239,43876994524,2025-06-11T09:00:00Z,44,2,27.15,79.34 -15575781424,43864061188,2025-06-11T05:00:00Z,45,2,27.18,79.05 -15572789992,43855812660,2025-06-11T01:00:00Z,45,2,27.15,77.44 diff --git a/.ci/scripts/benchmark_tooling/private/mv3_xnnpack-q8_apple-iphone-15-private_ios.csv b/.ci/scripts/benchmark_tooling/private/mv3_xnnpack-q8_apple-iphone-15-private_ios.csv deleted file mode 100644 index d6f458a8830..00000000000 --- a/.ci/scripts/benchmark_tooling/private/mv3_xnnpack-q8_apple-iphone-15-private_ios.csv +++ /dev/null @@ -1,2 +0,0 @@ -workflow_id,job_id,granularity_bucket,FAILURE_REPORT -15609910174,43969026143,2025-06-12T12:00:00Z,0 diff --git a/.ci/scripts/benchmark_tooling/private/mv3_xnnpack-q8_apple-iphone-15-pro-_ios-18.4.1.csv b/.ci/scripts/benchmark_tooling/private/mv3_xnnpack-q8_apple-iphone-15-pro-_ios-18.4.1.csv deleted file mode 100644 index b37908f8c3b..00000000000 --- a/.ci/scripts/benchmark_tooling/private/mv3_xnnpack-q8_apple-iphone-15-pro-_ios-18.4.1.csv +++ /dev/null @@ -1,11 +0,0 @@ -workflow_id,job_id,granularity_bucket,avg_inference_latency(ms),model_load_time(ms),peak_inference_mem_usage(mb),peak_load_mem_usage(mb) -15615480751,43993124686,2025-06-12T17:00:00Z,25,1,29.98,107.2 -15604974289,43958007180,2025-06-12T09:00:00Z,8,1,29.93,107.72 -15601337433,43944770836,2025-06-12T05:00:00Z,23,1,30.09,107.34 -15598277481,43937275861,2025-06-12T01:00:00Z,14,1,30.43,107.97 -15594453833,43926877649,2025-06-11T21:00:00Z,8,1,30.17,107.55 -15589818422,43912035344,2025-06-11T17:00:00Z,13,1,30.31,107.68 -15584268753,43893469529,2025-06-11T13:00:00Z,22,1,30.36,107.97 -15579346239,43876994524,2025-06-11T09:00:00Z,21,1,30.43,108.09 -15575781424,43864061188,2025-06-11T05:00:00Z,15,1,30.24,107.79 -15572789992,43855812660,2025-06-11T01:00:00Z,13,1,30.25,106.33 diff --git a/.ci/scripts/benchmark_tooling/private/mv3_xnnpack-q8_apple-iphone-15-pro-private_ios-18.4.1.csv b/.ci/scripts/benchmark_tooling/private/mv3_xnnpack-q8_apple-iphone-15-pro-private_ios-18.4.1.csv deleted file mode 100644 index b37908f8c3b..00000000000 --- a/.ci/scripts/benchmark_tooling/private/mv3_xnnpack-q8_apple-iphone-15-pro-private_ios-18.4.1.csv +++ /dev/null @@ -1,11 +0,0 @@ -workflow_id,job_id,granularity_bucket,avg_inference_latency(ms),model_load_time(ms),peak_inference_mem_usage(mb),peak_load_mem_usage(mb) -15615480751,43993124686,2025-06-12T17:00:00Z,25,1,29.98,107.2 -15604974289,43958007180,2025-06-12T09:00:00Z,8,1,29.93,107.72 -15601337433,43944770836,2025-06-12T05:00:00Z,23,1,30.09,107.34 -15598277481,43937275861,2025-06-12T01:00:00Z,14,1,30.43,107.97 -15594453833,43926877649,2025-06-11T21:00:00Z,8,1,30.17,107.55 -15589818422,43912035344,2025-06-11T17:00:00Z,13,1,30.31,107.68 -15584268753,43893469529,2025-06-11T13:00:00Z,22,1,30.36,107.97 -15579346239,43876994524,2025-06-11T09:00:00Z,21,1,30.43,108.09 -15575781424,43864061188,2025-06-11T05:00:00Z,15,1,30.24,107.79 -15572789992,43855812660,2025-06-11T01:00:00Z,13,1,30.25,106.33 diff --git a/.ci/scripts/benchmark_tooling/private/qwen-qwen3-0.6b_et-xnnpack-custom-spda-kv-cache-8da4w_-s22-_android-13.csv b/.ci/scripts/benchmark_tooling/private/qwen-qwen3-0.6b_et-xnnpack-custom-spda-kv-cache-8da4w_-s22-_android-13.csv deleted file mode 100644 index b62e2c9ce95..00000000000 --- a/.ci/scripts/benchmark_tooling/private/qwen-qwen3-0.6b_et-xnnpack-custom-spda-kv-cache-8da4w_-s22-_android-13.csv +++ /dev/null @@ -1,37 +0,0 @@ -workflow_id,job_id,granularity_bucket,avg_inference_latency(ms),llm_model_load_time(ms),model_load_time(ms),ram_pss_usage(mb),token_per_sec,trimmean_inference_latency(ms) -15712320497,44280131792,2025-06-17T17:00:00Z,424.18,1106.1,1019.17,556,62.78,420.11 -15706687362,44261351450,2025-06-17T13:00:00Z,432.56,1091.62,1029.6,566,60.45,430.49 -15701619570,44244323755,2025-06-17T09:00:00Z,426.16,1083.16,1040.34,566,60.63,423.0 -15697890915,44230067957,2025-06-17T05:00:00Z,405.87,973.56,1033.36,567,62.84,401.11 -15694752722,44221381863,2025-06-17T01:00:00Z,443.47,1033.31,1052.8,556,60.31,440.17 -15690721346,44211034387,2025-06-16T21:00:00Z,444.68,1062.63,1041.13,567,59.44,440.8 -15685858387,44195500217,2025-06-16T17:00:00Z,440.76,1025.05,1044.59,566,59.96,436.26 -15680276053,44184994658,2025-06-16T15:00:00Z,436.9,1021.54,1026.61,557,59.07,433.73 -15675229427,44160356972,2025-06-16T09:00:00Z,434.6,1016.89,1021.87,567,61.44,431.37 -15671609250,44146779212,2025-06-16T05:00:00Z,405.6,1021.07,1002.53,556,65.26,402.01 -15668838280,44139310442,2025-06-16T01:00:00Z,444.77,1262.93,1049.53,566,59.52,443.0 -15666871209,44133842083,2025-06-15T21:00:00Z,443.26,1099.69,1035.37,556,58.79,440.74 -15664964842,44129416866,2025-06-15T17:00:00Z,436.4,1071.56,1021.15,566,61.72,432.76 -15662964566,44125237276,2025-06-15T13:00:00Z,432.66,1151.66,1029.37,567,61.02,428.85 -15661066119,44120683489,2025-06-15T09:00:00Z,427.56,1031.25,1032.15,567,60.75,423.42 -15659315239,44116350825,2025-06-15T05:00:00Z,406.02,1060.08,1021.95,555,64.14,402.41 -15655627252,44107937078,2025-06-14T21:00:00Z,444.99,1050.84,1025.27,556,60.72,441.4 -15653757002,44103768469,2025-06-14T17:00:00Z,435.36,1012.23,1018.41,557,60.42,432.0 -15651807296,44099312849,2025-06-14T13:00:00Z,433.48,1139.06,1042.15,556,60.13,430.86 -15650005042,44095041071,2025-06-14T09:00:00Z,434.8,1189.12,1012.44,556,58.6,430.86 -15648224665,44090821985,2025-06-14T05:00:00Z,431.53,1106.7,1037.41,556,61.78,427.24 -15646186941,44086333101,2025-06-14T01:00:00Z,431.86,1234.37,1048.55,556,60.84,429.29 -15642991544,44079110098,2025-06-13T21:00:00Z,428.69,1241.63,1011.23,556,62.15,425.25 -15638881659,44066590049,2025-06-13T17:00:00Z,436.04,1137.45,1048.56,556,60.37,431.52 -15634084872,44050929738,2025-06-13T13:00:00Z,428.68,930.81,1050.98,566,62.37,423.59 -15629618177,44036960905,2025-06-13T09:00:00Z,429.59,1123.06,1023.08,565,64.18,426.0 -15626198493,44024980719,2025-06-13T06:00:00Z,439.5,1191.91,1032.91,557,62.18,437.57 -15624350649,44017079362,2025-06-13T02:00:00Z,436.82,1123.5,1032.53,566,61.23,432.96 -15623548623,44015026219,2025-06-13T01:00:00Z,446.37,1225.8,1052.72,556,59.84,442.78 -15623358659,44014378003,2025-06-13T00:00:00Z,436.73,1086.13,1032.7,566,61.96,432.89 -15622176667,44010845845,2025-06-12T23:00:00Z,452.1,1275.19,1017.63,557,60.63,448.99 -15620193040,44007989435,2025-06-12T22:00:00Z,445.37,1123.02,1029.6,555,60.01,442.52 -15620031250,44009155339,2025-06-12T22:00:00Z,444.61,1128.42,1018.1,556,60.1,441.04 -15595747513,43928023304,2025-06-11T22:00:00Z,447.16,1021.31,1041.52,556,60.48,445.73 -15591303597,43914918634,2025-06-11T18:00:00Z,489.21,,1032.78,588,,489.46 -15574097144,43857046295,2025-06-11T02:00:00Z,484.4,,1026.46,578,,484.27 diff --git a/.ci/scripts/benchmark_tooling/private/qwen-qwen3-0.6b_et-xnnpack-custom-spda-kv-cache-8da4w_-s22-private_android-13.csv b/.ci/scripts/benchmark_tooling/private/qwen-qwen3-0.6b_et-xnnpack-custom-spda-kv-cache-8da4w_-s22-private_android-13.csv deleted file mode 100644 index b62e2c9ce95..00000000000 --- a/.ci/scripts/benchmark_tooling/private/qwen-qwen3-0.6b_et-xnnpack-custom-spda-kv-cache-8da4w_-s22-private_android-13.csv +++ /dev/null @@ -1,37 +0,0 @@ -workflow_id,job_id,granularity_bucket,avg_inference_latency(ms),llm_model_load_time(ms),model_load_time(ms),ram_pss_usage(mb),token_per_sec,trimmean_inference_latency(ms) -15712320497,44280131792,2025-06-17T17:00:00Z,424.18,1106.1,1019.17,556,62.78,420.11 -15706687362,44261351450,2025-06-17T13:00:00Z,432.56,1091.62,1029.6,566,60.45,430.49 -15701619570,44244323755,2025-06-17T09:00:00Z,426.16,1083.16,1040.34,566,60.63,423.0 -15697890915,44230067957,2025-06-17T05:00:00Z,405.87,973.56,1033.36,567,62.84,401.11 -15694752722,44221381863,2025-06-17T01:00:00Z,443.47,1033.31,1052.8,556,60.31,440.17 -15690721346,44211034387,2025-06-16T21:00:00Z,444.68,1062.63,1041.13,567,59.44,440.8 -15685858387,44195500217,2025-06-16T17:00:00Z,440.76,1025.05,1044.59,566,59.96,436.26 -15680276053,44184994658,2025-06-16T15:00:00Z,436.9,1021.54,1026.61,557,59.07,433.73 -15675229427,44160356972,2025-06-16T09:00:00Z,434.6,1016.89,1021.87,567,61.44,431.37 -15671609250,44146779212,2025-06-16T05:00:00Z,405.6,1021.07,1002.53,556,65.26,402.01 -15668838280,44139310442,2025-06-16T01:00:00Z,444.77,1262.93,1049.53,566,59.52,443.0 -15666871209,44133842083,2025-06-15T21:00:00Z,443.26,1099.69,1035.37,556,58.79,440.74 -15664964842,44129416866,2025-06-15T17:00:00Z,436.4,1071.56,1021.15,566,61.72,432.76 -15662964566,44125237276,2025-06-15T13:00:00Z,432.66,1151.66,1029.37,567,61.02,428.85 -15661066119,44120683489,2025-06-15T09:00:00Z,427.56,1031.25,1032.15,567,60.75,423.42 -15659315239,44116350825,2025-06-15T05:00:00Z,406.02,1060.08,1021.95,555,64.14,402.41 -15655627252,44107937078,2025-06-14T21:00:00Z,444.99,1050.84,1025.27,556,60.72,441.4 -15653757002,44103768469,2025-06-14T17:00:00Z,435.36,1012.23,1018.41,557,60.42,432.0 -15651807296,44099312849,2025-06-14T13:00:00Z,433.48,1139.06,1042.15,556,60.13,430.86 -15650005042,44095041071,2025-06-14T09:00:00Z,434.8,1189.12,1012.44,556,58.6,430.86 -15648224665,44090821985,2025-06-14T05:00:00Z,431.53,1106.7,1037.41,556,61.78,427.24 -15646186941,44086333101,2025-06-14T01:00:00Z,431.86,1234.37,1048.55,556,60.84,429.29 -15642991544,44079110098,2025-06-13T21:00:00Z,428.69,1241.63,1011.23,556,62.15,425.25 -15638881659,44066590049,2025-06-13T17:00:00Z,436.04,1137.45,1048.56,556,60.37,431.52 -15634084872,44050929738,2025-06-13T13:00:00Z,428.68,930.81,1050.98,566,62.37,423.59 -15629618177,44036960905,2025-06-13T09:00:00Z,429.59,1123.06,1023.08,565,64.18,426.0 -15626198493,44024980719,2025-06-13T06:00:00Z,439.5,1191.91,1032.91,557,62.18,437.57 -15624350649,44017079362,2025-06-13T02:00:00Z,436.82,1123.5,1032.53,566,61.23,432.96 -15623548623,44015026219,2025-06-13T01:00:00Z,446.37,1225.8,1052.72,556,59.84,442.78 -15623358659,44014378003,2025-06-13T00:00:00Z,436.73,1086.13,1032.7,566,61.96,432.89 -15622176667,44010845845,2025-06-12T23:00:00Z,452.1,1275.19,1017.63,557,60.63,448.99 -15620193040,44007989435,2025-06-12T22:00:00Z,445.37,1123.02,1029.6,555,60.01,442.52 -15620031250,44009155339,2025-06-12T22:00:00Z,444.61,1128.42,1018.1,556,60.1,441.04 -15595747513,43928023304,2025-06-11T22:00:00Z,447.16,1021.31,1041.52,556,60.48,445.73 -15591303597,43914918634,2025-06-11T18:00:00Z,489.21,,1032.78,588,,489.46 -15574097144,43857046295,2025-06-11T02:00:00Z,484.4,,1026.46,578,,484.27 diff --git a/.ci/scripts/benchmark_tooling/private/qwen-qwen3-0.6b_et-xnnpack-custom-spda-kv-cache-8da4w_-s22-ultra-_android-14.csv b/.ci/scripts/benchmark_tooling/private/qwen-qwen3-0.6b_et-xnnpack-custom-spda-kv-cache-8da4w_-s22-ultra-_android-14.csv deleted file mode 100644 index c671bc949d2..00000000000 --- a/.ci/scripts/benchmark_tooling/private/qwen-qwen3-0.6b_et-xnnpack-custom-spda-kv-cache-8da4w_-s22-ultra-_android-14.csv +++ /dev/null @@ -1,37 +0,0 @@ -workflow_id,job_id,granularity_bucket,avg_inference_latency(ms),llm_model_load_time(ms),model_load_time(ms),ram_pss_usage(mb),token_per_sec,trimmean_inference_latency(ms) -15712320497,44280131792,2025-06-17T17:00:00Z,402.66,846.04,880.93,569,65.22,399.09 -15706687362,44261351450,2025-06-17T13:00:00Z,425.53,855.96,889.49,569,63.29,422.01 -15701619570,44244323755,2025-06-17T09:00:00Z,424.07,878.05,893.41,569,62.21,421.67 -15697890915,44230067957,2025-06-17T05:00:00Z,401.72,846.53,889.05,569,63.78,398.16 -15694752722,44221381863,2025-06-17T01:00:00Z,433.93,1051.35,888.9,569,62.68,430.17 -15690721346,44211034387,2025-06-16T21:00:00Z,440.09,1056.97,894.33,571,62.4,436.46 -15685858387,44195500217,2025-06-16T17:00:00Z,429.14,859.05,895.55,569,63.65,426.95 -15680276053,44184994658,2025-06-16T15:00:00Z,415.5,855.93,896.78,569,64.08,409.64 -15675229427,44160356972,2025-06-16T09:00:00Z,425.54,848.51,889.57,569,64.14,422.27 -15671609250,44146779212,2025-06-16T05:00:00Z,400.66,849.51,938.17,569,65.53,397.58 -15668838280,44139310442,2025-06-16T01:00:00Z,439.6,1055.4,896.27,570,63.26,436.65 -15666871209,44133842083,2025-06-15T21:00:00Z,425.6,850.28,905.08,569,63.29,422.85 -15664964842,44129416866,2025-06-15T17:00:00Z,428.7,858.85,910.19,569,62.91,426.8 -15662964566,44125237276,2025-06-15T13:00:00Z,428.98,852.34,893.77,571,64.04,426.64 -15661066119,44120683489,2025-06-15T09:00:00Z,438.3,851.79,897.77,569,63.81,423.78 -15659315239,44116350825,2025-06-15T05:00:00Z,410.86,838.74,893.59,569,64.58,408.04 -15655627252,44107937078,2025-06-14T21:00:00Z,425.83,851.13,880.53,569,63.62,422.03 -15653757002,44103768469,2025-06-14T17:00:00Z,423.34,853.97,899.31,569,63.85,420.48 -15651807296,44099312849,2025-06-14T13:00:00Z,426.41,847.38,893.07,569,62.94,424.73 -15650005042,44095041071,2025-06-14T09:00:00Z,427.89,843.53,913.65,569,63.91,425.7 -15648224665,44090821985,2025-06-14T05:00:00Z,431.14,853.88,902.01,569,63.88,429.14 -15646186941,44086333101,2025-06-14T01:00:00Z,426.83,849.88,901.2,569,65.43,423.29 -15642991544,44079110098,2025-06-13T21:00:00Z,419.93,851.84,895.98,569,62.78,417.04 -15638881659,44066590049,2025-06-13T17:00:00Z,450.92,856.42,890.45,569,63.26,432.67 -15634084872,44050929738,2025-06-13T13:00:00Z,422.37,850.76,907.73,569,63.85,420.13 -15629618177,44036960905,2025-06-13T09:00:00Z,427.81,857.19,892.55,569,63.42,425.98 -15626198493,44024980719,2025-06-13T06:00:00Z,430.84,861.45,885.06,571,63.04,427.5 -15624350649,44017079362,2025-06-13T02:00:00Z,431.62,849.69,914.89,571,63.2,428.67 -15623548623,44015026219,2025-06-13T01:00:00Z,434.73,861.68,912.8,571,62.34,431.88 -15623358659,44014378003,2025-06-13T00:00:00Z,421.42,858.64,890.23,569,65.22,415.05 -15622176667,44010845845,2025-06-12T23:00:00Z,432.49,868.44,890.38,569,62.03,428.62 -15620193040,44007989435,2025-06-12T22:00:00Z,431.51,855.29,892.58,569,61.63,429.16 -15620031250,44009155339,2025-06-12T22:00:00Z,439.35,867.7,889.26,569,61.63,435.94 -15595747513,43928023304,2025-06-11T22:00:00Z,434.85,859.05,896.41,570,62.53,431.84 -15591303597,43914918634,2025-06-11T18:00:00Z,480.42,,900.39,592,,478.72 -15574097144,43857046295,2025-06-11T02:00:00Z,487.85,,900.58,591,,484.94 diff --git a/.ci/scripts/benchmark_tooling/private/qwen-qwen3-0.6b_et-xnnpack-custom-spda-kv-cache-8da4w_-s22-ultra-private_android-14.csv b/.ci/scripts/benchmark_tooling/private/qwen-qwen3-0.6b_et-xnnpack-custom-spda-kv-cache-8da4w_-s22-ultra-private_android-14.csv deleted file mode 100644 index c671bc949d2..00000000000 --- a/.ci/scripts/benchmark_tooling/private/qwen-qwen3-0.6b_et-xnnpack-custom-spda-kv-cache-8da4w_-s22-ultra-private_android-14.csv +++ /dev/null @@ -1,37 +0,0 @@ -workflow_id,job_id,granularity_bucket,avg_inference_latency(ms),llm_model_load_time(ms),model_load_time(ms),ram_pss_usage(mb),token_per_sec,trimmean_inference_latency(ms) -15712320497,44280131792,2025-06-17T17:00:00Z,402.66,846.04,880.93,569,65.22,399.09 -15706687362,44261351450,2025-06-17T13:00:00Z,425.53,855.96,889.49,569,63.29,422.01 -15701619570,44244323755,2025-06-17T09:00:00Z,424.07,878.05,893.41,569,62.21,421.67 -15697890915,44230067957,2025-06-17T05:00:00Z,401.72,846.53,889.05,569,63.78,398.16 -15694752722,44221381863,2025-06-17T01:00:00Z,433.93,1051.35,888.9,569,62.68,430.17 -15690721346,44211034387,2025-06-16T21:00:00Z,440.09,1056.97,894.33,571,62.4,436.46 -15685858387,44195500217,2025-06-16T17:00:00Z,429.14,859.05,895.55,569,63.65,426.95 -15680276053,44184994658,2025-06-16T15:00:00Z,415.5,855.93,896.78,569,64.08,409.64 -15675229427,44160356972,2025-06-16T09:00:00Z,425.54,848.51,889.57,569,64.14,422.27 -15671609250,44146779212,2025-06-16T05:00:00Z,400.66,849.51,938.17,569,65.53,397.58 -15668838280,44139310442,2025-06-16T01:00:00Z,439.6,1055.4,896.27,570,63.26,436.65 -15666871209,44133842083,2025-06-15T21:00:00Z,425.6,850.28,905.08,569,63.29,422.85 -15664964842,44129416866,2025-06-15T17:00:00Z,428.7,858.85,910.19,569,62.91,426.8 -15662964566,44125237276,2025-06-15T13:00:00Z,428.98,852.34,893.77,571,64.04,426.64 -15661066119,44120683489,2025-06-15T09:00:00Z,438.3,851.79,897.77,569,63.81,423.78 -15659315239,44116350825,2025-06-15T05:00:00Z,410.86,838.74,893.59,569,64.58,408.04 -15655627252,44107937078,2025-06-14T21:00:00Z,425.83,851.13,880.53,569,63.62,422.03 -15653757002,44103768469,2025-06-14T17:00:00Z,423.34,853.97,899.31,569,63.85,420.48 -15651807296,44099312849,2025-06-14T13:00:00Z,426.41,847.38,893.07,569,62.94,424.73 -15650005042,44095041071,2025-06-14T09:00:00Z,427.89,843.53,913.65,569,63.91,425.7 -15648224665,44090821985,2025-06-14T05:00:00Z,431.14,853.88,902.01,569,63.88,429.14 -15646186941,44086333101,2025-06-14T01:00:00Z,426.83,849.88,901.2,569,65.43,423.29 -15642991544,44079110098,2025-06-13T21:00:00Z,419.93,851.84,895.98,569,62.78,417.04 -15638881659,44066590049,2025-06-13T17:00:00Z,450.92,856.42,890.45,569,63.26,432.67 -15634084872,44050929738,2025-06-13T13:00:00Z,422.37,850.76,907.73,569,63.85,420.13 -15629618177,44036960905,2025-06-13T09:00:00Z,427.81,857.19,892.55,569,63.42,425.98 -15626198493,44024980719,2025-06-13T06:00:00Z,430.84,861.45,885.06,571,63.04,427.5 -15624350649,44017079362,2025-06-13T02:00:00Z,431.62,849.69,914.89,571,63.2,428.67 -15623548623,44015026219,2025-06-13T01:00:00Z,434.73,861.68,912.8,571,62.34,431.88 -15623358659,44014378003,2025-06-13T00:00:00Z,421.42,858.64,890.23,569,65.22,415.05 -15622176667,44010845845,2025-06-12T23:00:00Z,432.49,868.44,890.38,569,62.03,428.62 -15620193040,44007989435,2025-06-12T22:00:00Z,431.51,855.29,892.58,569,61.63,429.16 -15620031250,44009155339,2025-06-12T22:00:00Z,439.35,867.7,889.26,569,61.63,435.94 -15595747513,43928023304,2025-06-11T22:00:00Z,434.85,859.05,896.41,570,62.53,431.84 -15591303597,43914918634,2025-06-11T18:00:00Z,480.42,,900.39,592,,478.72 -15574097144,43857046295,2025-06-11T02:00:00Z,487.85,,900.58,591,,484.94 diff --git a/.ci/scripts/benchmark_tooling/private/qwen-qwen3-0.6b_et-xnnpack-custom-spda-kv-cache-8da4w_apple-iphone-15-_ios-18.0.csv b/.ci/scripts/benchmark_tooling/private/qwen-qwen3-0.6b_et-xnnpack-custom-spda-kv-cache-8da4w_apple-iphone-15-_ios-18.0.csv deleted file mode 100644 index 765864ba145..00000000000 --- a/.ci/scripts/benchmark_tooling/private/qwen-qwen3-0.6b_et-xnnpack-custom-spda-kv-cache-8da4w_apple-iphone-15-_ios-18.0.csv +++ /dev/null @@ -1,36 +0,0 @@ -workflow_id,job_id,granularity_bucket,avg_inference_latency(ms),model_load_time(ms),peak_inference_mem_usage(mb),peak_load_mem_usage(mb),token_per_sec -15712278899,44280789008,2025-06-17T17:00:00Z,556,749,476.45,400.18,7.54 -15706619480,44262431638,2025-06-17T13:00:00Z,502,697,482.63,400.18,7.44 -15701565915,44245403612,2025-06-17T09:00:00Z,532,717,476.35,400.01,7.51 -15697865923,44230646970,2025-06-17T05:00:00Z,484,687,475.3,399.48,8.15 -15694639442,44221536444,2025-06-17T01:00:00Z,555,771,476.61,400.31,7.31 -15690685696,44211619421,2025-06-16T21:00:00Z,561,793,476.36,400.15,7.11 -15685808660,44196632637,2025-06-16T17:00:00Z,553,738,476.23,400.18,7.53 -15680206509,44178256230,2025-06-16T13:00:00Z,521,707,476.33,400.1,7.34 -15675176293,44162005966,2025-06-16T10:00:00Z,487,673,475.21,399.49,8.08 -15671584185,44147537983,2025-06-16T06:00:00Z,539,721,476.52,400.25,7.65 -15668756024,44140855631,2025-06-16T02:00:00Z,550,765,476.35,400.1,7.3 -15666856809,44134617851,2025-06-15T22:00:00Z,552,744,476.24,399.98,7.77 -15664949756,44129710892,2025-06-15T17:00:00Z,522,714,476.44,400.19,7.51 -15662940074,44126695148,2025-06-15T15:00:00Z,534,700,476.49,400.34,7.59 -15661046591,44121071601,2025-06-15T10:00:00Z,513,697,476.42,400.02,7.84 -15659301910,44117138781,2025-06-15T06:00:00Z,521,708,475.37,399.42,7.31 -15657354121,44112759100,2025-06-15T02:00:00Z,544,771,476.39,400.3,7.62 -15655612867,44108084740,2025-06-14T21:00:00Z,547,740,476.3,400.25,7.57 -15653742079,44104013228,2025-06-14T17:00:00Z,499,705,476.39,400.25,7.7 -15651786133,44100160145,2025-06-14T14:00:00Z,490,671,475.25,399.48,8.0 -15649987292,44095314814,2025-06-14T09:00:00Z,539,702,476.47,400.27,7.58 -15646107434,44086831907,2025-06-14T02:00:00Z,542,716,476.08,399.84,7.6 -15642962044,44079703037,2025-06-13T21:00:00Z,518,711,475.21,399.31,8.04 -15638842903,44067697635,2025-06-13T17:00:00Z,548,727,476.3,442.64,7.48 -15634027967,44053427212,2025-06-13T14:00:00Z,509,703,477.36,442.85,7.97 -15629571833,44037516912,2025-06-13T09:00:00Z,506,702,476.48,442.56,7.77 -15626172835,44025076952,2025-06-13T06:00:00Z,516,707,475.62,442.1,7.45 -15624350656,44017427531,2025-06-13T02:00:00Z,525,726,475.33,441.75,7.92 -15623548592,44015550286,2025-06-13T01:00:00Z,531,747,476.36,442.7,7.76 -15623257317,44014658492,2025-06-13T01:00:00Z,555,769,475.6,443.4,7.4 -15622176685,44012291031,2025-06-12T23:00:00Z,562,760,475.84,442.51,7.66 -15620031253,44010493569,2025-06-12T23:00:00Z,572,799,476.56,442.82,7.56 -15620193033,44009980865,2025-06-12T22:00:00Z,556,780,476.59,442.4,7.13 -15619707256,44004376808,2025-06-12T20:00:00Z,514,716,475.28,442.5,8.01 -15595747531,43929783821,2025-06-11T22:00:00Z,559,732,476.36,443.24,7.92 diff --git a/.ci/scripts/benchmark_tooling/private/qwen-qwen3-0.6b_et-xnnpack-custom-spda-kv-cache-8da4w_apple-iphone-15-plus-_ios-17.4.1.csv b/.ci/scripts/benchmark_tooling/private/qwen-qwen3-0.6b_et-xnnpack-custom-spda-kv-cache-8da4w_apple-iphone-15-plus-_ios-17.4.1.csv deleted file mode 100644 index 185e780aae8..00000000000 --- a/.ci/scripts/benchmark_tooling/private/qwen-qwen3-0.6b_et-xnnpack-custom-spda-kv-cache-8da4w_apple-iphone-15-plus-_ios-17.4.1.csv +++ /dev/null @@ -1,35 +0,0 @@ -workflow_id,job_id,granularity_bucket,avg_inference_latency(ms),model_load_time(ms),peak_inference_mem_usage(mb),peak_load_mem_usage(mb),token_per_sec -15712278899,44280789008,2025-06-17T17:00:00Z,569,744,571.26,671.99,6.46 -15706619480,44262431638,2025-06-17T13:00:00Z,572,727,571.38,672.8,6.79 -15701565915,44245403612,2025-06-17T09:00:00Z,555,730,571.44,671.65,6.95 -15697865923,44230646970,2025-06-17T05:00:00Z,566,696,571.47,672.11,7.06 -15694639442,44221536444,2025-06-17T01:00:00Z,635,785,571.32,671.89,6.1 -15690685696,44211619421,2025-06-16T21:00:00Z,588,797,571.41,672.71,6.15 -15685808660,44196632637,2025-06-16T17:00:00Z,612,760,571.31,672.26,6.49 -15680206509,44178256230,2025-06-16T13:00:00Z,550,734,571.33,672.78,6.67 -15675176293,44162005966,2025-06-16T10:00:00Z,528,692,571.59,673.13,6.81 -15671584185,44147537983,2025-06-16T06:00:00Z,541,716,571.43,672.13,6.63 -15666856809,44134617851,2025-06-15T22:00:00Z,583,771,571.42,672.14,6.46 -15664949756,44129710892,2025-06-15T17:00:00Z,558,729,571.49,671.67,6.6 -15662940074,44126695148,2025-06-15T15:00:00Z,564,738,571.44,672.8,6.68 -15661046591,44121071601,2025-06-15T10:00:00Z,563,729,571.51,672.87,6.62 -15659301910,44117138781,2025-06-15T06:00:00Z,562,742,571.51,671.95,6.58 -15657354121,44112759100,2025-06-15T02:00:00Z,572,768,571.44,672.14,6.32 -15655612867,44108084740,2025-06-14T21:00:00Z,564,733,571.44,672.21,6.38 -15653742079,44104013228,2025-06-14T17:00:00Z,559,729,571.35,671.94,6.57 -15651786133,44100160145,2025-06-14T14:00:00Z,529,706,571.39,672.52,6.88 -15649987292,44095314814,2025-06-14T09:00:00Z,560,741,571.34,672.96,6.46 -15646107434,44086831907,2025-06-14T02:00:00Z,561,739,571.53,673.16,6.77 -15642962044,44079703037,2025-06-13T21:00:00Z,575,723,571.47,672.61,6.2 -15638842903,44067697635,2025-06-13T17:00:00Z,550,726,571.21,722.44,6.62 -15634027967,44053427212,2025-06-13T14:00:00Z,563,739,571.41,720.17,6.68 -15629571833,44037516912,2025-06-13T09:00:00Z,554,739,571.42,720.89,6.58 -15626172835,44025076952,2025-06-13T06:00:00Z,561,728,571.36,720.23,6.64 -15624350656,44017427531,2025-06-13T02:00:00Z,546,726,571.23,720.03,6.76 -15623548592,44015550286,2025-06-13T01:00:00Z,553,743,571.4,721.85,6.84 -15623257317,44014658492,2025-06-13T01:00:00Z,587,768,571.41,719.57,6.39 -15622176685,44012291031,2025-06-12T23:00:00Z,586,744,571.36,719.54,6.43 -15620031253,44010493569,2025-06-12T23:00:00Z,603,788,571.36,720.41,5.82 -15620193033,44009980865,2025-06-12T22:00:00Z,590,786,571.39,722.6,6.47 -15619707256,44004376808,2025-06-12T20:00:00Z,564,739,571.6,719.65,6.82 -15595747531,43929783821,2025-06-11T22:00:00Z,553,754,571.4,720.99,6.77 diff --git a/.ci/scripts/benchmark_tooling/private/qwen-qwen3-0.6b_et-xnnpack-custom-spda-kv-cache-8da4w_apple-iphone-15-plus-private_ios-17.4.1.csv b/.ci/scripts/benchmark_tooling/private/qwen-qwen3-0.6b_et-xnnpack-custom-spda-kv-cache-8da4w_apple-iphone-15-plus-private_ios-17.4.1.csv deleted file mode 100644 index 185e780aae8..00000000000 --- a/.ci/scripts/benchmark_tooling/private/qwen-qwen3-0.6b_et-xnnpack-custom-spda-kv-cache-8da4w_apple-iphone-15-plus-private_ios-17.4.1.csv +++ /dev/null @@ -1,35 +0,0 @@ -workflow_id,job_id,granularity_bucket,avg_inference_latency(ms),model_load_time(ms),peak_inference_mem_usage(mb),peak_load_mem_usage(mb),token_per_sec -15712278899,44280789008,2025-06-17T17:00:00Z,569,744,571.26,671.99,6.46 -15706619480,44262431638,2025-06-17T13:00:00Z,572,727,571.38,672.8,6.79 -15701565915,44245403612,2025-06-17T09:00:00Z,555,730,571.44,671.65,6.95 -15697865923,44230646970,2025-06-17T05:00:00Z,566,696,571.47,672.11,7.06 -15694639442,44221536444,2025-06-17T01:00:00Z,635,785,571.32,671.89,6.1 -15690685696,44211619421,2025-06-16T21:00:00Z,588,797,571.41,672.71,6.15 -15685808660,44196632637,2025-06-16T17:00:00Z,612,760,571.31,672.26,6.49 -15680206509,44178256230,2025-06-16T13:00:00Z,550,734,571.33,672.78,6.67 -15675176293,44162005966,2025-06-16T10:00:00Z,528,692,571.59,673.13,6.81 -15671584185,44147537983,2025-06-16T06:00:00Z,541,716,571.43,672.13,6.63 -15666856809,44134617851,2025-06-15T22:00:00Z,583,771,571.42,672.14,6.46 -15664949756,44129710892,2025-06-15T17:00:00Z,558,729,571.49,671.67,6.6 -15662940074,44126695148,2025-06-15T15:00:00Z,564,738,571.44,672.8,6.68 -15661046591,44121071601,2025-06-15T10:00:00Z,563,729,571.51,672.87,6.62 -15659301910,44117138781,2025-06-15T06:00:00Z,562,742,571.51,671.95,6.58 -15657354121,44112759100,2025-06-15T02:00:00Z,572,768,571.44,672.14,6.32 -15655612867,44108084740,2025-06-14T21:00:00Z,564,733,571.44,672.21,6.38 -15653742079,44104013228,2025-06-14T17:00:00Z,559,729,571.35,671.94,6.57 -15651786133,44100160145,2025-06-14T14:00:00Z,529,706,571.39,672.52,6.88 -15649987292,44095314814,2025-06-14T09:00:00Z,560,741,571.34,672.96,6.46 -15646107434,44086831907,2025-06-14T02:00:00Z,561,739,571.53,673.16,6.77 -15642962044,44079703037,2025-06-13T21:00:00Z,575,723,571.47,672.61,6.2 -15638842903,44067697635,2025-06-13T17:00:00Z,550,726,571.21,722.44,6.62 -15634027967,44053427212,2025-06-13T14:00:00Z,563,739,571.41,720.17,6.68 -15629571833,44037516912,2025-06-13T09:00:00Z,554,739,571.42,720.89,6.58 -15626172835,44025076952,2025-06-13T06:00:00Z,561,728,571.36,720.23,6.64 -15624350656,44017427531,2025-06-13T02:00:00Z,546,726,571.23,720.03,6.76 -15623548592,44015550286,2025-06-13T01:00:00Z,553,743,571.4,721.85,6.84 -15623257317,44014658492,2025-06-13T01:00:00Z,587,768,571.41,719.57,6.39 -15622176685,44012291031,2025-06-12T23:00:00Z,586,744,571.36,719.54,6.43 -15620031253,44010493569,2025-06-12T23:00:00Z,603,788,571.36,720.41,5.82 -15620193033,44009980865,2025-06-12T22:00:00Z,590,786,571.39,722.6,6.47 -15619707256,44004376808,2025-06-12T20:00:00Z,564,739,571.6,719.65,6.82 -15595747531,43929783821,2025-06-11T22:00:00Z,553,754,571.4,720.99,6.77 diff --git a/.ci/scripts/benchmark_tooling/private/qwen-qwen3-0.6b_et-xnnpack-custom-spda-kv-cache-8da4w_apple-iphone-15-private_ios-18.0.csv b/.ci/scripts/benchmark_tooling/private/qwen-qwen3-0.6b_et-xnnpack-custom-spda-kv-cache-8da4w_apple-iphone-15-private_ios-18.0.csv deleted file mode 100644 index 765864ba145..00000000000 --- a/.ci/scripts/benchmark_tooling/private/qwen-qwen3-0.6b_et-xnnpack-custom-spda-kv-cache-8da4w_apple-iphone-15-private_ios-18.0.csv +++ /dev/null @@ -1,36 +0,0 @@ -workflow_id,job_id,granularity_bucket,avg_inference_latency(ms),model_load_time(ms),peak_inference_mem_usage(mb),peak_load_mem_usage(mb),token_per_sec -15712278899,44280789008,2025-06-17T17:00:00Z,556,749,476.45,400.18,7.54 -15706619480,44262431638,2025-06-17T13:00:00Z,502,697,482.63,400.18,7.44 -15701565915,44245403612,2025-06-17T09:00:00Z,532,717,476.35,400.01,7.51 -15697865923,44230646970,2025-06-17T05:00:00Z,484,687,475.3,399.48,8.15 -15694639442,44221536444,2025-06-17T01:00:00Z,555,771,476.61,400.31,7.31 -15690685696,44211619421,2025-06-16T21:00:00Z,561,793,476.36,400.15,7.11 -15685808660,44196632637,2025-06-16T17:00:00Z,553,738,476.23,400.18,7.53 -15680206509,44178256230,2025-06-16T13:00:00Z,521,707,476.33,400.1,7.34 -15675176293,44162005966,2025-06-16T10:00:00Z,487,673,475.21,399.49,8.08 -15671584185,44147537983,2025-06-16T06:00:00Z,539,721,476.52,400.25,7.65 -15668756024,44140855631,2025-06-16T02:00:00Z,550,765,476.35,400.1,7.3 -15666856809,44134617851,2025-06-15T22:00:00Z,552,744,476.24,399.98,7.77 -15664949756,44129710892,2025-06-15T17:00:00Z,522,714,476.44,400.19,7.51 -15662940074,44126695148,2025-06-15T15:00:00Z,534,700,476.49,400.34,7.59 -15661046591,44121071601,2025-06-15T10:00:00Z,513,697,476.42,400.02,7.84 -15659301910,44117138781,2025-06-15T06:00:00Z,521,708,475.37,399.42,7.31 -15657354121,44112759100,2025-06-15T02:00:00Z,544,771,476.39,400.3,7.62 -15655612867,44108084740,2025-06-14T21:00:00Z,547,740,476.3,400.25,7.57 -15653742079,44104013228,2025-06-14T17:00:00Z,499,705,476.39,400.25,7.7 -15651786133,44100160145,2025-06-14T14:00:00Z,490,671,475.25,399.48,8.0 -15649987292,44095314814,2025-06-14T09:00:00Z,539,702,476.47,400.27,7.58 -15646107434,44086831907,2025-06-14T02:00:00Z,542,716,476.08,399.84,7.6 -15642962044,44079703037,2025-06-13T21:00:00Z,518,711,475.21,399.31,8.04 -15638842903,44067697635,2025-06-13T17:00:00Z,548,727,476.3,442.64,7.48 -15634027967,44053427212,2025-06-13T14:00:00Z,509,703,477.36,442.85,7.97 -15629571833,44037516912,2025-06-13T09:00:00Z,506,702,476.48,442.56,7.77 -15626172835,44025076952,2025-06-13T06:00:00Z,516,707,475.62,442.1,7.45 -15624350656,44017427531,2025-06-13T02:00:00Z,525,726,475.33,441.75,7.92 -15623548592,44015550286,2025-06-13T01:00:00Z,531,747,476.36,442.7,7.76 -15623257317,44014658492,2025-06-13T01:00:00Z,555,769,475.6,443.4,7.4 -15622176685,44012291031,2025-06-12T23:00:00Z,562,760,475.84,442.51,7.66 -15620031253,44010493569,2025-06-12T23:00:00Z,572,799,476.56,442.82,7.56 -15620193033,44009980865,2025-06-12T22:00:00Z,556,780,476.59,442.4,7.13 -15619707256,44004376808,2025-06-12T20:00:00Z,514,716,475.28,442.5,8.01 -15595747531,43929783821,2025-06-11T22:00:00Z,559,732,476.36,443.24,7.92 diff --git a/.ci/scripts/benchmark_tooling/private/qwen-qwen3-0.6b_et-xnnpack-custom-spda-kv-cache-8da4w_apple-iphone-15-pro-_ios-18.4.1.csv b/.ci/scripts/benchmark_tooling/private/qwen-qwen3-0.6b_et-xnnpack-custom-spda-kv-cache-8da4w_apple-iphone-15-pro-_ios-18.4.1.csv deleted file mode 100644 index fd69d0ee093..00000000000 --- a/.ci/scripts/benchmark_tooling/private/qwen-qwen3-0.6b_et-xnnpack-custom-spda-kv-cache-8da4w_apple-iphone-15-pro-_ios-18.4.1.csv +++ /dev/null @@ -1,36 +0,0 @@ -workflow_id,job_id,granularity_bucket,avg_inference_latency(ms),model_load_time(ms),peak_inference_mem_usage(mb),peak_load_mem_usage(mb),token_per_sec -15712278899,44280789008,2025-06-17T17:00:00Z,352,544,671.76,399.3,25.39 -15706619480,44262431638,2025-06-17T13:00:00Z,348,532,671.42,399.26,24.75 -15701565915,44245403612,2025-06-17T09:00:00Z,354,535,671.8,399.62,23.93 -15697865923,44230646970,2025-06-17T05:00:00Z,344,524,671.37,399.22,25.63 -15694639442,44221536444,2025-06-17T01:00:00Z,356,559,671.46,399.31,24.56 -15690685696,44211619421,2025-06-16T21:00:00Z,358,562,671.64,399.44,24.77 -15685808660,44196632637,2025-06-16T17:00:00Z,363,552,671.24,399.22,24.47 -15680206509,44178256230,2025-06-16T13:00:00Z,351,537,671.43,399.39,25.13 -15675176293,44162005966,2025-06-16T10:00:00Z,343,523,671.44,399.39,25.92 -15671584185,44147537983,2025-06-16T06:00:00Z,343,533,671.43,399.59,25.91 -15668756024,44140855631,2025-06-16T02:00:00Z,357,553,671.63,399.36,24.58 -15666856809,44134617851,2025-06-15T22:00:00Z,355,556,671.51,399.52,24.68 -15664949756,44129710892,2025-06-15T17:00:00Z,350,547,671.26,399.17,25.57 -15662940074,44126695148,2025-06-15T15:00:00Z,349,540,671.48,399.51,24.31 -15661046591,44121071601,2025-06-15T10:00:00Z,342,544,671.57,399.7,24.64 -15659301910,44117138781,2025-06-15T06:00:00Z,350,534,671.27,399.36,24.7 -15657354121,44112759100,2025-06-15T02:00:00Z,347,540,671.36,399.19,24.37 -15655612867,44108084740,2025-06-14T21:00:00Z,350,540,671.54,399.44,25.0 -15653742079,44104013228,2025-06-14T17:00:00Z,349,537,671.73,399.52,24.15 -15651786133,44100160145,2025-06-14T14:00:00Z,348,529,671.55,399.35,25.75 -15649987292,44095314814,2025-06-14T09:00:00Z,358,537,671.26,399.39,24.04 -15646107434,44086831907,2025-06-14T02:00:00Z,345,528,671.46,399.5,25.27 -15642962044,44079703037,2025-06-13T21:00:00Z,342,522,671.65,399.55,25.19 -15638842903,44067697635,2025-06-13T17:00:00Z,348,538,671.65,443.65,24.76 -15634027967,44053427212,2025-06-13T14:00:00Z,348,538,671.33,443.63,25.57 -15629571833,44037516912,2025-06-13T09:00:00Z,344,533,671.56,443.28,25.06 -15626172835,44025076952,2025-06-13T06:00:00Z,344,531,671.54,443.51,24.8 -15624350656,44017427531,2025-06-13T02:00:00Z,346,530,671.35,442.74,25.73 -15623548592,44015550286,2025-06-13T01:00:00Z,340,536,671.45,443.02,24.75 -15623257317,44014658492,2025-06-13T01:00:00Z,346,545,671.28,443.17,24.18 -15622176685,44012291031,2025-06-12T23:00:00Z,351,538,671.64,443.36,24.54 -15620031253,44010493569,2025-06-12T23:00:00Z,356,555,671.41,443.2,25.13 -15620193033,44009980865,2025-06-12T22:00:00Z,354,549,671.55,443.49,24.58 -15619707256,44004376808,2025-06-12T20:00:00Z,347,529,671.38,443.44,25.43 -15595747531,43929783821,2025-06-11T22:00:00Z,348,542,671.64,444.11,25.96 diff --git a/.ci/scripts/benchmark_tooling/private/qwen-qwen3-0.6b_et-xnnpack-custom-spda-kv-cache-8da4w_apple-iphone-15-pro-private_ios-18.4.1.csv b/.ci/scripts/benchmark_tooling/private/qwen-qwen3-0.6b_et-xnnpack-custom-spda-kv-cache-8da4w_apple-iphone-15-pro-private_ios-18.4.1.csv deleted file mode 100644 index fd69d0ee093..00000000000 --- a/.ci/scripts/benchmark_tooling/private/qwen-qwen3-0.6b_et-xnnpack-custom-spda-kv-cache-8da4w_apple-iphone-15-pro-private_ios-18.4.1.csv +++ /dev/null @@ -1,36 +0,0 @@ -workflow_id,job_id,granularity_bucket,avg_inference_latency(ms),model_load_time(ms),peak_inference_mem_usage(mb),peak_load_mem_usage(mb),token_per_sec -15712278899,44280789008,2025-06-17T17:00:00Z,352,544,671.76,399.3,25.39 -15706619480,44262431638,2025-06-17T13:00:00Z,348,532,671.42,399.26,24.75 -15701565915,44245403612,2025-06-17T09:00:00Z,354,535,671.8,399.62,23.93 -15697865923,44230646970,2025-06-17T05:00:00Z,344,524,671.37,399.22,25.63 -15694639442,44221536444,2025-06-17T01:00:00Z,356,559,671.46,399.31,24.56 -15690685696,44211619421,2025-06-16T21:00:00Z,358,562,671.64,399.44,24.77 -15685808660,44196632637,2025-06-16T17:00:00Z,363,552,671.24,399.22,24.47 -15680206509,44178256230,2025-06-16T13:00:00Z,351,537,671.43,399.39,25.13 -15675176293,44162005966,2025-06-16T10:00:00Z,343,523,671.44,399.39,25.92 -15671584185,44147537983,2025-06-16T06:00:00Z,343,533,671.43,399.59,25.91 -15668756024,44140855631,2025-06-16T02:00:00Z,357,553,671.63,399.36,24.58 -15666856809,44134617851,2025-06-15T22:00:00Z,355,556,671.51,399.52,24.68 -15664949756,44129710892,2025-06-15T17:00:00Z,350,547,671.26,399.17,25.57 -15662940074,44126695148,2025-06-15T15:00:00Z,349,540,671.48,399.51,24.31 -15661046591,44121071601,2025-06-15T10:00:00Z,342,544,671.57,399.7,24.64 -15659301910,44117138781,2025-06-15T06:00:00Z,350,534,671.27,399.36,24.7 -15657354121,44112759100,2025-06-15T02:00:00Z,347,540,671.36,399.19,24.37 -15655612867,44108084740,2025-06-14T21:00:00Z,350,540,671.54,399.44,25.0 -15653742079,44104013228,2025-06-14T17:00:00Z,349,537,671.73,399.52,24.15 -15651786133,44100160145,2025-06-14T14:00:00Z,348,529,671.55,399.35,25.75 -15649987292,44095314814,2025-06-14T09:00:00Z,358,537,671.26,399.39,24.04 -15646107434,44086831907,2025-06-14T02:00:00Z,345,528,671.46,399.5,25.27 -15642962044,44079703037,2025-06-13T21:00:00Z,342,522,671.65,399.55,25.19 -15638842903,44067697635,2025-06-13T17:00:00Z,348,538,671.65,443.65,24.76 -15634027967,44053427212,2025-06-13T14:00:00Z,348,538,671.33,443.63,25.57 -15629571833,44037516912,2025-06-13T09:00:00Z,344,533,671.56,443.28,25.06 -15626172835,44025076952,2025-06-13T06:00:00Z,344,531,671.54,443.51,24.8 -15624350656,44017427531,2025-06-13T02:00:00Z,346,530,671.35,442.74,25.73 -15623548592,44015550286,2025-06-13T01:00:00Z,340,536,671.45,443.02,24.75 -15623257317,44014658492,2025-06-13T01:00:00Z,346,545,671.28,443.17,24.18 -15622176685,44012291031,2025-06-12T23:00:00Z,351,538,671.64,443.36,24.54 -15620031253,44010493569,2025-06-12T23:00:00Z,356,555,671.41,443.2,25.13 -15620193033,44009980865,2025-06-12T22:00:00Z,354,549,671.55,443.49,24.58 -15619707256,44004376808,2025-06-12T20:00:00Z,347,529,671.38,443.44,25.43 -15595747531,43929783821,2025-06-11T22:00:00Z,348,542,671.64,444.11,25.96 diff --git a/.ci/scripts/benchmark_tooling/private/qwen-qwen3-0.6b_hf-xnnpack-custom-spda-kv-cache-8da4w_-s22-_android-13.csv b/.ci/scripts/benchmark_tooling/private/qwen-qwen3-0.6b_hf-xnnpack-custom-spda-kv-cache-8da4w_-s22-_android-13.csv deleted file mode 100644 index 9f2b10c05b0..00000000000 --- a/.ci/scripts/benchmark_tooling/private/qwen-qwen3-0.6b_hf-xnnpack-custom-spda-kv-cache-8da4w_-s22-_android-13.csv +++ /dev/null @@ -1,38 +0,0 @@ -workflow_id,job_id,granularity_bucket,avg_inference_latency(ms),llm_model_load_time(ms),model_load_time(ms),ram_pss_usage(mb),token_per_sec,trimmean_inference_latency(ms) -15712320497,44280131792,2025-06-17T17:00:00Z,12.25,1686.22,1154.95,991,60.34,12.22 -15706687362,44261351450,2025-06-17T13:00:00Z,12.49,1520.18,1220.63,992,61.96,12.46 -15701619570,44244323755,2025-06-17T09:00:00Z,12.73,1406.72,1171.25,981,65.29,12.65 -15697890915,44230067957,2025-06-17T05:00:00Z,12.9,1641.5,1213.58,981,61.78,12.83 -15694752722,44221381863,2025-06-17T01:00:00Z,12.93,1539.02,1223.44,1011,60.34,12.88 -15690721346,44211034387,2025-06-16T21:00:00Z,13.64,1709.69,1186.66,1001,61.08,13.58 -15685858387,44195500217,2025-06-16T17:00:00Z,12.85,1551.69,1261.88,1001,61.81,12.83 -15680276053,44184994658,2025-06-16T15:00:00Z,12.67,1471.94,1187.41,1011,60.75,12.58 -15675229427,44160356972,2025-06-16T09:00:00Z,13.58,1535.61,1217.73,1011,61.08,13.51 -15671609250,44146779212,2025-06-16T05:00:00Z,13.33,1730.93,1180.36,1011,62.18,13.29 -15668838280,44139310442,2025-06-16T01:00:00Z,14.49,1668.7,1226.0,1011,59.87,13.64 -15666871209,44133842083,2025-06-15T21:00:00Z,12.37,1411.23,1291.48,1011,61.66,12.24 -15664964842,44129416866,2025-06-15T17:00:00Z,13.8,1615.79,1220.03,1001,62.59,13.47 -15662964566,44125237276,2025-06-15T13:00:00Z,12.47,1746.59,1193.11,1003,62.31,12.43 -15661066119,44120683489,2025-06-15T09:00:00Z,12.2,1596.2,1215.02,1011,62.03,12.18 -15659315239,44116350825,2025-06-15T05:00:00Z,13.73,1630.07,1285.66,1001,62.91,13.46 -15655627252,44107937078,2025-06-14T21:00:00Z,12.46,1513.66,1215.59,1012,60.87,12.38 -15653757002,44103768469,2025-06-14T17:00:00Z,12.44,1556.23,1222.76,1000,61.59,12.42 -15651807296,44099312849,2025-06-14T13:00:00Z,12.72,1660.05,1311.14,1002,62.24,12.68 -15650005042,44095041071,2025-06-14T09:00:00Z,12.43,1433.52,1197.58,1000,63.52,12.4 -15648224665,44090821985,2025-06-14T05:00:00Z,13.57,1818.3,1211.12,1011,62.65,13.54 -15646186941,44086333101,2025-06-14T01:00:00Z,12.79,1759.42,1232.08,1011,61.87,12.76 -15642991544,44079110098,2025-06-13T21:00:00Z,12.27,1602.04,1180.57,1013,60.37,12.24 -15638881659,44066590049,2025-06-13T17:00:00Z,12.31,1826.18,1223.47,1001,64.71,12.25 -15634084872,44050929738,2025-06-13T13:00:00Z,17.28,1691.76,1221.47,1001,61.78,16.1 -15629618177,44036960905,2025-06-13T09:00:00Z,13.87,1498.39,1366.16,1011,63.58,13.83 -15624350649,44017079362,2025-06-13T02:00:00Z,12.56,1778.31,1216.92,1001,62.62,12.49 -15623548623,44015026219,2025-06-13T01:00:00Z,12.1,1644.96,1233.72,1001,61.23,12.08 -15623358659,44014378003,2025-06-13T00:00:00Z,13.34,1684.01,1184.87,1011,60.9,13.29 -15622176667,44010845845,2025-06-12T23:00:00Z,12.48,1659.96,1179.39,1001,60.22,12.45 -15620193040,44007989435,2025-06-12T22:00:00Z,13.44,1626.63,1480.95,1010,59.96,13.41 -15620031250,44009155339,2025-06-12T22:00:00Z,13.6,1635.04,1328.64,1000,62.0,13.21 -15617200301,44000086806,2025-06-12T19:00:00Z,12.69,1630.04,1159.83,1001,63.1,12.67 -15617200301,43996424527,2025-06-12T18:00:00Z,13.09,1705.28,1219.98,1000,60.37,12.85 -15595747513,43928023304,2025-06-11T22:00:00Z,13.31,1576.39,1190.12,1001,61.87,13.26 -15591303597,43914918634,2025-06-11T18:00:00Z,13.25,,1255.97,1015,,12.93 -15574097144,43857046295,2025-06-11T02:00:00Z,13.09,,1169.45,1023,,12.66 diff --git a/.ci/scripts/benchmark_tooling/private/qwen-qwen3-0.6b_hf-xnnpack-custom-spda-kv-cache-8da4w_-s22-private_android-13.csv b/.ci/scripts/benchmark_tooling/private/qwen-qwen3-0.6b_hf-xnnpack-custom-spda-kv-cache-8da4w_-s22-private_android-13.csv deleted file mode 100644 index 9f2b10c05b0..00000000000 --- a/.ci/scripts/benchmark_tooling/private/qwen-qwen3-0.6b_hf-xnnpack-custom-spda-kv-cache-8da4w_-s22-private_android-13.csv +++ /dev/null @@ -1,38 +0,0 @@ -workflow_id,job_id,granularity_bucket,avg_inference_latency(ms),llm_model_load_time(ms),model_load_time(ms),ram_pss_usage(mb),token_per_sec,trimmean_inference_latency(ms) -15712320497,44280131792,2025-06-17T17:00:00Z,12.25,1686.22,1154.95,991,60.34,12.22 -15706687362,44261351450,2025-06-17T13:00:00Z,12.49,1520.18,1220.63,992,61.96,12.46 -15701619570,44244323755,2025-06-17T09:00:00Z,12.73,1406.72,1171.25,981,65.29,12.65 -15697890915,44230067957,2025-06-17T05:00:00Z,12.9,1641.5,1213.58,981,61.78,12.83 -15694752722,44221381863,2025-06-17T01:00:00Z,12.93,1539.02,1223.44,1011,60.34,12.88 -15690721346,44211034387,2025-06-16T21:00:00Z,13.64,1709.69,1186.66,1001,61.08,13.58 -15685858387,44195500217,2025-06-16T17:00:00Z,12.85,1551.69,1261.88,1001,61.81,12.83 -15680276053,44184994658,2025-06-16T15:00:00Z,12.67,1471.94,1187.41,1011,60.75,12.58 -15675229427,44160356972,2025-06-16T09:00:00Z,13.58,1535.61,1217.73,1011,61.08,13.51 -15671609250,44146779212,2025-06-16T05:00:00Z,13.33,1730.93,1180.36,1011,62.18,13.29 -15668838280,44139310442,2025-06-16T01:00:00Z,14.49,1668.7,1226.0,1011,59.87,13.64 -15666871209,44133842083,2025-06-15T21:00:00Z,12.37,1411.23,1291.48,1011,61.66,12.24 -15664964842,44129416866,2025-06-15T17:00:00Z,13.8,1615.79,1220.03,1001,62.59,13.47 -15662964566,44125237276,2025-06-15T13:00:00Z,12.47,1746.59,1193.11,1003,62.31,12.43 -15661066119,44120683489,2025-06-15T09:00:00Z,12.2,1596.2,1215.02,1011,62.03,12.18 -15659315239,44116350825,2025-06-15T05:00:00Z,13.73,1630.07,1285.66,1001,62.91,13.46 -15655627252,44107937078,2025-06-14T21:00:00Z,12.46,1513.66,1215.59,1012,60.87,12.38 -15653757002,44103768469,2025-06-14T17:00:00Z,12.44,1556.23,1222.76,1000,61.59,12.42 -15651807296,44099312849,2025-06-14T13:00:00Z,12.72,1660.05,1311.14,1002,62.24,12.68 -15650005042,44095041071,2025-06-14T09:00:00Z,12.43,1433.52,1197.58,1000,63.52,12.4 -15648224665,44090821985,2025-06-14T05:00:00Z,13.57,1818.3,1211.12,1011,62.65,13.54 -15646186941,44086333101,2025-06-14T01:00:00Z,12.79,1759.42,1232.08,1011,61.87,12.76 -15642991544,44079110098,2025-06-13T21:00:00Z,12.27,1602.04,1180.57,1013,60.37,12.24 -15638881659,44066590049,2025-06-13T17:00:00Z,12.31,1826.18,1223.47,1001,64.71,12.25 -15634084872,44050929738,2025-06-13T13:00:00Z,17.28,1691.76,1221.47,1001,61.78,16.1 -15629618177,44036960905,2025-06-13T09:00:00Z,13.87,1498.39,1366.16,1011,63.58,13.83 -15624350649,44017079362,2025-06-13T02:00:00Z,12.56,1778.31,1216.92,1001,62.62,12.49 -15623548623,44015026219,2025-06-13T01:00:00Z,12.1,1644.96,1233.72,1001,61.23,12.08 -15623358659,44014378003,2025-06-13T00:00:00Z,13.34,1684.01,1184.87,1011,60.9,13.29 -15622176667,44010845845,2025-06-12T23:00:00Z,12.48,1659.96,1179.39,1001,60.22,12.45 -15620193040,44007989435,2025-06-12T22:00:00Z,13.44,1626.63,1480.95,1010,59.96,13.41 -15620031250,44009155339,2025-06-12T22:00:00Z,13.6,1635.04,1328.64,1000,62.0,13.21 -15617200301,44000086806,2025-06-12T19:00:00Z,12.69,1630.04,1159.83,1001,63.1,12.67 -15617200301,43996424527,2025-06-12T18:00:00Z,13.09,1705.28,1219.98,1000,60.37,12.85 -15595747513,43928023304,2025-06-11T22:00:00Z,13.31,1576.39,1190.12,1001,61.87,13.26 -15591303597,43914918634,2025-06-11T18:00:00Z,13.25,,1255.97,1015,,12.93 -15574097144,43857046295,2025-06-11T02:00:00Z,13.09,,1169.45,1023,,12.66 diff --git a/.ci/scripts/benchmark_tooling/private/qwen-qwen3-0.6b_hf-xnnpack-custom-spda-kv-cache-8da4w_-s22-ultra-_android-14.csv b/.ci/scripts/benchmark_tooling/private/qwen-qwen3-0.6b_hf-xnnpack-custom-spda-kv-cache-8da4w_-s22-ultra-_android-14.csv deleted file mode 100644 index 6795ea1ee20..00000000000 --- a/.ci/scripts/benchmark_tooling/private/qwen-qwen3-0.6b_hf-xnnpack-custom-spda-kv-cache-8da4w_-s22-ultra-_android-14.csv +++ /dev/null @@ -1,38 +0,0 @@ -workflow_id,job_id,granularity_bucket,avg_inference_latency(ms),llm_model_load_time(ms),model_load_time(ms),ram_pss_usage(mb),token_per_sec,trimmean_inference_latency(ms) -15712320497,44280131792,2025-06-17T17:00:00Z,12.65,1002.56,908.34,996,62.46,12.63 -15706687362,44261351450,2025-06-17T13:00:00Z,12.8,1017.73,919.92,994,61.26,12.68 -15701619570,44244323755,2025-06-17T09:00:00Z,13.05,991.71,941.68,994,63.07,12.99 -15697890915,44230067957,2025-06-17T05:00:00Z,13.95,987.66,918.25,995,63.68,13.91 -15694752722,44221381863,2025-06-17T01:00:00Z,12.84,1018.07,931.21,1014,62.24,12.83 -15690721346,44211034387,2025-06-16T21:00:00Z,12.76,1007.29,919.43,1014,63.23,12.74 -15685858387,44195500217,2025-06-16T17:00:00Z,13.46,1032.09,927.87,1016,62.65,13.44 -15680276053,44184994658,2025-06-16T15:00:00Z,12.99,1032.43,961.68,1014,62.84,12.96 -15675229427,44160356972,2025-06-16T09:00:00Z,12.84,1026.2,926.28,1014,62.88,12.82 -15671609250,44146779212,2025-06-16T05:00:00Z,12.78,1032.06,931.34,1014,62.4,12.73 -15668838280,44139310442,2025-06-16T01:00:00Z,13.08,1025.62,927.85,1014,62.37,13.03 -15666871209,44133842083,2025-06-15T21:00:00Z,12.96,1039.63,934.67,1014,63.16,12.93 -15664964842,44129416866,2025-06-15T17:00:00Z,12.82,1021.37,918.97,1014,61.44,12.77 -15662964566,44125237276,2025-06-15T13:00:00Z,12.67,1041.92,949.66,1014,63.26,12.65 -15661066119,44120683489,2025-06-15T09:00:00Z,13.03,1016.13,930.51,1014,61.02,12.95 -15659315239,44116350825,2025-06-15T05:00:00Z,12.72,1026.22,922.23,1014,64.04,12.68 -15655627252,44107937078,2025-06-14T21:00:00Z,12.88,1022.0,919.87,1014,62.72,12.82 -15653757002,44103768469,2025-06-14T17:00:00Z,13.19,1024.15,916.75,1015,62.81,13.01 -15651807296,44099312849,2025-06-14T13:00:00Z,13.06,1004.62,943.66,1014,64.18,13.01 -15650005042,44095041071,2025-06-14T09:00:00Z,12.56,1004.51,937.89,1014,64.08,12.54 -15648224665,44090821985,2025-06-14T05:00:00Z,12.67,1020.59,921.19,1014,63.49,12.65 -15646186941,44086333101,2025-06-14T01:00:00Z,12.87,1036.56,928.25,1015,64.31,12.83 -15642991544,44079110098,2025-06-13T21:00:00Z,12.99,1018.38,935.96,1014,63.1,12.91 -15638881659,44066590049,2025-06-13T17:00:00Z,13.42,994.64,940.29,1014,63.55,13.33 -15634084872,44050929738,2025-06-13T13:00:00Z,12.85,1027.97,928.56,1014,62.4,12.8 -15629618177,44036960905,2025-06-13T09:00:00Z,12.65,1011.41,930.7,1014,63.36,12.63 -15624350649,44017079362,2025-06-13T02:00:00Z,13.37,1026.86,926.18,1016,64.44,13.27 -15623548623,44015026219,2025-06-13T01:00:00Z,12.7,1022.09,946.27,1014,60.87,12.64 -15623358659,44014378003,2025-06-13T00:00:00Z,12.76,1028.99,941.36,1014,61.2,12.76 -15622176667,44010845845,2025-06-12T23:00:00Z,14.35,1023.57,925.91,1015,62.12,13.83 -15620193040,44007989435,2025-06-12T22:00:00Z,13.19,1027.38,986.19,1014,61.47,13.15 -15620031250,44009155339,2025-06-12T22:00:00Z,12.71,1016.83,936.84,1014,62.24,12.66 -15617200301,44000086806,2025-06-12T19:00:00Z,12.77,1026.74,952.07,1014,63.04,12.73 -15617200301,43996424527,2025-06-12T18:00:00Z,13.55,1023.94,942.68,1014,64.81,13.5 -15595747513,43928023304,2025-06-11T22:00:00Z,13.24,1006.61,937.56,1015,62.81,13.22 -15591303597,43914918634,2025-06-11T18:00:00Z,13.66,,927.47,1028,,13.64 -15574097144,43857046295,2025-06-11T02:00:00Z,13.34,,968.12,1026,,13.32 diff --git a/.ci/scripts/benchmark_tooling/private/qwen-qwen3-0.6b_hf-xnnpack-custom-spda-kv-cache-8da4w_-s22-ultra-private_android-14.csv b/.ci/scripts/benchmark_tooling/private/qwen-qwen3-0.6b_hf-xnnpack-custom-spda-kv-cache-8da4w_-s22-ultra-private_android-14.csv deleted file mode 100644 index 6795ea1ee20..00000000000 --- a/.ci/scripts/benchmark_tooling/private/qwen-qwen3-0.6b_hf-xnnpack-custom-spda-kv-cache-8da4w_-s22-ultra-private_android-14.csv +++ /dev/null @@ -1,38 +0,0 @@ -workflow_id,job_id,granularity_bucket,avg_inference_latency(ms),llm_model_load_time(ms),model_load_time(ms),ram_pss_usage(mb),token_per_sec,trimmean_inference_latency(ms) -15712320497,44280131792,2025-06-17T17:00:00Z,12.65,1002.56,908.34,996,62.46,12.63 -15706687362,44261351450,2025-06-17T13:00:00Z,12.8,1017.73,919.92,994,61.26,12.68 -15701619570,44244323755,2025-06-17T09:00:00Z,13.05,991.71,941.68,994,63.07,12.99 -15697890915,44230067957,2025-06-17T05:00:00Z,13.95,987.66,918.25,995,63.68,13.91 -15694752722,44221381863,2025-06-17T01:00:00Z,12.84,1018.07,931.21,1014,62.24,12.83 -15690721346,44211034387,2025-06-16T21:00:00Z,12.76,1007.29,919.43,1014,63.23,12.74 -15685858387,44195500217,2025-06-16T17:00:00Z,13.46,1032.09,927.87,1016,62.65,13.44 -15680276053,44184994658,2025-06-16T15:00:00Z,12.99,1032.43,961.68,1014,62.84,12.96 -15675229427,44160356972,2025-06-16T09:00:00Z,12.84,1026.2,926.28,1014,62.88,12.82 -15671609250,44146779212,2025-06-16T05:00:00Z,12.78,1032.06,931.34,1014,62.4,12.73 -15668838280,44139310442,2025-06-16T01:00:00Z,13.08,1025.62,927.85,1014,62.37,13.03 -15666871209,44133842083,2025-06-15T21:00:00Z,12.96,1039.63,934.67,1014,63.16,12.93 -15664964842,44129416866,2025-06-15T17:00:00Z,12.82,1021.37,918.97,1014,61.44,12.77 -15662964566,44125237276,2025-06-15T13:00:00Z,12.67,1041.92,949.66,1014,63.26,12.65 -15661066119,44120683489,2025-06-15T09:00:00Z,13.03,1016.13,930.51,1014,61.02,12.95 -15659315239,44116350825,2025-06-15T05:00:00Z,12.72,1026.22,922.23,1014,64.04,12.68 -15655627252,44107937078,2025-06-14T21:00:00Z,12.88,1022.0,919.87,1014,62.72,12.82 -15653757002,44103768469,2025-06-14T17:00:00Z,13.19,1024.15,916.75,1015,62.81,13.01 -15651807296,44099312849,2025-06-14T13:00:00Z,13.06,1004.62,943.66,1014,64.18,13.01 -15650005042,44095041071,2025-06-14T09:00:00Z,12.56,1004.51,937.89,1014,64.08,12.54 -15648224665,44090821985,2025-06-14T05:00:00Z,12.67,1020.59,921.19,1014,63.49,12.65 -15646186941,44086333101,2025-06-14T01:00:00Z,12.87,1036.56,928.25,1015,64.31,12.83 -15642991544,44079110098,2025-06-13T21:00:00Z,12.99,1018.38,935.96,1014,63.1,12.91 -15638881659,44066590049,2025-06-13T17:00:00Z,13.42,994.64,940.29,1014,63.55,13.33 -15634084872,44050929738,2025-06-13T13:00:00Z,12.85,1027.97,928.56,1014,62.4,12.8 -15629618177,44036960905,2025-06-13T09:00:00Z,12.65,1011.41,930.7,1014,63.36,12.63 -15624350649,44017079362,2025-06-13T02:00:00Z,13.37,1026.86,926.18,1016,64.44,13.27 -15623548623,44015026219,2025-06-13T01:00:00Z,12.7,1022.09,946.27,1014,60.87,12.64 -15623358659,44014378003,2025-06-13T00:00:00Z,12.76,1028.99,941.36,1014,61.2,12.76 -15622176667,44010845845,2025-06-12T23:00:00Z,14.35,1023.57,925.91,1015,62.12,13.83 -15620193040,44007989435,2025-06-12T22:00:00Z,13.19,1027.38,986.19,1014,61.47,13.15 -15620031250,44009155339,2025-06-12T22:00:00Z,12.71,1016.83,936.84,1014,62.24,12.66 -15617200301,44000086806,2025-06-12T19:00:00Z,12.77,1026.74,952.07,1014,63.04,12.73 -15617200301,43996424527,2025-06-12T18:00:00Z,13.55,1023.94,942.68,1014,64.81,13.5 -15595747513,43928023304,2025-06-11T22:00:00Z,13.24,1006.61,937.56,1015,62.81,13.22 -15591303597,43914918634,2025-06-11T18:00:00Z,13.66,,927.47,1028,,13.64 -15574097144,43857046295,2025-06-11T02:00:00Z,13.34,,968.12,1026,,13.32 diff --git a/.ci/scripts/benchmark_tooling/private/qwen-qwen3-0.6b_hf-xnnpack-custom-spda-kv-cache-8da4w_apple-iphone-15-_ios-18.0.csv b/.ci/scripts/benchmark_tooling/private/qwen-qwen3-0.6b_hf-xnnpack-custom-spda-kv-cache-8da4w_apple-iphone-15-_ios-18.0.csv deleted file mode 100644 index be92a91ca8e..00000000000 --- a/.ci/scripts/benchmark_tooling/private/qwen-qwen3-0.6b_hf-xnnpack-custom-spda-kv-cache-8da4w_apple-iphone-15-_ios-18.0.csv +++ /dev/null @@ -1,34 +0,0 @@ -workflow_id,job_id,granularity_bucket,avg_inference_latency(ms),model_load_time(ms),peak_inference_mem_usage(mb),peak_load_mem_usage(mb),token_per_sec -15712278899,44280789008,2025-06-17T17:00:00Z,131,728,919.5,821.69,6.94 -15706619480,44262431638,2025-06-17T13:00:00Z,122,678,919.38,821.98,7.03 -15701565915,44245403612,2025-06-17T09:00:00Z,118,674,919.37,822.63,7.54 -15697865923,44230646970,2025-06-17T05:00:00Z,131,693,919.39,821.67,7.1 -15694639442,44221536444,2025-06-17T01:00:00Z,130,770,917.51,840.39,7.03 -15690685696,44211619421,2025-06-16T21:00:00Z,132,761,917.86,840.39,6.97 -15685808660,44196632637,2025-06-16T17:00:00Z,110,723,917.51,840.97,7.35 -15680206509,44178256230,2025-06-16T13:00:00Z,122,708,917.95,840.14,7.14 -15675176293,44162005966,2025-06-16T10:00:00Z,123,701,917.9,840.34,6.86 -15671584185,44147537983,2025-06-16T06:00:00Z,112,699,917.57,840.62,6.98 -15661046591,44121071601,2025-06-15T10:00:00Z,111,690,917.74,841.21,6.91 -15659301910,44117138781,2025-06-15T06:00:00Z,108,681,916.76,841.08,7.69 -15655612867,44108084740,2025-06-14T21:00:00Z,120,740,917.74,840.97,6.99 -15653742079,44104013228,2025-06-14T17:00:00Z,109,669,918.07,840.36,7.86 -15651786133,44100160145,2025-06-14T14:00:00Z,110,690,917.93,840.94,7.2 -15649987292,44095314814,2025-06-14T09:00:00Z,117,703,917.78,840.51,7.02 -15646107434,44086831907,2025-06-14T02:00:00Z,120,689,917.56,841.09,7.37 -15642962044,44079703037,2025-06-13T21:00:00Z,111,730,917.46,840.98,6.95 -15638842903,44067697635,2025-06-13T17:00:00Z,111,711,917.68,886.73,7.14 -15634027967,44053427212,2025-06-13T14:00:00Z,119,694,917.7,886.86,7.15 -15629571833,44037516912,2025-06-13T09:00:00Z,108,686,917.69,886.82,7.18 -15626172835,44025076952,2025-06-13T06:00:00Z,125,700,917.54,886.72,7.16 -15624350656,44017427531,2025-06-13T02:00:00Z,118,736,917.63,887.51,6.71 -15623548592,44015550286,2025-06-13T01:00:00Z,124,761,917.56,887.72,6.67 -15623257317,44014658492,2025-06-13T01:00:00Z,115,724,917.57,887.68,7.55 -15622176685,44012291031,2025-06-12T23:00:00Z,117,759,917.44,887.51,6.94 -15620031253,44010493569,2025-06-12T23:00:00Z,116,770,917.69,888.19,6.99 -15620193033,44009980865,2025-06-12T22:00:00Z,118,764,917.79,888.31,6.95 -15619707256,44004376808,2025-06-12T20:00:00Z,109,754,917.7,888.06,6.73 -15618130191,44001150742,2025-06-12T20:00:00Z,117,718,917.58,888.57,7.23 -15617200280,43997116604,2025-06-12T18:00:00Z,109,703,942.32,884.44,7.47 -15595747531,43988060135,2025-06-12T16:00:00Z,124,696,916.63,888.22,6.86 -15595747531,43929140891,2025-06-11T22:00:00Z,164,727,917.5,884.41,7.14 diff --git a/.ci/scripts/benchmark_tooling/private/qwen-qwen3-0.6b_hf-xnnpack-custom-spda-kv-cache-8da4w_apple-iphone-15-plus-_ios-17.4.1.csv b/.ci/scripts/benchmark_tooling/private/qwen-qwen3-0.6b_hf-xnnpack-custom-spda-kv-cache-8da4w_apple-iphone-15-plus-_ios-17.4.1.csv deleted file mode 100644 index b0b7b9bb6c8..00000000000 --- a/.ci/scripts/benchmark_tooling/private/qwen-qwen3-0.6b_hf-xnnpack-custom-spda-kv-cache-8da4w_apple-iphone-15-plus-_ios-17.4.1.csv +++ /dev/null @@ -1,34 +0,0 @@ -workflow_id,job_id,granularity_bucket,avg_inference_latency(ms),model_load_time(ms),peak_inference_mem_usage(mb),peak_load_mem_usage(mb),token_per_sec -15712278899,44280789008,2025-06-17T17:00:00Z,138,722,1081.91,1097.75,6.34 -15706619480,44262431638,2025-06-17T13:00:00Z,138,716,1081.93,1097.43,6.47 -15701565915,44245403612,2025-06-17T09:00:00Z,144,715,1081.89,1097.52,6.02 -15697865923,44230646970,2025-06-17T05:00:00Z,133,717,1081.77,1097.34,6.31 -15694639442,44221536444,2025-06-17T01:00:00Z,141,772,1102.59,1116.39,6.0 -15690685696,44211619421,2025-06-16T21:00:00Z,146,786,1102.45,1116.14,5.63 -15685808660,44196632637,2025-06-16T17:00:00Z,132,752,1102.44,1116.54,6.2 -15680206509,44178256230,2025-06-16T13:00:00Z,146,731,1102.42,1116.38,6.06 -15675176293,44162005966,2025-06-16T10:00:00Z,140,738,1102.55,1116.58,6.04 -15671584185,44147537983,2025-06-16T06:00:00Z,135,720,1102.43,1116.39,6.28 -15661046591,44121071601,2025-06-15T10:00:00Z,148,736,1102.51,1116.56,6.06 -15659301910,44117138781,2025-06-15T06:00:00Z,134,693,1102.31,1116.62,6.43 -15655612867,44108084740,2025-06-14T21:00:00Z,148,748,1102.49,1116.46,5.89 -15653742079,44104013228,2025-06-14T17:00:00Z,135,692,1102.36,1116.43,6.66 -15651786133,44100160145,2025-06-14T14:00:00Z,144,748,1102.53,1116.56,6.2 -15649987292,44095314814,2025-06-14T09:00:00Z,138,735,1102.38,1116.56,6.22 -15646107434,44086831907,2025-06-14T02:00:00Z,151,746,1102.56,1116.41,5.46 -15642962044,44079703037,2025-06-13T21:00:00Z,137,761,1102.45,1115.95,6.04 -15638842903,44067697635,2025-06-13T17:00:00Z,138,738,1102.37,1166.21,6.2 -15634027967,44053427212,2025-06-13T14:00:00Z,130,731,1102.55,1166.33,5.51 -15629571833,44037516912,2025-06-13T09:00:00Z,145,730,1102.47,1165.9,6.29 -15626172835,44025076952,2025-06-13T06:00:00Z,142,746,1102.47,1166.36,6.06 -15624350656,44017427531,2025-06-13T02:00:00Z,169,778,1102.42,1165.99,5.51 -15623548592,44015550286,2025-06-13T01:00:00Z,131,771,1102.38,1165.85,5.65 -15623257317,44014658492,2025-06-13T01:00:00Z,134,728,1102.48,1165.98,6.43 -15622176685,44012291031,2025-06-12T23:00:00Z,133,774,1102.59,1166.24,5.98 -15620031253,44010493569,2025-06-12T23:00:00Z,128,784,1102.5,1166.09,5.75 -15620193033,44009980865,2025-06-12T22:00:00Z,144,782,1102.45,1165.88,5.71 -15619707256,44004376808,2025-06-12T20:00:00Z,148,764,1102.51,1165.94,6.09 -15618130191,44001150742,2025-06-12T20:00:00Z,138,743,1102.37,1166.72,5.97 -15617200280,43997116604,2025-06-12T18:00:00Z,138,717,1102.39,1166.51,6.54 -15595747531,43988060135,2025-06-12T16:00:00Z,138,688,1102.39,1166.46,6.51 -15595747531,43929140891,2025-06-11T22:00:00Z,131,748,1102.31,1167.17,6.4 diff --git a/.ci/scripts/benchmark_tooling/private/qwen-qwen3-0.6b_hf-xnnpack-custom-spda-kv-cache-8da4w_apple-iphone-15-plus-private_ios-17.4.1.csv b/.ci/scripts/benchmark_tooling/private/qwen-qwen3-0.6b_hf-xnnpack-custom-spda-kv-cache-8da4w_apple-iphone-15-plus-private_ios-17.4.1.csv deleted file mode 100644 index b0b7b9bb6c8..00000000000 --- a/.ci/scripts/benchmark_tooling/private/qwen-qwen3-0.6b_hf-xnnpack-custom-spda-kv-cache-8da4w_apple-iphone-15-plus-private_ios-17.4.1.csv +++ /dev/null @@ -1,34 +0,0 @@ -workflow_id,job_id,granularity_bucket,avg_inference_latency(ms),model_load_time(ms),peak_inference_mem_usage(mb),peak_load_mem_usage(mb),token_per_sec -15712278899,44280789008,2025-06-17T17:00:00Z,138,722,1081.91,1097.75,6.34 -15706619480,44262431638,2025-06-17T13:00:00Z,138,716,1081.93,1097.43,6.47 -15701565915,44245403612,2025-06-17T09:00:00Z,144,715,1081.89,1097.52,6.02 -15697865923,44230646970,2025-06-17T05:00:00Z,133,717,1081.77,1097.34,6.31 -15694639442,44221536444,2025-06-17T01:00:00Z,141,772,1102.59,1116.39,6.0 -15690685696,44211619421,2025-06-16T21:00:00Z,146,786,1102.45,1116.14,5.63 -15685808660,44196632637,2025-06-16T17:00:00Z,132,752,1102.44,1116.54,6.2 -15680206509,44178256230,2025-06-16T13:00:00Z,146,731,1102.42,1116.38,6.06 -15675176293,44162005966,2025-06-16T10:00:00Z,140,738,1102.55,1116.58,6.04 -15671584185,44147537983,2025-06-16T06:00:00Z,135,720,1102.43,1116.39,6.28 -15661046591,44121071601,2025-06-15T10:00:00Z,148,736,1102.51,1116.56,6.06 -15659301910,44117138781,2025-06-15T06:00:00Z,134,693,1102.31,1116.62,6.43 -15655612867,44108084740,2025-06-14T21:00:00Z,148,748,1102.49,1116.46,5.89 -15653742079,44104013228,2025-06-14T17:00:00Z,135,692,1102.36,1116.43,6.66 -15651786133,44100160145,2025-06-14T14:00:00Z,144,748,1102.53,1116.56,6.2 -15649987292,44095314814,2025-06-14T09:00:00Z,138,735,1102.38,1116.56,6.22 -15646107434,44086831907,2025-06-14T02:00:00Z,151,746,1102.56,1116.41,5.46 -15642962044,44079703037,2025-06-13T21:00:00Z,137,761,1102.45,1115.95,6.04 -15638842903,44067697635,2025-06-13T17:00:00Z,138,738,1102.37,1166.21,6.2 -15634027967,44053427212,2025-06-13T14:00:00Z,130,731,1102.55,1166.33,5.51 -15629571833,44037516912,2025-06-13T09:00:00Z,145,730,1102.47,1165.9,6.29 -15626172835,44025076952,2025-06-13T06:00:00Z,142,746,1102.47,1166.36,6.06 -15624350656,44017427531,2025-06-13T02:00:00Z,169,778,1102.42,1165.99,5.51 -15623548592,44015550286,2025-06-13T01:00:00Z,131,771,1102.38,1165.85,5.65 -15623257317,44014658492,2025-06-13T01:00:00Z,134,728,1102.48,1165.98,6.43 -15622176685,44012291031,2025-06-12T23:00:00Z,133,774,1102.59,1166.24,5.98 -15620031253,44010493569,2025-06-12T23:00:00Z,128,784,1102.5,1166.09,5.75 -15620193033,44009980865,2025-06-12T22:00:00Z,144,782,1102.45,1165.88,5.71 -15619707256,44004376808,2025-06-12T20:00:00Z,148,764,1102.51,1165.94,6.09 -15618130191,44001150742,2025-06-12T20:00:00Z,138,743,1102.37,1166.72,5.97 -15617200280,43997116604,2025-06-12T18:00:00Z,138,717,1102.39,1166.51,6.54 -15595747531,43988060135,2025-06-12T16:00:00Z,138,688,1102.39,1166.46,6.51 -15595747531,43929140891,2025-06-11T22:00:00Z,131,748,1102.31,1167.17,6.4 diff --git a/.ci/scripts/benchmark_tooling/private/qwen-qwen3-0.6b_hf-xnnpack-custom-spda-kv-cache-8da4w_apple-iphone-15-private_ios-18.0.csv b/.ci/scripts/benchmark_tooling/private/qwen-qwen3-0.6b_hf-xnnpack-custom-spda-kv-cache-8da4w_apple-iphone-15-private_ios-18.0.csv deleted file mode 100644 index be92a91ca8e..00000000000 --- a/.ci/scripts/benchmark_tooling/private/qwen-qwen3-0.6b_hf-xnnpack-custom-spda-kv-cache-8da4w_apple-iphone-15-private_ios-18.0.csv +++ /dev/null @@ -1,34 +0,0 @@ -workflow_id,job_id,granularity_bucket,avg_inference_latency(ms),model_load_time(ms),peak_inference_mem_usage(mb),peak_load_mem_usage(mb),token_per_sec -15712278899,44280789008,2025-06-17T17:00:00Z,131,728,919.5,821.69,6.94 -15706619480,44262431638,2025-06-17T13:00:00Z,122,678,919.38,821.98,7.03 -15701565915,44245403612,2025-06-17T09:00:00Z,118,674,919.37,822.63,7.54 -15697865923,44230646970,2025-06-17T05:00:00Z,131,693,919.39,821.67,7.1 -15694639442,44221536444,2025-06-17T01:00:00Z,130,770,917.51,840.39,7.03 -15690685696,44211619421,2025-06-16T21:00:00Z,132,761,917.86,840.39,6.97 -15685808660,44196632637,2025-06-16T17:00:00Z,110,723,917.51,840.97,7.35 -15680206509,44178256230,2025-06-16T13:00:00Z,122,708,917.95,840.14,7.14 -15675176293,44162005966,2025-06-16T10:00:00Z,123,701,917.9,840.34,6.86 -15671584185,44147537983,2025-06-16T06:00:00Z,112,699,917.57,840.62,6.98 -15661046591,44121071601,2025-06-15T10:00:00Z,111,690,917.74,841.21,6.91 -15659301910,44117138781,2025-06-15T06:00:00Z,108,681,916.76,841.08,7.69 -15655612867,44108084740,2025-06-14T21:00:00Z,120,740,917.74,840.97,6.99 -15653742079,44104013228,2025-06-14T17:00:00Z,109,669,918.07,840.36,7.86 -15651786133,44100160145,2025-06-14T14:00:00Z,110,690,917.93,840.94,7.2 -15649987292,44095314814,2025-06-14T09:00:00Z,117,703,917.78,840.51,7.02 -15646107434,44086831907,2025-06-14T02:00:00Z,120,689,917.56,841.09,7.37 -15642962044,44079703037,2025-06-13T21:00:00Z,111,730,917.46,840.98,6.95 -15638842903,44067697635,2025-06-13T17:00:00Z,111,711,917.68,886.73,7.14 -15634027967,44053427212,2025-06-13T14:00:00Z,119,694,917.7,886.86,7.15 -15629571833,44037516912,2025-06-13T09:00:00Z,108,686,917.69,886.82,7.18 -15626172835,44025076952,2025-06-13T06:00:00Z,125,700,917.54,886.72,7.16 -15624350656,44017427531,2025-06-13T02:00:00Z,118,736,917.63,887.51,6.71 -15623548592,44015550286,2025-06-13T01:00:00Z,124,761,917.56,887.72,6.67 -15623257317,44014658492,2025-06-13T01:00:00Z,115,724,917.57,887.68,7.55 -15622176685,44012291031,2025-06-12T23:00:00Z,117,759,917.44,887.51,6.94 -15620031253,44010493569,2025-06-12T23:00:00Z,116,770,917.69,888.19,6.99 -15620193033,44009980865,2025-06-12T22:00:00Z,118,764,917.79,888.31,6.95 -15619707256,44004376808,2025-06-12T20:00:00Z,109,754,917.7,888.06,6.73 -15618130191,44001150742,2025-06-12T20:00:00Z,117,718,917.58,888.57,7.23 -15617200280,43997116604,2025-06-12T18:00:00Z,109,703,942.32,884.44,7.47 -15595747531,43988060135,2025-06-12T16:00:00Z,124,696,916.63,888.22,6.86 -15595747531,43929140891,2025-06-11T22:00:00Z,164,727,917.5,884.41,7.14 diff --git a/.ci/scripts/benchmark_tooling/private/qwen-qwen3-0.6b_hf-xnnpack-custom-spda-kv-cache-8da4w_apple-iphone-15-pro-_ios-18.4.1.csv b/.ci/scripts/benchmark_tooling/private/qwen-qwen3-0.6b_hf-xnnpack-custom-spda-kv-cache-8da4w_apple-iphone-15-pro-_ios-18.4.1.csv deleted file mode 100644 index 343c89d128b..00000000000 --- a/.ci/scripts/benchmark_tooling/private/qwen-qwen3-0.6b_hf-xnnpack-custom-spda-kv-cache-8da4w_apple-iphone-15-pro-_ios-18.4.1.csv +++ /dev/null @@ -1,34 +0,0 @@ -workflow_id,job_id,granularity_bucket,avg_inference_latency(ms),model_load_time(ms),peak_inference_mem_usage(mb),peak_load_mem_usage(mb),token_per_sec -15712278899,44280789008,2025-06-17T17:00:00Z,39,547,1074.67,819.15,23.0 -15706619480,44262431638,2025-06-17T13:00:00Z,37,552,1074.2,819.07,22.88 -15701565915,44245403612,2025-06-17T09:00:00Z,44,551,1074.22,818.93,22.7 -15697865923,44230646970,2025-06-17T05:00:00Z,41,553,1074.6,819.35,23.31 -15694639442,44221536444,2025-06-17T01:00:00Z,39,574,1089.4,838.37,23.01 -15690685696,44211619421,2025-06-16T21:00:00Z,35,578,1089.31,838.15,22.91 -15685808660,44196632637,2025-06-16T17:00:00Z,39,562,1089.34,838.35,22.78 -15680206509,44178256230,2025-06-16T13:00:00Z,41,558,1089.31,838.13,23.4 -15675176293,44162005966,2025-06-16T10:00:00Z,41,562,1089.34,838.25,23.4 -15671584185,44147537983,2025-06-16T06:00:00Z,31,559,1089.76,838.64,21.73 -15661046591,44121071601,2025-06-15T10:00:00Z,42,562,1089.58,838.4,22.6 -15659301910,44117138781,2025-06-15T06:00:00Z,39,549,1089.31,838.42,23.98 -15655612867,44108084740,2025-06-14T21:00:00Z,31,563,1089.32,838.24,24.28 -15653742079,44104013228,2025-06-14T17:00:00Z,46,562,1089.11,838.37,22.98 -15651786133,44100160145,2025-06-14T14:00:00Z,38,557,1089.59,838.49,23.89 -15649987292,44095314814,2025-06-14T09:00:00Z,36,557,1089.39,838.36,23.34 -15646107434,44086831907,2025-06-14T02:00:00Z,40,556,1089.35,838.3,22.91 -15642962044,44079703037,2025-06-13T21:00:00Z,41,562,1089.34,838.07,23.01 -15638842903,44067697635,2025-06-13T17:00:00Z,38,559,1089.36,881.82,23.39 -15634027967,44053427212,2025-06-13T14:00:00Z,41,562,1089.22,881.69,23.04 -15629571833,44037516912,2025-06-13T09:00:00Z,35,556,1089.74,881.74,23.05 -15626172835,44025076952,2025-06-13T06:00:00Z,36,564,1089.16,881.55,23.66 -15624350656,44017427531,2025-06-13T02:00:00Z,41,560,1089.29,881.56,23.68 -15623548592,44015550286,2025-06-13T01:00:00Z,46,563,1089.34,881.14,22.63 -15623257317,44014658492,2025-06-13T01:00:00Z,34,559,1089.34,881.33,23.27 -15622176685,44012291031,2025-06-12T23:00:00Z,34,566,1089.47,881.19,22.88 -15620031253,44010493569,2025-06-12T23:00:00Z,41,571,1089.4,882.21,23.42 -15620193033,44009980865,2025-06-12T22:00:00Z,42,578,1089.87,882.13,21.0 -15619707256,44004376808,2025-06-12T20:00:00Z,36,566,1089.51,882.13,22.52 -15618130191,44001150742,2025-06-12T20:00:00Z,41,560,1089.35,881.54,22.48 -15617200280,43997116604,2025-06-12T18:00:00Z,39,549,1089.28,882.8,23.74 -15595747531,43988060135,2025-06-12T16:00:00Z,37,554,1089.57,882.89,24.09 -15595747531,43929140891,2025-06-11T22:00:00Z,32,560,1089.27,881.61,23.9 diff --git a/.ci/scripts/benchmark_tooling/private/qwen-qwen3-0.6b_hf-xnnpack-custom-spda-kv-cache-8da4w_apple-iphone-15-pro-private_ios-18.4.1.csv b/.ci/scripts/benchmark_tooling/private/qwen-qwen3-0.6b_hf-xnnpack-custom-spda-kv-cache-8da4w_apple-iphone-15-pro-private_ios-18.4.1.csv deleted file mode 100644 index 343c89d128b..00000000000 --- a/.ci/scripts/benchmark_tooling/private/qwen-qwen3-0.6b_hf-xnnpack-custom-spda-kv-cache-8da4w_apple-iphone-15-pro-private_ios-18.4.1.csv +++ /dev/null @@ -1,34 +0,0 @@ -workflow_id,job_id,granularity_bucket,avg_inference_latency(ms),model_load_time(ms),peak_inference_mem_usage(mb),peak_load_mem_usage(mb),token_per_sec -15712278899,44280789008,2025-06-17T17:00:00Z,39,547,1074.67,819.15,23.0 -15706619480,44262431638,2025-06-17T13:00:00Z,37,552,1074.2,819.07,22.88 -15701565915,44245403612,2025-06-17T09:00:00Z,44,551,1074.22,818.93,22.7 -15697865923,44230646970,2025-06-17T05:00:00Z,41,553,1074.6,819.35,23.31 -15694639442,44221536444,2025-06-17T01:00:00Z,39,574,1089.4,838.37,23.01 -15690685696,44211619421,2025-06-16T21:00:00Z,35,578,1089.31,838.15,22.91 -15685808660,44196632637,2025-06-16T17:00:00Z,39,562,1089.34,838.35,22.78 -15680206509,44178256230,2025-06-16T13:00:00Z,41,558,1089.31,838.13,23.4 -15675176293,44162005966,2025-06-16T10:00:00Z,41,562,1089.34,838.25,23.4 -15671584185,44147537983,2025-06-16T06:00:00Z,31,559,1089.76,838.64,21.73 -15661046591,44121071601,2025-06-15T10:00:00Z,42,562,1089.58,838.4,22.6 -15659301910,44117138781,2025-06-15T06:00:00Z,39,549,1089.31,838.42,23.98 -15655612867,44108084740,2025-06-14T21:00:00Z,31,563,1089.32,838.24,24.28 -15653742079,44104013228,2025-06-14T17:00:00Z,46,562,1089.11,838.37,22.98 -15651786133,44100160145,2025-06-14T14:00:00Z,38,557,1089.59,838.49,23.89 -15649987292,44095314814,2025-06-14T09:00:00Z,36,557,1089.39,838.36,23.34 -15646107434,44086831907,2025-06-14T02:00:00Z,40,556,1089.35,838.3,22.91 -15642962044,44079703037,2025-06-13T21:00:00Z,41,562,1089.34,838.07,23.01 -15638842903,44067697635,2025-06-13T17:00:00Z,38,559,1089.36,881.82,23.39 -15634027967,44053427212,2025-06-13T14:00:00Z,41,562,1089.22,881.69,23.04 -15629571833,44037516912,2025-06-13T09:00:00Z,35,556,1089.74,881.74,23.05 -15626172835,44025076952,2025-06-13T06:00:00Z,36,564,1089.16,881.55,23.66 -15624350656,44017427531,2025-06-13T02:00:00Z,41,560,1089.29,881.56,23.68 -15623548592,44015550286,2025-06-13T01:00:00Z,46,563,1089.34,881.14,22.63 -15623257317,44014658492,2025-06-13T01:00:00Z,34,559,1089.34,881.33,23.27 -15622176685,44012291031,2025-06-12T23:00:00Z,34,566,1089.47,881.19,22.88 -15620031253,44010493569,2025-06-12T23:00:00Z,41,571,1089.4,882.21,23.42 -15620193033,44009980865,2025-06-12T22:00:00Z,42,578,1089.87,882.13,21.0 -15619707256,44004376808,2025-06-12T20:00:00Z,36,566,1089.51,882.13,22.52 -15618130191,44001150742,2025-06-12T20:00:00Z,41,560,1089.35,881.54,22.48 -15617200280,43997116604,2025-06-12T18:00:00Z,39,549,1089.28,882.8,23.74 -15595747531,43988060135,2025-06-12T16:00:00Z,37,554,1089.57,882.89,24.09 -15595747531,43929140891,2025-06-11T22:00:00Z,32,560,1089.27,881.61,23.9 From 702478b82ad67011ed15a075caf63555f781d1be Mon Sep 17 00:00:00 2001 From: Yang Wang Date: Wed, 18 Jun 2025 04:31:48 -0700 Subject: [PATCH 19/46] final Signed-off-by: Yang Wang --- .ci/scripts/benchmark_tooling/README.md | 141 +- .ci/scripts/benchmark_tooling/all.json | 1778 ----------------- .../get_benchmark_analysis_data.py | 650 +++--- 3 files changed, 315 insertions(+), 2254 deletions(-) delete mode 100644 .ci/scripts/benchmark_tooling/all.json diff --git a/.ci/scripts/benchmark_tooling/README.md b/.ci/scripts/benchmark_tooling/README.md index 0e5b67c955e..869cc1a8301 100644 --- a/.ci/scripts/benchmark_tooling/README.md +++ b/.ci/scripts/benchmark_tooling/README.md @@ -2,142 +2,51 @@ A library providing tools for benchmarking ExecutorchBenchmark data. -## Installation +## Read Benchmark Data +`get_benchmark_analysis_data.py` fetches benchmark data from HUD Open API and processes it, grouping metrics by private and public devices. + +### Quick Start Install dependencies: ```bash pip install -r requirements.txt ``` -## Tools - -### get_benchmark_analysis_data.py - -This script fetches benchmark data from HUD Open API and processes it, grouping metrics by private and public devices. -## Quick start - -generates the matching_list json: -``` -python get_benchmark_analysis_data.py get_matching_list \ - --startTime 2025-06-11T00:00:00 \ - --endTime 2025-06-17T00:00:00 \ - --category private_mv3_iphone15 \ - --filter "include=private,mv3;"\ - --outputType json -``` - -if everything looks good, generate the private csv output: -``` -python3 get_benchmark_analysis_data.py generate_data \ ---startTime "2025-06-11T00:00:00" \ ---endTime "2025-06-17T18:00:00" \ ---private-matching-json-path "./private_mv3_iphone15.json" --outputType csv \ ---includePublic false -``` - - -#### Generate Benchmark Data - +Run with default output (CLI): ```bash -python get_benchmark_analysis_data.py generate_data \ - --startTime 2025-06-11T00:00:00 \ - --endTime 2025-06-17T18:00:00 +python3 .ci/scripts/benchmark_tooling/get_benchmark_analysis_data.py --startTime "2025-06-11T00:00:00" --endTime "2025-06-17T18:00:00" ``` -##### Options: +Additional options: - `--silent`: Hide processing logs, show only results - `--outputType df`: Display results in DataFrame format -- `--outputType print`: Display results in dictionary format -- `--outputType json --outputDir "/path/to/dir"`: Generate JSON file 'benchmark_results.json' -- `--outputType csv --outputDir "/path/to/dir"`: Generate CSV files in folders (`private` and `public`) - -#### Get Matching Lists +- `--outputType excel --outputDir "{YOUR_LOCAL_DIRECTORY}"`: Generate Excel file with multiple sheets (`res_private.xlsx` and `res_public.xlsx`) +- `--outputType csv --outputDir "{YOUR_LOCAL_DIRECTORY}"`: Generate CSV files in folders (`private` and `public`) -The `get_matching_list` command allows you to filter benchmark data based on specific criteria. - -##### Get All Matching Lists -```bash -python get_benchmark_analysis_data.py get_matching_list \ - --startTime 2025-06-11T00:00:00 \ - --endTime 2025-06-17T00:00:00 \ - --category all \ - --outputType json -``` -##### Get Private Device Matching Lists -```bash -python get_benchmark_analysis_data.py get_matching_list \ - --startTime 2025-06-11T00:00:00 \ - --endTime 2025-06-17T00:00:00 \ - --category private \ - --filter "include=private;" -``` - -##### Get Public Device Matching Lists -```bash -python get_benchmark_analysis_data.py get_matching_list \ - --startTime 2025-06-11T00:00:00 \ - --endTime 2025-06-17T00:00:00 \ - --category public \ - --filter "exclude=private;" -``` - -##### Advanced Filtering Examples -Filter for specific models and devices: -```bash -# Get all mv3 models on iPhone 15 except apple_iphone_15_plus -python get_benchmark_analysis_data.py get_matching_list \ - --startTime 2025-06-11T00:00:00 \ - --endTime 2025-06-17T00:00:00 \ - --category private_mv3_iphone5 \ - --filter "include=private,mv3,iphone_15;exclude=apple_iphone_15_plus" -``` - -Multiple filters (using union logic): -```bash -# Get both mv3 and resnet50 models on iPhone 15 except apple_iphone_15_plus -python get_benchmark_analysis_data.py get_matching_list \ - --startTime 2025-06-11T00:00:00 \ - --endTime 2025-06-17T00:00:00 \ - --category private_models_iphone15 \ - --filter "include=private,mv3,iphone_15;exclude=apple_iphone_15_plus" \ - --filter "include=private,resnet50,iphone_15;exclude=apple_iphone_15_plus" -``` - -##### Output Options -- `--outputType json --outputDir "/path/to/dir"`: Generate JSON file '{category}.json' - -#### Python API Usage +### Python API Usage To use the benchmark fetcher in your own scripts: ```python -from benchmark_tooling.get_benchmark_analysis_data import ExecutorchBenchmarkFetcher - -# Initialize the fetcher +import ExecutorchBenchmarkFetcher from benchmark_tooling.get_benchmark_analysis_data fetcher = ExecutorchBenchmarkFetcher() - -# Fetch data for a specific time range -fetcher.run( - "2025-06-11T00:00:00", - "2025-06-17T00:00:00", - private_device_matching_list, - public_device_matching_list -) - -# Get results as DataFrames -private_dfs, public_dfs = fetcher.toDataFrame() - -# Export results to Excel -fetcher.output_data(OutputType.CSV, (output_dir="./results") +# Must call run first +fetcher.run() +private, public = fetcher.to_df() ``` -### analyze_benchmark_stability.py - -This script analyzes the stability of benchmark data, comparing the results of private and public devices. +## analyze_benchmark_stability.py +`analyze_benchmark_stability.py` analyzes the stability of benchmark data, comparing the results of private and public devices. +### Quick Start +Install dependencies: ```bash -python analyze_benchmark_stability.py \ - "Benchmark Dataset with Private AWS Devices.xlsx" \ - --reference_file "Benchmark Dataset with Public AWS Devices.xlsx" +pip install -r requirements.txt +``` + +``` +python .ci/scripts/benchmark_tooling/analyze_benchmark_stability.py \ + Benchmark\ Dataset\ with\ Private\ AWS\ Devices.xlsx \ + --reference_file Benchmark\ Dataset\ with\ Public\ AWS\ Devices.xlsx ``` diff --git a/.ci/scripts/benchmark_tooling/all.json b/.ci/scripts/benchmark_tooling/all.json deleted file mode 100644 index 0efe56b7d42..00000000000 --- a/.ci/scripts/benchmark_tooling/all.json +++ /dev/null @@ -1,1778 +0,0 @@ -[ - [ - "allenai-olmo-1b-hf", - "hf-xnnpack-custom-spda-kv-cache-8da4w", - "apple-iphone-15-p...-mobile-job-ios", - "ios" - ], - [ - "allenai-olmo-1b-hf", - "hf-xnnpack-custom-spda-kv-cache-8da4w", - "apple-iphone-15-plus-private", - "ios-17.4.1" - ], - [ - "allenai-olmo-1b-hf", - "hf-xnnpack-custom-spda-kv-cache-8da4w", - "apple-iphone-15-plus", - "ios-17.4.1" - ], - [ - "allenai-olmo-1b-hf", - "hf-xnnpack-custom-spda-kv-cache-8da4w", - "apple-iphone-15-private", - "ios-18.0" - ], - [ - "allenai-olmo-1b-hf", - "hf-xnnpack-custom-spda-kv-cache-8da4w", - "apple-iphone-15-pro-max", - "ios-17.3.1" - ], - [ - "allenai-olmo-1b-hf", - "hf-xnnpack-custom-spda-kv-cache-8da4w", - "apple-iphone-15-pro-private", - "ios-18.4.1" - ], - [ - "allenai-olmo-1b-hf", - "hf-xnnpack-custom-spda-kv-cache-8da4w", - "apple-iphone-15-pro", - "ios-17.3.1" - ], - [ - "allenai-olmo-1b-hf", - "hf-xnnpack-custom-spda-kv-cache-8da4w", - "apple-iphone-15", - "ios-18.0" - ], - [ - "allenai-olmo-1b-hf", - "hf-xnnpack-custom-spda-kv-cache-8da4w", - "samsung-galaxy-s22-5g-private", - "android-13" - ], - [ - "allenai-olmo-1b-hf", - "hf-xnnpack-custom-spda-kv-cache-8da4w", - "samsung-galaxy-s22-5g", - "android-12" - ], - [ - "allenai-olmo-1b-hf", - "hf-xnnpack-custom-spda-kv-cache-8da4w", - "samsung-galaxy-s22-5g", - "android-13" - ], - [ - "allenai-olmo-1b-hf", - "hf-xnnpack-custom-spda-kv-cache-8da4w", - "samsung-galaxy-s22-ultra-5g-private", - "android-14" - ], - [ - "allenai-olmo-1b-hf", - "hf-xnnpack-custom-spda-kv-cache-8da4w", - "samsung-galaxy-s22-ultra-5g", - "android-12" - ], - [ - "edsr", - "coreml-fp16", - "apple-iphone-15-plus", - "ios-17.4.1" - ], - [ - "edsr", - "coreml-fp16", - "apple-iphone-15-pro-max", - "ios-17.3.1" - ], - [ - "edsr", - "coreml-fp16", - "apple-iphone-15-pro", - "ios-17.3.1" - ], - [ - "edsr", - "coreml-fp16", - "apple-iphone-15", - "ios-18.0" - ], - [ - "edsr", - "qnn-q8", - "samsung-galaxy-s22-5g", - "android-12" - ], - [ - "edsr", - "qnn-q8", - "samsung-galaxy-s22-5g", - "android-13" - ], - [ - "edsr", - "qnn-q8", - "samsung-galaxy-s22-ultra-5g", - "android-12" - ], - [ - "edsr", - "xnnpack-q8", - "apple-iphone-15-plus", - "ios-17.4.1" - ], - [ - "edsr", - "xnnpack-q8", - "apple-iphone-15-pro-max", - "ios-17.3.1" - ], - [ - "edsr", - "xnnpack-q8", - "apple-iphone-15-pro", - "ios-17.3.1" - ], - [ - "edsr", - "xnnpack-q8", - "apple-iphone-15", - "ios-18.0" - ], - [ - "edsr", - "xnnpack-q8", - "samsung-galaxy-s22-5g", - "android-12" - ], - [ - "edsr", - "xnnpack-q8", - "samsung-galaxy-s22-5g", - "android-13" - ], - [ - "edsr", - "xnnpack-q8", - "samsung-galaxy-s22-ultra-5g", - "android-12" - ], - [ - "google-gemma-3-1b-it", - "hf-xnnpack-custom-spda-kv-cache-8da4w", - "apple-iphone-15-plus", - "ios-17.4.1" - ], - [ - "google-gemma-3-1b-it", - "hf-xnnpack-custom-spda-kv-cache-8da4w", - "apple-iphone-15-pro-max", - "ios-17.3.1" - ], - [ - "google-gemma-3-1b-it", - "hf-xnnpack-custom-spda-kv-cache-8da4w", - "apple-iphone-15-pro", - "ios-17.3.1" - ], - [ - "google-gemma-3-1b-it", - "hf-xnnpack-custom-spda-kv-cache-8da4w", - "apple-iphone-15-pro", - "ios-18.4.1" - ], - [ - "google-gemma-3-1b-it", - "hf-xnnpack-custom-spda-kv-cache-8da4w", - "apple-iphone-15", - "ios-18.0" - ], - [ - "huggingfacetb-smollm2-135m", - "hf-xnnpack-custom-spda-kv-cache-8da4w", - "apple-iph...-mobile-job-ios", - "ios" - ], - [ - "huggingfacetb-smollm2-135m", - "hf-xnnpack-custom-spda-kv-cache-8da4w", - "apple-iphone-15-plus-private", - "ios-17.4.1" - ], - [ - "huggingfacetb-smollm2-135m", - "hf-xnnpack-custom-spda-kv-cache-8da4w", - "apple-iphone-15-plus", - "ios-17.4.1" - ], - [ - "huggingfacetb-smollm2-135m", - "hf-xnnpack-custom-spda-kv-cache-8da4w", - "apple-iphone-15-private", - "ios-18.0" - ], - [ - "huggingfacetb-smollm2-135m", - "hf-xnnpack-custom-spda-kv-cache-8da4w", - "apple-iphone-15-pro-max", - "ios-17.3.1" - ], - [ - "huggingfacetb-smollm2-135m", - "hf-xnnpack-custom-spda-kv-cache-8da4w", - "apple-iphone-15-pro-private", - "ios-18.4.1" - ], - [ - "huggingfacetb-smollm2-135m", - "hf-xnnpack-custom-spda-kv-cache-8da4w", - "apple-iphone-15-pro", - "ios-17.3.1" - ], - [ - "huggingfacetb-smollm2-135m", - "hf-xnnpack-custom-spda-kv-cache-8da4w", - "apple-iphone-15", - "ios-18.0" - ], - [ - "huggingfacetb-smollm2-135m", - "hf-xnnpack-custom-spda-kv-cache-8da4w", - "samsung-galaxy-s22-5g-private", - "android-13" - ], - [ - "huggingfacetb-smollm2-135m", - "hf-xnnpack-custom-spda-kv-cache-8da4w", - "samsung-galaxy-s22-5g", - "android-12" - ], - [ - "huggingfacetb-smollm2-135m", - "hf-xnnpack-custom-spda-kv-cache-8da4w", - "samsung-galaxy-s22-5g", - "android-13" - ], - [ - "huggingfacetb-smollm2-135m", - "hf-xnnpack-custom-spda-kv-cache-8da4w", - "samsung-galaxy-s22-ultra-5g-private", - "android-14" - ], - [ - "huggingfacetb-smollm2-135m", - "hf-xnnpack-custom-spda-kv-cache-8da4w", - "samsung-galaxy-s22-ultra-5g", - "android-12" - ], - [ - "huggingfacetb-smollm2-135m", - "hf-xnnpack-custom-spda-kv-cache-8da4w", - "samsung-galaxy-s22-ultra-5g", - "android-14" - ], - [ - "ic3", - "coreml-fp16", - "apple-iphone-15-plus", - "ios-17.4.1" - ], - [ - "ic3", - "coreml-fp16", - "apple-iphone-15-pro-max", - "ios-17.3.1" - ], - [ - "ic3", - "coreml-fp16", - "apple-iphone-15-pro", - "ios-17.3.1" - ], - [ - "ic3", - "coreml-fp16", - "apple-iphone-15", - "ios-18.0" - ], - [ - "ic3", - "mps", - "apple-iphone-15-plus", - "ios-17.4.1" - ], - [ - "ic3", - "mps", - "apple-iphone-15-pro-max", - "ios-17.3.1" - ], - [ - "ic3", - "mps", - "apple-iphone-15-pro", - "ios-17.3.1" - ], - [ - "ic3", - "mps", - "apple-iphone-15", - "ios-18.0" - ], - [ - "ic3", - "qnn-q8", - "samsung-galaxy-s22-5g", - "android-12" - ], - [ - "ic3", - "qnn-q8", - "samsung-galaxy-s22-5g", - "android-13" - ], - [ - "ic3", - "qnn-q8", - "samsung-galaxy-s22-ultra-5g", - "android-12" - ], - [ - "ic3", - "xnnpack-q8", - "apple-iphone-15-plus", - "ios-17.4.1" - ], - [ - "ic3", - "xnnpack-q8", - "apple-iphone-15-pro-max", - "ios-17.3.1" - ], - [ - "ic3", - "xnnpack-q8", - "apple-iphone-15-pro", - "ios-17.3.1" - ], - [ - "ic3", - "xnnpack-q8", - "apple-iphone-15", - "ios-18.0" - ], - [ - "ic3", - "xnnpack-q8", - "samsung-galaxy-s22-5g", - "android-12" - ], - [ - "ic3", - "xnnpack-q8", - "samsung-galaxy-s22-5g", - "android-13" - ], - [ - "ic3", - "xnnpack-q8", - "samsung-galaxy-s22-ultra-5g", - "android-12" - ], - [ - "ic4", - "coreml-fp16", - "apple-iphone-15-plus", - "ios-17.4.1" - ], - [ - "ic4", - "coreml-fp16", - "apple-iphone-15-pro-max", - "ios-17.3.1" - ], - [ - "ic4", - "coreml-fp16", - "apple-iphone-15-pro", - "ios-17.3.1" - ], - [ - "ic4", - "coreml-fp16", - "apple-iphone-15", - "ios-18.0" - ], - [ - "ic4", - "mps", - "apple-iphone-15-plus", - "ios-17.4.1" - ], - [ - "ic4", - "mps", - "apple-iphone-15-pro-max", - "ios-17.3.1" - ], - [ - "ic4", - "mps", - "apple-iphone-15-pro", - "ios-17.3.1" - ], - [ - "ic4", - "mps", - "apple-iphone-15", - "ios-18.0" - ], - [ - "ic4", - "qnn-q8", - "samsung-galaxy-s22-5g", - "android-12" - ], - [ - "ic4", - "qnn-q8", - "samsung-galaxy-s22-5g", - "android-13" - ], - [ - "ic4", - "qnn-q8", - "samsung-galaxy-s22-ultra-5g", - "android-12" - ], - [ - "ic4", - "xnnpack-q8", - "apple-iphone-15-plus", - "ios-17.4.1" - ], - [ - "ic4", - "xnnpack-q8", - "apple-iphone-15-pro-max", - "ios-17.3.1" - ], - [ - "ic4", - "xnnpack-q8", - "apple-iphone-15-pro", - "ios-17.3.1" - ], - [ - "ic4", - "xnnpack-q8", - "apple-iphone-15", - "ios-18.0" - ], - [ - "ic4", - "xnnpack-q8", - "samsung-galaxy-s22-5g", - "android-12" - ], - [ - "ic4", - "xnnpack-q8", - "samsung-galaxy-s22-5g", - "android-13" - ], - [ - "ic4", - "xnnpack-q8", - "samsung-galaxy-s22-ultra-5g", - "android-12" - ], - [ - "llama", - "coreml-fp16", - "apple-iphone-15-plus", - "ios-17.4.1" - ], - [ - "llama", - "coreml-fp16", - "apple-iphone-15-pro-max", - "ios-17.3.1" - ], - [ - "llama", - "coreml-fp16", - "apple-iphone-15-pro", - "ios-17.3.1" - ], - [ - "llama", - "coreml-fp16", - "apple-iphone-15", - "ios" - ], - [ - "llama", - "coreml-fp16", - "apple-iphone-15", - "ios-18.0" - ], - [ - "llama", - "qnn-q8", - "samsung-galaxy-s22-5g", - "android-12" - ], - [ - "llama", - "qnn-q8", - "samsung-galaxy-s22-5g", - "android-13" - ], - [ - "llama", - "qnn-q8", - "samsung-galaxy-s22-ultra-5g", - "android-12" - ], - [ - "llama", - "xnnpack-q8", - "apple-iphone-15-plus", - "ios-17.4.1" - ], - [ - "llama", - "xnnpack-q8", - "apple-iphone-15-pro-max", - "ios-17.3.1" - ], - [ - "llama", - "xnnpack-q8", - "apple-iphone-15-pro", - "ios-17.3.1" - ], - [ - "llama", - "xnnpack-q8", - "apple-iphone-15", - "ios" - ], - [ - "llama", - "xnnpack-q8", - "apple-iphone-15", - "ios-18.0" - ], - [ - "llama", - "xnnpack-q8", - "samsung-galaxy-s22-5g", - "android-12" - ], - [ - "llama", - "xnnpack-q8", - "samsung-galaxy-s22-5g", - "android-13" - ], - [ - "llama", - "xnnpack-q8", - "samsung-galaxy-s22-ultra-5g", - "android-12" - ], - [ - "meta-llama-llama-3.2-1b-instruct-qlora-int4-eo8", - "llama3-qlora", - "apple-iphone-...-mobile-job-ios", - "ios" - ], - [ - "meta-llama-llama-3.2-1b-instruct-qlora-int4-eo8", - "llama3-qlora", - "apple-iphone-15-plus-private", - "ios-17.4.1" - ], - [ - "meta-llama-llama-3.2-1b-instruct-qlora-int4-eo8", - "llama3-qlora", - "apple-iphone-15-plus", - "ios-17.4.1" - ], - [ - "meta-llama-llama-3.2-1b-instruct-qlora-int4-eo8", - "llama3-qlora", - "apple-iphone-15-private", - "ios-18.0" - ], - [ - "meta-llama-llama-3.2-1b-instruct-qlora-int4-eo8", - "llama3-qlora", - "apple-iphone-15-pro-max", - "ios-17.3.1" - ], - [ - "meta-llama-llama-3.2-1b-instruct-qlora-int4-eo8", - "llama3-qlora", - "apple-iphone-15-pro-private", - "ios-18.4.1" - ], - [ - "meta-llama-llama-3.2-1b-instruct-qlora-int4-eo8", - "llama3-qlora", - "apple-iphone-15-pro", - "ios-17.3.1" - ], - [ - "meta-llama-llama-3.2-1b-instruct-qlora-int4-eo8", - "llama3-qlora", - "apple-iphone-15", - "ios-18.0" - ], - [ - "meta-llama-llama-3.2-1b-instruct-qlora-int4-eo8", - "llama3-qlora", - "samsung-galaxy-s22-5g-private", - "android-13" - ], - [ - "meta-llama-llama-3.2-1b-instruct-qlora-int4-eo8", - "llama3-qlora", - "samsung-galaxy-s22-5g", - "android-12" - ], - [ - "meta-llama-llama-3.2-1b-instruct-qlora-int4-eo8", - "llama3-qlora", - "samsung-galaxy-s22-5g", - "android-13" - ], - [ - "meta-llama-llama-3.2-1b-instruct-qlora-int4-eo8", - "llama3-qlora", - "samsung-galaxy-s22-ultra-5g-private", - "android-14" - ], - [ - "meta-llama-llama-3.2-1b-instruct-qlora-int4-eo8", - "llama3-qlora", - "samsung-galaxy-s22-ultra-5g", - "android-12" - ], - [ - "meta-llama-llama-3.2-1b-instruct-spinquant-int4-eo8", - "llama3-spinquant", - "apple-iphone-15-plus-private", - "ios-17.4.1" - ], - [ - "meta-llama-llama-3.2-1b-instruct-spinquant-int4-eo8", - "llama3-spinquant", - "apple-iphone-15-plus", - "ios-17.4.1" - ], - [ - "meta-llama-llama-3.2-1b-instruct-spinquant-int4-eo8", - "llama3-spinquant", - "apple-iphone-15-private", - "ios-18.0" - ], - [ - "meta-llama-llama-3.2-1b-instruct-spinquant-int4-eo8", - "llama3-spinquant", - "apple-iphone-15-pro-max", - "ios-17.3.1" - ], - [ - "meta-llama-llama-3.2-1b-instruct-spinquant-int4-eo8", - "llama3-spinquant", - "apple-iphone-15-pro-private", - "ios-18.4.1" - ], - [ - "meta-llama-llama-3.2-1b-instruct-spinquant-int4-eo8", - "llama3-spinquant", - "apple-iphone-15-pro", - "ios-17.3.1" - ], - [ - "meta-llama-llama-3.2-1b-instruct-spinquant-int4-eo8", - "llama3-spinquant", - "apple-iphone-15", - "ios-18.0" - ], - [ - "meta-llama-llama-3.2-1b-instruct-spinquant-int4-eo8", - "llama3-spinquant", - "apple...-mobile-job-ios", - "ios" - ], - [ - "meta-llama-llama-3.2-1b-instruct-spinquant-int4-eo8", - "llama3-spinquant", - "samsung-galaxy-s22-5g-private", - "android-13" - ], - [ - "meta-llama-llama-3.2-1b-instruct-spinquant-int4-eo8", - "llama3-spinquant", - "samsung-galaxy-s22-5g", - "android-12" - ], - [ - "meta-llama-llama-3.2-1b-instruct-spinquant-int4-eo8", - "llama3-spinquant", - "samsung-galaxy-s22-5g", - "android-13" - ], - [ - "meta-llama-llama-3.2-1b-instruct-spinquant-int4-eo8", - "llama3-spinquant", - "samsung-galaxy-s22-ultra-5g-private", - "android-14" - ], - [ - "meta-llama-llama-3.2-1b-instruct-spinquant-int4-eo8", - "llama3-spinquant", - "samsung-galaxy-s22-ultra-5g", - "android-12" - ], - [ - "meta-llama-llama-3.2-1b", - "et-xnnpack-custom-spda-kv-cache-8da4w", - "apple-iphone-15-plus-private", - "ios-17.4.1" - ], - [ - "meta-llama-llama-3.2-1b", - "et-xnnpack-custom-spda-kv-cache-8da4w", - "apple-iphone-15-plus", - "ios-17.4.1" - ], - [ - "meta-llama-llama-3.2-1b", - "et-xnnpack-custom-spda-kv-cache-8da4w", - "apple-iphone-15-private", - "ios-18.0" - ], - [ - "meta-llama-llama-3.2-1b", - "et-xnnpack-custom-spda-kv-cache-8da4w", - "apple-iphone-15-pro-max", - "ios-17.3.1" - ], - [ - "meta-llama-llama-3.2-1b", - "et-xnnpack-custom-spda-kv-cache-8da4w", - "apple-iphone-15-pro-private", - "ios-18.4.1" - ], - [ - "meta-llama-llama-3.2-1b", - "et-xnnpack-custom-spda-kv-cache-8da4w", - "apple-iphone-15-pro", - "ios-17.3.1" - ], - [ - "meta-llama-llama-3.2-1b", - "et-xnnpack-custom-spda-kv-cache-8da4w", - "apple-iphone-15", - "ios-18.0" - ], - [ - "meta-llama-llama-3.2-1b", - "et-xnnpack-custom-spda-kv-cache-8da4w", - "apple-iphone...-mobile-job-ios", - "ios" - ], - [ - "meta-llama-llama-3.2-1b", - "et-xnnpack-custom-spda-kv-cache-8da4w", - "samsung-galaxy-s22-5g-private", - "android-13" - ], - [ - "meta-llama-llama-3.2-1b", - "et-xnnpack-custom-spda-kv-cache-8da4w", - "samsung-galaxy-s22-5g", - "android-12" - ], - [ - "meta-llama-llama-3.2-1b", - "et-xnnpack-custom-spda-kv-cache-8da4w", - "samsung-galaxy-s22-5g", - "android-13" - ], - [ - "meta-llama-llama-3.2-1b", - "et-xnnpack-custom-spda-kv-cache-8da4w", - "samsung-galaxy-s22-ultra-5g-private", - "android-14" - ], - [ - "meta-llama-llama-3.2-1b", - "et-xnnpack-custom-spda-kv-cache-8da4w", - "samsung-galaxy-s22-ultra-5g", - "android-12" - ], - [ - "meta-llama-llama-3.2-1b", - "et-xnnpack-custom-spda-kv-cache-8da4w", - "samsung-galaxy-s22-ultra-5g", - "android-14" - ], - [ - "meta-llama-llama-3.2-1b", - "hf-xnnpack-custom-spda-kv-cache-8da4w", - "apple-iphone-15-plus-private", - "ios-17.4.1" - ], - [ - "meta-llama-llama-3.2-1b", - "hf-xnnpack-custom-spda-kv-cache-8da4w", - "apple-iphone-15-plus", - "ios-17.4.1" - ], - [ - "meta-llama-llama-3.2-1b", - "hf-xnnpack-custom-spda-kv-cache-8da4w", - "apple-iphone-15-private", - "ios-18.0" - ], - [ - "meta-llama-llama-3.2-1b", - "hf-xnnpack-custom-spda-kv-cache-8da4w", - "apple-iphone-15-pro-max", - "ios-17.3.1" - ], - [ - "meta-llama-llama-3.2-1b", - "hf-xnnpack-custom-spda-kv-cache-8da4w", - "apple-iphone-15-pro-private", - "ios-18.4.1" - ], - [ - "meta-llama-llama-3.2-1b", - "hf-xnnpack-custom-spda-kv-cache-8da4w", - "apple-iphone-15-pro", - "ios-17.3.1" - ], - [ - "meta-llama-llama-3.2-1b", - "hf-xnnpack-custom-spda-kv-cache-8da4w", - "apple-iphone-15-pro", - "ios-18.4.1" - ], - [ - "meta-llama-llama-3.2-1b", - "hf-xnnpack-custom-spda-kv-cache-8da4w", - "apple-iphone-15", - "ios-18.0" - ], - [ - "meta-llama-llama-3.2-1b", - "hf-xnnpack-custom-spda-kv-cache-8da4w", - "apple-iphone...-mobile-job-ios", - "ios" - ], - [ - "meta-llama-llama-3.2-1b", - "hf-xnnpack-custom-spda-kv-cache-8da4w", - "samsung-gala...-mobile-job-android", - "android" - ], - [ - "meta-llama-llama-3.2-1b", - "hf-xnnpack-custom-spda-kv-cache-8da4w", - "samsung-galaxy-s22-5g-private", - "android-13" - ], - [ - "meta-llama-llama-3.2-1b", - "hf-xnnpack-custom-spda-kv-cache-8da4w", - "samsung-galaxy-s22-5g", - "android-12" - ], - [ - "meta-llama-llama-3.2-1b", - "hf-xnnpack-custom-spda-kv-cache-8da4w", - "samsung-galaxy-s22-5g", - "android-13" - ], - [ - "meta-llama-llama-3.2-1b", - "hf-xnnpack-custom-spda-kv-cache-8da4w", - "samsung-galaxy-s22-ultra-5g-private", - "android-14" - ], - [ - "meta-llama-llama-3.2-1b", - "hf-xnnpack-custom-spda-kv-cache-8da4w", - "samsung-galaxy-s22-ultra-5g", - "android-12" - ], - [ - "meta-llama-llama-3.2-1b", - "hf-xnnpack-custom-spda-kv-cache-8da4w", - "samsung-galaxy-s22-ultra-5g", - "android-14" - ], - [ - "meta-llama-llama-3.2-1b", - "llama3-coreml-ane", - "apple-iphone-15-pro", - "ios-18.1" - ], - [ - "meta-llama-llama-3.2-1b", - "llama3-coreml-ane", - "apple-iphone-15", - "ios-18.0" - ], - [ - "meta-llama-llama-3.2-1b", - "llama3-fb16", - "apple-iphone-15-plus-private", - "ios-17.4.1" - ], - [ - "meta-llama-llama-3.2-1b", - "llama3-fb16", - "apple-iphone-15-plus", - "ios-17.4.1" - ], - [ - "meta-llama-llama-3.2-1b", - "llama3-fb16", - "apple-iphone-15-private", - "ios" - ], - [ - "meta-llama-llama-3.2-1b", - "llama3-fb16", - "apple-iphone-15-private", - "ios-18.0" - ], - [ - "meta-llama-llama-3.2-1b", - "llama3-fb16", - "apple-iphone-15-pro-max", - "ios-17.3.1" - ], - [ - "meta-llama-llama-3.2-1b", - "llama3-fb16", - "apple-iphone-15-pro-private", - "ios-18.4.1" - ], - [ - "meta-llama-llama-3.2-1b", - "llama3-fb16", - "apple-iphone-15-pro", - "ios-17.3.1" - ], - [ - "meta-llama-llama-3.2-1b", - "llama3-fb16", - "apple-iphone-15", - "ios-18.0" - ], - [ - "meta-llama-llama-3.2-1b", - "llama3-fb16", - "samsung-galaxy-s22-5g", - "android-13" - ], - [ - "meta-llama-llama-3.2-1b", - "llama3-fb16", - "samsung-galaxy-s22-ultra-5g", - "android-14" - ], - [ - "mobilebert", - "coreml-fp16", - "apple-iphone-15-plus", - "ios-17.4.1" - ], - [ - "mobilebert", - "coreml-fp16", - "apple-iphone-15-pro-max", - "ios-17.3.1" - ], - [ - "mobilebert", - "coreml-fp16", - "apple-iphone-15-pro", - "ios-17.3.1" - ], - [ - "mobilebert", - "coreml-fp16", - "apple-iphone-15", - "ios-18.0" - ], - [ - "mobilebert", - "xnnpack-q8", - "apple-iphone-15-plus", - "ios-17.4.1" - ], - [ - "mobilebert", - "xnnpack-q8", - "apple-iphone-15-pro-max", - "ios-17.3.1" - ], - [ - "mobilebert", - "xnnpack-q8", - "apple-iphone-15-pro", - "ios-17.3.1" - ], - [ - "mobilebert", - "xnnpack-q8", - "apple-iphone-15", - "ios-18.0" - ], - [ - "mobilebert", - "xnnpack-q8", - "samsung-galaxy-s22-5g", - "android-12" - ], - [ - "mobilebert", - "xnnpack-q8", - "samsung-galaxy-s22-5g", - "android-13" - ], - [ - "mobilebert", - "xnnpack-q8", - "samsung-galaxy-s22-ultra-5g", - "android-12" - ], - [ - "mv2", - "coreml-fp16", - "apple-iphone-15-plus", - "ios-17.4.1" - ], - [ - "mv2", - "coreml-fp16", - "apple-iphone-15-pro-max", - "ios-17.3.1" - ], - [ - "mv2", - "coreml-fp16", - "apple-iphone-15-pro", - "ios-17.3.1" - ], - [ - "mv2", - "coreml-fp16", - "apple-iphone-15", - "ios-18.0" - ], - [ - "mv2", - "mps", - "apple-iphone-15-plus", - "ios-17.4.1" - ], - [ - "mv2", - "mps", - "apple-iphone-15-pro-max", - "ios-17.3.1" - ], - [ - "mv2", - "mps", - "apple-iphone-15-pro", - "ios-17.3.1" - ], - [ - "mv2", - "mps", - "apple-iphone-15", - "ios-18.0" - ], - [ - "mv2", - "qnn-q8", - "samsung-galaxy-s22-5g", - "android-12" - ], - [ - "mv2", - "qnn-q8", - "samsung-galaxy-s22-5g", - "android-13" - ], - [ - "mv2", - "qnn-q8", - "samsung-galaxy-s22-ultra-5g", - "android-12" - ], - [ - "mv2", - "xnnpack-q8", - "apple-iphone-15-plus", - "ios-17.4.1" - ], - [ - "mv2", - "xnnpack-q8", - "apple-iphone-15-pro-max", - "ios-17.3.1" - ], - [ - "mv2", - "xnnpack-q8", - "apple-iphone-15-pro", - "ios-17.3.1" - ], - [ - "mv2", - "xnnpack-q8", - "apple-iphone-15", - "ios-18.0" - ], - [ - "mv2", - "xnnpack-q8", - "samsung-galaxy-s22-5g", - "android-12" - ], - [ - "mv2", - "xnnpack-q8", - "samsung-galaxy-s22-5g", - "android-13" - ], - [ - "mv2", - "xnnpack-q8", - "samsung-galaxy-s22-ultra-5g", - "android-12" - ], - [ - "mv3", - "coreml-fp16", - "apple-iphone-15-plus-private", - "ios-17.4.1" - ], - [ - "mv3", - "coreml-fp16", - "apple-iphone-15-plus", - "ios-17.4.1" - ], - [ - "mv3", - "coreml-fp16", - "apple-iphone-15-private", - "ios" - ], - [ - "mv3", - "coreml-fp16", - "apple-iphone-15-private", - "ios-18.0" - ], - [ - "mv3", - "coreml-fp16", - "apple-iphone-15-pro-max", - "ios-17.3.1" - ], - [ - "mv3", - "coreml-fp16", - "apple-iphone-15-pro-private", - "ios-18.4.1" - ], - [ - "mv3", - "coreml-fp16", - "apple-iphone-15-pro", - "ios-17.3.1" - ], - [ - "mv3", - "coreml-fp16", - "apple-iphone-15", - "ios-18.0" - ], - [ - "mv3", - "mps", - "apple-iphone-15-plus-private", - "ios-17.4.1" - ], - [ - "mv3", - "mps", - "apple-iphone-15-plus", - "ios-17.4.1" - ], - [ - "mv3", - "mps", - "apple-iphone-15-private", - "ios" - ], - [ - "mv3", - "mps", - "apple-iphone-15-private", - "ios-18.0" - ], - [ - "mv3", - "mps", - "apple-iphone-15-pro-max", - "ios-17.3.1" - ], - [ - "mv3", - "mps", - "apple-iphone-15-pro-private", - "ios-18.4.1" - ], - [ - "mv3", - "mps", - "apple-iphone-15-pro", - "ios-17.3.1" - ], - [ - "mv3", - "mps", - "apple-iphone-15-pro", - "ios-18.4.1" - ], - [ - "mv3", - "mps", - "apple-iphone-15", - "ios-18.0" - ], - [ - "mv3", - "qnn-q8", - "samsung-galaxy-s22-5g-private", - "android-13" - ], - [ - "mv3", - "qnn-q8", - "samsung-galaxy-s22-5g", - "android-12" - ], - [ - "mv3", - "qnn-q8", - "samsung-galaxy-s22-5g", - "android-13" - ], - [ - "mv3", - "qnn-q8", - "samsung-galaxy-s22-ultra-5g-private", - "android-14" - ], - [ - "mv3", - "qnn-q8", - "samsung-galaxy-s22-ultra-5g", - "android-12" - ], - [ - "mv3", - "xnnpack-q8", - "apple-iphone-15-plus-private", - "ios-17.4.1" - ], - [ - "mv3", - "xnnpack-q8", - "apple-iphone-15-plus", - "ios-17.4.1" - ], - [ - "mv3", - "xnnpack-q8", - "apple-iphone-15-private", - "ios" - ], - [ - "mv3", - "xnnpack-q8", - "apple-iphone-15-private", - "ios-18.0" - ], - [ - "mv3", - "xnnpack-q8", - "apple-iphone-15-pro-max", - "ios-17.3.1" - ], - [ - "mv3", - "xnnpack-q8", - "apple-iphone-15-pro-private", - "ios-18.4.1" - ], - [ - "mv3", - "xnnpack-q8", - "apple-iphone-15-pro", - "ios-17.3.1" - ], - [ - "mv3", - "xnnpack-q8", - "apple-iphone-15", - "ios-18.0" - ], - [ - "mv3", - "xnnpack-q8", - "samsung-galaxy-s22-5g-private", - "android-13" - ], - [ - "mv3", - "xnnpack-q8", - "samsung-galaxy-s22-5g", - "android-12" - ], - [ - "mv3", - "xnnpack-q8", - "samsung-galaxy-s22-5g", - "android-13" - ], - [ - "mv3", - "xnnpack-q8", - "samsung-galaxy-s22-ultra-5g-private", - "android-14" - ], - [ - "mv3", - "xnnpack-q8", - "samsung-galaxy-s22-ultra-5g", - "android-12" - ], - [ - "qwen-qwen3-0.6b", - "et-xnnpack-custom-spda-kv-cache-8da4w", - "apple-iphone-15-plus-private", - "ios-17.4.1" - ], - [ - "qwen-qwen3-0.6b", - "et-xnnpack-custom-spda-kv-cache-8da4w", - "apple-iphone-15-plus", - "ios-17.4.1" - ], - [ - "qwen-qwen3-0.6b", - "et-xnnpack-custom-spda-kv-cache-8da4w", - "apple-iphone-15-priv...-mobile-job-ios", - "ios" - ], - [ - "qwen-qwen3-0.6b", - "et-xnnpack-custom-spda-kv-cache-8da4w", - "apple-iphone-15-private", - "ios-18.0" - ], - [ - "qwen-qwen3-0.6b", - "et-xnnpack-custom-spda-kv-cache-8da4w", - "apple-iphone-15-pro-max", - "ios-17.3.1" - ], - [ - "qwen-qwen3-0.6b", - "et-xnnpack-custom-spda-kv-cache-8da4w", - "apple-iphone-15-pro-private", - "ios-18.4.1" - ], - [ - "qwen-qwen3-0.6b", - "et-xnnpack-custom-spda-kv-cache-8da4w", - "apple-iphone-15-pro", - "ios-17.3.1" - ], - [ - "qwen-qwen3-0.6b", - "et-xnnpack-custom-spda-kv-cache-8da4w", - "apple-iphone-15-pro", - "ios-18.4.1" - ], - [ - "qwen-qwen3-0.6b", - "et-xnnpack-custom-spda-kv-cache-8da4w", - "apple-iphone-15", - "ios" - ], - [ - "qwen-qwen3-0.6b", - "et-xnnpack-custom-spda-kv-cache-8da4w", - "apple-iphone-15", - "ios-18.0" - ], - [ - "qwen-qwen3-0.6b", - "et-xnnpack-custom-spda-kv-cache-8da4w", - "samsung-galaxy-s22-5g-private", - "android-13" - ], - [ - "qwen-qwen3-0.6b", - "et-xnnpack-custom-spda-kv-cache-8da4w", - "samsung-galaxy-s22-5g", - "android-12" - ], - [ - "qwen-qwen3-0.6b", - "et-xnnpack-custom-spda-kv-cache-8da4w", - "samsung-galaxy-s22-5g", - "android-13" - ], - [ - "qwen-qwen3-0.6b", - "et-xnnpack-custom-spda-kv-cache-8da4w", - "samsung-galaxy-s22-p...-mobile-job-android", - "android" - ], - [ - "qwen-qwen3-0.6b", - "et-xnnpack-custom-spda-kv-cache-8da4w", - "samsung-galaxy-s22-ultra-5g-private", - "android-14" - ], - [ - "qwen-qwen3-0.6b", - "et-xnnpack-custom-spda-kv-cache-8da4w", - "samsung-galaxy-s22-ultra-5g", - "android-12" - ], - [ - "qwen-qwen3-0.6b", - "et-xnnpack-custom-spda-kv-cache-8da4w", - "samsung-galaxy-s22-ultra-5g", - "android-14" - ], - [ - "qwen-qwen3-0.6b", - "et-xnnpack-custom-spda-kv-cache-8da4w", - "samsung-galaxy-s22", - "android" - ], - [ - "qwen-qwen3-0.6b", - "hf-xnnpack-custom-spda-kv-cache-8da4w", - "apple-iphone-15-plus-private", - "ios-17.4.1" - ], - [ - "qwen-qwen3-0.6b", - "hf-xnnpack-custom-spda-kv-cache-8da4w", - "apple-iphone-15-plus", - "ios-17.4.1" - ], - [ - "qwen-qwen3-0.6b", - "hf-xnnpack-custom-spda-kv-cache-8da4w", - "apple-iphone-15-priv...-mobile-job-ios", - "ios" - ], - [ - "qwen-qwen3-0.6b", - "hf-xnnpack-custom-spda-kv-cache-8da4w", - "apple-iphone-15-private", - "ios-18.0" - ], - [ - "qwen-qwen3-0.6b", - "hf-xnnpack-custom-spda-kv-cache-8da4w", - "apple-iphone-15-pro-max", - "ios-17.3.1" - ], - [ - "qwen-qwen3-0.6b", - "hf-xnnpack-custom-spda-kv-cache-8da4w", - "apple-iphone-15-pro-private", - "ios-18.4.1" - ], - [ - "qwen-qwen3-0.6b", - "hf-xnnpack-custom-spda-kv-cache-8da4w", - "apple-iphone-15-pro", - "ios-17.3.1" - ], - [ - "qwen-qwen3-0.6b", - "hf-xnnpack-custom-spda-kv-cache-8da4w", - "apple-iphone-15-pro", - "ios-18.4.1" - ], - [ - "qwen-qwen3-0.6b", - "hf-xnnpack-custom-spda-kv-cache-8da4w", - "apple-iphone-15", - "ios" - ], - [ - "qwen-qwen3-0.6b", - "hf-xnnpack-custom-spda-kv-cache-8da4w", - "apple-iphone-15", - "ios-18.0" - ], - [ - "qwen-qwen3-0.6b", - "hf-xnnpack-custom-spda-kv-cache-8da4w", - "samsung-galaxy-s22-5g-private", - "android-13" - ], - [ - "qwen-qwen3-0.6b", - "hf-xnnpack-custom-spda-kv-cache-8da4w", - "samsung-galaxy-s22-5g", - "android-12" - ], - [ - "qwen-qwen3-0.6b", - "hf-xnnpack-custom-spda-kv-cache-8da4w", - "samsung-galaxy-s22-5g", - "android-13" - ], - [ - "qwen-qwen3-0.6b", - "hf-xnnpack-custom-spda-kv-cache-8da4w", - "samsung-galaxy-s22-p...-mobile-job-android", - "android" - ], - [ - "qwen-qwen3-0.6b", - "hf-xnnpack-custom-spda-kv-cache-8da4w", - "samsung-galaxy-s22-ultra-5g-private", - "android-14" - ], - [ - "qwen-qwen3-0.6b", - "hf-xnnpack-custom-spda-kv-cache-8da4w", - "samsung-galaxy-s22-ultra-5g", - "android-12" - ], - [ - "qwen-qwen3-0.6b", - "hf-xnnpack-custom-spda-kv-cache-8da4w", - "samsung-galaxy-s22-ultra-5g", - "android-14" - ], - [ - "qwen-qwen3-0.6b", - "hf-xnnpack-custom-spda-kv-cache-8da4w", - "samsung-galaxy-s22", - "android" - ], - [ - "resnet50", - "coreml-fp16", - "apple-iphone-15-plus", - "ios-17.4.1" - ], - [ - "resnet50", - "coreml-fp16", - "apple-iphone-15-pro-max", - "ios-17.3.1" - ], - [ - "resnet50", - "coreml-fp16", - "apple-iphone-15-pro", - "ios-17.3.1" - ], - [ - "resnet50", - "coreml-fp16", - "apple-iphone-15", - "ios-18.0" - ], - [ - "resnet50", - "mps", - "apple-iphone-15-plus", - "ios-17.4.1" - ], - [ - "resnet50", - "mps", - "apple-iphone-15-pro-max", - "ios-17.3.1" - ], - [ - "resnet50", - "mps", - "apple-iphone-15-pro", - "ios-17.3.1" - ], - [ - "resnet50", - "mps", - "apple-iphone-15", - "ios-18.0" - ], - [ - "resnet50", - "xnnpack-q8", - "apple-iphone-15-plus", - "ios-17.4.1" - ], - [ - "resnet50", - "xnnpack-q8", - "apple-iphone-15-pro-max", - "ios-17.3.1" - ], - [ - "resnet50", - "xnnpack-q8", - "apple-iphone-15-pro", - "ios-17.3.1" - ], - [ - "resnet50", - "xnnpack-q8", - "apple-iphone-15", - "ios-18.0" - ], - [ - "resnet50", - "xnnpack-q8", - "samsung-galaxy-s22-5g", - "android-12" - ], - [ - "resnet50", - "xnnpack-q8", - "samsung-galaxy-s22-5g", - "android-13" - ], - [ - "resnet50", - "xnnpack-q8", - "samsung-galaxy-s22-ultra-5g", - "android-12" - ], - [ - "w2l", - "coreml-fp16", - "apple-iphone-15-plus", - "ios-17.4.1" - ], - [ - "w2l", - "coreml-fp16", - "apple-iphone-15-pro-max", - "ios-17.3.1" - ], - [ - "w2l", - "coreml-fp16", - "apple-iphone-15-pro", - "ios-17.3.1" - ], - [ - "w2l", - "coreml-fp16", - "apple-iphone-15", - "ios-18.0" - ], - [ - "w2l", - "mps", - "apple-iphone-15-plus", - "ios-17.4.1" - ], - [ - "w2l", - "mps", - "apple-iphone-15-pro-max", - "ios-17.3.1" - ], - [ - "w2l", - "mps", - "apple-iphone-15-pro", - "ios-17.3.1" - ], - [ - "w2l", - "mps", - "apple-iphone-15", - "ios-18.0" - ], - [ - "w2l", - "xnnpack-q8", - "apple-iphone-15-plus", - "ios-17.4.1" - ], - [ - "w2l", - "xnnpack-q8", - "apple-iphone-15-pro-max", - "ios-17.3.1" - ], - [ - "w2l", - "xnnpack-q8", - "apple-iphone-15-pro", - "ios-17.3.1" - ], - [ - "w2l", - "xnnpack-q8", - "apple-iphone-15", - "ios-18.0" - ], - [ - "w2l", - "xnnpack-q8", - "samsung-galaxy-s22-5g", - "android-12" - ], - [ - "w2l", - "xnnpack-q8", - "samsung-galaxy-s22-5g", - "android-13" - ], - [ - "w2l", - "xnnpack-q8", - "samsung-galaxy-s22-ultra-5g", - "android-12" - ] -] \ No newline at end of file diff --git a/.ci/scripts/benchmark_tooling/get_benchmark_analysis_data.py b/.ci/scripts/benchmark_tooling/get_benchmark_analysis_data.py index 99eca91bc98..3be5e1c42ea 100644 --- a/.ci/scripts/benchmark_tooling/get_benchmark_analysis_data.py +++ b/.ci/scripts/benchmark_tooling/get_benchmark_analysis_data.py @@ -1,3 +1,12 @@ +""" +ExecutorchBenchmark Analysis Data Retrieval + +This module provides tools for fetching, processing, and analyzing benchmark data +from the HUD Open API for ExecutorchBenchmark. It supports filtering data by device +types (private and public), exporting results in various formats (JSON, DataFrame, Excel, CSV), +and customizing data retrieval parameters. +""" + import argparse from copy import deepcopy import json @@ -5,77 +14,26 @@ import os from dataclasses import dataclass from datetime import datetime -from re import A, L from typing import Any, Dict, List, Optional, Tuple import re - +from enum import Enum import pandas as pd import requests logging.basicConfig(level=logging.INFO) -# Default private_device_matching_list -DEFAULT_PRIVATE_MATCHING_LIST = [ - ["llama3", "qlora", "s22_5g", "android_13"], - ["llama3", "spinq", "s22_5g", "android_13"], - ["mv3", "qnn", "s22_5g", "android_13"], - ["mv3", "xnnpack_q8", "s22_5g", "android_13"], - ["llama3", "qlora", "s22_ultra_5g", "android_14"], - ["llama3", "spinq", "s22_ultra_5g", "android_14"], - ["mv3", "qnn", "s22_ultra_5g", "android_14"], - ["mv3", "xnnpack_q8", "s22_ultra_5g", "android_14"], - ["mv3", "xnnpack_q8", "pixel3_rooted", "android"], - ["llama3", "qlora", "iphone_15_pro_max", "ios_17"], - ["llama3", "spinq", "iphone_15_pro_max", "ios_17"], - ["mv3", "xnnpack_q8", "iphone_15_pro_max", "ios_17"], - ["mv3", "coreml", "iphone_15_pro_max", "ios_17"], - ["mv3", "mps", "iphone_15_pro_max", "ios_17"], - ["llama3", "qlora", "iphone_15", "ios_18.0"], - ["llama3", "spinq", "iphone_15", "ios_18.0"], - ["mv3", "xnnpack_q8", "iphone_15", "ios_18.0"], - ["mv3", "coreml", "iphone_15", "ios_18.0"], - ["mv3", "mps", "iphone_15", "ios_18.0"], -] - -# Default public_device_matching_list -DEFAULT_PUBLIC_MATCHING_LIST = [ - ["llama3", "qlora", "s22_5g", "android_13"], - ["llama3", "spinq", "s22_5g", "android_13"], - ["mv3", "qnn", "s22_5g", "android_13"], - ["mv3", "xnnpack_q8", "s22_5g", "android_13"], - ["llama3", "spinq", "s22_5g", "android_12"], - ["llama3", "qlora", "s22_ultra_5g", "android"], - ["llama3", "spinq", "s22_ultra_5g", "android_12"], - ["mv3", "xnnpack_q8", "s22_ultra_5g", "android_12"], - ["mv3", "qnn", "s22_ultra_5g", "android_12"], - ["llama3", "qlora", "iphone_15_pro_max", "ios_17"], - ["llama3", "spinq", "iphone_15_pro_max", "ios_17"], - ["mv3", "xnnpack_q8", "iphone_15_pro_max", "ios_17"], - ["mv3", "coreml", "iphone_15_pro_max", "ios_17"], - ["mv3", "mps", "iphone_15_pro_max", "ios_17"], - ["llama3", "qlora", "iphone_15", "ios_18.0"], - ["llama3", "spinq", "iphone_15", "ios_18.0"], - ["mv3", "xnnpack_q8", "iphone_15", "ios_18.0"], - ["mv3", "coreml", "iphone_15", "ios_18.0"], - ["mv3", "mps", "iphone_15", "ios_18.0"], -] - - -# The abbreviations used to generate the short name for the benchmark result table -# this is used to avoid the long table name issue when generating csv file (<=100 characters) -DEFAULT_ABBREVIATIONS = { - "samsung": "", - "galaxy": "", - "5g": "", - "private":"", - "xnnpackq8": "xnnq8", - "iphone15promax": "iphone15max", - "meta-llama/llama-3.2-1b": "llama3.2", -} - -from enum import Enum - class OutputType(Enum): + """ + Enumeration of supported output formats for benchmark data. + + Values: + EXCEL: Export data to Excel spreadsheets + PRINT: Print data to console (default) + CSV: Export data to CSV files + JSON: Export data to JSON files + DF: Return data as pandas DataFrames + """ + EXCEL = "excel" PRINT = "print" CSV = "csv" JSON = "json" @@ -83,6 +41,17 @@ class OutputType(Enum): @dataclass class BenchmarkQueryGroupDataParams: + """ + Parameters for querying benchmark data from HUD API. + + Attributes: + repo: Repository name (e.g., "pytorch/executorch") + benchmark_name: Name of the benchmark (e.g., "ExecuTorch") + start_time: ISO8601 formatted start time + end_time: ISO8601 formatted end time + group_table_by_fields: Fields to group tables by + group_row_by_fields: Fields to group rows by + """ repo: str benchmark_name: str start_time: str @@ -92,24 +61,27 @@ class BenchmarkQueryGroupDataParams: @dataclass class MatchingGroupResult: - category: str - keywords: list - data: list - + """ + Container for benchmark results grouped by category. -@dataclass -class MatchingGroupInput: + Attributes: + category: Category name (e.g., "private", "public") + data: List of benchmark data for this category + """ category: str - keywords: list - conditions: list + data: list BASE_URLS = { "local": "http://localhost:3000", "prod": "https://hud.pytorch.org", } - -def validate_iso8601_no_ms(value): +def validate_iso8601_no_ms(value: str): + """ + Validate that a string is in ISO8601 format without milliseconds. + Args: + value: String to validate (format: YYYY-MM-DDTHH:MM:SS) + """ try: return datetime.strptime(value, "%Y-%m-%dT%H:%M:%S").strftime( "%Y-%m-%dT%H:%M:%S" @@ -119,25 +91,19 @@ def validate_iso8601_no_ms(value): f"Invalid datetime format for '{value}'. Expected: YYYY-MM-DDTHH:MM:SS" ) -def parse_filter_group(value: str) -> dict: - include = [] - exclude = [] - parts = value.split(";") - for part in parts: - if part.startswith("include="): - include = part[len("include="):].split(",") - elif part.startswith("exclude="): - exclude = part[len("exclude="):].split(",") - - return {"include": include, "exclude": exclude} - class ExecutorchBenchmarkFetcher: """ Fetch and process benchmark data from HUD API for ExecutorchBenchmark. + This class provides methods to: + 1. Fetch benchmark data for a specified time range + 2. Process and categorize data into private and public device results + 3. Export results in various formats (JSON, DataFrame, Excel, CSV) + Usage: fetcher = ExecutorchBenchmarkFetcher() - fetcher.run(start_time, end_time, private_device_matching_list, public_device_matching_list) + fetcher.run(start_time, end_time) + fetcher.output_data(OutputType.EXCEL, output_dir="./results") """ def __init__( @@ -161,7 +127,7 @@ def __init__( self.query_group_table_by_fields = ( group_table_fields if group_table_fields - else ["model", "backend","device","arch"] + else ["model", "backend", "device", "arch"] ) self.query_group_row_by_fields = ( group_row_fields @@ -170,92 +136,126 @@ def __init__( ) self.data = None self.disable_logging = disable_logging - self.abbreviations = DEFAULT_ABBREVIATIONS - self.matching_groups: Dict[str, MatchingGroupResult]= {} - self.origin_mappings: Dict[str, Dict[str,Any]] = {} + self.matching_groups: Dict[str, MatchingGroupResult] = {} def add_abbreviations(self, abbreviations: Dict[str, str]): self.abbreviations = abbreviations - def generate_matching_list( + def run( self, start_time: str, end_time: str, - filter_groups: List[dict], - category: str = "unknown", - output_type: OutputType = OutputType.PRINT, - output_dir: str = "." - ): - filter_groups = filter_groups or [{"include": [], "exclude": []}] - o_type = self._to_output_type(output_type) - logging.info(f"filter_groups applied {filter_groups} with output_type {o_type}") - data = self._fetch_data(start_time, end_time) + ) -> Any: + data = self._fetch_execu_torch_data(start_time, end_time) if data is None: - logging.info("No data found") - return [] - results = [] - seen = set() + logging.warning("no data fetched from the HUD API") + return None + res = self._process(data) + self.data = res["data"] + private_list = res["private"] + public_list = self._filter_public_result(private_list, res["public"]) - for item in data: - name = item["table_name"] - group_info = item["info"] - matched = False - for group in filter_groups: - include = group.get("include", []) - exclude = group.get("exclude", []) - if include and not all(kw.lower() in name for kw in include): - continue - if exclude and any(kw.lower() in name for kw in exclude): - continue - matched = True - break # matched one group, no need to evaluate more - if matched: - key = tuple(group_info.get(k, "") for k in self.query_group_table_by_fields) - if key not in seen: - results.append([ - group_info[k] for k in self.query_group_table_by_fields - if k in group_info and group_info[k] - ]) - seen.add(key) - if o_type == OutputType.JSON: - self.generate_json_file(results, category, output_dir) - else: - logging.info("Print result") - logging.info(json.dumps(results, indent=2)) + # reset group + self.matching_groups = {} + self.matching_groups["private"] = MatchingGroupResult( + category="private", data=private_list + ) + self.matching_groups["public"] = MatchingGroupResult( + category="public", data=public_list + ) + return self.data - logging.info(f"generated {len(results)} matching list items") - return results + def _filter_public_result(self, private_list, public_list): + """ + Filter public device results to match private device configurations. + Finds the intersection of table names between private and public results + to ensure comparable data sets. - def run( - self, - start_time: str, - end_time: str, - matching_inputs: List[MatchingGroupInput] = [], - ) -> Any: - """ - Execute the benchmark data fetching and processing workflow. + Args: + private_list: List of benchmark results for private devices + public_list: List of benchmark results for public devices + + Returns: + Filtered list of public device results that match private device configurations """ - self.data = self._fetch_data(start_time, end_time) - # reset everything for generate the new output - self.matching_groups = {} - for matching_input in matching_inputs: - category = matching_input.category - keywords = matching_input.keywords - result = self.find_target_tables(keywords, matching_input.conditions) - self.matching_groups[category] = MatchingGroupResult(category, keywords, result) - return self.data + # find intersection betwen private and public tables. + common = list( + set([item["table_name"] for item in private_list]) + & set([item["table_name"] for item in public_list]) + ) + logging.info(f"common table name for both private and public {len(common)}") + filtered_public = [item for item in public_list if item["table_name"] in common] + return filtered_public def get_result(self): return deepcopy(self.to_dict()) + def to_excel(self, output_dir: str = ".") -> None: + """ + Export benchmark results to Excel files. + Creates two Excel files: + - res_private.xlsx: Results for private devices + - res_public.xlsx: Results for public devices + Each file contains multiple sheets, one per benchmark configuration for private and public. + Args: + output_dir: Directory to save Excel files + """ + for item in self.matching_groups.values(): + self._write_multi_sheet_excel(item.data, output_dir, item.category) + + def _write_multi_sheet_excel(self, data_list, output_dir, file_name): + if not os.path.exists(output_dir): + os.makedirs(output_dir) + logging.info(f"Created output directory: {output_dir}") + else: + logging.info(f"Using existing output directory: {output_dir}") + file = os.path.join(output_dir, f"{file_name}.xlsx") + with pd.ExcelWriter(file, engine="xlsxwriter") as writer: + workbook = writer.book + for idx, entry in enumerate(data_list): + sheet_name = f"table{idx+1}" + df = pd.DataFrame(entry.get("rows", [])) + + # Encode metadata as compact JSON string + meta = entry.get("groupInfo", {}) + json_str = json.dumps(meta, separators=(",", ":")) + + worksheet = workbook.add_worksheet(sheet_name) + writer.sheets[sheet_name] = worksheet + + # Write JSON into A1 + worksheet.write_string(0, 0, json_str) + + logging.info( + f"Wrting excel sheet to file {file} with sheet name {sheet_name} for {entry["table_name"]}" + ) + # Write DataFrame starting at row 2 (index 1) + df.to_excel(writer, sheet_name=sheet_name, startrow=1, index=False) + def output_data( - self, - output_type: OutputType = OutputType.PRINT, - output_dir: str = ".") -> Any: + self, output_type: OutputType = OutputType.PRINT, output_dir: str = "." + ) -> Any: + """ + Generate output in the specified format. + + Supports multiple output formats: + - PRINT: Print results to console + - JSON: Export to JSON files + - DF: Return as pandas DataFrames + - EXCEL: Export to Excel files + - CSV: Export to CSV files - logging.info(f"Generating output with type: {[category for category in self.matching_groups.keys()]}") + Args: + output_type: Format to output the data in + output_dir: Directory to save output files (for file-based formats) + Returns: + Benchmark results in the specified format + """ + logging.info( + f"Generating output with type: {[category for category in self.matching_groups.keys()]}" + ) o_type = self._to_output_type(output_type) if o_type == OutputType.PRINT: logging.info("\n ========= Generate print output ========= \n") @@ -269,6 +269,9 @@ def output_data( res = self.to_df() logging.info(res) return res + elif o_type == OutputType.EXCEL: + logging.info("\n ========= Generate excel output ========= \n") + self.to_excel(output_dir) elif o_type == OutputType.CSV: logging.info("\n ========= Generate csv output ========= \n") self.to_csv(output_dir) @@ -279,18 +282,40 @@ def _to_output_type(self, output_type: Any) -> OutputType: try: return OutputType(output_type.lower()) except ValueError: - logging.warning(f"Invalid output type string: {output_type}. Defaulting to PRINT") + logging.warning( + f"Invalid output type string: {output_type}. Defaulting to PRINT" + ) return OutputType.JSON elif isinstance(output_type, OutputType): return output_type logging.warning(f"Invalid output type: {output_type}. Defaulting to JSON") return OutputType.JSON - def to_json(self,output_dir: str = ".") -> Any: + def to_json(self, output_dir: str = ".") -> Any: + """ + Export benchmark results to a JSON file. + + Args: + output_dir: Directory to save the JSON file + + Returns: + Path to the generated JSON file + """ data = self.get_result() return self.generate_json_file(data, "benchmark_results", output_dir) - def generate_json_file(self,data,file_name, output_dir: str = "."): + def generate_json_file(self, data, file_name, output_dir: str = "."): + """ + Generate a JSON file from the provided data. + + Args: + data: Data to write to the JSON file + file_name: Name for the JSON file (without extension) + output_dir: Directory to save the JSON file + + Returns: + Path to the generated JSON file + """ if not os.path.exists(output_dir): os.makedirs(output_dir) logging.info(f"Created output directory: {output_dir}") @@ -301,7 +326,13 @@ def generate_json_file(self,data,file_name, output_dir: str = "."): json.dump(data, f, indent=2) return path - def to_dict(self)-> Any: + def to_dict(self) -> Any: + """ + Convert benchmark results to a dictionary. + + Returns: + Dictionary with categories as keys and benchmark data as values + """ result = {} for item in self.matching_groups.values(): result[item.category] = item.data @@ -311,19 +342,18 @@ def to_df(self) -> Any: """ Convert benchmark results to pandas DataFrames. - Transforms the raw benchmark results into DataFrames for easier analysis - and manipulation. + Creates a dictionary with categories as keys and lists of DataFrames as values. + Each DataFrame represents one benchmark configuration. Returns: - Tuple containing (private_device_dataframes, public_device_dataframes) - Each item is a list of dictionaries with 'info' and 'df' keys + Dictionary mapping categories to lists of DataFrames with metadata """ result = {} for item in self.matching_groups.values(): - result[item.category] =[ - {"info": item["info"], "df": pd.DataFrame(item["rows"])} - for item in item.data - ] + result[item.category] = [ + {"groupInfo": item["groupInfo"], "df": pd.DataFrame(item["rows"])} + for item in item.data + ] return result def to_csv(self, output_dir: str = ".") -> None: @@ -350,57 +380,25 @@ def to_csv(self, output_dir: str = ".") -> None: path = os.path.join(output_dir, item.category) self._write_multiple_csv_files(item.data, path) - def _write_multiple_csv_files( - self, data_list: List[Dict[str, Any]], output_dir: str, file_prefix="" - ) -> None: - """ - Write multiple benchmark results to separate CSV files. - Each entry in `data_list` becomes its own CSV file. - Args: - data_list: List of benchmark result dictionaries - output_dir: Directory to save the CSV files - """ + def _write_multiple_csv_files(self, data_list, output_dir, prefix=""): os.makedirs(output_dir, exist_ok=True) - logging.info( - f"\n ========= Generating multiple CSV files in {output_dir} ========= \n" - ) - for _, entry in enumerate(data_list): - table_name = entry.get("table_name","") - if not table_name: - continue - file_name = self.generate_short_name(table_name) - if file_prefix: - file_name = file_prefix+ '_' + file_name - file_path = os.path.join(output_dir, f"{file_name}.csv") - rows = entry.get("rows", []) - - if len(file_name) > 120: - logging.warning( - f"File path '{file_path}' is too long, this may cause csv failure" - ) - logging.info(f"\noriginal table name:{table_name}") - logging.info(f"Writing CSV to path(len({len(file_path)})): '{file_path}' with {len(rows)} rows") - df = pd.DataFrame(rows) - df.to_csv(file_path, index=False) - - def _fetch_data( - self, start_time: str, end_time: str - ) -> Optional[List[Dict[str, Any]]]: - """ - Fetch and process benchmark data for the specified time range. + for idx, entry in enumerate(data_list): + filename = f"{prefix}_table{idx+1}.csv" if prefix else f"table{idx+1}.csv" + file_path = os.path.join(output_dir, filename) - Args: - start_time: ISO8601 formatted start time - end_time: ISO8601 formatted end time + # Prepare DataFrame + df = pd.DataFrame(entry.get("rows", [])) - Returns: - Processed benchmark data or None if fetch failed - """ - data = self._fetch_execu_torch_data(start_time, end_time) - if data is None: - return None - self.data = self._process(data) - return self.data + # Prepare metadata JSON (e.g. groupInfo) + meta = entry.get("groupInfo", {}) + json_str = json.dumps(meta, separators=(",", ":")) + + logging.info(f"Wrting csv file to {file_path}") + + # Write metadata and data + with open(file_path, "w", encoding="utf-8", newline="") as f: + f.write(json_str + "\n") # First row: JSON metadata + df.to_csv(f, index=False) # Remaining rows: DataFrame rows def _get_base_url(self) -> str: """ @@ -433,38 +431,67 @@ def print_all_groups_info(self) -> None: logging.info(f" all {item.category} benchmark results") names = [] for row in item.data: - names.append({ - "table_name": row["table_name"], - "info": row["info"], - "counts": len(row["rows"]) - }) + names.append( + { + "table_name": row["table_name"], + "info": row["info"], + "counts": len(row["rows"]), + } + ) logging.info( - f"\n============ {item.category} benchmark results({len(names)})=================\n" + f"\n============ {item.category} benchmark results({len(names)})=================\n" ) for name in names: logging.info(json.dumps(name, indent=2)) def _generate_table_name(self, group_info: dict, fields: list[str]) -> str: name = "_".join( - self.normalize_string(group_info[k]) for k in fields if k in group_info and group_info[k] + self.normalize_string(group_info[k]) + for k in fields + if k in group_info and group_info[k] ) + if "(private)" in name: + name = name.replace("(private)", "") return name - def _process(self, data: List[Dict[str, Any]]) -> List[Dict[str, Any]]: + def simplify_ios(self, s: str) -> str: + return s.split(".")[0] + + def _generate_matching_name(self, group_info: dict, fields: list[str]) -> str: + info = deepcopy(group_info) + name = "_".join( + self.normalize_string(info[k]) for k in fields if k in info and info[k] + ) + if "(private)" in name: + name = name.replace("(private)", "") + # name = name +'(private)' + return name + + def _process(self, input_data: List[Dict[str, Any]]): """ Process raw benchmark data. This method: - 1. Normalizes string values in groupInfo - 2. Creates table_name from group info components - 3. Determines aws_type (public/private) based on device name + 1. Normalizes string values into new field info + 2. Creates table_name from info + 3. Determines aws_type (public/private) based on info.device 4. Sorts results by table_name Args: - data: Raw benchmark data from API - + input_data: Raw benchmark data from API Returns: Processed benchmark data """ + # filter data with arch equal exactly "",ios and android, this normally indicates it's job-level falure indicator + logging.info(f"fetched {len(input_data)} data from HUD") + data = [ + item + for item in input_data + if (arch := item.get("groupInfo", {}).get("arch")) is not None + and arch.lower() not in ("ios", "android") + ] + + private = [] + public = [] for item in data: # normalized string values groupInfo to info item["info"] = { @@ -473,18 +500,25 @@ def _process(self, data: List[Dict[str, Any]]) -> List[Dict[str, Any]]: if v is not None and isinstance(v, str) } group = item.get("info", {}) - name = self._generate_table_name(group, self.query_group_table_by_fields) # Add full name joined by the group key fields - item["table_name"] = name + item["table_name"] = self._generate_table_name( + group, self.query_group_table_by_fields + ) # Mark aws_type: private or public if group.get("device", "").find("private") != -1: item["info"]["aws_type"] = "private" + private.append(item) else: item["info"]["aws_type"] = "public" + public.append(item) data.sort(key=lambda x: x["table_name"]) - logging.info(f"fetched {len(data)} table views from HUD ") - return data + private.sort(key=lambda x: x["table_name"]) + public.sort(key=lambda x: x["table_name"]) + logging.info( + f"fetched clean data {len(data)}, private:{len(private)}, public:{len(public)}" + ) + return {"data": data, "private": private, "public": public} def _fetch_execu_torch_data(self, start_time, end_time): url = f"{self.base_url}/api/benchmark/group_data" @@ -505,160 +539,56 @@ def _fetch_execu_torch_data(self, start_time, end_time): logging.info(response.text) return None - def generate_short_name(self, name): - s = name - for full, abbr in self.abbreviations.items(): - s = s.replace(full, abbr) - s = re.sub(r"-{2,}", "-", s) - return s - - def _match_filter(self, item: dict, filter_str: str) -> bool: - """Evaluate whether `item` satisfies a dot-notated filter like 'group_info.aws_type=private'.""" - try: - key_path, expected = filter_str.split("=", 1) - keys = key_path.strip().split(".") - current = item - for k in keys: - current = current.get(k, {}) - return current == expected - except Exception as e: - logging.info(f"Failed to evaluate filter '{filter_str}': {e}") - return False - - def find_target_tables(self, keywords, conditions) -> List[Any]: - if not self.data: - logging.info("No data found, please call get_data() first") - return [] - matchings = [] - results = {} - for keyword_list in keywords: - norm_keywords = [self.normalize_string(kw) for kw in keyword_list] - match = [] - for item in self.data: - table_name = item.get("table_name", "") - if not table_name: - continue - if all(kw in table_name for kw in norm_keywords): - condition_meets = True - # for condition checks, any condition check fails with causes the item to be skipped to add to the category result - for condition in conditions: - condition_meets &= self._match_filter(item, condition) - if not condition_meets: - continue - match.append(table_name) - results[table_name] = item - matchings.append((norm_keywords, match)) - if not self.disable_logging: - logging.info( - f"\n============ MATCHING Found results: {len(results)}=========\n" - ) - for keywords, match in matchings: - logging.info(f"Keywords: {keywords} {len(match)} matchings: {match}") - return list(results.values()) - def normalize_string(self, s: str) -> str: s = s.lower().strip() - s = s.replace("(", "").replace(")", "") s = s.replace("_", "-") s = s.replace(" ", "-") - s = re.sub(r"[^\w\-.]", "-", s) + s = re.sub(r"[^\w\-\.\(\)]", "-", s) s = re.sub(r"-{2,}", "-", s) + s = s.replace("-(", "(").replace("(-", "(") + s = s.replace(")-", ")").replace("-)", ")") return s + def argparsers(): - parser = argparse.ArgumentParser(description="Multi-task runner") + parser = argparse.ArgumentParser(description="Benchmark Analysis Runner") - common_parser = argparse.ArgumentParser(add_help=False) - common_parser.add_argument( + # Required common args + parser.add_argument( "--startTime", type=validate_iso8601_no_ms, required=True, - help="Start time in ISO format (e.g. 2025-06-01T00:00:00)" + help="Start time, ISO format (e.g. 2025-06-01T00:00:00)", ) - common_parser.add_argument( + parser.add_argument( "--endTime", type=validate_iso8601_no_ms, required=True, - help="End time in ISO format (e.g. 2025-06-06T00:00:00)" + help="End time, ISO format (e.g. 2025-06-06T00:00:00)", ) - common_parser.add_argument( - "--env", choices=["local", "prod"], default="prod", help="Choose environment" + parser.add_argument( + "--env", choices=["local", "prod"], default="prod", help="Environment" ) - common_parser.add_argument( - "--silent", - action="store_true", - help="Disable all logging" + parser.add_argument( + "--silent", action="store_true", help="Disable logging" ) - subparsers = parser.add_subparsers(dest="command", required=True) - # generate_data - generate_data = subparsers.add_parser( - "generate_data", parents=[common_parser], help="generate data from HUD API" - ) - generate_data.add_argument("--outputType", choices=["json", "df", "csv", "print"], default="print") - generate_data.add_argument("--outputDir", default=".") - generate_data.add_argument("--includePrivate", default=True) - generate_data.add_argument("--includePublic", default=True) - generate_data.add_argument("--private-matching-json-path",default=None) - generate_data.add_argument("--public-matching-json-path",default=None) - - # fetch_list - fetch_list = subparsers.add_parser( - "get_matching_list", parents=[common_parser], help="Run fetch_matching_list") - fetch_list.add_argument("--filters", nargs="*", default=[]) - fetch_list.add_argument("--excludeFilters", nargs="*", default=[]) - fetch_list.add_argument("--category", required=True,help="Run fetch_matching_list to filter designed_list") - fetch_list.add_argument("--outputDir", default=".") - fetch_list.add_argument("--outputType", choices=["json", "print"], default="print") - fetch_list.add_argument("--filter",type=parse_filter_group,action="append", default=[],help="Filter group, e.g. 'include=iphone,metal;exclude=simulator'" + # Options for generate_data + parser.add_argument( + "--outputType", + choices=["json", "df", "csv", "print", "excel"], + default="print", + help="Output format (only for generate_data)", ) - + parser.add_argument("--outputDir", default=".", help="Output directory") return parser.parse_args() -def get_matching_list(args): - default_matching_inputs = [] - if args.includePrivate: - private_list = DEFAULT_PRIVATE_MATCHING_LIST - if args.private_matching_json_path: - with open(args.private_matching_json_path, "r") as f: - private_list = json.load(f) - default_matching_inputs.append( MatchingGroupInput( - category="private", - keywords=private_list, - conditions=[ - 'info.aws_type=private', - ]),) - if args.includePublic: - public_list = DEFAULT_PUBLIC_MATCHING_LIST - if args.public_matching_json_path: - with open(args.public_matching_json_path, "r") as f: - public_list = json.load(f) - default_matching_inputs.append(MatchingGroupInput( - category="public", - keywords= public_list, - conditions=[ - 'info.aws_type=public', - ])) - return default_matching_inputs if __name__ == "__main__": args = argparsers() fetcher = ExecutorchBenchmarkFetcher(args.env, args.silent) - if args.command == "generate_data": - default_matching_inputs = get_matching_list(args) - result = fetcher.run( - args.startTime, - args.endTime, - default_matching_inputs, - ) - fetcher.output_data(args.outputType, args.outputDir) - - elif args.command == "get_matching_list": - res = fetcher.generate_matching_list( - args.startTime, - args.endTime, - args.filter, - args.category, - args.outputType, - args.outputDir - ) + result = fetcher.run( + args.startTime, + args.endTime, + ) + fetcher.output_data(args.outputType, args.outputDir) From 03cff40fcd5cd4538892b14644a15d2d72cdcacf Mon Sep 17 00:00:00 2001 From: Yang Wang Date: Wed, 18 Jun 2025 06:45:49 -0700 Subject: [PATCH 20/46] final Signed-off-by: Yang Wang --- .ci/scripts/benchmark_tooling/README.md | 4 +- .../get_benchmark_analysis_data.py | 79 +- .../tests/test_get_benchmark_analysis_data.py | 677 ++++++++++++++++++ 3 files changed, 736 insertions(+), 24 deletions(-) create mode 100644 .ci/scripts/tests/test_get_benchmark_analysis_data.py diff --git a/.ci/scripts/benchmark_tooling/README.md b/.ci/scripts/benchmark_tooling/README.md index 869cc1a8301..2b1f25fe415 100644 --- a/.ci/scripts/benchmark_tooling/README.md +++ b/.ci/scripts/benchmark_tooling/README.md @@ -3,7 +3,8 @@ A library providing tools for benchmarking ExecutorchBenchmark data. ## Read Benchmark Data -`get_benchmark_analysis_data.py` fetches benchmark data from HUD Open API and processes it, grouping metrics by private and public devices. +`get_benchmark_analysis_data.py` fetches benchmark data from HUD Open API, clean the data that only contains FAILURE_REPORT column, +and get all private device metrics and associated public device metrics if any based on [model,backend,device,ios] ### Quick Start @@ -23,7 +24,6 @@ Additional options: - `--outputType excel --outputDir "{YOUR_LOCAL_DIRECTORY}"`: Generate Excel file with multiple sheets (`res_private.xlsx` and `res_public.xlsx`) - `--outputType csv --outputDir "{YOUR_LOCAL_DIRECTORY}"`: Generate CSV files in folders (`private` and `public`) - ### Python API Usage To use the benchmark fetcher in your own scripts: diff --git a/.ci/scripts/benchmark_tooling/get_benchmark_analysis_data.py b/.ci/scripts/benchmark_tooling/get_benchmark_analysis_data.py index 3be5e1c42ea..2b583fdc7ee 100644 --- a/.ci/scripts/benchmark_tooling/get_benchmark_analysis_data.py +++ b/.ci/scripts/benchmark_tooling/get_benchmark_analysis_data.py @@ -8,20 +8,22 @@ """ import argparse -from copy import deepcopy import json import logging import os +import re +from copy import deepcopy from dataclasses import dataclass from datetime import datetime -from typing import Any, Dict, List, Optional, Tuple -import re from enum import Enum +from typing import Any, Dict, List + import pandas as pd import requests logging.basicConfig(level=logging.INFO) + class OutputType(Enum): """ Enumeration of supported output formats for benchmark data. @@ -33,12 +35,14 @@ class OutputType(Enum): JSON: Export data to JSON files DF: Return data as pandas DataFrames """ + EXCEL = "excel" PRINT = "print" CSV = "csv" JSON = "json" DF = "df" + @dataclass class BenchmarkQueryGroupDataParams: """ @@ -52,6 +56,7 @@ class BenchmarkQueryGroupDataParams: group_table_by_fields: Fields to group tables by group_row_by_fields: Fields to group rows by """ + repo: str benchmark_name: str start_time: str @@ -59,6 +64,7 @@ class BenchmarkQueryGroupDataParams: group_table_by_fields: list group_row_by_fields: list + @dataclass class MatchingGroupResult: """ @@ -68,14 +74,17 @@ class MatchingGroupResult: category: Category name (e.g., "private", "public") data: List of benchmark data for this category """ + category: str data: list + BASE_URLS = { "local": "http://localhost:3000", "prod": "https://hud.pytorch.org", } + def validate_iso8601_no_ms(value: str): """ Validate that a string is in ISO8601 format without milliseconds. @@ -91,6 +100,7 @@ def validate_iso8601_no_ms(value: str): f"Invalid datetime format for '{value}'. Expected: YYYY-MM-DDTHH:MM:SS" ) + class ExecutorchBenchmarkFetcher: """ Fetch and process benchmark data from HUD API for ExecutorchBenchmark. @@ -145,14 +155,15 @@ def run( self, start_time: str, end_time: str, - ) -> Any: + ) -> None: data = self._fetch_execu_torch_data(start_time, end_time) if data is None: logging.warning("no data fetched from the HUD API") return None + res = self._process(data) - self.data = res["data"] - private_list = res["private"] + self.data = res.get("data", []) + private_list = res.get("private", []) public_list = self._filter_public_result(private_list, res["public"]) # reset group @@ -163,7 +174,23 @@ def run( self.matching_groups["public"] = MatchingGroupResult( category="public", data=public_list ) - return self.data + + def _filter_out_failure_only( + self, data_list: List[Dict[str, Any]] + ) -> List[Dict[str, Any]]: + """ + clean FAILURE_REPORT only metrics + """ + ONLY = {"workflow_id", "granularity_bucket", "job_id", "FAILURE_REPORT"} + for item in data_list: + filtered_rows = [ + row + for row in item.get("rows", []) + # Keep row only if it has additional fields beyond ONLY + if not set(row.keys()).issubset(ONLY) + ] + item["rows"] = filtered_rows + return [item for item in data_list if item.get("rows")] def _filter_public_result(self, private_list, public_list): """ @@ -184,7 +211,10 @@ def _filter_public_result(self, private_list, public_list): set([item["table_name"] for item in private_list]) & set([item["table_name"] for item in public_list]) ) - logging.info(f"common table name for both private and public {len(common)}") + logging.info( + f"Found {len(common)} table names existed in both private and public, use it to filter public tables:" + ) + logging.info(json.dumps(common, indent=1)) filtered_public = [item for item in public_list if item["table_name"] in common] return filtered_public @@ -253,9 +283,7 @@ def output_data( Returns: Benchmark results in the specified format """ - logging.info( - f"Generating output with type: {[category for category in self.matching_groups.keys()]}" - ) + logging.info(f"Generating output with type: {[self.matching_groups.keys()]}") o_type = self._to_output_type(output_type) if o_type == OutputType.PRINT: logging.info("\n ========= Generate print output ========= \n") @@ -351,7 +379,10 @@ def to_df(self) -> Any: result = {} for item in self.matching_groups.values(): result[item.category] = [ - {"groupInfo": item["groupInfo"], "df": pd.DataFrame(item["rows"])} + { + "groupInfo": item.get("groupInfo", {}), + "df": pd.DataFrame(item.get("rows", [])), + } for item in item.data ] return result @@ -472,7 +503,7 @@ def _process(self, input_data: List[Dict[str, Any]]): Process raw benchmark data. This method: - 1. Normalizes string values into new field info + 1. clean the data that generated by FAILURE_REPORT, 2. Creates table_name from info 3. Determines aws_type (public/private) based on info.device 4. Sorts results by table_name @@ -483,12 +514,7 @@ def _process(self, input_data: List[Dict[str, Any]]): """ # filter data with arch equal exactly "",ios and android, this normally indicates it's job-level falure indicator logging.info(f"fetched {len(input_data)} data from HUD") - data = [ - item - for item in input_data - if (arch := item.get("groupInfo", {}).get("arch")) is not None - and arch.lower() not in ("ios", "android") - ] + data = self._clean_data(input_data) private = [] public = [] @@ -520,6 +546,17 @@ def _process(self, input_data: List[Dict[str, Any]]): ) return {"data": data, "private": private, "public": public} + def _clean_data(self, data_list): + removed_gen_arch = [ + item + for item in data_list + if (arch := item.get("groupInfo", {}).get("arch")) is not None + and arch.lower() not in ("ios", "android") + ] + + data = self._filter_out_failure_only(removed_gen_arch) + return data + def _fetch_execu_torch_data(self, start_time, end_time): url = f"{self.base_url}/api/benchmark/group_data" params_object = BenchmarkQueryGroupDataParams( @@ -569,9 +606,7 @@ def argparsers(): parser.add_argument( "--env", choices=["local", "prod"], default="prod", help="Environment" ) - parser.add_argument( - "--silent", action="store_true", help="Disable logging" - ) + parser.add_argument("--silent", action="store_true", help="Disable logging") # Options for generate_data parser.add_argument( diff --git a/.ci/scripts/tests/test_get_benchmark_analysis_data.py b/.ci/scripts/tests/test_get_benchmark_analysis_data.py new file mode 100644 index 00000000000..d28e18c5fb8 --- /dev/null +++ b/.ci/scripts/tests/test_get_benchmark_analysis_data.py @@ -0,0 +1,677 @@ +import importlib.util +import os +import sys +import tempfile +import unittest +from unittest.mock import MagicMock, mock_open, patch + +import pandas as pd + + +class TestBenchmarkAnalysis(unittest.TestCase): + @classmethod + def setUpClass(cls): + script_path = os.path.join( + ".ci", "scripts", "benchmark_tooling", "get_benchmark_analysis_data.py" + ) + spec = importlib.util.spec_from_file_location( + "get_benchmark_analysis_data", script_path + ) + module = importlib.util.module_from_spec(spec) + sys.modules[spec.name] = module # Register before execution + spec.loader.exec_module(module) + cls.module = module + + """Test the validate_iso8601_no_ms function.""" + + def test_valid_iso8601(self): + """Test with valid ISO8601 format.""" + valid_date = "2025-06-01T00:00:00" + result = self.module.validate_iso8601_no_ms(valid_date) + self.assertEqual(result, valid_date) + + def test_invalid_iso8601(self): + """Test with invalid ISO8601 format.""" + invalid_dates = [ + "2025-06-01", # Missing time + "2025-06-01 00:00:00", # Space instead of T + "2025-06-01T00:00:00.000", # With milliseconds + "not-a-date", # Not a date at all + ] + for invalid_date in invalid_dates: + with self.subTest(invalid_date=invalid_date): + with self.assertRaises(self.module.argparse.ArgumentTypeError): + self.module.validate_iso8601_no_ms(invalid_date) + + def test_output_type_values(self): + """Test that OutputType has the expected values.""" + self.assertEqual(self.module.OutputType.EXCEL.value, "excel") + self.assertEqual(self.module.OutputType.PRINT.value, "print") + self.assertEqual(self.module.OutputType.CSV.value, "csv") + self.assertEqual(self.module.OutputType.JSON.value, "json") + self.assertEqual(self.module.OutputType.DF.value, "df") + + def setUp(self): + """Set up test fixtures.""" + self.maxDiff = None + + self.fetcher = self.module.ExecutorchBenchmarkFetcher( + env="prod", disable_logging=True + ) + + # Sample data for testing + self.sample_data_1 = [ + { + "groupInfo": { + "model": "llama3", + "backend": "qlora", + "device": "Iphone 15 pro max (private)", + "arch": "ios_17", + }, + "rows": [ + { + "workflow_id": 1, + "job_id": 1, + "granularity_bucket": "2025-06-15T15:00:00Z", + "metric_1": 2.0, + }, + { + "workflow_id": 2, + "job_id": 2, + "granularity_bucket": "2025-06-15T14:00:00Z", + "metric_1": 3.0, + }, + ], + }, + { + "groupInfo": { + "model": "mv3", + "backend": "xnnpack_q8", + "device": "s22_5g", + "arch": "android_13", + }, + "rows": [ + { + "workflow_id": 3, + "job_id": 3, + "granularity_bucket": "2025-06-15T17:00:00Z", + "metric_1": 2.0, + }, + { + "workflow_id": 4, + "job_id": 5, + "granularity_bucket": "2025-06-15T14:00:00Z", + "metric_1": 3.0, + }, + ], + }, + ] + + self.sample_data_2 = [ + { + "groupInfo": { + "model": "llama3", + "backend": "qlora", + "device": "Iphone 15 pro max (private)", + "arch": "ios_17.4.3", + }, + "rows": [ + { + "workflow_id": 1, + "job_id": 1, + "granularity_bucket": "2025-06-15T15:00:00Z", + "metric_1": 2.0, + }, + { + "workflow_id": 2, + "job_id": 2, + "granularity_bucket": "2025-06-15T14:00:00Z", + "metric_1": 3.0, + }, + ], + }, + { + "groupInfo": { + "model": "llama3", + "backend": "qlora", + "device": "Iphone 15 pro max", + "arch": "ios_17.4.3", + }, + "rows": [ + { + "workflow_id": 6, + "job_id": 6, + "granularity_bucket": "2025-06-15T17:00:00Z", + "metric_1": 1.0, + }, + { + "workflow_id": 8, + "job_id": 8, + "granularity_bucket": "2025-06-15T14:00:00Z", + "metric_1": 1.0, + }, + ], + }, + { + "groupInfo": { + "model": "mv3", + "backend": "xnnpack_q8", + "device": "s22_5g", + "arch": "android_13", + }, + "rows": [ + { + "workflow_id": 3, + "job_id": 3, + "granularity_bucket": "2025-06-15T17:00:00Z", + "metric_1": 2.0, + }, + { + "workflow_id": 4, + "job_id": 5, + "granularity_bucket": "2025-06-15T14:00:00Z", + "metric_1": 3.0, + }, + ], + }, + ] + + def test_init(self): + """Test initialization of ExecutorchBenchmarkFetcher.""" + self.assertEqual(self.fetcher.env, "prod") + self.assertEqual(self.fetcher.base_url, "https://hud.pytorch.org") + self.assertEqual( + self.fetcher.query_group_table_by_fields, + ["model", "backend", "device", "arch"], + ) + self.assertEqual( + self.fetcher.query_group_row_by_fields, + ["workflow_id", "job_id", "granularity_bucket"], + ) + self.assertTrue(self.fetcher.disable_logging) + self.assertEqual(self.fetcher.matching_groups, {}) + + def test_get_base_url(self): + """Test _get_base_url method.""" + self.assertEqual(self.fetcher._get_base_url(), "https://hud.pytorch.org") + + # Test with local environment + local_fetcher = self.module.ExecutorchBenchmarkFetcher(env="local") + self.assertEqual(local_fetcher._get_base_url(), "http://localhost:3000") + + def test_normalize_string(self): + """Test normalize_string method.""" + test_cases = [ + ("Test String", "test-string"), + ("test_string", "test-string"), + ("test string", "test-string"), + ("test--string", "test-string"), + ("test (private)", "test(private)"), + ("test@#$%^&*", "test-"), + ] + + for input_str, expected in test_cases: + with self.subTest(input_str=input_str): + result = self.fetcher.normalize_string(input_str) + self.assertEqual(result, expected) + + @patch("requests.get") + def test_fetch_execu_torch_data_success(self, mock_get): + """Test _fetch_execu_torch_data method with successful response.""" + mock_response = MagicMock() + mock_response.status_code = 200 + mock_response.json.return_value = self.sample_data_1 + mock_get.return_value = mock_response + + result = self.fetcher._fetch_execu_torch_data( + "2025-06-01T00:00:00", "2025-06-02T00:00:00" + ) + + self.assertEqual(result, self.sample_data_1) + mock_get.assert_called_once() + + @patch("requests.get") + def test_fetch_execu_torch_data_failure(self, mock_get): + """Test _fetch_execu_torch_data method with failed response.""" + mock_response = MagicMock() + mock_response.status_code = 404 + mock_response.text = "Not Found" + mock_get.return_value = mock_response + + result = self.fetcher._fetch_execu_torch_data( + "2025-06-01T00:00:00", "2025-06-02T00:00:00" + ) + + self.assertIsNone(result) + mock_get.assert_called_once() + + def test_filter_out_failure_only(self): + """Test _filter_out_failure_only method.""" + test_data = [ + { + "rows": [ + { + "workflow_id": 1, + "job_id": 2, + "granularity_bucket": 3, + "FAILURE_REPORT": "0", + }, + { + "workflow_id": 4, + "job_id": 5, + "granularity_bucket": 6, + "metric": 7.0, + }, + ] + }, + { + "rows": [ + { + "workflow_id": 8, + "job_id": 9, + "granularity_bucket": 10, + "metric": 11.0, + }, + ] + }, + { + "rows": [ + { + "workflow_id": 10, + "job_id": 12, + "granularity_bucket": 3, + "FAILURE_REPORT": "0", + }, + { + "workflow_id": 21, + "job_id": 15, + "granularity_bucket": 6, + "FAILURE_REPORT": "0", + }, + ] + }, + ] + + expected = [ + { + "rows": [ + { + "workflow_id": 4, + "job_id": 5, + "granularity_bucket": 6, + "metric": 7.0, + }, + ] + }, + { + "rows": [ + { + "workflow_id": 8, + "job_id": 9, + "granularity_bucket": 10, + "metric": 11.0, + }, + ] + }, + ] + + result = self.fetcher._filter_out_failure_only(test_data) + self.assertEqual(result, expected) + + def test_filter_public_result(self): + """Test _filter_public_result method.""" + private_list = [ + {"table_name": "model1_backend1"}, + {"table_name": "model2_backend2"}, + ] + + public_list = [ + {"table_name": "model1_backend1"}, + {"table_name": "model3_backend3"}, + ] + + expected = [{"table_name": "model1_backend1"}] + + result = self.fetcher._filter_public_result(private_list, public_list) + self.assertEqual(result, expected) + + @patch( + "get_benchmark_analysis_data.ExecutorchBenchmarkFetcher._fetch_execu_torch_data" + ) + def test_run_without_public_match(self, mock_fetch): + """Test run method.""" + # Setup mocks + mock_fetch.return_value = self.sample_data_1 + # Run the method + self.fetcher.run("2025-06-01T00:00:00", "2025-06-02T00:00:00") + result = self.fetcher.get_result() + + # Verify results + self.assertEqual(result, {"private": [self.sample_data_1[0]], "public": []}) + self.assertEqual(len(self.fetcher.matching_groups), 2) + self.assertIn("private", self.fetcher.matching_groups) + self.assertIn("public", self.fetcher.matching_groups) + + # Verify mocks were called + mock_fetch.assert_called_once_with("2025-06-01T00:00:00", "2025-06-02T00:00:00") + + @patch( + "get_benchmark_analysis_data.ExecutorchBenchmarkFetcher._fetch_execu_torch_data" + ) + def test_run_with_public_match(self, mock_fetch): + """Test run method.""" + # Setup mocks + mock_fetch.return_value = self.sample_data_2 + + # Run the method + self.fetcher.run("2025-06-01T00:00:00", "2025-06-02T00:00:00") + result = self.fetcher.get_result() + + # Verify results + self.assertEqual( + result, + {"private": [self.sample_data_2[0]], "public": [self.sample_data_2[1]]}, + ) + self.assertEqual(len(self.fetcher.matching_groups), 2) + self.assertIn("private", self.fetcher.matching_groups) + self.assertIn("public", self.fetcher.matching_groups) + # Verify mocks were called + mock_fetch.assert_called_once_with("2025-06-01T00:00:00", "2025-06-02T00:00:00") + + @patch( + "get_benchmark_analysis_data.ExecutorchBenchmarkFetcher._fetch_execu_torch_data" + ) + def test_run_with_failure_report(self, mock_fetch): + """Test run method.""" + # Setup mocks + mock_data = [ + { + "groupInfo": { + "model": "llama3", + "backend": "qlora", + "device": "Iphone 15 pro max (private)", + "arch": "ios_17.4.3", + }, + "rows": [ + { + "workflow_id": 1, + "job_id": 2, + "granularity_bucket": 3, + "FAILURE_REPORT": "0", + }, + { + "workflow_id": 4, + "job_id": 5, + "granularity_bucket": 6, + "metric": 7.0, + }, + ], + }, + { + "groupInfo": { + "model": "llama3", + "backend": "qlora", + "device": "Iphone 15 pro max", + "arch": "ios_17.4.3", + }, + "rows": [ + { + "workflow_id": 1, + "job_id": 2, + "granularity_bucket": 3, + "FAILURE_REPORT": "0", + }, + { + "workflow_id": 1, + "job_id": 2, + "granularity_bucket": 3, + "FAILURE_REPORT": "0", + }, + ], + }, + ] + + expected_private = { + "groupInfo": { + "model": "llama3", + "backend": "qlora", + "device": "Iphone 15 pro max (private)", + "arch": "ios_17.4.3", + }, + "info": { + "arch": "ios-17.4.3", + "aws_type": "private", + "backend": "qlora", + "device": "iphone-15-pro-max(private)", + "model": "llama3", + }, + "rows": [ + {"workflow_id": 4, "job_id": 5, "granularity_bucket": 6, "metric": 7.0}, + ], + "table_name": "llama3_qlora_iphone-15-pro-max_ios-17.4.3", + } + mock_fetch.return_value = mock_data + # Run the method + self.fetcher.run("2025-06-01T00:00:00", "2025-06-02T00:00:00") + result = self.fetcher.get_result() + # Verify results + self.assertEqual(result.get("private", []), [expected_private]) + self.assertEqual(len(self.fetcher.matching_groups), 2) + self.assertIn("private", self.fetcher.matching_groups) + self.assertIn("public", self.fetcher.matching_groups) + # Verify mocks were called + mock_fetch.assert_called_once_with("2025-06-01T00:00:00", "2025-06-02T00:00:00") + + @patch( + "get_benchmark_analysis_data.ExecutorchBenchmarkFetcher._fetch_execu_torch_data" + ) + def test_run_no_data(self, mock_fetch): + """Test run method when no data is fetched.""" + mock_fetch.return_value = None + + result = self.fetcher.run("2025-06-01T00:00:00", "2025-06-02T00:00:00") + + self.assertIsNone(result) + self.assertEqual(self.fetcher.matching_groups, {}) + mock_fetch.assert_called_once_with("2025-06-01T00:00:00", "2025-06-02T00:00:00") + + def test_to_dict(self): + """Test to_dict method.""" + # Setup test data + self.fetcher.matching_groups = { + "private": self.module.MatchingGroupResult( + category="private", data=[{"key": "private_value"}] + ), + "public": self.module.MatchingGroupResult( + category="public", data=[{"key": "public_value"}] + ), + } + + expected = { + "private": [{"key": "private_value"}], + "public": [{"key": "public_value"}], + } + + result = self.fetcher.to_dict() + self.assertEqual(result, expected) + + def test_to_df(self): + """Test to_df method.""" + # Setup test data + self.fetcher.matching_groups = { + "private": self.module.MatchingGroupResult( + category="private", + data=[{"groupInfo": {"model": "llama3"}, "rows": [{"metric1": 1.0}]}], + ), + } + + result = self.fetcher.to_df() + + self.assertIn("private", result) + self.assertEqual(len(result["private"]), 1) + self.assertIn("groupInfo", result["private"][0]) + self.assertIn("df", result["private"][0]) + self.assertIsInstance(result["private"][0]["df"], pd.DataFrame) + self.assertEqual(result["private"][0]["groupInfo"], {"model": "llama3"}) + + @patch("os.makedirs") + @patch("json.dump") + @patch("builtins.open", new_callable=mock_open) + def test_to_json(self, mock_file, mock_json_dump, mock_makedirs): + """Test to_json method.""" + # Setup test data + self.fetcher.matching_groups = { + "private": self.module.MatchingGroupResult( + category="private", data=[{"key": "value"}] + ), + } + + with tempfile.TemporaryDirectory() as temp_dir: + result = self.fetcher.to_json(temp_dir) + + # Check that the file path is returned + self.assertEqual(result, os.path.join(temp_dir, "benchmark_results.json")) + + # Check that the file was opened for writing + mock_file.assert_called_once_with( + os.path.join(temp_dir, "benchmark_results.json"), "w" + ) + + # Check that json.dump was called with the expected data + mock_json_dump.assert_called_once() + args, _ = mock_json_dump.call_args + self.assertEqual(args[0], {"private": [{"key": "value"}]}) + + @patch("pandas.DataFrame.to_excel") + @patch("pandas.ExcelWriter") + @patch("os.makedirs") + def test_to_excel(self, mock_makedirs, mock_excel_writer, mock_to_excel): + """Test to_excel method.""" + # Setup test data + self.fetcher.matching_groups = { + "private": self.module.MatchingGroupResult( + category="private", + data=[ + { + "groupInfo": {"model": "llama3"}, + "rows": [{"metric1": 1.0}], + "table_name": "llama3_table", + } + ], + ), + } + + # Mock the context manager for ExcelWriter + mock_writer = MagicMock() + mock_excel_writer.return_value.__enter__.return_value = mock_writer + mock_writer.book = MagicMock() + mock_writer.book.add_worksheet.return_value = MagicMock() + mock_writer.sheets = {} + + with tempfile.TemporaryDirectory() as temp_dir: + self.fetcher.to_excel(temp_dir) + + # Check that ExcelWriter was called with the expected path + mock_excel_writer.assert_called_once_with( + os.path.join(temp_dir, "private.xlsx"), engine="xlsxwriter" + ) + + # Check that to_excel was called + mock_to_excel.assert_called_once() + + @patch("os.makedirs") + @patch("builtins.open", new_callable=mock_open) + @patch("pandas.DataFrame.to_csv") + def test_to_csv(self, mock_to_csv, mock_file, mock_makedirs): + """Test to_csv method.""" + # Setup test data + self.fetcher.matching_groups = { + "private": self.module.MatchingGroupResult( + category="private", + data=[{"groupInfo": {"model": "llama3"}, "rows": [{"metric1": 1.0}]}], + ), + } + + with tempfile.TemporaryDirectory() as temp_dir: + self.fetcher.to_csv(temp_dir) + + # Check that the directory was created + mock_makedirs.assert_called() + + # Check that the file was opened for writing + mock_file.assert_called_once() + + # Check that to_csv was called + mock_to_csv.assert_called_once() + + def test_to_output_type(self): + """Test _to_output_type method.""" + # Test with string values + self.assertEqual( + self.fetcher._to_output_type("excel"), self.module.OutputType.EXCEL + ) + self.assertEqual( + self.fetcher._to_output_type("print"), self.module.OutputType.PRINT + ) + self.assertEqual( + self.fetcher._to_output_type("csv"), self.module.OutputType.CSV + ) + self.assertEqual( + self.fetcher._to_output_type("json"), self.module.OutputType.JSON + ) + self.assertEqual(self.fetcher._to_output_type("df"), self.module.OutputType.DF) + + # Test with enum values + self.assertEqual( + self.fetcher._to_output_type(self.module.OutputType.EXCEL), + self.module.OutputType.EXCEL, + ) + + # Test with invalid values + self.assertEqual( + self.fetcher._to_output_type("invalid"), self.module.OutputType.JSON + ) + self.assertEqual(self.fetcher._to_output_type(123), self.module.OutputType.JSON) + + @patch("get_benchmark_analysis_data.ExecutorchBenchmarkFetcher.to_json") + @patch("get_benchmark_analysis_data.ExecutorchBenchmarkFetcher.to_df") + @patch("get_benchmark_analysis_data.ExecutorchBenchmarkFetcher.to_excel") + @patch("get_benchmark_analysis_data.ExecutorchBenchmarkFetcher.to_csv") + def test_output_data(self, mock_to_csv, mock_to_excel, mock_to_df, mock_to_json): + """Test output_data method.""" + # Setup test data + self.fetcher.matching_groups = { + "private": self.module.MatchingGroupResult( + category="private", data=[{"key": "value"}] + ), + } + + # Test PRINT output + result = self.fetcher.output_data(self.module.OutputType.PRINT) + self.assertEqual(result, {"private": [{"key": "value"}]}) + + # Test JSON output + mock_to_json.return_value = "/path/to/file.json" + result = self.fetcher.output_data(self.module.OutputType.JSON) + self.assertEqual(result, {"private": [{"key": "value"}]}) + mock_to_json.assert_called_once_with(".") + + # Test DF output + mock_to_df.return_value = {"private": [{"df": "value"}]} + result = self.fetcher.output_data(self.module.OutputType.DF) + self.assertEqual(result, {"private": [{"df": "value"}]}) + mock_to_df.assert_called_once() + + # Test EXCEL output + result = self.fetcher.output_data(self.module.OutputType.EXCEL) + self.assertEqual(result, {"private": [{"key": "value"}]}) + mock_to_excel.assert_called_once_with(".") + + # Test CSV output + result = self.fetcher.output_data(self.module.OutputType.CSV) + self.assertEqual(result, {"private": [{"key": "value"}]}) + mock_to_csv.assert_called_once_with(".") + + +if __name__ == "__main__": + unittest.main() From 44b792b3fd0f90b11656a6da0d09247d62bff334 Mon Sep 17 00:00:00 2001 From: Yang Wang Date: Wed, 18 Jun 2025 06:46:29 -0700 Subject: [PATCH 21/46] final Signed-off-by: Yang Wang --- .ci/scripts/benchmark_tooling/README.md | 6 ++++++ 1 file changed, 6 insertions(+) diff --git a/.ci/scripts/benchmark_tooling/README.md b/.ci/scripts/benchmark_tooling/README.md index 2b1f25fe415..d2550fad379 100644 --- a/.ci/scripts/benchmark_tooling/README.md +++ b/.ci/scripts/benchmark_tooling/README.md @@ -50,3 +50,9 @@ python .ci/scripts/benchmark_tooling/analyze_benchmark_stability.py \ Benchmark\ Dataset\ with\ Private\ AWS\ Devices.xlsx \ --reference_file Benchmark\ Dataset\ with\ Public\ AWS\ Devices.xlsx ``` + +## Run unittest +``` +cd execuTorch/ +pytest -c /dev/null .ci/scripts/tests/test_get_benchmark_analysis_data.py +``` From 37965f35ffdb6e51fa635e96c4c9a022a4f06c9b Mon Sep 17 00:00:00 2001 From: Yang Wang Date: Wed, 18 Jun 2025 07:18:00 -0700 Subject: [PATCH 22/46] final Signed-off-by: Yang Wang --- .ci/scripts/benchmark_tooling/README.md | 24 ++++++++++-- .ci/scripts/benchmark_tooling/common.py | 39 +++++++++++++++++++ .../benchmark_tooling/requirements.txt | 1 + 3 files changed, 60 insertions(+), 4 deletions(-) create mode 100644 .ci/scripts/benchmark_tooling/common.py diff --git a/.ci/scripts/benchmark_tooling/README.md b/.ci/scripts/benchmark_tooling/README.md index d2550fad379..b589a53fddb 100644 --- a/.ci/scripts/benchmark_tooling/README.md +++ b/.ci/scripts/benchmark_tooling/README.md @@ -13,9 +13,9 @@ Install dependencies: pip install -r requirements.txt ``` -Run with default output (CLI): +Run with csv output (CLI): ```bash -python3 .ci/scripts/benchmark_tooling/get_benchmark_analysis_data.py --startTime "2025-06-11T00:00:00" --endTime "2025-06-17T18:00:00" +python3 .ci/scripts/benchmark_tooling/get_benchmark_analysis_data.py --startTime "2025-06-11T00:00:00" --endTime "2025-06-17T18:00:00" --outputType "csv" ``` Additional options: @@ -24,6 +24,23 @@ Additional options: - `--outputType excel --outputDir "{YOUR_LOCAL_DIRECTORY}"`: Generate Excel file with multiple sheets (`res_private.xlsx` and `res_public.xlsx`) - `--outputType csv --outputDir "{YOUR_LOCAL_DIRECTORY}"`: Generate CSV files in folders (`private` and `public`) +you can then call methods in common.py to convert the file date back to df version +```python3 +import logging +logging.basicConfig(level=logging.INFO) +from common.py import + +# assume the folder private for csv is in cunrrent directory +folder_path = './private' +res = read_all_csv_with_metadata(folder_path) +logging.info(res) + +# assume the excel file for private device is in cunrrent directory +folder_path = "./private.xlsx" +res = read_excel_with_json_header(folder_path) +logging.info(res) +``` + ### Python API Usage To use the benchmark fetcher in your own scripts: @@ -33,7 +50,7 @@ import ExecutorchBenchmarkFetcher from benchmark_tooling.get_benchmark_analysis_ fetcher = ExecutorchBenchmarkFetcher() # Must call run first fetcher.run() -private, public = fetcher.to_df() +res = fetcher. ``` ## analyze_benchmark_stability.py @@ -50,7 +67,6 @@ python .ci/scripts/benchmark_tooling/analyze_benchmark_stability.py \ Benchmark\ Dataset\ with\ Private\ AWS\ Devices.xlsx \ --reference_file Benchmark\ Dataset\ with\ Public\ AWS\ Devices.xlsx ``` - ## Run unittest ``` cd execuTorch/ diff --git a/.ci/scripts/benchmark_tooling/common.py b/.ci/scripts/benchmark_tooling/common.py new file mode 100644 index 00000000000..945db9eccea --- /dev/null +++ b/.ci/scripts/benchmark_tooling/common.py @@ -0,0 +1,39 @@ +import json +import os + +import pandas as pd + + +def read_excel_with_json_header(path: str): + # Read all sheets into a dict of DataFrames, without altering + all_sheets = pd.read_excel(path, sheet_name=None, header=None, engine="openpyxl") + + results = [] + for sheet, df in all_sheets.items(): + # Extract JSON string from A1 (row 0, col 0) + json_str = df.iat[0, 0] + meta = json.loads(json_str) if isinstance(json_str, str) else {} + + # The actual data starts from the next row; treat row 1 as header + df_data = pd.read_excel(path, sheet_name=sheet, skiprows=1, engine="openpyxl") + results.append({"groupInfo": meta, "df": df_data}) + print(f"successfully fetched {len(results)} sheets from {path}") + return results + + +def read_all_csv_with_metadata(folder_path: str): + results = [] # {filename: {"meta": dict, "df": DataFrame}} + for fname in os.listdir(folder_path): + if not fname.lower().endswith(".csv"): + continue + path = os.path.join(folder_path, fname) + with open(path, "r", encoding="utf-8") as f: + first_line = f.readline().strip() + try: + meta = json.loads(first_line) + except json.JSONDecodeError: + meta = {} + df = pd.read_csv(path, skiprows=1) + results.append({"groupInfo": meta, "df": df}) + print(f"successfully fetched {len(results)} sheets from {folder_path}") + return results diff --git a/.ci/scripts/benchmark_tooling/requirements.txt b/.ci/scripts/benchmark_tooling/requirements.txt index 20cd46acdff..970a28f494e 100644 --- a/.ci/scripts/benchmark_tooling/requirements.txt +++ b/.ci/scripts/benchmark_tooling/requirements.txt @@ -4,3 +4,4 @@ pandas>=2.3.0 openpyxl tabulate matplotlib +openpyxl From 908ee267ecb9d2d9ebd9b2fbfec8ed2c1a135907 Mon Sep 17 00:00:00 2001 From: Yang Wang Date: Wed, 18 Jun 2025 07:37:41 -0700 Subject: [PATCH 23/46] final Signed-off-by: Yang Wang --- .ci/scripts/benchmark_tooling/README.md | 2 +- .../get_benchmark_analysis_data.py | 75 +++++++++++-------- .../benchmark_tooling/requirements.txt | 2 +- 3 files changed, 44 insertions(+), 35 deletions(-) diff --git a/.ci/scripts/benchmark_tooling/README.md b/.ci/scripts/benchmark_tooling/README.md index b589a53fddb..376495faf34 100644 --- a/.ci/scripts/benchmark_tooling/README.md +++ b/.ci/scripts/benchmark_tooling/README.md @@ -19,7 +19,7 @@ python3 .ci/scripts/benchmark_tooling/get_benchmark_analysis_data.py --startTime ``` Additional options: -- `--silent`: Hide processing logs, show only results +- `--not-silent`: show processing logs, otherwise only show results & minimum loggings - `--outputType df`: Display results in DataFrame format - `--outputType excel --outputDir "{YOUR_LOCAL_DIRECTORY}"`: Generate Excel file with multiple sheets (`res_private.xlsx` and `res_public.xlsx`) - `--outputType csv --outputDir "{YOUR_LOCAL_DIRECTORY}"`: Generate CSV files in folders (`private` and `public`) diff --git a/.ci/scripts/benchmark_tooling/get_benchmark_analysis_data.py b/.ci/scripts/benchmark_tooling/get_benchmark_analysis_data.py index 2b583fdc7ee..3fb87d67463 100644 --- a/.ci/scripts/benchmark_tooling/get_benchmark_analysis_data.py +++ b/.ci/scripts/benchmark_tooling/get_benchmark_analysis_data.py @@ -7,6 +7,7 @@ and customizing data retrieval parameters. """ +from yaspin import yaspin import argparse import json import logging @@ -211,10 +212,12 @@ def _filter_public_result(self, private_list, public_list): set([item["table_name"] for item in private_list]) & set([item["table_name"] for item in public_list]) ) - logging.info( - f"Found {len(common)} table names existed in both private and public, use it to filter public tables:" - ) - logging.info(json.dumps(common, indent=1)) + + if not self.disable_logging: + logging.info( + f"Found {len(common)} table names existed in both private and public, use it to filter public tables:" + ) + logging.info(json.dumps(common, indent=1)) filtered_public = [item for item in public_list if item["table_name"] in common] return filtered_public @@ -450,30 +453,21 @@ def print_all_groups_info(self) -> None: Separates results by category and displays counts. This is useful for debugging and understanding what data is available. """ - if not self.data or not self.matching_groups: logging.info("No data found, please call get_data() first") return - - logging.info("peeking table result:") - logging.info(json.dumps(self.data[0], indent=2)) - - for item in self.matching_groups.values(): - logging.info(f" all {item.category} benchmark results") - names = [] - for row in item.data: - names.append( - { - "table_name": row["table_name"], - "info": row["info"], - "counts": len(row["rows"]), - } - ) - logging.info( - f"\n============ {item.category} benchmark results({len(names)})=================\n" + logging.info(f" all clean benchmark table info from HUD") + names = [] + for item in self.data: + names.append( + { + "table_name": item.get("table_name", ""), + "groupInfo": item.get("groupInfo", ""), + "counts": len(item.get("rows", [])), + } ) - for name in names: - logging.info(json.dumps(name, indent=2)) + for name in names: + logging.info(json.dumps(name, indent=2)) def _generate_table_name(self, group_info: dict, fields: list[str]) -> str: name = "_".join( @@ -568,13 +562,16 @@ def _fetch_execu_torch_data(self, start_time, end_time): group_row_by_fields=self.query_group_row_by_fields, ) params = {k: v for k, v in params_object.__dict__.items() if v is not None} - response = requests.get(url, params=params) - if response.status_code == 200: - return response.json() - else: - logging.info(f"Failed to fetch benchmark data ({response.status_code})") - logging.info(response.text) - return None + with yaspin(text="Waiting for response", color="cyan") as spinner: + response = requests.get(url, params=params) + if response.status_code == 200: + spinner.ok("V") + return response.json() + else: + logging.info(f"Failed to fetch benchmark data ({response.status_code})") + logging.info(response.text) + spinner.fail("x") + return None def normalize_string(self, s: str) -> str: s = s.lower().strip() @@ -606,8 +603,14 @@ def argparsers(): parser.add_argument( "--env", choices=["local", "prod"], default="prod", help="Environment" ) - parser.add_argument("--silent", action="store_true", help="Disable logging") + parser.add_argument( + "--no-silent", + action="store_false", + dest="silent", + default=True, + help="Allow output (disable silent mode)", + ) # Options for generate_data parser.add_argument( "--outputType", @@ -615,7 +618,11 @@ def argparsers(): default="print", help="Output format (only for generate_data)", ) - parser.add_argument("--outputDir", default=".", help="Output directory") + + parser.add_argument( + "--outputDir", default=".", help="Output directory, default is ." + ) + return parser.parse_args() @@ -626,4 +633,6 @@ def argparsers(): args.startTime, args.endTime, ) + if not args.silent: + fetcher.print_all_groups_info() fetcher.output_data(args.outputType, args.outputDir) diff --git a/.ci/scripts/benchmark_tooling/requirements.txt b/.ci/scripts/benchmark_tooling/requirements.txt index 970a28f494e..42676d728eb 100644 --- a/.ci/scripts/benchmark_tooling/requirements.txt +++ b/.ci/scripts/benchmark_tooling/requirements.txt @@ -1,7 +1,7 @@ requests>=2.32.3 xlsxwriter>=3.2.3 pandas>=2.3.0 -openpyxl tabulate matplotlib openpyxl +yaspin From 4d30776fd67d275150ed0f397a6372fa92c625b0 Mon Sep 17 00:00:00 2001 From: Yang Wang Date: Wed, 18 Jun 2025 08:52:29 -0700 Subject: [PATCH 24/46] final Signed-off-by: Yang Wang --- .ci/scripts/benchmark_tooling/README.md | 130 ++++++++++++------ .../get_benchmark_analysis_data.py | 102 ++++++++++++-- 2 files changed, 178 insertions(+), 54 deletions(-) diff --git a/.ci/scripts/benchmark_tooling/README.md b/.ci/scripts/benchmark_tooling/README.md index 376495faf34..91803fa3765 100644 --- a/.ci/scripts/benchmark_tooling/README.md +++ b/.ci/scripts/benchmark_tooling/README.md @@ -1,74 +1,126 @@ # Benchmark Tooling -A library providing tools for benchmarking ExecutorchBenchmark data. +A library providing tools for fetching, processing, and analyzing ExecutorchBenchmark data from the HUD Open API. -## Read Benchmark Data -`get_benchmark_analysis_data.py` fetches benchmark data from HUD Open API, clean the data that only contains FAILURE_REPORT column, -and get all private device metrics and associated public device metrics if any based on [model,backend,device,ios] - -### Quick Start +## Installation Install dependencies: ```bash pip install -r requirements.txt ``` -Run with csv output (CLI): +## Tools + +### get_benchmark_analysis_data.py + +This script fetches benchmark data from HUD Open API, cleans data that only contains FAILURE_REPORT columns, and retrieves all private device metrics and associated public device metrics based on [model, backend, device, arch]. + +#### Quick Start + ```bash -python3 .ci/scripts/benchmark_tooling/get_benchmark_analysis_data.py --startTime "2025-06-11T00:00:00" --endTime "2025-06-17T18:00:00" --outputType "csv" +python3 .ci/scripts/benchmark_tooling/get_benchmark_analysis_data.py \ + --startTime "2025-06-11T00:00:00" \ + --endTime "2025-06-17T18:00:00" \ + --outputType "csv" ``` -Additional options: -- `--not-silent`: show processing logs, otherwise only show results & minimum loggings -- `--outputType df`: Display results in DataFrame format -- `--outputType excel --outputDir "{YOUR_LOCAL_DIRECTORY}"`: Generate Excel file with multiple sheets (`res_private.xlsx` and `res_public.xlsx`) -- `--outputType csv --outputDir "{YOUR_LOCAL_DIRECTORY}"`: Generate CSV files in folders (`private` and `public`) +#### Command Line Options + +##### Basic Options: +- `--startTime`: Start time in ISO format (e.g., "2025-06-11T00:00:00") (required) +- `--endTime`: End time in ISO format (e.g., "2025-06-17T18:00:00") (required) +- `--env`: Choose environment ("local" or "prod", default: "prod") +- `--not-silent`: Show processing logs (default: only show results & minimum logging) + +##### Output Options: +- `--outputType`: Choose output format (default: "print") + - `print`: Display results in console + - `json`: Generate JSON file + - `df`: Display results in DataFrame format + - `excel`: Generate Excel files with multiple sheets + - `csv`: Generate CSV files in separate folders +- `--outputDir`: Directory to save output files (default: current directory) + +##### Filtering Options: +- `--devices`: Filter by specific device names (e.g., "samsung-galaxy-s22-5g", "samsung-galaxy-s22plus-5g") +- `--backends`: Filter by specific backend names +- `--models`: Filter by specific model names -you can then call methods in common.py to convert the file date back to df version -```python3 +#### Working with Output Files + +You can use methods in `common.py` to convert the file data back to DataFrame format: + +```python import logging logging.basicConfig(level=logging.INFO) -from common.py import +from .ci.scripts.benchmark_tooling.common import read_all_csv_with_metadata, read_excel_with_json_header -# assume the folder private for csv is in cunrrent directory +# For CSV files (assuming the 'private' folder is in the current directory) folder_path = './private' res = read_all_csv_with_metadata(folder_path) logging.info(res) -# assume the excel file for private device is in cunrrent directory -folder_path = "./private.xlsx" -res = read_excel_with_json_header(folder_path) +# For Excel files (assuming the Excel file is in the current directory) +file_path = "./private.xlsx" +res = read_excel_with_json_header(file_path) logging.info(res) ``` -### Python API Usage +#### Python API Usage To use the benchmark fetcher in your own scripts: ```python -import ExecutorchBenchmarkFetcher from benchmark_tooling.get_benchmark_analysis_data -fetcher = ExecutorchBenchmarkFetcher() -# Must call run first -fetcher.run() -res = fetcher. -``` +from .ci.scripts.benchmark_tooling.get_benchmark_analysis_data import ExecutorchBenchmarkFetcher -## analyze_benchmark_stability.py -`analyze_benchmark_stability.py` analyzes the stability of benchmark data, comparing the results of private and public devices. +# Initialize the fetcher +fetcher = ExecutorchBenchmarkFetcher(env="prod", disable_logging=False) -### Quick Start -Install dependencies: -```bash -pip install -r requirements.txt -``` +# Fetch data for a specific time range +fetcher.run( + start_time="2025-06-11T00:00:00", + end_time="2025-06-17T18:00:00" +) +# Get results in different formats +# As DataFrames +df_results = fetcher.to_df() + +# Export to Excel +fetcher.to_excel(output_dir="./results") + +# Export to CSV +fetcher.to_csv(output_dir="./results") + +# Export to JSON +json_path = fetcher.to_json(output_dir="./results") + +# Get raw dictionary results +dict_results = fetcher.to_dict() + +# Use the output_data method for flexible output +results = fetcher.output_data(output_type="excel", output_dir="./results") ``` + +### analyze_benchmark_stability.py + +This script analyzes the stability of benchmark data, comparing the results of private and public devices. + +#### Quick Start + +```bash python .ci/scripts/benchmark_tooling/analyze_benchmark_stability.py \ - Benchmark\ Dataset\ with\ Private\ AWS\ Devices.xlsx \ - --reference_file Benchmark\ Dataset\ with\ Public\ AWS\ Devices.xlsx + "Benchmark Dataset with Private AWS Devices.xlsx" \ + --reference_file "Benchmark Dataset with Public AWS Devices.xlsx" ``` -## Run unittest -``` -cd execuTorch/ + +## Running Unit Tests + +The benchmark tooling includes comprehensive unit tests to ensure functionality. + +### Using pytest + +```bash +# From the executorch root directory pytest -c /dev/null .ci/scripts/tests/test_get_benchmark_analysis_data.py ``` diff --git a/.ci/scripts/benchmark_tooling/get_benchmark_analysis_data.py b/.ci/scripts/benchmark_tooling/get_benchmark_analysis_data.py index 3fb87d67463..75e581321ae 100644 --- a/.ci/scripts/benchmark_tooling/get_benchmark_analysis_data.py +++ b/.ci/scripts/benchmark_tooling/get_benchmark_analysis_data.py @@ -7,7 +7,6 @@ and customizing data retrieval parameters. """ -from yaspin import yaspin import argparse import json import logging @@ -21,6 +20,7 @@ import pandas as pd import requests +from yaspin import yaspin logging.basicConfig(level=logging.INFO) @@ -80,6 +80,13 @@ class MatchingGroupResult: data: list +@dataclass +class BenchmarkFilters: + models: list + backends: list + devices: list + + BASE_URLS = { "local": "http://localhost:3000", "prod": "https://hud.pytorch.org", @@ -156,19 +163,21 @@ def run( self, start_time: str, end_time: str, + filters: BenchmarkFilters, ) -> None: + # reset group & raw data for new run + self.matching_groups = {} + self.data = None + data = self._fetch_execu_torch_data(start_time, end_time) if data is None: logging.warning("no data fetched from the HUD API") return None - - res = self._process(data) + res = self._process(data, filters) self.data = res.get("data", []) private_list = res.get("private", []) public_list = self._filter_public_result(private_list, res["public"]) - # reset group - self.matching_groups = {} self.matching_groups["private"] = MatchingGroupResult( category="private", data=private_list ) @@ -456,13 +465,18 @@ def print_all_groups_info(self) -> None: if not self.data or not self.matching_groups: logging.info("No data found, please call get_data() first") return - logging.info(f" all clean benchmark table info from HUD") + logging.info( + "=========== Full list of table info from HUD API =============\n" + " please use values in field `info` for filtering, " + "while `groupInfo` holds the original benchmark metadata" + ) names = [] for item in self.data: names.append( { "table_name": item.get("table_name", ""), - "groupInfo": item.get("groupInfo", ""), + "groupInfo": item.get("groupInfo", {}), + "info": item.get("info", {}), "counts": len(item.get("rows", [])), } ) @@ -492,7 +506,7 @@ def _generate_matching_name(self, group_info: dict, fields: list[str]) -> str: # name = name +'(private)' return name - def _process(self, input_data: List[Dict[str, Any]]): + def _process(self, input_data: List[Dict[str, Any]], filters: BenchmarkFilters): """ Process raw benchmark data. @@ -509,9 +523,9 @@ def _process(self, input_data: List[Dict[str, Any]]): # filter data with arch equal exactly "",ios and android, this normally indicates it's job-level falure indicator logging.info(f"fetched {len(input_data)} data from HUD") data = self._clean_data(input_data) - private = [] public = [] + for item in data: # normalized string values groupInfo to info item["info"] = { @@ -528,17 +542,30 @@ def _process(self, input_data: List[Dict[str, Any]]): # Mark aws_type: private or public if group.get("device", "").find("private") != -1: item["info"]["aws_type"] = "private" - private.append(item) else: item["info"]["aws_type"] = "public" public.append(item) - data.sort(key=lambda x: x["table_name"]) - private.sort(key=lambda x: x["table_name"]) - public.sort(key=lambda x: x["table_name"]) + raw_data = deepcopy(data) + + # applies customized filters if any + data = self.filter_results(data, filters) + # generate private and public results + private = sorted( + ( + item + for item in data + if item.get("info", {}).get("aws_type") == "private" + ), + key=lambda x: x["table_name"], + ) + public = sorted( + (item for item in data if item.get("info", {}).get("aws_type") == "public"), + key=lambda x: x["table_name"], + ) logging.info( f"fetched clean data {len(data)}, private:{len(private)}, public:{len(public)}" ) - return {"data": data, "private": private, "public": public} + return {"data": raw_data, "private": private, "public": public} def _clean_data(self, data_list): removed_gen_arch = [ @@ -575,6 +602,7 @@ def _fetch_execu_torch_data(self, start_time, end_time): def normalize_string(self, s: str) -> str: s = s.lower().strip() + s = s.replace("+","plus") s = s.replace("_", "-") s = s.replace(" ", "-") s = re.sub(r"[^\w\-\.\(\)]", "-", s) @@ -583,6 +611,37 @@ def normalize_string(self, s: str) -> str: s = s.replace(")-", ")").replace("-)", ")") return s + def filter_results(self, data: List, filters: BenchmarkFilters): + backends = filters.backends + devices = filters.devices + models = filters.models + + if not backends and not devices and not models: + return data + logging.info( + f"applies OR filter: backends {backends}, devices:{devices},models:{models} " + ) + pre_len = len(data) + results = [] + for item in data: + info = item.get("info", {}) + if backends and info.get("backend") not in backends: + continue + if devices and not any(dev in info.get("device", "") for dev in devices): + continue + if models and info.get("model", "") not in models: + continue + results.append(item) + after_len = len(results) + logging.info(f"applied customized filter before: {pre_len}, after: {after_len}") + if after_len == 0: + logging.info( + "it seems like there is no result matches the filter values" + ", please run script --no-silent again, and search for values in field" + " 'info' for right format" + ) + return results + def argparsers(): parser = argparse.ArgumentParser(description="Benchmark Analysis Runner") @@ -622,7 +681,17 @@ def argparsers(): parser.add_argument( "--outputDir", default=".", help="Output directory, default is ." ) - + parser.add_argument( + "--backends", + nargs="+", + help="Filter results by one or more backend full name(e.g. --backend qlora mv3) (OR logic)", + ) + parser.add_argument( + "--devices", + nargs="+", + help="Filter results by device names (e.g. --devices samsung-galaxy-s22-5g)(OR logic)", + ) + parser.add_argument("--models", nargs="+", help="Filter by models (OR logic)") return parser.parse_args() @@ -632,6 +701,9 @@ def argparsers(): result = fetcher.run( args.startTime, args.endTime, + filters=BenchmarkFilters( + models=args.models, backends=args.backends, devices=args.devices + ), ) if not args.silent: fetcher.print_all_groups_info() From e27779e1668c86a339befd5dde6dc16cb5c7300a Mon Sep 17 00:00:00 2001 From: Yang Wang Date: Wed, 18 Jun 2025 08:53:47 -0700 Subject: [PATCH 25/46] final Signed-off-by: Yang Wang --- .ci/scripts/benchmark_tooling/get_benchmark_analysis_data.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.ci/scripts/benchmark_tooling/get_benchmark_analysis_data.py b/.ci/scripts/benchmark_tooling/get_benchmark_analysis_data.py index 75e581321ae..303db5663a1 100644 --- a/.ci/scripts/benchmark_tooling/get_benchmark_analysis_data.py +++ b/.ci/scripts/benchmark_tooling/get_benchmark_analysis_data.py @@ -602,7 +602,7 @@ def _fetch_execu_torch_data(self, start_time, end_time): def normalize_string(self, s: str) -> str: s = s.lower().strip() - s = s.replace("+","plus") + s = s.replace("+", "plus") s = s.replace("_", "-") s = s.replace(" ", "-") s = re.sub(r"[^\w\-\.\(\)]", "-", s) From f8ba10379dcde48f44efb27cb86d78954e646d47 Mon Sep 17 00:00:00 2001 From: Yang Wang Date: Wed, 18 Jun 2025 09:20:01 -0700 Subject: [PATCH 26/46] final Signed-off-by: Yang Wang --- .ci/scripts/benchmark_tooling/README.md | 13 ++++++++----- .../get_benchmark_analysis_data.py | 19 ++++++++++++++----- 2 files changed, 22 insertions(+), 10 deletions(-) diff --git a/.ci/scripts/benchmark_tooling/README.md b/.ci/scripts/benchmark_tooling/README.md index 91803fa3765..0cacb7c6366 100644 --- a/.ci/scripts/benchmark_tooling/README.md +++ b/.ci/scripts/benchmark_tooling/README.md @@ -30,21 +30,24 @@ python3 .ci/scripts/benchmark_tooling/get_benchmark_analysis_data.py \ - `--startTime`: Start time in ISO format (e.g., "2025-06-11T00:00:00") (required) - `--endTime`: End time in ISO format (e.g., "2025-06-17T18:00:00") (required) - `--env`: Choose environment ("local" or "prod", default: "prod") -- `--not-silent`: Show processing logs (default: only show results & minimum logging) +- `--no-silent`: Show processing logs (default: only show results & minimum logging) +- `print-all-table-info`: show all cleaned table infos, this helps user to pick the correct format of filters ##### Output Options: - `--outputType`: Choose output format (default: "print") - `print`: Display results in console - `json`: Generate JSON file - `df`: Display results in DataFrame format - - `excel`: Generate Excel files with multiple sheets - - `csv`: Generate CSV files in separate folders + - `excel`: Generate Excel files with multiple sheets, the field in first row and first column contains the json string of the raw metadata + - `csv`: Generate CSV files in separate folders, the field in first row and first column contains the json string of the raw metadata - `--outputDir`: Directory to save output files (default: current directory) ##### Filtering Options: +Notice, the filter needs full name matchings with correct format, to see all the options of the filter choices, please run the script with `--print-all-table-info`, and pay attention to section `Full list of table info from HUD API` with the field 'info', which contains normalized data we use to filter records from the original metadata 'groupInfo'. + - `--devices`: Filter by specific device names (e.g., "samsung-galaxy-s22-5g", "samsung-galaxy-s22plus-5g") -- `--backends`: Filter by specific backend names -- `--models`: Filter by specific model names +- `--backends`: Filter by specific backend names (e.g., "qnn-q8" , ""llama3-spinquan) +- `--models`: Filter by specific model names (e.g "mv3" "meta-llama-llama-3.2-1b-instruct-qlora-int4-eo8") #### Working with Output Files diff --git a/.ci/scripts/benchmark_tooling/get_benchmark_analysis_data.py b/.ci/scripts/benchmark_tooling/get_benchmark_analysis_data.py index 303db5663a1..2d8548fbc3d 100644 --- a/.ci/scripts/benchmark_tooling/get_benchmark_analysis_data.py +++ b/.ci/scripts/benchmark_tooling/get_benchmark_analysis_data.py @@ -456,7 +456,7 @@ def _get_base_url(self) -> str: } return base_urls[self.env] - def print_all_groups_info(self) -> None: + def print_all_table_info(self) -> None: """ Print all benchmark table group info found in the data. Separates results by category and displays counts. @@ -670,6 +670,13 @@ def argparsers(): default=True, help="Allow output (disable silent mode)", ) + + parser.add_argument( + "--print-all-table-info", + action="store_true", + help="Print all table info for debugging", + ) + # Options for generate_data parser.add_argument( "--outputType", @@ -689,9 +696,11 @@ def argparsers(): parser.add_argument( "--devices", nargs="+", - help="Filter results by device names (e.g. --devices samsung-galaxy-s22-5g)(OR logic)", + help="Filter results by one or more device names (e.g. --devices samsung-galaxy-s22-5g)(OR logic)", + ) + parser.add_argument( + "--models", nargs="+", help="Filter by one or more models (OR logic)" ) - parser.add_argument("--models", nargs="+", help="Filter by models (OR logic)") return parser.parse_args() @@ -705,6 +714,6 @@ def argparsers(): models=args.models, backends=args.backends, devices=args.devices ), ) - if not args.silent: - fetcher.print_all_groups_info() + if args.print_all_table_info: + fetcher.print_all_table_info() fetcher.output_data(args.outputType, args.outputDir) From 0fb1b2bd0796322e7e6b6f25374ce31516ac3729 Mon Sep 17 00:00:00 2001 From: Yang Wang Date: Wed, 18 Jun 2025 09:32:02 -0700 Subject: [PATCH 27/46] final Signed-off-by: Yang Wang --- .ci/scripts/benchmark_tooling/README.md | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/.ci/scripts/benchmark_tooling/README.md b/.ci/scripts/benchmark_tooling/README.md index 0cacb7c6366..f7508e126d9 100644 --- a/.ci/scripts/benchmark_tooling/README.md +++ b/.ci/scripts/benchmark_tooling/README.md @@ -37,7 +37,7 @@ python3 .ci/scripts/benchmark_tooling/get_benchmark_analysis_data.py \ - `--outputType`: Choose output format (default: "print") - `print`: Display results in console - `json`: Generate JSON file - - `df`: Display results in DataFrame format + - `df`: Display results in DataFrame format: `{'private': List[{'groupInfo':Dict,'df': DF},...],'public':List[{'groupInfo':Dict,'df': DF}]` - `excel`: Generate Excel files with multiple sheets, the field in first row and first column contains the json string of the raw metadata - `csv`: Generate CSV files in separate folders, the field in first row and first column contains the json string of the raw metadata - `--outputDir`: Directory to save output files (default: current directory) @@ -49,9 +49,9 @@ Notice, the filter needs full name matchings with correct format, to see all the - `--backends`: Filter by specific backend names (e.g., "qnn-q8" , ""llama3-spinquan) - `--models`: Filter by specific model names (e.g "mv3" "meta-llama-llama-3.2-1b-instruct-qlora-int4-eo8") -#### Working with Output Files +#### Working with Output Files CSV and Excel -You can use methods in `common.py` to convert the file data back to DataFrame format: +You can use methods in `common.py` to convert the file data back to DataFrame format, those methods read the first row in csv/excel file, and return result with format list of {"groupInfo":DICT, "df":df.Dataframe{}} format. ```python import logging From 04dbd97577e911d1f58d824aff0b70182315b4f5 Mon Sep 17 00:00:00 2001 From: Yang Wang Date: Wed, 18 Jun 2025 10:24:19 -0700 Subject: [PATCH 28/46] final Signed-off-by: Yang Wang --- .ci/scripts/benchmark_tooling/README.md | 2 +- .ci/scripts/benchmark_tooling/common.py | 5 +- .../get_benchmark_analysis_data.py | 68 +++++++++++++++---- 3 files changed, 59 insertions(+), 16 deletions(-) diff --git a/.ci/scripts/benchmark_tooling/README.md b/.ci/scripts/benchmark_tooling/README.md index f7508e126d9..166048d9158 100644 --- a/.ci/scripts/benchmark_tooling/README.md +++ b/.ci/scripts/benchmark_tooling/README.md @@ -119,7 +119,7 @@ python .ci/scripts/benchmark_tooling/analyze_benchmark_stability.py \ ## Running Unit Tests -The benchmark tooling includes comprehensive unit tests to ensure functionality. +The benchmark tooling includes unit tests to ensure functionality. ### Using pytest diff --git a/.ci/scripts/benchmark_tooling/common.py b/.ci/scripts/benchmark_tooling/common.py index 945db9eccea..41db7ac3cc9 100644 --- a/.ci/scripts/benchmark_tooling/common.py +++ b/.ci/scripts/benchmark_tooling/common.py @@ -1,10 +1,11 @@ import json import os +from typing import Any, Dict, List import pandas as pd -def read_excel_with_json_header(path: str): +def read_excel_with_json_header(path: str) -> List[Dict[str, Any]]: # Read all sheets into a dict of DataFrames, without altering all_sheets = pd.read_excel(path, sheet_name=None, header=None, engine="openpyxl") @@ -21,7 +22,7 @@ def read_excel_with_json_header(path: str): return results -def read_all_csv_with_metadata(folder_path: str): +def read_all_csv_with_metadata(folder_path: str) -> List[Dict[str, Any]]: results = [] # {filename: {"meta": dict, "df": DataFrame}} for fname in os.listdir(folder_path): if not fname.lower().endswith(".csv"): diff --git a/.ci/scripts/benchmark_tooling/get_benchmark_analysis_data.py b/.ci/scripts/benchmark_tooling/get_benchmark_analysis_data.py index 2d8548fbc3d..5e494ba51c4 100644 --- a/.ci/scripts/benchmark_tooling/get_benchmark_analysis_data.py +++ b/.ci/scripts/benchmark_tooling/get_benchmark_analysis_data.py @@ -16,7 +16,7 @@ from dataclasses import dataclass from datetime import datetime from enum import Enum -from typing import Any, Dict, List +from typing import Any, Dict, List, Optional, Union import pandas as pd import requests @@ -126,8 +126,8 @@ class ExecutorchBenchmarkFetcher: def __init__( self, - env="prod", - disable_logging=False, + env: str = "prod", + disable_logging: bool = False, group_table_fields=None, group_row_fields=None, ): @@ -189,7 +189,13 @@ def _filter_out_failure_only( self, data_list: List[Dict[str, Any]] ) -> List[Dict[str, Any]]: """ - clean FAILURE_REPORT only metrics + Clean data by removing rows that only contain FAILURE_REPORT metrics. + + Args: + data_list: List of benchmark data dictionaries + + Returns: + Filtered list with rows containing only FAILURE_REPORT removed """ ONLY = {"workflow_id", "granularity_bucket", "job_id", "FAILURE_REPORT"} for item in data_list: @@ -230,7 +236,13 @@ def _filter_public_result(self, private_list, public_list): filtered_public = [item for item in public_list if item["table_name"] in common] return filtered_public - def get_result(self): + def get_result(self) -> Dict[str, List[Dict[str, Any]]]: + """ + Get a deep copy of the benchmark results. + + Returns: + Dictionary containing benchmark results grouped by category + """ return deepcopy(self.to_dict()) def to_excel(self, output_dir: str = ".") -> None: @@ -270,7 +282,7 @@ def _write_multi_sheet_excel(self, data_list, output_dir, file_name): worksheet.write_string(0, 0, json_str) logging.info( - f"Wrting excel sheet to file {file} with sheet name {sheet_name} for {entry["table_name"]}" + f"Wrting excel sheet to file {file} with sheet name {sheet_name} for {entry['table_name']}" ) # Write DataFrame starting at row 2 (index 1) df.to_excel(writer, sheet_name=sheet_name, startrow=1, index=False) @@ -366,7 +378,7 @@ def generate_json_file(self, data, file_name, output_dir: str = "."): json.dump(data, f, indent=2) return path - def to_dict(self) -> Any: + def to_dict(self) -> Dict[str, List[Dict[str, Any]]]: """ Convert benchmark results to a dictionary. @@ -378,7 +390,7 @@ def to_dict(self) -> Any: result[item.category] = item.data return result - def to_df(self) -> Any: + def to_df(self) -> Dict[str, List[Dict[str, Union[Dict[str, Any], pd.DataFrame]]]]: """ Convert benchmark results to pandas DataFrames. @@ -386,7 +398,8 @@ def to_df(self) -> Any: Each DataFrame represents one benchmark configuration. Returns: - Dictionary mapping categories to lists of DataFrames with metadata + Dictionary mapping categories ['private','public'] to lists of DataFrames "df" with metadata "groupInfo". + """ result = {} for item in self.matching_groups.values(): @@ -423,7 +436,20 @@ def to_csv(self, output_dir: str = ".") -> None: path = os.path.join(output_dir, item.category) self._write_multiple_csv_files(item.data, path) - def _write_multiple_csv_files(self, data_list, output_dir, prefix=""): + def _write_multiple_csv_files( + self, data_list: List[Dict[str, Any]], output_dir: str, prefix: str = "" + ) -> None: + """ + Write multiple benchmark results to CSV files. + + Creates a CSV file for each benchmark configuration, with metadata + as a JSON string in the first row and data in subsequent rows. + + Args: + data_list: List of benchmark result dictionaries + output_dir: Directory to save CSV files + prefix: Optional prefix for CSV filenames + """ os.makedirs(output_dir, exist_ok=True) for idx, entry in enumerate(data_list): filename = f"{prefix}_table{idx+1}.csv" if prefix else f"table{idx+1}.csv" @@ -506,7 +532,9 @@ def _generate_matching_name(self, group_info: dict, fields: list[str]) -> str: # name = name +'(private)' return name - def _process(self, input_data: List[Dict[str, Any]], filters: BenchmarkFilters): + def _process( + self, input_data: List[Dict[str, Any]], filters: BenchmarkFilters + ) -> Dict[str, Any]: """ Process raw benchmark data. @@ -578,7 +606,9 @@ def _clean_data(self, data_list): data = self._filter_out_failure_only(removed_gen_arch) return data - def _fetch_execu_torch_data(self, start_time, end_time): + def _fetch_execu_torch_data( + self, start_time: str, end_time: str + ) -> Optional[List[Dict[str, Any]]]: url = f"{self.base_url}/api/benchmark/group_data" params_object = BenchmarkQueryGroupDataParams( repo="pytorch/executorch", @@ -611,7 +641,19 @@ def normalize_string(self, s: str) -> str: s = s.replace(")-", ")").replace("-)", ")") return s - def filter_results(self, data: List, filters: BenchmarkFilters): + def filter_results(self, data: List[Dict[str, Any]], filters: BenchmarkFilters) -> List[Dict[str, Any]]: + """ + Filter benchmark results based on specified criteria. + + Applies OR logic for filtering - results match if they match any of the specified filters. + + Args: + data: List of benchmark data dictionaries + filters: BenchmarkFilters object containing filter criteria + + Returns: + Filtered list of benchmark data dictionaries + """ backends = filters.backends devices = filters.devices models = filters.models From 95b30a41e7d688607dd06d447771378e716dd2a3 Mon Sep 17 00:00:00 2001 From: Yang Wang Date: Wed, 18 Jun 2025 10:25:13 -0700 Subject: [PATCH 29/46] final Signed-off-by: Yang Wang --- .../get_benchmark_analysis_data.py | 16 +++++++++++++--- 1 file changed, 13 insertions(+), 3 deletions(-) diff --git a/.ci/scripts/benchmark_tooling/get_benchmark_analysis_data.py b/.ci/scripts/benchmark_tooling/get_benchmark_analysis_data.py index 5e494ba51c4..5735d39d7ed 100644 --- a/.ci/scripts/benchmark_tooling/get_benchmark_analysis_data.py +++ b/.ci/scripts/benchmark_tooling/get_benchmark_analysis_data.py @@ -509,7 +509,19 @@ def print_all_table_info(self) -> None: for name in names: logging.info(json.dumps(name, indent=2)) - def _generate_table_name(self, group_info: dict, fields: list[str]) -> str: + def _generate_table_name(self, group_info: Dict[str, Any], fields: List[str]) -> str: + """ + Generate a table name from group info fields. + + Creates a normalized string by joining specified fields from group info. + + Args: + group_info: Dictionary containing group information + fields: List of field names to include in the table name + + Returns: + Normalized table name string + """ name = "_".join( self.normalize_string(group_info[k]) for k in fields @@ -519,8 +531,6 @@ def _generate_table_name(self, group_info: dict, fields: list[str]) -> str: name = name.replace("(private)", "") return name - def simplify_ios(self, s: str) -> str: - return s.split(".")[0] def _generate_matching_name(self, group_info: dict, fields: list[str]) -> str: info = deepcopy(group_info) From d22af04ac97bb430ccc754b86ff88a7883f72268 Mon Sep 17 00:00:00 2001 From: Yang Wang Date: Wed, 18 Jun 2025 10:35:46 -0700 Subject: [PATCH 30/46] fix error test Signed-off-by: Yang Wang --- .../get_benchmark_analysis_data.py | 29 +++++++++---------- 1 file changed, 14 insertions(+), 15 deletions(-) diff --git a/.ci/scripts/benchmark_tooling/get_benchmark_analysis_data.py b/.ci/scripts/benchmark_tooling/get_benchmark_analysis_data.py index 5735d39d7ed..f1caf744366 100644 --- a/.ci/scripts/benchmark_tooling/get_benchmark_analysis_data.py +++ b/.ci/scripts/benchmark_tooling/get_benchmark_analysis_data.py @@ -72,7 +72,7 @@ class MatchingGroupResult: Container for benchmark results grouped by category. Attributes: - category: Category name (e.g., "private", "public") + category: Category name (e.g., 'private', 'public') data: List of benchmark data for this category """ @@ -135,7 +135,7 @@ def __init__( Initialize the ExecutorchBenchmarkFetcher. Args: - env: Environment to use ("local" or "prod") + env: Environment to use ('local' or 'prod') disable_logging: Whether to suppress log output group_table_fields: Custom fields to group tables by (defaults to device, backend, arch, model) group_row_fields: Custom fields to group rows by (defaults to workflow_id, job_id, granularity_bucket) @@ -163,7 +163,7 @@ def run( self, start_time: str, end_time: str, - filters: BenchmarkFilters, + filters: Optional[BenchmarkFilters] = None, ) -> None: # reset group & raw data for new run self.matching_groups = {} @@ -398,7 +398,7 @@ def to_df(self) -> Dict[str, List[Dict[str, Union[Dict[str, Any], pd.DataFrame]] Each DataFrame represents one benchmark configuration. Returns: - Dictionary mapping categories ['private','public'] to lists of DataFrames "df" with metadata "groupInfo". + Dictionary mapping categories ['private','public'] to lists of DataFrames "df" with metadata 'groupInfo'. """ result = {} @@ -476,11 +476,7 @@ def _get_base_url(self) -> str: Returns: Base URL string for the configured environment """ - base_urls = { - "local": "http://localhost:3000", - "prod": "https://hud.pytorch.org", - } - return base_urls[self.env] + return BASE_URLS[self.env] def print_all_table_info(self) -> None: """ @@ -509,7 +505,9 @@ def print_all_table_info(self) -> None: for name in names: logging.info(json.dumps(name, indent=2)) - def _generate_table_name(self, group_info: Dict[str, Any], fields: List[str]) -> str: + def _generate_table_name( + self, group_info: Dict[str, Any], fields: List[str] + ) -> str: """ Generate a table name from group info fields. @@ -531,7 +529,6 @@ def _generate_table_name(self, group_info: Dict[str, Any], fields: List[str]) -> name = name.replace("(private)", "") return name - def _generate_matching_name(self, group_info: dict, fields: list[str]) -> str: info = deepcopy(group_info) name = "_".join( @@ -543,7 +540,7 @@ def _generate_matching_name(self, group_info: dict, fields: list[str]) -> str: return name def _process( - self, input_data: List[Dict[str, Any]], filters: BenchmarkFilters + self, input_data: List[Dict[str, Any]], filters: Optional[BenchmarkFilters] ) -> Dict[str, Any]: """ Process raw benchmark data. @@ -576,7 +573,6 @@ def _process( item["table_name"] = self._generate_table_name( group, self.query_group_table_by_fields ) - # Mark aws_type: private or public if group.get("device", "").find("private") != -1: item["info"]["aws_type"] = "private" @@ -586,7 +582,8 @@ def _process( raw_data = deepcopy(data) # applies customized filters if any - data = self.filter_results(data, filters) + if filters: + data = self.filter_results(data, filters) # generate private and public results private = sorted( ( @@ -651,7 +648,9 @@ def normalize_string(self, s: str) -> str: s = s.replace(")-", ")").replace("-)", ")") return s - def filter_results(self, data: List[Dict[str, Any]], filters: BenchmarkFilters) -> List[Dict[str, Any]]: + def filter_results( + self, data: List[Dict[str, Any]], filters: BenchmarkFilters + ) -> List[Dict[str, Any]]: """ Filter benchmark results based on specified criteria. From 25769dac67cb0359bf21c90e16ce95f811a9c4ef Mon Sep 17 00:00:00 2001 From: Yang Wang Date: Wed, 18 Jun 2025 11:28:59 -0700 Subject: [PATCH 31/46] fix error test Signed-off-by: Yang Wang --- .ci/scripts/benchmark_tooling/README.md | 1 + .../get_benchmark_analysis_data.py | 53 +++--- .../tests/test_get_benchmark_analysis_data.py | 165 +++++++++++++++++- 3 files changed, 189 insertions(+), 30 deletions(-) diff --git a/.ci/scripts/benchmark_tooling/README.md b/.ci/scripts/benchmark_tooling/README.md index 166048d9158..a3c92a0288f 100644 --- a/.ci/scripts/benchmark_tooling/README.md +++ b/.ci/scripts/benchmark_tooling/README.md @@ -44,6 +44,7 @@ python3 .ci/scripts/benchmark_tooling/get_benchmark_analysis_data.py \ ##### Filtering Options: Notice, the filter needs full name matchings with correct format, to see all the options of the filter choices, please run the script with `--print-all-table-info`, and pay attention to section `Full list of table info from HUD API` with the field 'info', which contains normalized data we use to filter records from the original metadata 'groupInfo'. +The filter block any record if it does not in any of the filter keywords. - `--devices`: Filter by specific device names (e.g., "samsung-galaxy-s22-5g", "samsung-galaxy-s22plus-5g") - `--backends`: Filter by specific backend names (e.g., "qnn-q8" , ""llama3-spinquan) diff --git a/.ci/scripts/benchmark_tooling/get_benchmark_analysis_data.py b/.ci/scripts/benchmark_tooling/get_benchmark_analysis_data.py index f1caf744366..74db8743a3e 100644 --- a/.ci/scripts/benchmark_tooling/get_benchmark_analysis_data.py +++ b/.ci/scripts/benchmark_tooling/get_benchmark_analysis_data.py @@ -525,18 +525,7 @@ def _generate_table_name( for k in fields if k in group_info and group_info[k] ) - if "(private)" in name: - name = name.replace("(private)", "") - return name - def _generate_matching_name(self, group_info: dict, fields: list[str]) -> str: - info = deepcopy(group_info) - name = "_".join( - self.normalize_string(info[k]) for k in fields if k in info and info[k] - ) - if "(private)" in name: - name = name.replace("(private)", "") - # name = name +'(private)' return name def _process( @@ -562,23 +551,28 @@ def _process( public = [] for item in data: - # normalized string values groupInfo to info - item["info"] = { - k: self.normalize_string(v) - for k, v in item.get("groupInfo", {}).items() - if v is not None and isinstance(v, str) - } + org_group = item.get("groupInfo", {}) + if "info" not in item: + item["info"] = {} + if org_group.get("device", "").find("private") != -1: + item["info"]["aws_type"] = "private" + else: + item["info"]["aws_type"] = "public" + public.append(item) + + # Merge normalized groupInfo string values into item["info"] + item["info"].update( + { + k: self.normalize_string(v) + for k, v in item.get("groupInfo", {}).items() + if v is not None and isinstance(v, str) + } + ) group = item.get("info", {}) # Add full name joined by the group key fields item["table_name"] = self._generate_table_name( group, self.query_group_table_by_fields ) - # Mark aws_type: private or public - if group.get("device", "").find("private") != -1: - item["info"]["aws_type"] = "private" - else: - item["info"]["aws_type"] = "public" - public.append(item) raw_data = deepcopy(data) # applies customized filters if any @@ -646,6 +640,7 @@ def normalize_string(self, s: str) -> str: s = re.sub(r"-{2,}", "-", s) s = s.replace("-(", "(").replace("(-", "(") s = s.replace(")-", ")").replace("-)", ")") + s = s.replace("(private)", "") return s def filter_results( @@ -678,7 +673,7 @@ def filter_results( info = item.get("info", {}) if backends and info.get("backend") not in backends: continue - if devices and not any(dev in info.get("device", "") for dev in devices): + if devices and info.get("device", "") not in devices: continue if models and info.get("model", "") not in models: continue @@ -688,7 +683,7 @@ def filter_results( if after_len == 0: logging.info( "it seems like there is no result matches the filter values" - ", please run script --no-silent again, and search for values in field" + ", please run script --list-all-table-info again, and search for values in field" " 'info' for right format" ) return results @@ -742,15 +737,17 @@ def argparsers(): parser.add_argument( "--backends", nargs="+", - help="Filter results by one or more backend full name(e.g. --backend qlora mv3) (OR logic)", + help="Filter results by one or more backend full name(e.g. --backend qlora mv3) (OR logic within backends scope, AND logic with other filter type)", ) parser.add_argument( "--devices", nargs="+", - help="Filter results by one or more device names (e.g. --devices samsung-galaxy-s22-5g)(OR logic)", + help="Filter results by one or more device names (e.g. --devices samsung-galaxy-s22-5g)(OR logic within devices, AND logic with other filter type)", ) parser.add_argument( - "--models", nargs="+", help="Filter by one or more models (OR logic)" + "--models", + nargs="+", + help="Filter by one or more models (OR logic withn models scope, AND logic with other filter type)", ) return parser.parse_args() diff --git a/.ci/scripts/tests/test_get_benchmark_analysis_data.py b/.ci/scripts/tests/test_get_benchmark_analysis_data.py index d28e18c5fb8..4d73ecdbceb 100644 --- a/.ci/scripts/tests/test_get_benchmark_analysis_data.py +++ b/.ci/scripts/tests/test_get_benchmark_analysis_data.py @@ -206,7 +206,7 @@ def test_normalize_string(self): ("test_string", "test-string"), ("test string", "test-string"), ("test--string", "test-string"), - ("test (private)", "test(private)"), + ("test (private)", "test"), ("test@#$%^&*", "test-"), ] @@ -335,6 +335,97 @@ def test_filter_public_result(self): result = self.fetcher._filter_public_result(private_list, public_list) self.assertEqual(result, expected) + def test_filter_results(self): + """Test filter_results method with various filter combinations.""" + # Create test data + test_data = [ + { + "info": { + "model": "llama3", + "backend": "qlora", + "device": "iphone-15-pro-max", + "arch": "ios-17", + }, + "rows": [{"metric_1": 1.0}], + }, + { + "info": { + "model": "llama3", + "backend": "spinquant", + "device": "iphone-15-pro-max", + "arch": "ios-17", + }, + "rows": [{"metric_1": 2.0}], + }, + { + "info": { + "model": "mv3", + "backend": "xnnpack-q8", + "device": "samsung-galaxy-s22-5g", + "arch": "android-13", + }, + "rows": [{"metric_1": 3.0}], + }, + { + "info": { + "model": "mv3", + "backend": "qnn-q8", + "device": "samsung-galaxy-s22-5g", + "arch": "android-13", + }, + "rows": [{"metric_1": 4.0}], + }, + ] + + # Test with no filters + empty_filters = self.module.BenchmarkFilters( + models=None, backends=None, devices=None + ) + result = self.fetcher.filter_results(test_data, empty_filters) + self.assertEqual(result, test_data) + + # Test with model filter + model_filters = self.module.BenchmarkFilters( + models=["llama3"], backends=None, devices=None + ) + result = self.fetcher.filter_results(test_data, model_filters) + self.assertEqual(len(result), 2) + self.assertTrue(all(item["info"]["model"] == "llama3" for item in result)) + + # Test with backend filter + backend_filters = self.module.BenchmarkFilters( + models=None, backends=["qlora", "qnn-q8"], devices=None + ) + result = self.fetcher.filter_results(test_data, backend_filters) + self.assertEqual(len(result), 2) + self.assertTrue( + all(item["info"]["backend"] in ["qlora", "qnn-q8"] for item in result) + ) + + # Test with device filter + device_filters = self.module.BenchmarkFilters( + models=None, backends=None, devices=["samsung-galaxy-s22-5g"] + ) + result = self.fetcher.filter_results(test_data, device_filters) + self.assertEqual(len(result), 2) + self.assertTrue( + all("samsung-galaxy-s22-5g" in item["info"]["device"] for item in result) + ) + + # Test with combined filters (And logic fails) + combined_filters = self.module.BenchmarkFilters( + models=["llama3"], backends=["xnnpack-q8"], devices=None + ) + result = self.fetcher.filter_results(test_data, combined_filters) + self.assertEqual(len(result), 0) + + # Test with combined filters (And logic success) + combined_filters = self.module.BenchmarkFilters( + models=["llama3"], backends=None, devices=["iphone-15-pro-max"] + ) + result = self.fetcher.filter_results(test_data, combined_filters) + self.assertEqual(len(result), 2) + @patch( "get_benchmark_analysis_data.ExecutorchBenchmarkFetcher._fetch_execu_torch_data" ) @@ -442,7 +533,7 @@ def test_run_with_failure_report(self, mock_fetch): "arch": "ios-17.4.3", "aws_type": "private", "backend": "qlora", - "device": "iphone-15-pro-max(private)", + "device": "iphone-15-pro-max", "model": "llama3", }, "rows": [ @@ -475,6 +566,76 @@ def test_run_no_data(self, mock_fetch): self.assertEqual(self.fetcher.matching_groups, {}) mock_fetch.assert_called_once_with("2025-06-01T00:00:00", "2025-06-02T00:00:00") + @patch( + "get_benchmark_analysis_data.ExecutorchBenchmarkFetcher._fetch_execu_torch_data" + ) + def test_run_with_filters(self, mock_fetch): + """Test run method with filters.""" + # Setup mock data + mock_data = [ + { + "groupInfo": { + "model": "llama3", + "backend": "qlora", + "device": "Iphone 15 pro max (private)", + "arch": "ios_17", + }, + "rows": [{"metric_1": 1.0}], + }, + { + "groupInfo": { + "model": "mv3", + "backend": "xnnpack_q8", + "device": "s22_5g (private)", + "arch": "android_13", + }, + "rows": [{"metric_1": 2.0}], + }, + { + "groupInfo": { + "model": "mv3", + "backend": "xnnpack_q8", + "device": "s22_5g", + "arch": "android_13", + }, + "rows": [{"metric_1": 3.0}], + }, + ] + mock_fetch.return_value = mock_data + + # Create filters for llama3 model only + filters = self.module.BenchmarkFilters( + models=["llama3"], backends=None, devices=None + ) + # Run the method with filters + self.fetcher.run("2025-06-01T00:00:00", "2025-06-02T00:00:00", filters) + result = self.fetcher.get_result() + print("result1", result) + + # Verify results - should only have llama3 in private results + self.assertEqual(len(result["private"]), 1) + self.assertEqual(result["private"][0]["info"]["model"], "llama3") + + # Public results should be empty since there's no matching table_name + self.assertEqual(result["public"], []) + + # Test with backend filter + filters = self.module.BenchmarkFilters( + models=None, backends=["xnnpack-q8"], devices=None + ) + self.fetcher.run("2025-06-01T00:00:00", "2025-06-02T00:00:00", filters) + result = self.fetcher.get_result() + + print("result", result) + + # Verify results - should only have xnnpack-q8 in private results + self.assertEqual(len(result["private"]), 1) + self.assertEqual(result["private"][0]["info"]["backend"], "xnnpack-q8") + + # Public results should have the matching xnnpack-q8 entry + self.assertEqual(len(result["public"]), 1) + self.assertEqual(result["public"][0]["info"]["backend"], "xnnpack-q8") + def test_to_dict(self): """Test to_dict method.""" # Setup test data From 51b326a6af3b73011f694f6ddd923233cc82551d Mon Sep 17 00:00:00 2001 From: Yang Wang Date: Wed, 18 Jun 2025 13:00:26 -0700 Subject: [PATCH 32/46] fix error test Signed-off-by: Yang Wang --- .ci/scripts/benchmark_tooling/README.md | 2 +- .../test_get_benchmark_analysis_data.py | 0 2 files changed, 1 insertion(+), 1 deletion(-) rename .ci/scripts/{tests => benchmark_tooling}/test_get_benchmark_analysis_data.py (100%) diff --git a/.ci/scripts/benchmark_tooling/README.md b/.ci/scripts/benchmark_tooling/README.md index a3c92a0288f..4cf0e86e43b 100644 --- a/.ci/scripts/benchmark_tooling/README.md +++ b/.ci/scripts/benchmark_tooling/README.md @@ -126,5 +126,5 @@ The benchmark tooling includes unit tests to ensure functionality. ```bash # From the executorch root directory -pytest -c /dev/null .ci/scripts/tests/test_get_benchmark_analysis_data.py +pytest -c /dev/null .ci/scripts/benchmark_tooling/test_get_benchmark_analysis_data.py --log-cli-level=INFO; ``` diff --git a/.ci/scripts/tests/test_get_benchmark_analysis_data.py b/.ci/scripts/benchmark_tooling/test_get_benchmark_analysis_data.py similarity index 100% rename from .ci/scripts/tests/test_get_benchmark_analysis_data.py rename to .ci/scripts/benchmark_tooling/test_get_benchmark_analysis_data.py From 13261dacc7bc1a4a81020a1f996bade0e95e790e Mon Sep 17 00:00:00 2001 From: Yang Wang Date: Wed, 18 Jun 2025 13:25:49 -0700 Subject: [PATCH 33/46] fix error test Signed-off-by: Yang Wang --- .ci/docker/requirements-ci.txt | 3 +++ .ci/scripts/benchmark_tooling/README.md | 2 +- .ci/scripts/benchmark_tooling/requirements.txt | 2 +- .../test_get_benchmark_analysis_data.py | 0 4 files changed, 5 insertions(+), 2 deletions(-) rename .ci/scripts/{benchmark_tooling => tests}/test_get_benchmark_analysis_data.py (100%) diff --git a/.ci/docker/requirements-ci.txt b/.ci/docker/requirements-ci.txt index ff0277c2056..dcd2afa7a13 100644 --- a/.ci/docker/requirements-ci.txt +++ b/.ci/docker/requirements-ci.txt @@ -28,3 +28,6 @@ matplotlib>=3.9.4 myst-parser==0.18.1 sphinx_design==0.4.1 sphinx-copybutton==0.5.0 + +# script unit test requirements +yaspin==3.1.0 diff --git a/.ci/scripts/benchmark_tooling/README.md b/.ci/scripts/benchmark_tooling/README.md index 4cf0e86e43b..a3c92a0288f 100644 --- a/.ci/scripts/benchmark_tooling/README.md +++ b/.ci/scripts/benchmark_tooling/README.md @@ -126,5 +126,5 @@ The benchmark tooling includes unit tests to ensure functionality. ```bash # From the executorch root directory -pytest -c /dev/null .ci/scripts/benchmark_tooling/test_get_benchmark_analysis_data.py --log-cli-level=INFO; +pytest -c /dev/null .ci/scripts/tests/test_get_benchmark_analysis_data.py ``` diff --git a/.ci/scripts/benchmark_tooling/requirements.txt b/.ci/scripts/benchmark_tooling/requirements.txt index 42676d728eb..3a2d69c0676 100644 --- a/.ci/scripts/benchmark_tooling/requirements.txt +++ b/.ci/scripts/benchmark_tooling/requirements.txt @@ -1,7 +1,7 @@ requests>=2.32.3 xlsxwriter>=3.2.3 pandas>=2.3.0 +yaspin>=3.1.0 tabulate matplotlib openpyxl -yaspin diff --git a/.ci/scripts/benchmark_tooling/test_get_benchmark_analysis_data.py b/.ci/scripts/tests/test_get_benchmark_analysis_data.py similarity index 100% rename from .ci/scripts/benchmark_tooling/test_get_benchmark_analysis_data.py rename to .ci/scripts/tests/test_get_benchmark_analysis_data.py From d7a6652ecd5f917f806a124882c260a2d2438bbe Mon Sep 17 00:00:00 2001 From: Yang Wang Date: Wed, 18 Jun 2025 17:42:40 -0700 Subject: [PATCH 34/46] fix error test Signed-off-by: Yang Wang --- .ci/scripts/benchmark_tooling/README.md | 14 +- .../get_benchmark_analysis_data.py | 265 ++++++++---------- .../tests/test_get_benchmark_analysis_data.py | 174 ++++++++---- 3 files changed, 249 insertions(+), 204 deletions(-) diff --git a/.ci/scripts/benchmark_tooling/README.md b/.ci/scripts/benchmark_tooling/README.md index a3c92a0288f..ed45b8d5e5d 100644 --- a/.ci/scripts/benchmark_tooling/README.md +++ b/.ci/scripts/benchmark_tooling/README.md @@ -43,13 +43,21 @@ python3 .ci/scripts/benchmark_tooling/get_benchmark_analysis_data.py \ - `--outputDir`: Directory to save output files (default: current directory) ##### Filtering Options: -Notice, the filter needs full name matchings with correct format, to see all the options of the filter choices, please run the script with `--print-all-table-info`, and pay attention to section `Full list of table info from HUD API` with the field 'info', which contains normalized data we use to filter records from the original metadata 'groupInfo'. -The filter block any record if it does not in any of the filter keywords. -- `--devices`: Filter by specific device names (e.g., "samsung-galaxy-s22-5g", "samsung-galaxy-s22plus-5g") +- `--private-device-pools`: Filter by private device pool names (e.g., "samsung-galaxy-s22-5g", "samsung-galaxy-s22plus-5g") - `--backends`: Filter by specific backend names (e.g., "qnn-q8" , ""llama3-spinquan) - `--models`: Filter by specific model names (e.g "mv3" "meta-llama-llama-3.2-1b-instruct-qlora-int4-eo8") +#### Example Usage +call multiple private device pools and models +```bash +python3 get_benchmark_analysis_data.py \ +--startTime "2025-06-01T00:00:00" \ +--endTime "2025-06-11T00:00:00" \ +--private-device-pools 'apple_iphone_15_private' 'samsung_s22_private' +--models 'mv3' 'allenai/OLMo-1B-hf' +``` + #### Working with Output Files CSV and Excel You can use methods in `common.py` to convert the file data back to DataFrame format, those methods read the first row in csv/excel file, and return result with format list of {"groupInfo":DICT, "df":df.Dataframe{}} format. diff --git a/.ci/scripts/benchmark_tooling/get_benchmark_analysis_data.py b/.ci/scripts/benchmark_tooling/get_benchmark_analysis_data.py index 74db8743a3e..27562f7aeab 100644 --- a/.ci/scripts/benchmark_tooling/get_benchmark_analysis_data.py +++ b/.ci/scripts/benchmark_tooling/get_benchmark_analysis_data.py @@ -2,8 +2,8 @@ ExecutorchBenchmark Analysis Data Retrieval This module provides tools for fetching, processing, and analyzing benchmark data -from the HUD Open API for ExecutorchBenchmark. It supports filtering data by device -types (private and public), exporting results in various formats (JSON, DataFrame, Excel, CSV), +from the HUD Open API for ExecutorchBenchmark. It supports filtering data by (private) device pool names, +backends, and models, exporting results in various formats (JSON, DataFrame, Excel, CSV), and customizing data retrieval parameters. """ @@ -16,7 +16,7 @@ from dataclasses import dataclass from datetime import datetime from enum import Enum -from typing import Any, Dict, List, Optional, Union +from typing import Any, Dict, List, Optional, Tuple, Union import pandas as pd import requests @@ -24,6 +24,21 @@ logging.basicConfig(level=logging.INFO) +# add here just for the records +VALID_PRIVATE_DEVICE_POOLS_MAPPINGS = { + "apple_iphone_15_private": [ + ("Apple iPhone 15 Pro (private)", "iOS 18.4.1"), + ("Apple iPhone 15 (private)", "iOS 18.0"), + ("Apple iPhone 15 Plus (private)", "iOS 17.4.1"), + ], + "samsung_s22_private": [ + ("Samsung Galaxy S22 Ultra 5G (private)", "Android 14"), + ("Samsung Galaxy S22 5G (private)", "Android 13"), + ], +} + +VALID_PRIVATE_DEVICE_POOLS_NAMES = list(VALID_PRIVATE_DEVICE_POOLS_MAPPINGS.keys()) + class OutputType(Enum): """ @@ -84,7 +99,7 @@ class MatchingGroupResult: class BenchmarkFilters: models: list backends: list - devices: list + devicePoolNames: list BASE_URLS = { @@ -156,9 +171,6 @@ def __init__( self.disable_logging = disable_logging self.matching_groups: Dict[str, MatchingGroupResult] = {} - def add_abbreviations(self, abbreviations: Dict[str, str]): - self.abbreviations = abbreviations - def run( self, start_time: str, @@ -173,17 +185,8 @@ def run( if data is None: logging.warning("no data fetched from the HUD API") return None - res = self._process(data, filters) - self.data = res.get("data", []) - private_list = res.get("private", []) - public_list = self._filter_public_result(private_list, res["public"]) - self.matching_groups["private"] = MatchingGroupResult( - category="private", data=private_list - ) - self.matching_groups["public"] = MatchingGroupResult( - category="public", data=public_list - ) + self._process(data, filters) def _filter_out_failure_only( self, data_list: List[Dict[str, Any]] @@ -208,24 +211,11 @@ def _filter_out_failure_only( item["rows"] = filtered_rows return [item for item in data_list if item.get("rows")] - def _filter_public_result(self, private_list, public_list): - """ - Filter public device results to match private device configurations. - - Finds the intersection of table names between private and public results - to ensure comparable data sets. - - Args: - private_list: List of benchmark results for private devices - public_list: List of benchmark results for public devices - - Returns: - Filtered list of public device results that match private device configurations - """ + def _filter_public_result(self, private_list, all_public): # find intersection betwen private and public tables. common = list( set([item["table_name"] for item in private_list]) - & set([item["table_name"] for item in public_list]) + & set([item["table_name"] for item in all_public]) ) if not self.disable_logging: @@ -233,7 +223,7 @@ def _filter_public_result(self, private_list, public_list): f"Found {len(common)} table names existed in both private and public, use it to filter public tables:" ) logging.info(json.dumps(common, indent=1)) - filtered_public = [item for item in public_list if item["table_name"] in common] + filtered_public = [item for item in all_public if item["table_name"] in common] return filtered_public def get_result(self) -> Dict[str, List[Dict[str, Any]]]: @@ -478,32 +468,32 @@ def _get_base_url(self) -> str: """ return BASE_URLS[self.env] - def print_all_table_info(self) -> None: + def get_all_private_devices(self) -> Tuple[List[Any], List[Any]]: """ - Print all benchmark table group info found in the data. + Print all devices found in the data. Separates results by category and displays counts. This is useful for debugging and understanding what data is available. """ - if not self.data or not self.matching_groups: + if not self.data: logging.info("No data found, please call get_data() first") - return + return ([], []) + + all_private = { + (group.get("device", ""), group.get("arch", "")) + for item in self.data + if (group := item.get("groupInfo", {})).get("aws_type") == "private" + } + iphone_set = {pair for pair in all_private if "iphone" in pair[0].lower()} + samsung_set = {pair for pair in all_private if "samsung" in pair[0].lower()} + + # logging logging.info( - "=========== Full list of table info from HUD API =============\n" - " please use values in field `info` for filtering, " - "while `groupInfo` holds the original benchmark metadata" + f"Found private {len(iphone_set)} iphone devices: {list(iphone_set)}" ) - names = [] - for item in self.data: - names.append( - { - "table_name": item.get("table_name", ""), - "groupInfo": item.get("groupInfo", {}), - "info": item.get("info", {}), - "counts": len(item.get("rows", [])), - } - ) - for name in names: - logging.info(json.dumps(name, indent=2)) + logging.info( + f"Found private {len(samsung_set)} samsung devices: {list(samsung_set)}" + ) + return (list(iphone_set), list(samsung_set)) def _generate_table_name( self, group_info: Dict[str, Any], fields: List[str] @@ -520,7 +510,7 @@ def _generate_table_name( Returns: Normalized table name string """ - name = "_".join( + name = "-".join( self.normalize_string(group_info[k]) for k in fields if k in group_info and group_info[k] @@ -530,80 +520,69 @@ def _generate_table_name( def _process( self, input_data: List[Dict[str, Any]], filters: Optional[BenchmarkFilters] - ) -> Dict[str, Any]: + ): """ Process raw benchmark data. - - This method: - 1. clean the data that generated by FAILURE_REPORT, - 2. Creates table_name from info - 3. Determines aws_type (public/private) based on info.device - 4. Sorts results by table_name - Args: - input_data: Raw benchmark data from API - Returns: - Processed benchmark data """ - # filter data with arch equal exactly "",ios and android, this normally indicates it's job-level falure indicator logging.info(f"fetched {len(input_data)} data from HUD") data = self._clean_data(input_data) - private = [] - public = [] for item in data: org_group = item.get("groupInfo", {}) - if "info" not in item: - item["info"] = {} if org_group.get("device", "").find("private") != -1: - item["info"]["aws_type"] = "private" + item["groupInfo"]["aws_type"] = "private" else: - item["info"]["aws_type"] = "public" - public.append(item) - - # Merge normalized groupInfo string values into item["info"] - item["info"].update( - { - k: self.normalize_string(v) - for k, v in item.get("groupInfo", {}).items() - if v is not None and isinstance(v, str) - } - ) - group = item.get("info", {}) + item["groupInfo"]["aws_type"] = "public" # Add full name joined by the group key fields item["table_name"] = self._generate_table_name( - group, self.query_group_table_by_fields + org_group, self.query_group_table_by_fields ) - raw_data = deepcopy(data) + self.data = deepcopy(data) - # applies customized filters if any - if filters: - data = self.filter_results(data, filters) - # generate private and public results - private = sorted( + private_list = sorted( ( item for item in data - if item.get("info", {}).get("aws_type") == "private" + if item.get("groupInfo", {}).get("aws_type") == "private" ), key=lambda x: x["table_name"], ) - public = sorted( - (item for item in data if item.get("info", {}).get("aws_type") == "public"), + print(f"Found {len(private_list)} private tables before filtering") + if filters: + private_list = self.filter_private_results(private_list, filters) + else: + logging.info("filters is None, using all private results") + + all_public = sorted( + ( + item + for item in self.data + if item.get("groupInfo", {}).get("aws_type") == "public" + ), key=lambda x: x["table_name"], ) + public_list = self._filter_public_result(private_list, all_public) + logging.info( - f"fetched clean data {len(data)}, private:{len(private)}, public:{len(public)}" + f"Found {len(private_list)} private tables, Found assoicated {len(public_list)} public tables" + ) + + self.matching_groups["private"] = MatchingGroupResult( + category="private", data=private_list + ) + self.matching_groups["public"] = MatchingGroupResult( + category="public", data=public_list ) - return {"data": raw_data, "private": private, "public": public} def _clean_data(self, data_list): + # filter data with arch equal exactly "",ios and android, this normally + # indicates it's job-level falure indicator removed_gen_arch = [ item for item in data_list if (arch := item.get("groupInfo", {}).get("arch")) is not None and arch.lower() not in ("ios", "android") ] - data = self._filter_out_failure_only(removed_gen_arch) return data @@ -634,58 +613,60 @@ def _fetch_execu_torch_data( def normalize_string(self, s: str) -> str: s = s.lower().strip() s = s.replace("+", "plus") - s = s.replace("_", "-") - s = s.replace(" ", "-") - s = re.sub(r"[^\w\-\.\(\)]", "-", s) - s = re.sub(r"-{2,}", "-", s) - s = s.replace("-(", "(").replace("(-", "(") - s = s.replace(")-", ")").replace("-)", ")") + s = s.replace("-", "_") + s = s.replace(" ", "_") + s = re.sub(r"[^\w\-\.\(\)]", "_", s) + s = re.sub(r"_{2,}", "_", s) + s = s.replace("_(", "(").replace("(_", "(") + s = s.replace(")_", ")").replace("_)", ")") s = s.replace("(private)", "") return s - def filter_results( - self, data: List[Dict[str, Any]], filters: BenchmarkFilters - ) -> List[Dict[str, Any]]: - """ - Filter benchmark results based on specified criteria. + def filter_private_results( + self, all_privates: List[Dict[str, Any]], filters: BenchmarkFilters + ): - Applies OR logic for filtering - results match if they match any of the specified filters. + # fetch all private devices within the time range for samsung and ios + private_devices = self.get_all_private_devices() - Args: - data: List of benchmark data dictionaries - filters: BenchmarkFilters object containing filter criteria + device_pool = filters.devicePoolNames or set() + backends = filters.backends or set() + models = filters.models or set() - Returns: - Filtered list of benchmark data dictionaries - """ - backends = filters.backends - devices = filters.devices - models = filters.models + if not backends and not device_pool and not models: + logging.info("No filters provided, using all private results") + return all_privates - if not backends and not devices and not models: - return data + device_ios_match = set() + if "apple_iphone_15_private" in device_pool: + device_ios_match.update( + private_devices[0] + ) # assumed to be list of (device, arch) + if "samsung_s22_private" in device_pool: + device_ios_match.update(private_devices[1]) logging.info( - f"applies OR filter: backends {backends}, devices:{devices},models:{models} " + f"Applying filter: backends={backends}, devices={device_pool}, models={models}, pair_filter={bool(device_ios_match)}" ) - pre_len = len(data) + results = [] - for item in data: - info = item.get("info", {}) + for item in all_privates: + info = item.get("groupInfo", {}) if backends and info.get("backend") not in backends: continue - if devices and info.get("device", "") not in devices: - continue + + if device_ios_match: + pair = (info.get("device", ""), info.get("arch", "")) + if pair not in device_ios_match: + continue if models and info.get("model", "") not in models: continue results.append(item) - after_len = len(results) - logging.info(f"applied customized filter before: {pre_len}, after: {after_len}") - if after_len == 0: - logging.info( - "it seems like there is no result matches the filter values" - ", please run script --list-all-table-info again, and search for values in field" - " 'info' for right format" - ) + + logging.info( + f"Filtered from private data {len(all_privates)} → {len(results)} results" + ) + if not results: + logging.info("No results matched the filters. Something is wrong.") return results @@ -717,12 +698,6 @@ def argparsers(): help="Allow output (disable silent mode)", ) - parser.add_argument( - "--print-all-table-info", - action="store_true", - help="Print all table info for debugging", - ) - # Options for generate_data parser.add_argument( "--outputType", @@ -739,10 +714,12 @@ def argparsers(): nargs="+", help="Filter results by one or more backend full name(e.g. --backend qlora mv3) (OR logic within backends scope, AND logic with other filter type)", ) + parser.add_argument( - "--devices", - nargs="+", - help="Filter results by one or more device names (e.g. --devices samsung-galaxy-s22-5g)(OR logic within devices, AND logic with other filter type)", + "--private-device-pools", + nargs="+", # allow one or more values + choices=VALID_PRIVATE_DEVICE_POOLS_NAMES, + help="List of devices to include", ) parser.add_argument( "--models", @@ -759,9 +736,9 @@ def argparsers(): args.startTime, args.endTime, filters=BenchmarkFilters( - models=args.models, backends=args.backends, devices=args.devices + models=args.models, + backends=args.backends, + devicePoolNames=args.private_device_pools, ), ) - if args.print_all_table_info: - fetcher.print_all_table_info() fetcher.output_data(args.outputType, args.outputDir) diff --git a/.ci/scripts/tests/test_get_benchmark_analysis_data.py b/.ci/scripts/tests/test_get_benchmark_analysis_data.py index 4d73ecdbceb..a1f70a4bf28 100644 --- a/.ci/scripts/tests/test_get_benchmark_analysis_data.py +++ b/.ci/scripts/tests/test_get_benchmark_analysis_data.py @@ -202,12 +202,12 @@ def test_get_base_url(self): def test_normalize_string(self): """Test normalize_string method.""" test_cases = [ - ("Test String", "test-string"), - ("test_string", "test-string"), - ("test string", "test-string"), - ("test--string", "test-string"), + ("Test String", "test_string"), + ("test_string", "test_string"), + ("test string", "test_string"), + ("test--string", "test_string"), ("test (private)", "test"), - ("test@#$%^&*", "test-"), + ("test@#$%^&*", "test_"), ] for input_str, expected in test_cases: @@ -335,95 +335,161 @@ def test_filter_public_result(self): result = self.fetcher._filter_public_result(private_list, public_list) self.assertEqual(result, expected) - def test_filter_results(self): - """Test filter_results method with various filter combinations.""" + @patch( + "get_benchmark_analysis_data.ExecutorchBenchmarkFetcher._fetch_execu_torch_data" + ) + def test_filter_private_results(self, mock_fetch): + """Test filter_private_results method with various filter combinations.""" # Create test data test_data = [ { - "info": { - "model": "llama3", - "backend": "qlora", - "device": "iphone-15-pro-max", - "arch": "ios-17", + "groupInfo": { + "model": "mv3", + "backend": "coreml_fp16", + "device": "Apple iPhone 15 Pro (private)", + "arch": "iOS 18.0", + "total_rows": 10, + "aws_type": "private", }, "rows": [{"metric_1": 1.0}], }, { - "info": { - "model": "llama3", - "backend": "spinquant", - "device": "iphone-15-pro-max", - "arch": "ios-17", + "groupInfo": { + "model": "mv3", + "backend": "test_backend", + "device": "Apple iPhone 15 Pro (private)", + "arch": "iOS 14.1.0", + "total_rows": 10, + "aws_type": "private", + }, + "rows": [{"metric_1": 1.0}], + }, + { + "groupInfo": { + "model": "mv3", + "backend": "xnnpack_q8", + "device": "Samsung Galaxy S22 Ultra 5G (private)", + "arch": "Android 14", + "total_rows": 10, + "aws_type": "private", }, "rows": [{"metric_1": 2.0}], }, { - "info": { + "groupInfo": { "model": "mv3", - "backend": "xnnpack-q8", - "device": "samsung-galaxy-s22-5g", - "arch": "android-13", + "backend": "xnnpack_q8", + "device": "Samsung Galaxy S22 Ultra 5G (private)", + "arch": "Android 13", + "total_rows": 10, + "aws_type": "private", }, - "rows": [{"metric_1": 3.0}], + "rows": [{"metric_1": 2.0}], }, { - "info": { + "groupInfo": { + "model": "meta-llama/Llama-3.2-1B-Instruct-SpinQuant_INT4_EO8", + "backend": "llama3_spinquant", + "device": "Apple iPhone 15", + "arch": "iOS 18.0", + "total_rows": 19, + "aws_type": "public", + }, + "rows": [{"metric_1": 2.0}], + }, + { + "groupInfo": { "model": "mv3", - "backend": "qnn-q8", - "device": "samsung-galaxy-s22-5g", - "arch": "android-13", + "backend": "coreml_fp16", + "device": "Apple iPhone 15 Pro Max", + "arch": "iOS 17.0", + "total_rows": 10, + "aws_type": "public", }, - "rows": [{"metric_1": 4.0}], + "rows": [{"metric_1": 2.0}], + }, + { + "groupInfo": { + "model": "meta-llama/Llama-3.2-1B-Instruct-SpinQuant_INT4_EO8", + "backend": "test", + "device": "Samsung Galaxy S22 Ultra 5G", + "arch": "Android 14", + "total_rows": 10, + "aws_type": "public", + }, + "rows": [{"metric_1": 2.0}], }, ] + mock_fetch.return_value = test_data + self.fetcher.run("2025-06-01T00:00:00", "2025-06-02T00:00:00") + # Test with no filters empty_filters = self.module.BenchmarkFilters( - models=None, backends=None, devices=None + models=None, backends=None, devicePoolNames=None ) - result = self.fetcher.filter_results(test_data, empty_filters) + + result = self.fetcher.filter_private_results(test_data, empty_filters) self.assertEqual(result, test_data) # Test with model filter model_filters = self.module.BenchmarkFilters( - models=["llama3"], backends=None, devices=None + models=["meta-llama/Llama-3.2-1B-Instruct-SpinQuant_INT4_EO8"], + backends=None, + devicePoolNames=None, ) - result = self.fetcher.filter_results(test_data, model_filters) + result = self.fetcher.filter_private_results(test_data, model_filters) self.assertEqual(len(result), 2) - self.assertTrue(all(item["info"]["model"] == "llama3" for item in result)) + self.assertTrue( + all( + item["groupInfo"]["model"] + == "meta-llama/Llama-3.2-1B-Instruct-SpinQuant_INT4_EO8" + for item in result + ) + ) # Test with backend filter backend_filters = self.module.BenchmarkFilters( - models=None, backends=["qlora", "qnn-q8"], devices=None + models=None, backends=["coreml_fp16", "test"], devicePoolNames=None ) - result = self.fetcher.filter_results(test_data, backend_filters) - self.assertEqual(len(result), 2) + result = self.fetcher.filter_private_results(test_data, backend_filters) + self.assertEqual(len(result), 3) self.assertTrue( - all(item["info"]["backend"] in ["qlora", "qnn-q8"] for item in result) + all( + item["groupInfo"]["backend"] in ["coreml_fp16", "test"] + for item in result + ) ) # Test with device filter device_filters = self.module.BenchmarkFilters( - models=None, backends=None, devices=["samsung-galaxy-s22-5g"] + models=None, backends=None, devicePoolNames=["samsung_s22_private"] ) - result = self.fetcher.filter_results(test_data, device_filters) + result = self.fetcher.filter_private_results(test_data, device_filters) self.assertEqual(len(result), 2) self.assertTrue( - all("samsung-galaxy-s22-5g" in item["info"]["device"] for item in result) + all( + "Samsung Galaxy S22 Ultra 5G (private)" in item["groupInfo"]["device"] + for item in result + ) ) # Test with combined filters (And logic fails) combined_filters = self.module.BenchmarkFilters( - models=["llama3"], backends=["xnnpack-q8"], devices=None + models=["meta-llama/Llama-3.2-1B-Instruct-SpinQuant_INT4_EO8"], + backends=["xnnpack_q8"], + devicePoolNames=None, ) - result = self.fetcher.filter_results(test_data, combined_filters) + result = self.fetcher.filter_private_results(test_data, combined_filters) self.assertEqual(len(result), 0) # Test with combined filters (And logic success) combined_filters = self.module.BenchmarkFilters( - models=["llama3"], backends=None, devices=["iphone-15-pro-max"] + models=["mv3"], + backends=None, + devicePoolNames=["apple_iphone_15_private"], ) - result = self.fetcher.filter_results(test_data, combined_filters) + result = self.fetcher.filter_private_results(test_data, combined_filters) self.assertEqual(len(result), 2) @patch( @@ -528,18 +594,12 @@ def test_run_with_failure_report(self, mock_fetch): "backend": "qlora", "device": "Iphone 15 pro max (private)", "arch": "ios_17.4.3", - }, - "info": { - "arch": "ios-17.4.3", "aws_type": "private", - "backend": "qlora", - "device": "iphone-15-pro-max", - "model": "llama3", }, "rows": [ {"workflow_id": 4, "job_id": 5, "granularity_bucket": 6, "metric": 7.0}, ], - "table_name": "llama3_qlora_iphone-15-pro-max_ios-17.4.3", + "table_name": "llama3-qlora-iphone_15_pro_max-ios_17.4.3", } mock_fetch.return_value = mock_data # Run the method @@ -605,7 +665,7 @@ def test_run_with_filters(self, mock_fetch): # Create filters for llama3 model only filters = self.module.BenchmarkFilters( - models=["llama3"], backends=None, devices=None + models=["llama3"], backends=None, devicePoolNames=None ) # Run the method with filters self.fetcher.run("2025-06-01T00:00:00", "2025-06-02T00:00:00", filters) @@ -614,27 +674,27 @@ def test_run_with_filters(self, mock_fetch): # Verify results - should only have llama3 in private results self.assertEqual(len(result["private"]), 1) - self.assertEqual(result["private"][0]["info"]["model"], "llama3") + self.assertEqual(result["private"][0]["groupInfo"]["model"], "llama3") # Public results should be empty since there's no matching table_name self.assertEqual(result["public"], []) # Test with backend filter filters = self.module.BenchmarkFilters( - models=None, backends=["xnnpack-q8"], devices=None + models=None, backends=["xnnpack_q8"], devicePoolNames=None ) self.fetcher.run("2025-06-01T00:00:00", "2025-06-02T00:00:00", filters) result = self.fetcher.get_result() print("result", result) - # Verify results - should only have xnnpack-q8 in private results + # Verify results - should only have xnnpack_q8 in private results self.assertEqual(len(result["private"]), 1) - self.assertEqual(result["private"][0]["info"]["backend"], "xnnpack-q8") + self.assertEqual(result["private"][0]["groupInfo"]["backend"], "xnnpack_q8") - # Public results should have the matching xnnpack-q8 entry + # Public results should have the matching xnnpack_q8 entry self.assertEqual(len(result["public"]), 1) - self.assertEqual(result["public"][0]["info"]["backend"], "xnnpack-q8") + self.assertEqual(result["public"][0]["groupInfo"]["backend"], "xnnpack_q8") def test_to_dict(self): """Test to_dict method.""" From 9182682bcf4e7bc7b118e6af6ae1ddec5c119ba1 Mon Sep 17 00:00:00 2001 From: Yang Wang Date: Wed, 18 Jun 2025 17:58:50 -0700 Subject: [PATCH 35/46] fix error test Signed-off-by: Yang Wang --- .ci/scripts/benchmark_tooling/README.md | 16 ++++++++++++---- .ci/scripts/benchmark_tooling/common.py | 9 +++++++++ .../get_benchmark_analysis_data.py | 8 +++++--- 3 files changed, 26 insertions(+), 7 deletions(-) diff --git a/.ci/scripts/benchmark_tooling/README.md b/.ci/scripts/benchmark_tooling/README.md index ed45b8d5e5d..83c4920e16b 100644 --- a/.ci/scripts/benchmark_tooling/README.md +++ b/.ci/scripts/benchmark_tooling/README.md @@ -31,7 +31,6 @@ python3 .ci/scripts/benchmark_tooling/get_benchmark_analysis_data.py \ - `--endTime`: End time in ISO format (e.g., "2025-06-17T18:00:00") (required) - `--env`: Choose environment ("local" or "prod", default: "prod") - `--no-silent`: Show processing logs (default: only show results & minimum logging) -- `print-all-table-info`: show all cleaned table infos, this helps user to pick the correct format of filters ##### Output Options: - `--outputType`: Choose output format (default: "print") @@ -49,15 +48,24 @@ python3 .ci/scripts/benchmark_tooling/get_benchmark_analysis_data.py \ - `--models`: Filter by specific model names (e.g "mv3" "meta-llama-llama-3.2-1b-instruct-qlora-int4-eo8") #### Example Usage -call multiple private device pools and models +call multiple private device pools and models: +this fetches all the private table data that has model `llama-3.2-1B` and `mv3` ```bash python3 get_benchmark_analysis_data.py \ --startTime "2025-06-01T00:00:00" \ --endTime "2025-06-11T00:00:00" \ ---private-device-pools 'apple_iphone_15_private' 'samsung_s22_private' ---models 'mv3' 'allenai/OLMo-1B-hf' +--private-device-pools 'apple_iphone_15_private' 'samsung_s22_private' \ +--models 'meta-llama/Llama-3.2-1B-Instruct-SpinQuant_INT4_EO8' 'mv3' ``` +this fetches all the private iphone table data that has model `llama-3.2-1B` and `mv3`, and associated public iphone data +```bash +python3 get_benchmark_analysis_data.py \ +--startTime "2025-06-01T00:00:00" \ +--endTime "2025-06-11T00:00:00" \ +--private-device-pools 'apple_iphone_15_private' \ +--models 'meta-llama/Llama-3.2-1B-Instruct-SpinQuant_INT4_EO8' 'mv3' +``` #### Working with Output Files CSV and Excel You can use methods in `common.py` to convert the file data back to DataFrame format, those methods read the first row in csv/excel file, and return result with format list of {"groupInfo":DICT, "df":df.Dataframe{}} format. diff --git a/.ci/scripts/benchmark_tooling/common.py b/.ci/scripts/benchmark_tooling/common.py index 41db7ac3cc9..7dacc19bb09 100644 --- a/.ci/scripts/benchmark_tooling/common.py +++ b/.ci/scripts/benchmark_tooling/common.py @@ -38,3 +38,12 @@ def read_all_csv_with_metadata(folder_path: str) -> List[Dict[str, Any]]: results.append({"groupInfo": meta, "df": df}) print(f"successfully fetched {len(results)} sheets from {folder_path}") return results + + +import logging +logging.basicConfig(level=logging.INFO) + +# For Excel files (assuming the Excel file is in the current directory) +file_path = "./private.xlsx" +res = read_excel_with_json_header(file_path) +logging.info(res) diff --git a/.ci/scripts/benchmark_tooling/get_benchmark_analysis_data.py b/.ci/scripts/benchmark_tooling/get_benchmark_analysis_data.py index 27562f7aeab..6277157b4ca 100644 --- a/.ci/scripts/benchmark_tooling/get_benchmark_analysis_data.py +++ b/.ci/scripts/benchmark_tooling/get_benchmark_analysis_data.py @@ -539,6 +539,8 @@ def _process( ) self.data = deepcopy(data) + + # private_list = sorted( ( item @@ -547,8 +549,9 @@ def _process( ), key=lambda x: x["table_name"], ) - print(f"Found {len(private_list)} private tables before filtering") + if filters: + logging.info(f"Found {len(private_list)} private tables before filtering") private_list = self.filter_private_results(private_list, filters) else: logging.info("filters is None, using all private results") @@ -625,7 +628,6 @@ def normalize_string(self, s: str) -> str: def filter_private_results( self, all_privates: List[Dict[str, Any]], filters: BenchmarkFilters ): - # fetch all private devices within the time range for samsung and ios private_devices = self.get_all_private_devices() @@ -638,6 +640,7 @@ def filter_private_results( return all_privates device_ios_match = set() + # hardcoded since we only have 2 device pools, each for iphone and samsung if "apple_iphone_15_private" in device_pool: device_ios_match.update( private_devices[0] @@ -714,7 +717,6 @@ def argparsers(): nargs="+", help="Filter results by one or more backend full name(e.g. --backend qlora mv3) (OR logic within backends scope, AND logic with other filter type)", ) - parser.add_argument( "--private-device-pools", nargs="+", # allow one or more values From 33de04f4c4585caa3f738557b47ec54be7f95b44 Mon Sep 17 00:00:00 2001 From: Yang Wang Date: Wed, 18 Jun 2025 17:59:52 -0700 Subject: [PATCH 36/46] fix error test Signed-off-by: Yang Wang --- .ci/scripts/benchmark_tooling/README.md | 14 +------------- 1 file changed, 1 insertion(+), 13 deletions(-) diff --git a/.ci/scripts/benchmark_tooling/README.md b/.ci/scripts/benchmark_tooling/README.md index 83c4920e16b..ec3009d6608 100644 --- a/.ci/scripts/benchmark_tooling/README.md +++ b/.ci/scripts/benchmark_tooling/README.md @@ -58,7 +58,7 @@ python3 get_benchmark_analysis_data.py \ --models 'meta-llama/Llama-3.2-1B-Instruct-SpinQuant_INT4_EO8' 'mv3' ``` -this fetches all the private iphone table data that has model `llama-3.2-1B` and `mv3`, and associated public iphone data +this fetches all the private iphone table data that has model `llama-3.2-1B` and `mv3`, and associated public iphone ```bash python3 get_benchmark_analysis_data.py \ --startTime "2025-06-01T00:00:00" \ @@ -122,18 +122,6 @@ dict_results = fetcher.to_dict() results = fetcher.output_data(output_type="excel", output_dir="./results") ``` -### analyze_benchmark_stability.py - -This script analyzes the stability of benchmark data, comparing the results of private and public devices. - -#### Quick Start - -```bash -python .ci/scripts/benchmark_tooling/analyze_benchmark_stability.py \ - "Benchmark Dataset with Private AWS Devices.xlsx" \ - --reference_file "Benchmark Dataset with Public AWS Devices.xlsx" -``` - ## Running Unit Tests The benchmark tooling includes unit tests to ensure functionality. From 68bf6f50d5b45c7e1b8923399306ca456f0f6905 Mon Sep 17 00:00:00 2001 From: Yang Wang Date: Wed, 18 Jun 2025 18:00:10 -0700 Subject: [PATCH 37/46] fix error test Signed-off-by: Yang Wang --- .ci/scripts/benchmark_tooling/common.py | 1 + .ci/scripts/benchmark_tooling/get_benchmark_analysis_data.py | 1 - 2 files changed, 1 insertion(+), 1 deletion(-) diff --git a/.ci/scripts/benchmark_tooling/common.py b/.ci/scripts/benchmark_tooling/common.py index 7dacc19bb09..3caeb13bd5b 100644 --- a/.ci/scripts/benchmark_tooling/common.py +++ b/.ci/scripts/benchmark_tooling/common.py @@ -41,6 +41,7 @@ def read_all_csv_with_metadata(folder_path: str) -> List[Dict[str, Any]]: import logging + logging.basicConfig(level=logging.INFO) # For Excel files (assuming the Excel file is in the current directory) diff --git a/.ci/scripts/benchmark_tooling/get_benchmark_analysis_data.py b/.ci/scripts/benchmark_tooling/get_benchmark_analysis_data.py index 6277157b4ca..8b8fc1a72de 100644 --- a/.ci/scripts/benchmark_tooling/get_benchmark_analysis_data.py +++ b/.ci/scripts/benchmark_tooling/get_benchmark_analysis_data.py @@ -539,7 +539,6 @@ def _process( ) self.data = deepcopy(data) - # private_list = sorted( ( From 3c2cbd2e0b9f6ad0b9c21bc30b549c6514514d9d Mon Sep 17 00:00:00 2001 From: Yang Wang Date: Wed, 18 Jun 2025 18:04:19 -0700 Subject: [PATCH 38/46] fix error test Signed-off-by: Yang Wang --- .../benchmark_tooling/get_benchmark_analysis_data.py | 6 ++++-- 1 file changed, 4 insertions(+), 2 deletions(-) diff --git a/.ci/scripts/benchmark_tooling/get_benchmark_analysis_data.py b/.ci/scripts/benchmark_tooling/get_benchmark_analysis_data.py index 8b8fc1a72de..77985712674 100644 --- a/.ci/scripts/benchmark_tooling/get_benchmark_analysis_data.py +++ b/.ci/scripts/benchmark_tooling/get_benchmark_analysis_data.py @@ -129,8 +129,10 @@ class ExecutorchBenchmarkFetcher: Fetch and process benchmark data from HUD API for ExecutorchBenchmark. This class provides methods to: - 1. Fetch benchmark data for a specified time range - 2. Process and categorize data into private and public device results + 1. Fetch all benchmark data for a specified time range + 2. Get all private device info within the time range + 3. Filter the private device data if filter is provided + 4. Then use the filtered private device data to find matched the public device data using [model, backend, device, arch] 3. Export results in various formats (JSON, DataFrame, Excel, CSV) Usage: From 990ff44b0d8a5e110fb5507d3359e18c46c9c55e Mon Sep 17 00:00:00 2001 From: Yang Wang Date: Wed, 18 Jun 2025 18:15:52 -0700 Subject: [PATCH 39/46] fix error test Signed-off-by: Yang Wang --- .ci/scripts/benchmark_tooling/README.md | 4 ++-- .../get_benchmark_analysis_data.py | 13 +++++++++---- 2 files changed, 11 insertions(+), 6 deletions(-) diff --git a/.ci/scripts/benchmark_tooling/README.md b/.ci/scripts/benchmark_tooling/README.md index ec3009d6608..e8f115e5ad6 100644 --- a/.ci/scripts/benchmark_tooling/README.md +++ b/.ci/scripts/benchmark_tooling/README.md @@ -12,9 +12,9 @@ pip install -r requirements.txt ## Tools ### get_benchmark_analysis_data.py +This script mainlu used to generate analysis data between private device and public device with same settings. -This script fetches benchmark data from HUD Open API, cleans data that only contains FAILURE_REPORT columns, and retrieves all private device metrics and associated public device metrics based on [model, backend, device, arch]. - +It fetches benchmark data from HUD Open API for a time range, then cleans the data with FAILURE inidcator, and retrieves all private device metrics and equivalent public device metrics based on [model, backend, device_pool_names, arch]. User can filter the data by specifying private device_pool_names, backends, and models for private devices. #### Quick Start ```bash diff --git a/.ci/scripts/benchmark_tooling/get_benchmark_analysis_data.py b/.ci/scripts/benchmark_tooling/get_benchmark_analysis_data.py index 77985712674..1ba60ec24f3 100644 --- a/.ci/scripts/benchmark_tooling/get_benchmark_analysis_data.py +++ b/.ci/scripts/benchmark_tooling/get_benchmark_analysis_data.py @@ -629,7 +629,11 @@ def normalize_string(self, s: str) -> str: def filter_private_results( self, all_privates: List[Dict[str, Any]], filters: BenchmarkFilters ): - # fetch all private devices within the time range for samsung and ios + """ + dynamically filter private device data based on filters, if any. + fetch all private devices within the time range, and then filter based on filter parameters + such as device_pool, backends, and models. + """ private_devices = self.get_all_private_devices() device_pool = filters.devicePoolNames or set() @@ -659,6 +663,7 @@ def filter_private_results( continue if device_ios_match: + # must match both device and arch in a record, otherwise skip pair = (info.get("device", ""), info.get("arch", "")) if pair not in device_ios_match: continue @@ -716,18 +721,18 @@ def argparsers(): parser.add_argument( "--backends", nargs="+", - help="Filter results by one or more backend full name(e.g. --backend qlora mv3) (OR logic within backends scope, AND logic with other filter type)", + help="Filter results by one or more backend full name(e.g. --backends qlora mv3) (OR logic within backends scope, AND logic with other filter type)", ) parser.add_argument( "--private-device-pools", nargs="+", # allow one or more values choices=VALID_PRIVATE_DEVICE_POOLS_NAMES, - help="List of devices to include", + help="List of devices to include [apple_iphone_15_private, samsung_s22_private, you can include both] (OR logic within private-device-pools scope, AND logic with other filter type)", ) parser.add_argument( "--models", nargs="+", - help="Filter by one or more models (OR logic withn models scope, AND logic with other filter type)", + help="Filter by one or more models (e.g. --backend 'meta-llama/Llama-3.2-1B-Instruct-SpinQuant_INT4_EO8' 'mv3') (OR logic withn models scope, AND logic with other filter type)", ) return parser.parse_args() From 99df0fe0da4ed3b1d6636c75494427878484dd59 Mon Sep 17 00:00:00 2001 From: Yang Wang Date: Wed, 18 Jun 2025 18:38:22 -0700 Subject: [PATCH 40/46] fix error test Signed-off-by: Yang Wang --- .ci/scripts/benchmark_tooling/README.md | 74 ++++++++++++++++++------- 1 file changed, 53 insertions(+), 21 deletions(-) diff --git a/.ci/scripts/benchmark_tooling/README.md b/.ci/scripts/benchmark_tooling/README.md index e8f115e5ad6..3797db3c5dd 100644 --- a/.ci/scripts/benchmark_tooling/README.md +++ b/.ci/scripts/benchmark_tooling/README.md @@ -1,10 +1,36 @@ -# Benchmark Tooling +# Executorch Benchmark Tooling -A library providing tools for fetching, processing, and analyzing ExecutorchBenchmark data from the HUD Open API. +A library providing tools for fetching, processing, and analyzing ExecutorchBenchmark data from the HUD Open API. This tooling helps compare performance metrics between private and public devices with identical settings. + +## Table of Contents + +- [Overview](#overview) +- [Installation](#installation) +- [Tools](#tools) + - [get_benchmark_analysis_data.py](#get_benchmark_analysis_datapy) + - [Quick Start](#quick-start) + - [Command Line Options](#command-line-options) + - [Example Usage](#example-usage) + - [Working with Output Files](#working-with-output-files-csv-and-excel) + - [Python API Usage](#python-api-usage) +- [Running Unit Tests](#running-unit-tests) + +## Overview + +The Executorch Benchmark Tooling provides a suite of utilities designed to: + +- Fetch benchmark data from HUD Open API for specified time ranges +- Clean and process data by filtering out failures +- Compare metrics between private and public devices with matching configurations +- Generate analysis reports in various formats (CSV, Excel, JSON) +- Support filtering by device pools, backends, and models + +This tooling is particularly useful for performance analysis, regression testing, and cross-device comparisons. ## Installation Install dependencies: + ```bash pip install -r requirements.txt ``` @@ -12,9 +38,11 @@ pip install -r requirements.txt ## Tools ### get_benchmark_analysis_data.py -This script mainlu used to generate analysis data between private device and public device with same settings. -It fetches benchmark data from HUD Open API for a time range, then cleans the data with FAILURE inidcator, and retrieves all private device metrics and equivalent public device metrics based on [model, backend, device_pool_names, arch]. User can filter the data by specifying private device_pool_names, backends, and models for private devices. +This script is mainly used to generate analysis data comparing private devices with public devices using the same settings. + +It fetches benchmark data from HUD Open API for a specified time range, cleans the data by removing entries with FAILURE indicators, and retrieves all private device metrics along with equivalent public device metrics based on matching [model, backend, device_pool_names, arch] configurations. Users can filter the data by specifying private device_pool_names, backends, and models. + #### Quick Start ```bash @@ -37,38 +65,42 @@ python3 .ci/scripts/benchmark_tooling/get_benchmark_analysis_data.py \ - `print`: Display results in console - `json`: Generate JSON file - `df`: Display results in DataFrame format: `{'private': List[{'groupInfo':Dict,'df': DF},...],'public':List[{'groupInfo':Dict,'df': DF}]` - - `excel`: Generate Excel files with multiple sheets, the field in first row and first column contains the json string of the raw metadata - - `csv`: Generate CSV files in separate folders, the field in first row and first column contains the json string of the raw metadata + - `excel`: Generate Excel files with multiple sheets, the field in first row and first column contains the JSON string of the raw metadata + - `csv`: Generate CSV files in separate folders, the field in first row and first column contains the JSON string of the raw metadata - `--outputDir`: Directory to save output files (default: current directory) ##### Filtering Options: - `--private-device-pools`: Filter by private device pool names (e.g., "samsung-galaxy-s22-5g", "samsung-galaxy-s22plus-5g") -- `--backends`: Filter by specific backend names (e.g., "qnn-q8" , ""llama3-spinquan) -- `--models`: Filter by specific model names (e.g "mv3" "meta-llama-llama-3.2-1b-instruct-qlora-int4-eo8") +- `--backends`: Filter by specific backend names (e.g., "qnn-q8", "llama3-spinquan") +- `--models`: Filter by specific model names (e.g., "mv3", "meta-llama-llama-3.2-1b-instruct-qlora-int4-eo8") #### Example Usage -call multiple private device pools and models: -this fetches all the private table data that has model `llama-3.2-1B` and `mv3` + +Filter by multiple private device pools and models: ```bash +# This fetches all private table data for models 'llama-3.2-1B' and 'mv3' python3 get_benchmark_analysis_data.py \ ---startTime "2025-06-01T00:00:00" \ ---endTime "2025-06-11T00:00:00" \ ---private-device-pools 'apple_iphone_15_private' 'samsung_s22_private' \ ---models 'meta-llama/Llama-3.2-1B-Instruct-SpinQuant_INT4_EO8' 'mv3' + --startTime "2025-06-01T00:00:00" \ + --endTime "2025-06-11T00:00:00" \ + --private-device-pools 'apple_iphone_15_private' 'samsung_s22_private' \ + --models 'meta-llama/Llama-3.2-1B-Instruct-SpinQuant_INT4_EO8' 'mv3' ``` -this fetches all the private iphone table data that has model `llama-3.2-1B` and `mv3`, and associated public iphone +Filter by specific device pool and models: ```bash +# This fetches all private iPhone table data for models 'llama-3.2-1B' and 'mv3', +# and associated public iPhone data python3 get_benchmark_analysis_data.py \ ---startTime "2025-06-01T00:00:00" \ ---endTime "2025-06-11T00:00:00" \ ---private-device-pools 'apple_iphone_15_private' \ ---models 'meta-llama/Llama-3.2-1B-Instruct-SpinQuant_INT4_EO8' 'mv3' + --startTime "2025-06-01T00:00:00" \ + --endTime "2025-06-11T00:00:00" \ + --private-device-pools 'apple_iphone_15_private' \ + --models 'meta-llama/Llama-3.2-1B-Instruct-SpinQuant_INT4_EO8' 'mv3' ``` + #### Working with Output Files CSV and Excel -You can use methods in `common.py` to convert the file data back to DataFrame format, those methods read the first row in csv/excel file, and return result with format list of {"groupInfo":DICT, "df":df.Dataframe{}} format. +You can use methods in `common.py` to convert the file data back to DataFrame format. These methods read the first row in CSV/Excel files and return results with the format `list of {"groupInfo":DICT, "df":df.Dataframe{}}`. ```python import logging @@ -126,7 +158,7 @@ results = fetcher.output_data(output_type="excel", output_dir="./results") The benchmark tooling includes unit tests to ensure functionality. -### Using pytest +### Using pytest for unit tests ```bash # From the executorch root directory From 7be520e9766520d708eae234aeecbf7e37d10c54 Mon Sep 17 00:00:00 2001 From: Yang Wang Date: Fri, 20 Jun 2025 15:59:11 -0700 Subject: [PATCH 41/46] setup link Signed-off-by: Yang Wang --- .../analyze_benchmark_stability.py | 255 ++++++++++-------- .ci/scripts/benchmark_tooling/common.py | 4 +- .../get_benchmark_analysis_data.py | 27 +- .../tests/test_get_benchmark_analysis_data.py | 51 ++-- 4 files changed, 191 insertions(+), 146 deletions(-) diff --git a/.ci/scripts/benchmark_tooling/analyze_benchmark_stability.py b/.ci/scripts/benchmark_tooling/analyze_benchmark_stability.py index 47f984b7ce3..4c67915ef5c 100644 --- a/.ci/scripts/benchmark_tooling/analyze_benchmark_stability.py +++ b/.ci/scripts/benchmark_tooling/analyze_benchmark_stability.py @@ -5,6 +5,7 @@ import matplotlib.pyplot as plt import numpy as np import pandas as pd +from common import read_excel_with_json_header from tabulate import tabulate @@ -21,34 +22,15 @@ def normalize_tab_name(name): return name.lower().replace(" ", "") -def parse_model_device(sheet_name): - """Extract model and device from sheet name using the 'model+device' pattern""" - parts = sheet_name.split("+", 1) - if len(parts) < 2: - return sheet_name, "Unknown" - return parts[0], parts[1] - - -def extract_model_device_os(sheet_name): - """ - Extract model, device, and OS from sheet name - Format expected: model+device_osname - Returns: (model, device_base, os_version) - """ - model, device_full = parse_model_device(sheet_name) - - # Use regex to separate device base name from OS version - # Pattern looks for device name followed by underscore or android/ios - match = re.match(r"(.*?)(android|ios|_)(.*)", device_full, re.IGNORECASE) - - if match: - device_base = match.group(1).rstrip("_") - os_name = match.group(2) - os_version = match.group(3) - return model, device_base, f"{os_name}{os_version}" - else: - # If no OS version found, return the device as is with empty OS - return model, device_full, "" +def parse_model_device_config(config): + """Extract model and device from config""" + model = config.get("model", "") + base_device = config.get("device", "") + os_version = config.get("arch", "") + full_device = f"{base_device}({os_version})" if os_version else base_device + if not base_device: + return model, "unkown", "unknown", "" + return model, full_device, base_device, os_version def is_matching_dataset(primary_sheet, reference_sheet): @@ -56,10 +38,20 @@ def is_matching_dataset(primary_sheet, reference_sheet): Check if two datasets match for comparison based on model and device Allows different OS versions for the same device """ - primary_model, primary_device, primary_os = extract_model_device_os(primary_sheet) - reference_model, reference_device, reference_os = extract_model_device_os( - reference_sheet - ) + primary_model = primary_sheet.get("model", "") + primary_device = primary_sheet.get("base_device", "") + primary_os = primary_sheet.get("os_version", "") + + reference_model = reference_sheet.get("model", "") + reference_device = reference_sheet.get("base_device", "") + reference_os = reference_sheet.get("os_version", "") + + if not primary_model: + print("Warning: Primary sheet {} has no model info, for {primary_model} ") + return False + if not reference_model: + print("Warning: Reference sheet {} has no model info, for {reference_model}") + return False # Model must match exactly if primary_model != reference_model: @@ -69,26 +61,12 @@ def is_matching_dataset(primary_sheet, reference_sheet): if primary_device != reference_device: return False - # If we get here, model and device base match, so it's a valid comparison - # even if OS versions differ return True def analyze_latency_stability( # noqa: C901 primary_file, reference_file=None, output_dir="stability_analysis_results" ): - """ - Analyze latency stability metrics from benchmark data in Excel files. - - Parameters: - ----------- - primary_file : str - Path to the Excel file containing primary (private) benchmark data - reference_file : str, optional - Path to the Excel file containing reference (public) benchmark data - output_dir : str - Directory to save output files - """ print(f"Analyzing latency stability from primary file: {primary_file}") if reference_file: print(f"Using reference file for comparison: {reference_file}") @@ -100,15 +78,28 @@ def analyze_latency_stability( # noqa: C901 # Load primary datasets print_section_header("LOADING PRIMARY DATASETS (Private)") primary_datasets = {} - primary_xls = pd.ExcelFile(primary_file) + documents = read_excel_with_json_header(primary_file) + + for document in documents: + sheetName = document.get("sheetName", None) + print(f"Loading dataset: {sheetName}") + df = document.get("df", None) + config = document.get("groupInfo", None) + + if df is None or df.empty: + print(f"Skipping sheet {sheetName} because it has no df data") + continue + + if not config or not sheetName: + print( + f" Skipping document: Missing required data groupInfo:{config} sheetName:{sheetName}" + ) + continue - for sheet in primary_xls.sheet_names: - print(f"Loading dataset: {sheet}") - df = pd.read_excel(primary_xls, sheet_name=sheet) - model, device = parse_model_device(sheet) + model, full_device, base_device, os_version = parse_model_device_config(config) # Check if required columns exist - required_cols = ["InferenceTime", "Date"] + required_cols = ["avg_inference_latency(ms)", "metadata_info.timestamp"] if "trimmean_inference_latency(ms)" in df.columns: trimmed_col = "trimmean_inference_latency(ms)" required_cols.append(trimmed_col) @@ -123,36 +114,55 @@ def analyze_latency_stability( # noqa: C901 # Skip sheets without required columns if not all(col in df.columns for col in required_cols): - print(f" Skipping {sheet}: Missing required columns") + print(f" Skipping {sheetName}: Missing required columns") continue # Convert Date to datetime - df["Date"] = pd.to_datetime(df["Date"]) + df["Date"] = pd.to_datetime(df["metadata_info.timestamp"]) # Calculate stability metrics - metrics = calculate_stability_metrics(df, "InferenceTime", trimmed_col, tps_col) + metrics = calculate_stability_metrics( + df, "avg_inference_latency(ms)", trimmed_col, tps_col + ) - primary_datasets[sheet] = { + primary_datasets[sheetName] = { "df": df, "metrics": metrics, "model": model, - "device": device, - "sheet_name": sheet, + "full_device": full_device, + "base_device": base_device, + "os_version": os_version, + "sheet_name": sheetName, } # Load reference datasets if provided reference_datasets = {} if reference_file: print_section_header("LOADING REFERENCE DATASETS (Public)") - reference_xls = pd.ExcelFile(reference_file) + documents = read_excel_with_json_header(primary_file) + + for document in documents: + sheetName = document.get("sheetName", None) + print(f"Loading dataset: {sheetName}") + df = document.get("df", None) + config = document.get("groupInfo", None) + + if df is None or df.empty: + print(f"Skipping sheet {sheetName} because it has no df data") + continue + + if not config or not sheetName: + print( + f" Skipping document: Missing required data groupInfo:{config} sheetName:{sheetName}" + ) + continue - for sheet in reference_xls.sheet_names: - print(f"Loading reference dataset: {sheet}") - df = pd.read_excel(reference_xls, sheet_name=sheet) - model, device = parse_model_device(sheet) + model, full_device, base_device, os_version = parse_model_device_config( + config + ) # Check if required columns exist - required_cols = ["InferenceTime", "Date"] + required_cols = ["avg_inference_latency(ms)", "metadata_info.timestamp"] if "trimmean_inference_latency(ms)" in df.columns: trimmed_col = "trimmean_inference_latency(ms)" required_cols.append(trimmed_col) @@ -167,23 +177,27 @@ def analyze_latency_stability( # noqa: C901 # Skip sheets without required columns if not all(col in df.columns for col in required_cols): - print(f" Skipping reference {sheet}: Missing required columns") + print( + f" Skipping reference {sheetName}: Missing required columns{required_cols}" + ) continue # Convert Date to datetime - df["Date"] = pd.to_datetime(df["Date"]) + df["Date"] = pd.to_datetime(df["metadata_info.timestamp"]) # Calculate stability metrics metrics = calculate_stability_metrics( - df, "InferenceTime", trimmed_col, tps_col + df, "avg_inference_latency(ms)", trimmed_col, tps_col ) - reference_datasets[sheet] = { + reference_datasets[sheetName] = { "df": df, "metrics": metrics, "model": model, - "device": device, - "sheet_name": sheet, + "full_device": full_device, + "sheet_name": sheetName, + "base_device": base_device, + "os_version": os_version, } # Process primary datasets @@ -193,7 +207,7 @@ def analyze_latency_stability( # noqa: C901 generate_dataset_report( sheet, info["model"], - info["device"], + info["full_device"], "Primary", info["df"], info["metrics"], @@ -212,7 +226,7 @@ def analyze_latency_stability( # noqa: C901 generate_dataset_report( sheet, info["model"], - info["device"], + info["full_device"], "Reference", info["df"], info["metrics"], @@ -232,7 +246,7 @@ def analyze_latency_stability( # noqa: C901 found_match = False for ref_sheet, ref_info in reference_datasets.items(): - if is_matching_dataset(primary_sheet, ref_sheet): + if is_matching_dataset(primary_info, ref_info): # Found a match print( f"Matched: {primary_sheet} (Private) with {ref_sheet} (Public)" @@ -240,11 +254,8 @@ def analyze_latency_stability( # noqa: C901 generate_comparison_report( primary_sheet, ref_sheet, - primary_info["model"], - primary_info["device"], - ref_info["device"], - primary_info["metrics"], - ref_info["metrics"], + primary_info, + ref_info, output_dir, ) found_match = True @@ -620,7 +631,12 @@ def generate_time_series_plot(dataset_name, df, output_dir, dataset_type): df_sorted = df.sort_values("Date") # Plot raw latency - plt.plot(df_sorted["Date"], df_sorted["InferenceTime"], "b-", label="Raw Latency") + plt.plot( + df_sorted["Date"], + df_sorted["avg_inference_latency(ms)"], + "b-", + label="Raw Latency", + ) # Plot trimmed latency if available if "trimmean_inference_latency(ms)" in df_sorted.columns: @@ -634,7 +650,9 @@ def generate_time_series_plot(dataset_name, df, output_dir, dataset_type): # Add rolling mean window = min(5, len(df_sorted)) if window > 1: - rolling_mean = df_sorted["InferenceTime"].rolling(window=window).mean() + rolling_mean = ( + df_sorted["avg_inference_latency(ms)"].rolling(window=window).mean() + ) plt.plot( df_sorted["Date"], rolling_mean, "r--", label=f"{window}-point Rolling Mean" ) @@ -658,11 +676,8 @@ def generate_time_series_plot(dataset_name, df, output_dir, dataset_type): def generate_comparison_report( # noqa: C901 primary_sheet, reference_sheet, - model, - primary_device, - reference_device, - primary_metrics, - reference_metrics, + primary_info, + reference_info, output_dir, ): """Generate a comparison report between primary and reference datasets""" @@ -671,6 +686,12 @@ def generate_comparison_report( # noqa: C901 # Create a string buffer to hold the report content report_content = [] + model = (primary_info["model"],) + primary_device = (primary_info["full_device"],) + reference_device = reference_info["full_device"] + primary_metrics = primary_info["metrics"] + reference_metrics = reference_info["metrics"] + # Header report_content.append("Private vs Public Stability Comparison") report_content.append("=" * 80) @@ -971,8 +992,10 @@ def generate_comparison_report( # noqa: C901 ) # Note about OS version difference if applicable - _, primary_device_base, primary_os = extract_model_device_os(primary_sheet) - _, reference_device_base, reference_os = extract_model_device_os(reference_sheet) + primary_device_base = primary_info.get("base_device", "") + primary_os = primary_info.get("os_version", "") + reference_device_base = reference_info.get("base_device", "") + reference_os = reference_info.get("os_version", "") if primary_os != reference_os and primary_os and reference_os: report_content.append("") @@ -1030,7 +1053,7 @@ def generate_intra_primary_summary(primary_datasets, output_dir): # noqa: C901 { "Sheet": sheet_name, "Model": info["model"], - "Device": info["device"], + "Device": info["full_device"], "Mean Latency (ms)": info["metrics"]["mean_raw_latency"], "CV (%)": info["metrics"]["cv_raw_latency"], "Stability Score": info["metrics"]["stability_score"], @@ -1103,8 +1126,8 @@ def generate_intra_primary_summary(primary_datasets, output_dir): # noqa: C901 # Device-based comparison # First, extract base device names for grouping device_base_map = {} - for sheet_name in primary_datasets: - _, device_base, _ = extract_model_device_os(sheet_name) + for sheet_name, info in primary_datasets.items(): + device_base = info.get("base_device", "") device_base_map[sheet_name] = device_base # Add base device to DataFrame @@ -1138,8 +1161,8 @@ def generate_intra_primary_summary(primary_datasets, output_dir): # noqa: C901 # OS version comparison if multiple OS versions exist os_versions = {} - for sheet_name in primary_datasets: - _, _, os_version = extract_model_device_os(sheet_name) + for sheet_name, info in primary_datasets.items(): + os_version = info.get("os_version", "") if os_version: # Only include if OS version was extracted os_versions[sheet_name] = os_version @@ -1254,9 +1277,13 @@ def generate_summary_report( # noqa: C901 # Primary datasets summary primary_data = [] for sheet_name, info in primary_datasets.items(): - model, device_base, os_version = extract_model_device_os(sheet_name) + model, device_base, os_version = ( + info.get("model", ""), + info.get("base_device", ""), + info.get("os_version", ""), + ) device_display = ( - f"{device_base} ({os_version})" if os_version else info["device"] + f"{device_base}({os_version})" if os_version else info["device"] ) primary_data.append( @@ -1287,9 +1314,13 @@ def generate_summary_report( # noqa: C901 if reference_datasets: reference_data = [] for sheet_name, info in reference_datasets.items(): - model, device_base, os_version = extract_model_device_os(sheet_name) + model, device_base, os_version = ( + info.get("model", ""), + info.get("base_device", ""), + info.get("os_version", ""), + ) device_display = ( - f"{device_base} ({os_version})" if os_version else info["device"] + f"{device_base}({os_version})" if os_version else info["device"] ) reference_data.append( @@ -1322,29 +1353,31 @@ def generate_summary_report( # noqa: C901 # Comparison summary for matching datasets comparison_data = [] - for primary_sheet, primary_info in primary_datasets.items(): - for ref_sheet, ref_info in reference_datasets.items(): - if is_matching_dataset(primary_sheet, ref_sheet): + for _, primary_info in primary_datasets.items(): + for _, ref_info in reference_datasets.items(): + if is_matching_dataset(primary_info, ref_info): primary_metrics = primary_info["metrics"] reference_metrics = ref_info["metrics"] # Extract model and device info for display - model, primary_device_base, primary_os = extract_model_device_os( - primary_sheet - ) - _, reference_device_base, reference_os = extract_model_device_os( - ref_sheet + model, primary_device_base, primary_os = ( + primary_info.get("model", ""), + primary_info.get("base_device", ""), + primary_info.get("os_version", ""), ) + reference_device_base, reference_os = ref_info.get( + "base_device", "" + ), ref_info.get("os_version", "") primary_device_display = ( f"{primary_device_base} ({primary_os})" if primary_os - else primary_info["device"] + else primary_info["full_device"] ) reference_device_display = ( f"{reference_device_base} ({reference_os})" if reference_os - else ref_info["device"] + else ref_info["full_device"] ) comparison_data.append( @@ -1424,15 +1457,15 @@ def generate_summary_report( # noqa: C901 # OS version insights if available os_versions = {} - for sheet_name in primary_datasets: - _, _, os_version = extract_model_device_os(sheet_name) + for sheet_name, info in primary_datasets.items(): + os_version = info.get("os_version", "") if os_version: os_versions[sheet_name] = os_version if os_versions and len(set(os_versions.values())) > 1: # Add OS version to primary DataFrame primary_df["OS Version"] = primary_df["Dataset"].map( - lambda x: extract_model_device_os(x)[2] + lambda x: primary_datasets[x].get("os_version", np.nan) ) # Remove rows with no OS version @@ -1498,11 +1531,11 @@ def main(): description="Analyze ML model latency stability from benchmark data." ) parser.add_argument( - "primary_file", + "--primary-file", help="Path to Excel file containing primary (private) benchmark data", ) parser.add_argument( - "--reference_file", + "--reference-file", help="Path to Excel file containing reference (public) benchmark data for comparison", default=None, ) diff --git a/.ci/scripts/benchmark_tooling/common.py b/.ci/scripts/benchmark_tooling/common.py index 3caeb13bd5b..521e9f3b3ce 100644 --- a/.ci/scripts/benchmark_tooling/common.py +++ b/.ci/scripts/benchmark_tooling/common.py @@ -17,7 +17,7 @@ def read_excel_with_json_header(path: str) -> List[Dict[str, Any]]: # The actual data starts from the next row; treat row 1 as header df_data = pd.read_excel(path, sheet_name=sheet, skiprows=1, engine="openpyxl") - results.append({"groupInfo": meta, "df": df_data}) + results.append({"groupInfo": meta, "df": df_data, "sheetName": sheet}) print(f"successfully fetched {len(results)} sheets from {path}") return results @@ -35,7 +35,7 @@ def read_all_csv_with_metadata(folder_path: str) -> List[Dict[str, Any]]: except json.JSONDecodeError: meta = {} df = pd.read_csv(path, skiprows=1) - results.append({"groupInfo": meta, "df": df}) + results.append({"groupInfo": meta, "df": df, "sheetName": fname}) print(f"successfully fetched {len(results)} sheets from {folder_path}") return results diff --git a/.ci/scripts/benchmark_tooling/get_benchmark_analysis_data.py b/.ci/scripts/benchmark_tooling/get_benchmark_analysis_data.py index 1ba60ec24f3..198436aff0b 100644 --- a/.ci/scripts/benchmark_tooling/get_benchmark_analysis_data.py +++ b/.ci/scripts/benchmark_tooling/get_benchmark_analysis_data.py @@ -167,7 +167,7 @@ def __init__( self.query_group_row_by_fields = ( group_row_fields if group_row_fields - else ["workflow_id", "job_id", "granularity_bucket"] + else ["workflow_id", "job_id", "metadata_info.timestamp"] ) self.data = None self.disable_logging = disable_logging @@ -187,8 +187,8 @@ def run( if data is None: logging.warning("no data fetched from the HUD API") return None - - self._process(data, filters) + self._proces_raw_data(data) + self._process_private_public_data(filters) def _filter_out_failure_only( self, data_list: List[Dict[str, Any]] @@ -202,7 +202,7 @@ def _filter_out_failure_only( Returns: Filtered list with rows containing only FAILURE_REPORT removed """ - ONLY = {"workflow_id", "granularity_bucket", "job_id", "FAILURE_REPORT"} + ONLY = {"workflow_id", "metadata_info.timestamp", "job_id", "FAILURE_REPORT"} for item in data_list: filtered_rows = [ row @@ -299,7 +299,9 @@ def output_data( Returns: Benchmark results in the specified format """ - logging.info(f"Generating output with type: {[self.matching_groups.keys()]}") + logging.info( + f"Generating output with type {output_type}: {[self.matching_groups.keys()]}" + ) o_type = self._to_output_type(output_type) if o_type == OutputType.PRINT: logging.info("\n ========= Generate print output ========= \n") @@ -520,9 +522,7 @@ def _generate_table_name( return name - def _process( - self, input_data: List[Dict[str, Any]], filters: Optional[BenchmarkFilters] - ): + def _proces_raw_data(self, input_data: List[Dict[str, Any]]): """ Process raw benchmark data. """ @@ -541,11 +541,19 @@ def _process( ) self.data = deepcopy(data) + def _process_private_public_data(self, filters: Optional[BenchmarkFilters]): + """ + Process raw benchmark data. + """ + if not self.data: + logging.info("No data found, please call get_data() first") + return + # private_list = sorted( ( item - for item in data + for item in self.data if item.get("groupInfo", {}).get("aws_type") == "private" ), key=lambda x: x["table_name"], @@ -655,7 +663,6 @@ def filter_private_results( logging.info( f"Applying filter: backends={backends}, devices={device_pool}, models={models}, pair_filter={bool(device_ios_match)}" ) - results = [] for item in all_privates: info = item.get("groupInfo", {}) diff --git a/.ci/scripts/tests/test_get_benchmark_analysis_data.py b/.ci/scripts/tests/test_get_benchmark_analysis_data.py index a1f70a4bf28..673452ab481 100644 --- a/.ci/scripts/tests/test_get_benchmark_analysis_data.py +++ b/.ci/scripts/tests/test_get_benchmark_analysis_data.py @@ -72,13 +72,13 @@ def setUp(self): { "workflow_id": 1, "job_id": 1, - "granularity_bucket": "2025-06-15T15:00:00Z", + "metadata_info.timestamp": "2025-06-15T15:00:00Z", "metric_1": 2.0, }, { "workflow_id": 2, "job_id": 2, - "granularity_bucket": "2025-06-15T14:00:00Z", + "metadata_info.timestamp": "2025-06-15T14:00:00Z", "metric_1": 3.0, }, ], @@ -94,13 +94,13 @@ def setUp(self): { "workflow_id": 3, "job_id": 3, - "granularity_bucket": "2025-06-15T17:00:00Z", + "metadata_info.timestamp": "2025-06-15T17:00:00Z", "metric_1": 2.0, }, { "workflow_id": 4, "job_id": 5, - "granularity_bucket": "2025-06-15T14:00:00Z", + "metadata_info.timestamp": "2025-06-15T14:00:00Z", "metric_1": 3.0, }, ], @@ -119,13 +119,13 @@ def setUp(self): { "workflow_id": 1, "job_id": 1, - "granularity_bucket": "2025-06-15T15:00:00Z", + "metadata_info.timestamp": "2025-06-15T15:00:00Z", "metric_1": 2.0, }, { "workflow_id": 2, "job_id": 2, - "granularity_bucket": "2025-06-15T14:00:00Z", + "metadata_info.timestamp": "2025-06-15T14:00:00Z", "metric_1": 3.0, }, ], @@ -141,13 +141,13 @@ def setUp(self): { "workflow_id": 6, "job_id": 6, - "granularity_bucket": "2025-06-15T17:00:00Z", + "metadata_info.timestamp": "2025-06-15T17:00:00Z", "metric_1": 1.0, }, { "workflow_id": 8, "job_id": 8, - "granularity_bucket": "2025-06-15T14:00:00Z", + "metadata_info.timestamp": "2025-06-15T14:00:00Z", "metric_1": 1.0, }, ], @@ -163,13 +163,13 @@ def setUp(self): { "workflow_id": 3, "job_id": 3, - "granularity_bucket": "2025-06-15T17:00:00Z", + "metadata_info.timestamp": "2025-06-15T17:00:00Z", "metric_1": 2.0, }, { "workflow_id": 4, "job_id": 5, - "granularity_bucket": "2025-06-15T14:00:00Z", + "metadata_info.timestamp": "2025-06-15T14:00:00Z", "metric_1": 3.0, }, ], @@ -186,7 +186,7 @@ def test_init(self): ) self.assertEqual( self.fetcher.query_group_row_by_fields, - ["workflow_id", "job_id", "granularity_bucket"], + ["workflow_id", "job_id", "metadata_info.timestamp"], ) self.assertTrue(self.fetcher.disable_logging) self.assertEqual(self.fetcher.matching_groups, {}) @@ -253,13 +253,13 @@ def test_filter_out_failure_only(self): { "workflow_id": 1, "job_id": 2, - "granularity_bucket": 3, + "metadata_info.timestamp": 3, "FAILURE_REPORT": "0", }, { "workflow_id": 4, "job_id": 5, - "granularity_bucket": 6, + "metadata_info.timestamp": 6, "metric": 7.0, }, ] @@ -269,7 +269,7 @@ def test_filter_out_failure_only(self): { "workflow_id": 8, "job_id": 9, - "granularity_bucket": 10, + "metadata_info.timestamp": 10, "metric": 11.0, }, ] @@ -279,13 +279,13 @@ def test_filter_out_failure_only(self): { "workflow_id": 10, "job_id": 12, - "granularity_bucket": 3, + "metadata_info.timestamp": 3, "FAILURE_REPORT": "0", }, { "workflow_id": 21, "job_id": 15, - "granularity_bucket": 6, + "metadata_info.timestamp": 6, "FAILURE_REPORT": "0", }, ] @@ -298,7 +298,7 @@ def test_filter_out_failure_only(self): { "workflow_id": 4, "job_id": 5, - "granularity_bucket": 6, + "metadata_info.timestamp": 6, "metric": 7.0, }, ] @@ -308,7 +308,7 @@ def test_filter_out_failure_only(self): { "workflow_id": 8, "job_id": 9, - "granularity_bucket": 10, + "metadata_info.timestamp": 10, "metric": 11.0, }, ] @@ -553,13 +553,13 @@ def test_run_with_failure_report(self, mock_fetch): { "workflow_id": 1, "job_id": 2, - "granularity_bucket": 3, + "metadata_info.timestamp": 3, "FAILURE_REPORT": "0", }, { "workflow_id": 4, "job_id": 5, - "granularity_bucket": 6, + "metadata_info.timestamp": 6, "metric": 7.0, }, ], @@ -575,13 +575,13 @@ def test_run_with_failure_report(self, mock_fetch): { "workflow_id": 1, "job_id": 2, - "granularity_bucket": 3, + "metadata_info.timestamp": 3, "FAILURE_REPORT": "0", }, { "workflow_id": 1, "job_id": 2, - "granularity_bucket": 3, + "metadata_info.timestamp": 3, "FAILURE_REPORT": "0", }, ], @@ -597,7 +597,12 @@ def test_run_with_failure_report(self, mock_fetch): "aws_type": "private", }, "rows": [ - {"workflow_id": 4, "job_id": 5, "granularity_bucket": 6, "metric": 7.0}, + { + "workflow_id": 4, + "job_id": 5, + "metadata_info.timestamp": 6, + "metric": 7.0, + }, ], "table_name": "llama3-qlora-iphone_15_pro_max-ios_17.4.3", } From 600bb1a3852410303389724a4963cf8bea8bba23 Mon Sep 17 00:00:00 2001 From: Yang Wang Date: Fri, 20 Jun 2025 16:02:06 -0700 Subject: [PATCH 42/46] setup link Signed-off-by: Yang Wang --- .ci/scripts/benchmark_tooling/README.md | 7 ++++++- 1 file changed, 6 insertions(+), 1 deletion(-) diff --git a/.ci/scripts/benchmark_tooling/README.md b/.ci/scripts/benchmark_tooling/README.md index 3797db3c5dd..369680c9b15 100644 --- a/.ci/scripts/benchmark_tooling/README.md +++ b/.ci/scripts/benchmark_tooling/README.md @@ -46,10 +46,15 @@ It fetches benchmark data from HUD Open API for a specified time range, cleans t #### Quick Start ```bash +# generate excel sheets for all private devices with public devices using the same settings python3 .ci/scripts/benchmark_tooling/get_benchmark_analysis_data.py \ --startTime "2025-06-11T00:00:00" \ --endTime "2025-06-17T18:00:00" \ - --outputType "csv" + --outputType "excel" + +python3 analyze_benchmark_stability.py \ +--primary-file private.xlsx \ +--reference-file public.xlsx ``` #### Command Line Options From 4c0fdd2c88809e9b47fc602a117f5becff4ccb62 Mon Sep 17 00:00:00 2001 From: Yang Wang Date: Fri, 20 Jun 2025 20:43:39 -0700 Subject: [PATCH 43/46] setup link Signed-off-by: Yang Wang --- .ci/scripts/benchmark_tooling/README.md | 2 +- .../analyze_benchmark_stability.py | 34 ++++++++++--------- .../get_benchmark_analysis_data.py | 6 +++- .../third-party/generate-cpuinfo-wrappers.py | 8 +++-- .../spinquant/third-party/FFHT/example.py | 4 +-- 5 files changed, 32 insertions(+), 22 deletions(-) diff --git a/.ci/scripts/benchmark_tooling/README.md b/.ci/scripts/benchmark_tooling/README.md index 369680c9b15..25ba2a739a4 100644 --- a/.ci/scripts/benchmark_tooling/README.md +++ b/.ci/scripts/benchmark_tooling/README.md @@ -52,7 +52,7 @@ python3 .ci/scripts/benchmark_tooling/get_benchmark_analysis_data.py \ --endTime "2025-06-17T18:00:00" \ --outputType "excel" -python3 analyze_benchmark_stability.py \ +python3 .ci/scripts/benchmark_tooling/analyze_benchmark_stability.py \ --primary-file private.xlsx \ --reference-file public.xlsx ``` diff --git a/.ci/scripts/benchmark_tooling/analyze_benchmark_stability.py b/.ci/scripts/benchmark_tooling/analyze_benchmark_stability.py index 4c67915ef5c..64e4b05df86 100644 --- a/.ci/scripts/benchmark_tooling/analyze_benchmark_stability.py +++ b/.ci/scripts/benchmark_tooling/analyze_benchmark_stability.py @@ -1,6 +1,5 @@ import argparse import os -import re import matplotlib.pyplot as plt import numpy as np @@ -16,21 +15,23 @@ def print_section_header(title): print("=" * 100 + "\n") -def normalize_tab_name(name): +def normalize_name(name): """Normalize tab name for better matching""" # Convert to lowercase and remove spaces - return name.lower().replace(" ", "") + return name.lower().replace(" ", "").replace("(private)", "") def parse_model_device_config(config): """Extract model and device from config""" model = config.get("model", "") + backend = config.get("backend", "") + full_model = f"{model}({backend})" if backend else model base_device = config.get("device", "") os_version = config.get("arch", "") full_device = f"{base_device}({os_version})" if os_version else base_device if not base_device: - return model, "unkown", "unknown", "" - return model, full_device, base_device, os_version + return full_model, "unkown", "unknown", "" + return full_model, full_device, base_device, os_version def is_matching_dataset(primary_sheet, reference_sheet): @@ -38,13 +39,13 @@ def is_matching_dataset(primary_sheet, reference_sheet): Check if two datasets match for comparison based on model and device Allows different OS versions for the same device """ - primary_model = primary_sheet.get("model", "") - primary_device = primary_sheet.get("base_device", "") - primary_os = primary_sheet.get("os_version", "") + primary_model = normalize_name(primary_sheet.get("model", "")) + primary_device = normalize_name(primary_sheet.get("base_device", "")) + # primary_os = normalize_name(primary_sheet.get("os_version", "")) - reference_model = reference_sheet.get("model", "") - reference_device = reference_sheet.get("base_device", "") - reference_os = reference_sheet.get("os_version", "") + reference_model = normalize_name(reference_sheet.get("model", "")) + reference_device = normalize_name(reference_sheet.get("base_device", "")) + # reference_os = normalize_name(reference_sheet.get("os_version", "")) if not primary_model: print("Warning: Primary sheet {} has no model info, for {primary_model} ") @@ -82,9 +83,9 @@ def analyze_latency_stability( # noqa: C901 for document in documents: sheetName = document.get("sheetName", None) - print(f"Loading dataset: {sheetName}") df = document.get("df", None) config = document.get("groupInfo", None) + print(f"Loading dataset: {sheetName} with config: {config} ") if df is None or df.empty: print(f"Skipping sheet {sheetName} because it has no df data") @@ -139,14 +140,13 @@ def analyze_latency_stability( # noqa: C901 reference_datasets = {} if reference_file: print_section_header("LOADING REFERENCE DATASETS (Public)") - documents = read_excel_with_json_header(primary_file) + documents = read_excel_with_json_header(reference_file) for document in documents: sheetName = document.get("sheetName", None) - print(f"Loading dataset: {sheetName}") df = document.get("df", None) config = document.get("groupInfo", None) - + print(f"Loading dataset: {sheetName} with config:{config}") if df is None or df.empty: print(f"Skipping sheet {sheetName} because it has no df data") continue @@ -263,7 +263,9 @@ def analyze_latency_stability( # noqa: C901 break if not found_match: - print(f"Warning: No matching reference dataset for {primary_sheet}") + print( + f"Warning: No matching reference dataset for {primary_sheet} with config: {primary_info['model']}{primary_info['full_device']} " + ) if not matches_found: print("No matching datasets found between primary and reference files.") diff --git a/.ci/scripts/benchmark_tooling/get_benchmark_analysis_data.py b/.ci/scripts/benchmark_tooling/get_benchmark_analysis_data.py index 198436aff0b..aecf4ff9744 100644 --- a/.ci/scripts/benchmark_tooling/get_benchmark_analysis_data.py +++ b/.ci/scripts/benchmark_tooling/get_benchmark_analysis_data.py @@ -302,6 +302,7 @@ def output_data( logging.info( f"Generating output with type {output_type}: {[self.matching_groups.keys()]}" ) + o_type = self._to_output_type(output_type) if o_type == OutputType.PRINT: logging.info("\n ========= Generate print output ========= \n") @@ -576,7 +577,10 @@ def _process_private_public_data(self, filters: Optional[BenchmarkFilters]): public_list = self._filter_public_result(private_list, all_public) logging.info( - f"Found {len(private_list)} private tables, Found assoicated {len(public_list)} public tables" + f"Found {len(private_list)} private tables, {[item['table_name'] for item in private_list]}" + ) + logging.info( + f"Found assoicated {len(public_list)} public tables, {json.dumps([item['table_name'] for item in public_list],indent=2)}" ) self.matching_groups["private"] = MatchingGroupResult( diff --git a/backends/xnnpack/third-party/generate-cpuinfo-wrappers.py b/backends/xnnpack/third-party/generate-cpuinfo-wrappers.py index 9d1830c8e2c..fc550be63a3 100644 --- a/backends/xnnpack/third-party/generate-cpuinfo-wrappers.py +++ b/backends/xnnpack/third-party/generate-cpuinfo-wrappers.py @@ -66,7 +66,8 @@ ], "(defined(__arm__) || defined(__aarch64__)) && defined(TARGET_OS_MAC) && TARGET_OS_MAC": [ "arm/mach/init.c", - ],} + ], +} if __name__ == "__main__": @@ -77,7 +78,10 @@ print(filepath) os.makedirs(os.path.dirname(filepath)) with open(filepath, "w") as wrapper: - print("/* Auto-generated by generate-wrappers.py script. Do not modify */", file=wrapper) + print( + "/* Auto-generated by generate-wrappers.py script. Do not modify */", + file=wrapper, + ) print(file=wrapper) print("#ifdef __APPLE__", file=wrapper) print("\t#include ", file=wrapper) diff --git a/extension/llm/custom_ops/spinquant/third-party/FFHT/example.py b/extension/llm/custom_ops/spinquant/third-party/FFHT/example.py index 576c89830da..7712d2a51f2 100644 --- a/extension/llm/custom_ops/spinquant/third-party/FFHT/example.py +++ b/extension/llm/custom_ops/spinquant/third-party/FFHT/example.py @@ -15,6 +15,6 @@ t2 = timeit.default_timer() if sys.version_info[0] == 2: - print (t2 - t1 + 0.0) / (reps + 0.0) + print(t2 - t1 + 0.0) / (reps + 0.0) if sys.version_info[0] == 3: - print('{}'.format((t2 - t1 + 0.0) / (reps + 0.0))) + print("{}".format((t2 - t1 + 0.0) / (reps + 0.0))) From faa2012901a8ea07a79e00d57bdfe99a1838c616 Mon Sep 17 00:00:00 2001 From: Yang Wang Date: Fri, 20 Jun 2025 20:56:55 -0700 Subject: [PATCH 44/46] setup link Signed-off-by: Yang Wang --- .../third-party/generate-cpuinfo-wrappers.py | 5 +- .../spinquant/third-party/FFHT/example.py | 4 +- private.xlsx | Bin 0 -> 18144 bytes public.xlsx | Bin 0 -> 13552 bytes .../comprehensive_stability_summary.txt | 98 ++++++++++++++++++ .../intra_primary_stability_summary.txt | 94 +++++++++++++++++ .../table10_primary_report.txt | 43 ++++++++ .../table10_primary_time_series.png | Bin 0 -> 63029 bytes .../table10_vs_table7_comparison.txt | 42 ++++++++ .../table11_primary_report.txt | 43 ++++++++ .../table11_primary_time_series.png | Bin 0 -> 70499 bytes .../table12_primary_report.txt | 54 ++++++++++ .../table12_primary_time_series.png | Bin 0 -> 81561 bytes .../table12_vs_table8_comparison.txt | 42 ++++++++ .../table13_primary_report.txt | 54 ++++++++++ .../table13_primary_time_series.png | Bin 0 -> 81060 bytes .../table1_primary_report.txt | 37 +++++++ .../table1_primary_time_series.png | Bin 0 -> 37716 bytes .../table1_reference_report.txt | 37 +++++++ .../table1_reference_time_series.png | Bin 0 -> 34518 bytes .../table1_vs_table1_comparison.txt | 39 +++++++ .../table2_primary_report.txt | 37 +++++++ .../table2_primary_time_series.png | Bin 0 -> 37828 bytes .../table2_reference_report.txt | 37 +++++++ .../table2_reference_time_series.png | Bin 0 -> 34617 bytes .../table2_vs_table2_comparison.txt | 39 +++++++ .../table3_primary_report.txt | 37 +++++++ .../table3_primary_time_series.png | Bin 0 -> 37837 bytes .../table3_reference_report.txt | 40 +++++++ .../table3_reference_time_series.png | Bin 0 -> 50128 bytes .../table4_primary_report.txt | 37 +++++++ .../table4_primary_time_series.png | Bin 0 -> 41797 bytes .../table4_reference_report.txt | 37 +++++++ .../table4_reference_time_series.png | Bin 0 -> 33342 bytes .../table4_vs_table3_comparison.txt | 42 ++++++++ .../table5_primary_report.txt | 37 +++++++ .../table5_primary_time_series.png | Bin 0 -> 35797 bytes .../table5_reference_report.txt | 45 ++++++++ .../table5_reference_time_series.png | Bin 0 -> 72372 bytes .../table5_vs_table4_comparison.txt | 39 +++++++ .../table6_primary_report.txt | 40 +++++++ .../table6_primary_time_series.png | Bin 0 -> 46768 bytes .../table6_reference_report.txt | 43 ++++++++ .../table6_reference_time_series.png | Bin 0 -> 52963 bytes .../table7_primary_report.txt | 51 +++++++++ .../table7_primary_time_series.png | Bin 0 -> 59792 bytes .../table7_reference_report.txt | 43 ++++++++ .../table7_reference_time_series.png | Bin 0 -> 55405 bytes .../table7_vs_table5_comparison.txt | 42 ++++++++ .../table8_primary_report.txt | 45 ++++++++ .../table8_primary_time_series.png | Bin 0 -> 84096 bytes .../table8_reference_report.txt | 54 ++++++++++ .../table8_reference_time_series.png | Bin 0 -> 94132 bytes .../table9_primary_report.txt | 43 ++++++++ .../table9_primary_time_series.png | Bin 0 -> 60853 bytes .../table9_vs_table6_comparison.txt | 42 ++++++++ 56 files changed, 1416 insertions(+), 6 deletions(-) create mode 100644 private.xlsx create mode 100644 public.xlsx create mode 100644 stability_analysis_results/comprehensive_stability_summary.txt create mode 100644 stability_analysis_results/intra_primary_stability_summary.txt create mode 100644 stability_analysis_results/table10_primary_report.txt create mode 100644 stability_analysis_results/table10_primary_time_series.png create mode 100644 stability_analysis_results/table10_vs_table7_comparison.txt create mode 100644 stability_analysis_results/table11_primary_report.txt create mode 100644 stability_analysis_results/table11_primary_time_series.png create mode 100644 stability_analysis_results/table12_primary_report.txt create mode 100644 stability_analysis_results/table12_primary_time_series.png create mode 100644 stability_analysis_results/table12_vs_table8_comparison.txt create mode 100644 stability_analysis_results/table13_primary_report.txt create mode 100644 stability_analysis_results/table13_primary_time_series.png create mode 100644 stability_analysis_results/table1_primary_report.txt create mode 100644 stability_analysis_results/table1_primary_time_series.png create mode 100644 stability_analysis_results/table1_reference_report.txt create mode 100644 stability_analysis_results/table1_reference_time_series.png create mode 100644 stability_analysis_results/table1_vs_table1_comparison.txt create mode 100644 stability_analysis_results/table2_primary_report.txt create mode 100644 stability_analysis_results/table2_primary_time_series.png create mode 100644 stability_analysis_results/table2_reference_report.txt create mode 100644 stability_analysis_results/table2_reference_time_series.png create mode 100644 stability_analysis_results/table2_vs_table2_comparison.txt create mode 100644 stability_analysis_results/table3_primary_report.txt create mode 100644 stability_analysis_results/table3_primary_time_series.png create mode 100644 stability_analysis_results/table3_reference_report.txt create mode 100644 stability_analysis_results/table3_reference_time_series.png create mode 100644 stability_analysis_results/table4_primary_report.txt create mode 100644 stability_analysis_results/table4_primary_time_series.png create mode 100644 stability_analysis_results/table4_reference_report.txt create mode 100644 stability_analysis_results/table4_reference_time_series.png create mode 100644 stability_analysis_results/table4_vs_table3_comparison.txt create mode 100644 stability_analysis_results/table5_primary_report.txt create mode 100644 stability_analysis_results/table5_primary_time_series.png create mode 100644 stability_analysis_results/table5_reference_report.txt create mode 100644 stability_analysis_results/table5_reference_time_series.png create mode 100644 stability_analysis_results/table5_vs_table4_comparison.txt create mode 100644 stability_analysis_results/table6_primary_report.txt create mode 100644 stability_analysis_results/table6_primary_time_series.png create mode 100644 stability_analysis_results/table6_reference_report.txt create mode 100644 stability_analysis_results/table6_reference_time_series.png create mode 100644 stability_analysis_results/table7_primary_report.txt create mode 100644 stability_analysis_results/table7_primary_time_series.png create mode 100644 stability_analysis_results/table7_reference_report.txt create mode 100644 stability_analysis_results/table7_reference_time_series.png create mode 100644 stability_analysis_results/table7_vs_table5_comparison.txt create mode 100644 stability_analysis_results/table8_primary_report.txt create mode 100644 stability_analysis_results/table8_primary_time_series.png create mode 100644 stability_analysis_results/table8_reference_report.txt create mode 100644 stability_analysis_results/table8_reference_time_series.png create mode 100644 stability_analysis_results/table9_primary_report.txt create mode 100644 stability_analysis_results/table9_primary_time_series.png create mode 100644 stability_analysis_results/table9_vs_table6_comparison.txt diff --git a/backends/xnnpack/third-party/generate-cpuinfo-wrappers.py b/backends/xnnpack/third-party/generate-cpuinfo-wrappers.py index fc550be63a3..32f2500c272 100644 --- a/backends/xnnpack/third-party/generate-cpuinfo-wrappers.py +++ b/backends/xnnpack/third-party/generate-cpuinfo-wrappers.py @@ -78,10 +78,7 @@ print(filepath) os.makedirs(os.path.dirname(filepath)) with open(filepath, "w") as wrapper: - print( - "/* Auto-generated by generate-wrappers.py script. Do not modify */", - file=wrapper, - ) + print("/* Auto-generated by generate-wrappers.py script. Do not modify */", file=wrapper) print(file=wrapper) print("#ifdef __APPLE__", file=wrapper) print("\t#include ", file=wrapper) diff --git a/extension/llm/custom_ops/spinquant/third-party/FFHT/example.py b/extension/llm/custom_ops/spinquant/third-party/FFHT/example.py index 7712d2a51f2..576c89830da 100644 --- a/extension/llm/custom_ops/spinquant/third-party/FFHT/example.py +++ b/extension/llm/custom_ops/spinquant/third-party/FFHT/example.py @@ -15,6 +15,6 @@ t2 = timeit.default_timer() if sys.version_info[0] == 2: - print(t2 - t1 + 0.0) / (reps + 0.0) + print (t2 - t1 + 0.0) / (reps + 0.0) if sys.version_info[0] == 3: - print("{}".format((t2 - t1 + 0.0) / (reps + 0.0))) + print('{}'.format((t2 - t1 + 0.0) / (reps + 0.0))) diff --git a/private.xlsx b/private.xlsx new file mode 100644 index 0000000000000000000000000000000000000000..60a106a6c846d1ebc4a0c4a2a47f9a72226f7cc9 GIT binary patch literal 18144 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 literal 0 HcmV?d00001 diff --git a/public.xlsx b/public.xlsx new file mode 100644 index 0000000000000000000000000000000000000000..a218d95fba798072395f92050ff38fbff38fa522 GIT binary patch literal 13552 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 Z+%F>z28f*Bk6J_^vkyRk&Bx#G{twQU{#gJ3 literal 0 HcmV?d00001 diff --git a/stability_analysis_results/comprehensive_stability_summary.txt b/stability_analysis_results/comprehensive_stability_summary.txt new file mode 100644 index 00000000000..3e9d1456144 --- /dev/null +++ b/stability_analysis_results/comprehensive_stability_summary.txt @@ -0,0 +1,98 @@ +Comprehensive Latency Stability Analysis Summary +================================================================================ + +Primary (Private) Datasets Summary: ++-----------+------------------+---------------------------------------------------+---------------------+----------+-------------------+--------------------+ +| Dataset | Model | Device | Mean Latency (ms) | CV (%) | Stability Score | Stability Rating | ++===========+==================+===================================================+=====================+==========+===================+====================+ +| table1 | mv3(coreml_fp16) | Apple iPhone 15 (private)(iOS 18.0) | 1.00 | 0.00 | 100.00 | Excellent | ++-----------+------------------+---------------------------------------------------+---------------------+----------+-------------------+--------------------+ +| table2 | mv3(coreml_fp16) | Apple iPhone 15 Plus (private)(iOS 17.4.1) | 1.00 | 0.00 | 100.00 | Excellent | ++-----------+------------------+---------------------------------------------------+---------------------+----------+-------------------+--------------------+ +| table3 | mv3(coreml_fp16) | Apple iPhone 15 Pro (private)(iOS 18.4.1) | 1.00 | 0.00 | 100.00 | Excellent | ++-----------+------------------+---------------------------------------------------+---------------------+----------+-------------------+--------------------+ +| table4 | mv3(mps) | Apple iPhone 15 (private)(iOS 18.0) | 4.00 | 0.00 | 100.00 | Excellent | ++-----------+------------------+---------------------------------------------------+---------------------+----------+-------------------+--------------------+ +| table5 | mv3(mps) | Apple iPhone 15 Plus (private)(iOS 17.4.1) | 1.00 | 0.00 | 100.00 | Excellent | ++-----------+------------------+---------------------------------------------------+---------------------+----------+-------------------+--------------------+ +| table8 | mv3(qnn_q8) | Samsung Galaxy S22 Ultra 5G (private)(Android 14) | 1.02 | 0.51 | 97.08 | Excellent | ++-----------+------------------+---------------------------------------------------+---------------------+----------+-------------------+--------------------+ +| table9 | mv3(xnnpack_q8) | Apple iPhone 15 (private)(iOS 18.0) | 44.90 | 5.30 | 68.15 | Moderate | ++-----------+------------------+---------------------------------------------------+---------------------+----------+-------------------+--------------------+ +| table7 | mv3(qnn_q8) | Samsung Galaxy S22 5G (private)(Android 13) | 1.03 | 6.03 | 62.53 | Moderate | ++-----------+------------------+---------------------------------------------------+---------------------+----------+-------------------+--------------------+ +| table6 | mv3(mps) | Apple iPhone 15 Pro (private)(iOS 18.4.1) | 2.88 | 12.30 | 43.75 | Poor | ++-----------+------------------+---------------------------------------------------+---------------------+----------+-------------------+--------------------+ +| table10 | mv3(xnnpack_q8) | Apple iPhone 15 Plus (private)(iOS 17.4.1) | 40.60 | 10.59 | 38.45 | Poor | ++-----------+------------------+---------------------------------------------------+---------------------+----------+-------------------+--------------------+ +| table12 | mv3(xnnpack_q8) | Samsung Galaxy S22 5G (private)(Android 13) | 3.09 | 33.81 | 8.07 | Poor | ++-----------+------------------+---------------------------------------------------+---------------------+----------+-------------------+--------------------+ +| table11 | mv3(xnnpack_q8) | Apple iPhone 15 Pro (private)(iOS 18.4.1) | 16.20 | 38.03 | 7.21 | Poor | ++-----------+------------------+---------------------------------------------------+---------------------+----------+-------------------+--------------------+ +| table13 | mv3(xnnpack_q8) | Samsung Galaxy S22 Ultra 5G (private)(Android 14) | 2.98 | 39.37 | 4.91 | Poor | ++-----------+------------------+---------------------------------------------------+---------------------+----------+-------------------+--------------------+ + +Reference (Public) Datasets Summary: ++-----------+------------------+-----------------------------------+---------------------+----------+-------------------+--------------------+ +| Dataset | Model | Device | Mean Latency (ms) | CV (%) | Stability Score | Stability Rating | ++===========+==================+===================================+=====================+==========+===================+====================+ +| table1 | mv3(coreml_fp16) | Apple iPhone 15(iOS 18.0) | 1.00 | 0.00 | 100.00 | Excellent | ++-----------+------------------+-----------------------------------+---------------------+----------+-------------------+--------------------+ +| table2 | mv3(coreml_fp16) | Apple iPhone 15 Plus(iOS 17.4.1) | 1.00 | 0.00 | 100.00 | Excellent | ++-----------+------------------+-----------------------------------+---------------------+----------+-------------------+--------------------+ +| table4 | mv3(mps) | Apple iPhone 15 Plus(iOS 17.4.1) | 1.00 | 0.00 | 100.00 | Excellent | ++-----------+------------------+-----------------------------------+---------------------+----------+-------------------+--------------------+ +| table5 | mv3(qnn_q8) | Samsung Galaxy S22 5G(Android 13) | 1.02 | 1.63 | 89.31 | Good | ++-----------+------------------+-----------------------------------+---------------------+----------+-------------------+--------------------+ +| table7 | mv3(xnnpack_q8) | Apple iPhone 15 Plus(iOS 17.4.1) | 40.00 | 10.10 | 41.69 | Poor | ++-----------+------------------+-----------------------------------+---------------------+----------+-------------------+--------------------+ +| table3 | mv3(mps) | Apple iPhone 15(iOS 18.0) | 3.33 | 30.98 | 37.50 | Poor | ++-----------+------------------+-----------------------------------+---------------------+----------+-------------------+--------------------+ +| table8 | mv3(xnnpack_q8) | Samsung Galaxy S22 5G(Android 13) | 2.77 | 25.21 | 19.91 | Poor | ++-----------+------------------+-----------------------------------+---------------------+----------+-------------------+--------------------+ +| table6 | mv3(xnnpack_q8) | Apple iPhone 15(iOS 18.0) | 52.71 | 41.41 | 4.61 | Poor | ++-----------+------------------+-----------------------------------+---------------------+----------+-------------------+--------------------+ + +Private vs Public Comparison: ++----------------------------------------------------+----------------------------------------------+------------------------------------+-----------------+----------------+--------------+------------------+-----------------+---------------+ +| Dataset | Private Device | Public Device | Private Score | Public Score | Score Diff | Private CV (%) | Public CV (%) | CV Diff (%) | ++====================================================+==============================================+====================================+=================+================+==============+==================+=================+===============+ +| mv3(xnnpack_q8) on Apple iPhone 15 (private) | Apple iPhone 15 (private) (iOS 18.0) | Apple iPhone 15 (iOS 18.0) | 68.15 | 4.61 | 63.54 | 5.30 | 41.41 | -36.12 | ++----------------------------------------------------+----------------------------------------------+------------------------------------+-----------------+----------------+--------------+------------------+-----------------+---------------+ +| mv3(mps) on Apple iPhone 15 (private) | Apple iPhone 15 (private) (iOS 18.0) | Apple iPhone 15 (iOS 18.0) | 100.00 | 37.50 | 62.50 | 0.00 | 30.98 | -30.98 | ++----------------------------------------------------+----------------------------------------------+------------------------------------+-----------------+----------------+--------------+------------------+-----------------+---------------+ +| mv3(coreml_fp16) on Apple iPhone 15 (private) | Apple iPhone 15 (private) (iOS 18.0) | Apple iPhone 15 (iOS 18.0) | 100.00 | 100.00 | 0.00 | 0.00 | 0.00 | 0.00 | ++----------------------------------------------------+----------------------------------------------+------------------------------------+-----------------+----------------+--------------+------------------+-----------------+---------------+ +| mv3(coreml_fp16) on Apple iPhone 15 Plus (private) | Apple iPhone 15 Plus (private) (iOS 17.4.1) | Apple iPhone 15 Plus (iOS 17.4.1) | 100.00 | 100.00 | 0.00 | 0.00 | 0.00 | 0.00 | ++----------------------------------------------------+----------------------------------------------+------------------------------------+-----------------+----------------+--------------+------------------+-----------------+---------------+ +| mv3(mps) on Apple iPhone 15 Plus (private) | Apple iPhone 15 Plus (private) (iOS 17.4.1) | Apple iPhone 15 Plus (iOS 17.4.1) | 100.00 | 100.00 | 0.00 | 0.00 | 0.00 | 0.00 | ++----------------------------------------------------+----------------------------------------------+------------------------------------+-----------------+----------------+--------------+------------------+-----------------+---------------+ +| mv3(xnnpack_q8) on Apple iPhone 15 Plus (private) | Apple iPhone 15 Plus (private) (iOS 17.4.1) | Apple iPhone 15 Plus (iOS 17.4.1) | 38.45 | 41.69 | -3.24 | 10.59 | 10.10 | 0.49 | ++----------------------------------------------------+----------------------------------------------+------------------------------------+-----------------+----------------+--------------+------------------+-----------------+---------------+ +| mv3(xnnpack_q8) on Samsung Galaxy S22 5G (private) | Samsung Galaxy S22 5G (private) (Android 13) | Samsung Galaxy S22 5G (Android 13) | 8.07 | 19.91 | -11.85 | 33.81 | 25.21 | 8.59 | ++----------------------------------------------------+----------------------------------------------+------------------------------------+-----------------+----------------+--------------+------------------+-----------------+---------------+ +| mv3(qnn_q8) on Samsung Galaxy S22 5G (private) | Samsung Galaxy S22 5G (private) (Android 13) | Samsung Galaxy S22 5G (Android 13) | 62.53 | 89.31 | -26.78 | 6.03 | 1.63 | 4.40 | ++----------------------------------------------------+----------------------------------------------+------------------------------------+-----------------+----------------+--------------+------------------+-----------------+---------------+ + +Private environment is more stable in 2 of 8 cases. +Public environment is more stable in 3 of 8 cases. +Both environments show equal stability in 3 of 8 cases. + +Overall Insights and Recommendations: +Stability Distribution in Private Datasets: + - Excellent: 6 dataset(s) + - Poor: 5 dataset(s) + - Moderate: 2 dataset(s) + +Best Configurations: + - Most stable configuration: table1 (Score: 100.0/100) + Model: mv3(coreml_fp16), Device: Apple iPhone 15 (private)(iOS 18.0) + - Most stable OS version: iOS 18.0 (Avg. Score: 89.4/100) + +General Recommendations: + 1. For datasets with 'Poor' or 'Moderate' stability, investigate potential causes + such as thermal throttling, background processes, or power management settings. + 2. Consider increasing warm-up iterations for datasets with high CV values. + 3. For critical applications, prefer models and devices with 'Good' or 'Excellent' stability. + 4. Public environments show better stability in most cases. Consider investigating + factors affecting stability in the private environment. \ No newline at end of file diff --git a/stability_analysis_results/intra_primary_stability_summary.txt b/stability_analysis_results/intra_primary_stability_summary.txt new file mode 100644 index 00000000000..a26286aab30 --- /dev/null +++ b/stability_analysis_results/intra_primary_stability_summary.txt @@ -0,0 +1,94 @@ +Intra-Primary Stability Comparison +================================================================================ + +Overall Summary: ++---------+------------------+---------------------------------------------------+---------------------+----------+-------------------+--------------------+-----------------+-----------------+ +| Sheet | Model | Device | Mean Latency (ms) | CV (%) | Stability Score | Stability Rating | Max/Min Ratio | P99/P50 Ratio | ++=========+==================+===================================================+=====================+==========+===================+====================+=================+=================+ +| table1 | mv3(coreml_fp16) | Apple iPhone 15 (private)(iOS 18.0) | 1.00 | 0.00 | 100.00 | Excellent | 1.00 | 1.00 | ++---------+------------------+---------------------------------------------------+---------------------+----------+-------------------+--------------------+-----------------+-----------------+ +| table2 | mv3(coreml_fp16) | Apple iPhone 15 Plus (private)(iOS 17.4.1) | 1.00 | 0.00 | 100.00 | Excellent | 1.00 | 1.00 | ++---------+------------------+---------------------------------------------------+---------------------+----------+-------------------+--------------------+-----------------+-----------------+ +| table3 | mv3(coreml_fp16) | Apple iPhone 15 Pro (private)(iOS 18.4.1) | 1.00 | 0.00 | 100.00 | Excellent | 1.00 | 1.00 | ++---------+------------------+---------------------------------------------------+---------------------+----------+-------------------+--------------------+-----------------+-----------------+ +| table4 | mv3(mps) | Apple iPhone 15 (private)(iOS 18.0) | 4.00 | 0.00 | 100.00 | Excellent | 1.00 | 1.00 | ++---------+------------------+---------------------------------------------------+---------------------+----------+-------------------+--------------------+-----------------+-----------------+ +| table5 | mv3(mps) | Apple iPhone 15 Plus (private)(iOS 17.4.1) | 1.00 | 0.00 | 100.00 | Excellent | 1.00 | 1.00 | ++---------+------------------+---------------------------------------------------+---------------------+----------+-------------------+--------------------+-----------------+-----------------+ +| table8 | mv3(qnn_q8) | Samsung Galaxy S22 Ultra 5G (private)(Android 14) | 1.02 | 0.51 | 97.08 | Excellent | 1.01 | 1.01 | ++---------+------------------+---------------------------------------------------+---------------------+----------+-------------------+--------------------+-----------------+-----------------+ +| table9 | mv3(xnnpack_q8) | Apple iPhone 15 (private)(iOS 18.0) | 44.90 | 5.30 | 68.15 | Moderate | 1.22 | 1.11 | ++---------+------------------+---------------------------------------------------+---------------------+----------+-------------------+--------------------+-----------------+-----------------+ +| table7 | mv3(qnn_q8) | Samsung Galaxy S22 5G (private)(Android 13) | 1.03 | 6.03 | 62.53 | Moderate | 1.21 | 1.19 | ++---------+------------------+---------------------------------------------------+---------------------+----------+-------------------+--------------------+-----------------+-----------------+ +| table6 | mv3(mps) | Apple iPhone 15 Pro (private)(iOS 18.4.1) | 2.88 | 12.30 | 43.75 | Poor | 1.50 | 1.00 | ++---------+------------------+---------------------------------------------------+---------------------+----------+-------------------+--------------------+-----------------+-----------------+ +| table10 | mv3(xnnpack_q8) | Apple iPhone 15 Plus (private)(iOS 17.4.1) | 40.60 | 10.59 | 38.45 | Poor | 1.38 | 1.27 | ++---------+------------------+---------------------------------------------------+---------------------+----------+-------------------+--------------------+-----------------+-----------------+ +| table12 | mv3(xnnpack_q8) | Samsung Galaxy S22 5G (private)(Android 13) | 3.09 | 33.81 | 8.07 | Poor | 2.62 | 1.87 | ++---------+------------------+---------------------------------------------------+---------------------+----------+-------------------+--------------------+-----------------+-----------------+ +| table11 | mv3(xnnpack_q8) | Apple iPhone 15 Pro (private)(iOS 18.4.1) | 16.20 | 38.03 | 7.21 | Poor | 3.12 | 1.71 | ++---------+------------------+---------------------------------------------------+---------------------+----------+-------------------+--------------------+-----------------+-----------------+ +| table13 | mv3(xnnpack_q8) | Samsung Galaxy S22 Ultra 5G (private)(Android 14) | 2.98 | 39.37 | 4.91 | Poor | 2.61 | 2.34 | ++---------+------------------+---------------------------------------------------+---------------------+----------+-------------------+--------------------+-----------------+-----------------+ + +Best and Worst Performers: + Best stability: table1 (Score: 100.0/100) + Worst stability: table13 (Score: 4.9/100) + +Model-based Comparison: ++------------------+-------------------------------+------------------------------+------------------------------+----------------------+---------------------+---------------------+ +| Model | ('Stability Score', 'mean') | ('Stability Score', 'min') | ('Stability Score', 'max') | ('CV (%)', 'mean') | ('CV (%)', 'min') | ('CV (%)', 'max') | ++==================+===============================+==============================+==============================+======================+=====================+=====================+ +| mv3(coreml_fp16) | 100.00 | 100.00 | 100.00 | 0.00 | 0.00 | 0.00 | ++------------------+-------------------------------+------------------------------+------------------------------+----------------------+---------------------+---------------------+ +| mv3(mps) | 81.25 | 43.75 | 100.00 | 4.10 | 0.00 | 12.30 | ++------------------+-------------------------------+------------------------------+------------------------------+----------------------+---------------------+---------------------+ +| mv3(qnn_q8) | 79.81 | 62.53 | 97.08 | 3.27 | 0.51 | 6.03 | ++------------------+-------------------------------+------------------------------+------------------------------+----------------------+---------------------+---------------------+ +| mv3(xnnpack_q8) | 25.36 | 4.91 | 68.15 | 25.42 | 5.30 | 39.37 | ++------------------+-------------------------------+------------------------------+------------------------------+----------------------+---------------------+---------------------+ + Most stable model: mv3(coreml_fp16) (Avg. Score: 100.0/100) + +Device-based Comparison (Grouped by Base Device): ++---------------------------------------+-------------------------------+------------------------------+------------------------------+----------------------+---------------------+---------------------+ +| Device Base | ('Stability Score', 'mean') | ('Stability Score', 'min') | ('Stability Score', 'max') | ('CV (%)', 'mean') | ('CV (%)', 'min') | ('CV (%)', 'max') | ++=======================================+===============================+==============================+==============================+======================+=====================+=====================+ +| Apple iPhone 15 (private) | 89.38 | 68.15 | 100.00 | 1.77 | 0.00 | 5.30 | ++---------------------------------------+-------------------------------+------------------------------+------------------------------+----------------------+---------------------+---------------------+ +| Apple iPhone 15 Plus (private) | 79.48 | 38.45 | 100.00 | 3.53 | 0.00 | 10.59 | ++---------------------------------------+-------------------------------+------------------------------+------------------------------+----------------------+---------------------+---------------------+ +| Samsung Galaxy S22 Ultra 5G (private) | 51.00 | 4.91 | 97.08 | 19.94 | 0.51 | 39.37 | ++---------------------------------------+-------------------------------+------------------------------+------------------------------+----------------------+---------------------+---------------------+ +| Apple iPhone 15 Pro (private) | 50.32 | 7.21 | 100.00 | 16.78 | 0.00 | 38.03 | ++---------------------------------------+-------------------------------+------------------------------+------------------------------+----------------------+---------------------+---------------------+ +| Samsung Galaxy S22 5G (private) | 35.30 | 8.07 | 62.53 | 19.92 | 6.03 | 33.81 | ++---------------------------------------+-------------------------------+------------------------------+------------------------------+----------------------+---------------------+---------------------+ + Most stable device: Apple iPhone 15 (private) (Avg. Score: 89.4/100) + +OS Version Comparison: ++--------------+-------------------------------+------------------------------+------------------------------+----------------------+---------------------+---------------------+ +| OS Version | ('Stability Score', 'mean') | ('Stability Score', 'min') | ('Stability Score', 'max') | ('CV (%)', 'mean') | ('CV (%)', 'min') | ('CV (%)', 'max') | ++==============+===============================+==============================+==============================+======================+=====================+=====================+ +| iOS 18.0 | 89.38 | 68.15 | 100.00 | 1.77 | 0.00 | 5.30 | ++--------------+-------------------------------+------------------------------+------------------------------+----------------------+---------------------+---------------------+ +| iOS 17.4.1 | 79.48 | 38.45 | 100.00 | 3.53 | 0.00 | 10.59 | ++--------------+-------------------------------+------------------------------+------------------------------+----------------------+---------------------+---------------------+ +| Android 14 | 51.00 | 4.91 | 97.08 | 19.94 | 0.51 | 39.37 | ++--------------+-------------------------------+------------------------------+------------------------------+----------------------+---------------------+---------------------+ +| iOS 18.4.1 | 50.32 | 7.21 | 100.00 | 16.78 | 0.00 | 38.03 | ++--------------+-------------------------------+------------------------------+------------------------------+----------------------+---------------------+---------------------+ +| Android 13 | 35.30 | 8.07 | 62.53 | 19.92 | 6.03 | 33.81 | ++--------------+-------------------------------+------------------------------+------------------------------+----------------------+---------------------+---------------------+ + Most stable OS version: iOS 18.0 (Avg. Score: 89.4/100) + +Insights and Recommendations: + - mv3(coreml_fp16) shows the most consistent performance across devices. + - mv3(xnnpack_q8) shows more variability and may need further optimization. + - Apple iPhone 15 (private) provides the most stable environment for model execution. + - Samsung Galaxy S22 Ultra 5G (private) shows higher variability and may not be ideal for latency-sensitive applications. + - iOS 18.0 provides better stability than Android 14 across tested devices. + - For critical applications requiring consistent performance, prefer: + * Model: mv3(coreml_fp16) + * Device: Apple iPhone 15 (private) + * OS Version: iOS 18.0 \ No newline at end of file diff --git a/stability_analysis_results/table10_primary_report.txt b/stability_analysis_results/table10_primary_report.txt new file mode 100644 index 00000000000..747d983a958 --- /dev/null +++ b/stability_analysis_results/table10_primary_report.txt @@ -0,0 +1,43 @@ +Latency Stability Analysis: table10 (Primary) +================================================================================ +Model: mv3(xnnpack_q8) +Device: Apple iPhone 15 Plus (private)(iOS 17.4.1) + +Dataset Overview: + - Number of samples: 10 + - Date range: 2025-06-11 01:49:37+00:00 to 2025-06-12 17:33:28+00:00 + +Central Tendency Metrics: + - Mean latency: 40.60 ms + - Median latency (P50): 39.50 ms + +Dispersion Metrics: + - Standard deviation: 4.30 ms + - Coefficient of variation (CV): 10.59% + - Interquartile range (IQR): 4.75 ms + +Percentile Metrics: + - P50 (median): 39.50 ms + - P90: 43.80 ms + - P95: 47.40 ms + - P99: 50.28 ms + +Inter-Jitter Metrics (variability between runs): + - Max/Min ratio: 1.3784 + - P99/P50 ratio: 1.2729 + - Mean rolling std (window=5): 5.24 ms + +Stability Assessment: + - Overall stability score: 38.4/100 + - Overall stability rating: Poor + +Interpretation: + The benchmark shows poor stability (score: 38.4/100) with significant + variation between runs (CV: 10.59%). + Performance is unpredictable and may lead to inconsistent user experience. + + The max/min ratio of 1.38 indicates + substantial performance differences between the best and worst runs. + + The P99/P50 ratio of 1.27 suggests + occasional latency spikes that could affect tail latency sensitive applications. \ No newline at end of file diff --git a/stability_analysis_results/table10_primary_time_series.png b/stability_analysis_results/table10_primary_time_series.png new file mode 100644 index 0000000000000000000000000000000000000000..1226ae38ab543d33ab7c69cfa9ac4f0a5b2fd833 GIT binary patch literal 63029 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

  • ^H2;Dwe(xFO1QWM=qmS@#Q zZIIf_F!A9BAN!vRn|P4y2I)I+B^7(Dv8a^Pg}lYf3GT{$ew-56oO%1)*n|ob5W-|=O7iEenTGDj~MK-NTXIV zHbb+Ykq?qCzhkG!oE44=kp+yeg?w2~e3pwfvGcUZ%kfxh(2a0sSAg2UiqP}1s$#*# zuX!JYcfSZ6?qL)xU?a}fRcB;V!lJo=#im9^!;4FE>FD@bsIuQ2aMXR-Y2^h{v`T=X zc-&F9fu+@;NxJRm>{lxU8+Dj1h9I+_p-`zHt>AI=qIBY|6FOUu60e6HesM5JLaMN< zkaFWE>%mQCd?pHE6~R3R=!WGB22(u&;~qZV2MHRy^x+Tc`OVw$Y#BwwlO04|IW-?R zKbcbBx>0Rb3FjBs3kj6@0b?DAl8eED`E;KNmH7i$a?L_Sz5$)1xa&hWd&S@1>)P*t zM2un@@kScy-P9wuULFzIV*B?K_g1d*TPXOnavl7-NFtd~`)$6jGk^F-9vR_Rwe5KtA`iCz@E$Jp?~qsJnD$V^%>9r9$zeVi0-O*pcbe7@xGG9q;9R(NpNj) z&;sRY-M^F8Su8UuYGSR%T>tLGcJGV!%@g@>HG_s4d4iB6M^5AO3)TiX`CE6M!VEtH z{`7B4`vv_eY~u!o3D(wqJ`WRegvB|xtC#gcqYr&?p(l)#p}S?X{n2jL{K?6hw(FDq z&eXSWld-ZQ8O=yUggX%$)8#tV)84E6gn`7YH}Z*IO(g<6V$Ur*v~VH`yGI2FRH?9i zms-q|CkW5}md?W4Mp+)a_7vnEohvOmnrER<|^ z0Gz23^cZ9d=Im`0UF*_!I1p{!LBnNJ&r7Fnf-SXV8RCdO5ge#w&16u)2Rgyz(6-w1 zpeySP9B$|2Ojq2aKpG8%vcs|S6fJ*>P$aB50HMB~PXw19f{()IO*_&*F4MRja-po_ z#hM!*wx>qq4+3xTmT&?dRAT=IJsp|at#cKar0>)X`=<=;t_KZ0lc5@^CP(2E9uRCn z_bRSCLh_^-QB-rX6hzDs>U3PlLA3T7u~2nU@h|8WdFTnT1b7rJ?zbfe7q|ksC!(ux z72|tm8P4_VxmnKkBfk@&_}d71Y9AdfWW$1}wU2-*H66i`U-go&X0e8PI(vU_S>gaY zRYx@V^f&sbT0{@TTLkY#p3t%*u!M;Aki*>&U|BD#JRbByl8MjhF>cOj&?Z z^oFv@IVqoplOg?Bedci%YeS#}hgl7}N`bILkSy05>__C?%SwL>AmvEXn-8n8OYHA1 z!^9#s#{P?d1H{(;3tj#WX&tMx`T8MN7FWb~9|?qri=BOCjiAZEya*JtMRYw{p~RWG zqSu1DqGUaJsC3)TUk~}I?ok##dXP4qSEjID60cse`SqEbPv-4;`3Xrt@ywsq?P2X8 zfR})xLu_^+?#Y>J=ogx#X5G(y&Z&5ywEKhUMJp4?O)sdV-l?}C;Z(*+|LuTuVhGvC$PPov){v>C(DCm*zUIstkR*=?U90xW%8!-2y7h zFA;##FxUJPLe2rT;^(@c8I5ADQDTf?azN30EGj}}4Yl)k_xE;7bS)9sYG-wvaMK8- zxG$}!(??Ww0~hEA7VbNkA0O15aVrl~z!Dfd+)b|Pv`$5!JhoObL+E+5#lY85Umz7E z80?imksC^@n4xh{5>#o)k58u1s==P^NS zxlfrna^{Xb-o#sEJ_eMl{5+;lU`Wd8*`VFr$}NviQzJp1%JRb+PHQi8c(N-8aepu3 zhFs8->01`*xAcy=82>Kakg1^2uZ?4JI+M_%NU|S=e@lhzNkmV>StPixlu zXBOQjU-_1@ztSo7Se?xuOy;vRzGmO-&@_`KHX$afk)3~9JUa947dejMt8gG_wd}Vo z&oL~&iia60h9EnB#39yCGU@rU`JOe)BNtN2Nf_ozzmKt1<8b14fNe2aYpI(2WIPWe z8BUTkrbY3v-&>MX4TjGk9{a3#l(qAc4a@P|m%wd*d|f>c1Eql(Ya2N|*!9Yr*0!b< z^&Ft+x1;RS57fdnyB-tsm-xNA>p!v6wY44cKm1lP(+zU{JtD^t~d? zm@T^RWX|3F_Qq5;vlG+lxSS^Oqkjl3j#VY$Ld;SxFu5K%E zjMRMEPi4WTejisnk)q9T?@Z^<`_ZDCq%7$@Ggod<5mrJQ-XQrPgdWnzXfHr z&qmcpQN`!9=xF$F)o|SGmfg!yVo0w9n$*Ged%e$0uw?hUvgW=LRi?aHx16)W#}O3~ z1lE4QXo{D8Saj^t_BSRIcs7vytY#5wQoHXb!f9djf5 zBn4w1-5xZUbO>(fxyJCcUa6RQXEXS+ zjVmp1IT;!GfyuQn76phT^C_JRyQ?Jrr-U^Yry$6e6lzDrzUl7vu>YkS@jLAwBlGF^ z#!4^lVXj*pq29(aFx<4xKb9@75$cM4k>gSJgX(eRh;s#v+^R$4*Q@tpwS8ASM(-S> z$|~Kufn>w*iDj@8+)JnVZp^f7th9l3>Z*m>#?P~6z^H=8Ye(R5q3X_7Y+Q6_y1?K} zWTyGIH#+8jGM6|JUn+g)3SJ7nNHJ-XDA`mzZ`HT6m9{fF1s?Urlo|PA9n##$RQ`z5Xd#HXlqwqn?PvZnz?GuZX!kJ<1Z*htG z94$(4T=pD0lFAG1Rs*%Q_*GI9kBT=8$eekClMXra(#=}eo)4rW_?CU2wUAL%0Qnl$ zA=xweVJyEri&wmrs(wXg9dE`VzWh0^bX^OIkc$cQ^`u%eq#f^`+1u2q?BH|d zE7Z=0-nlYsG`3zU5))!ci4DgD!I6Zzw9EnC^38WieF@c5ndE8lSR*%oNAv|5iGrQ{H>Xa7$ z^!DmCL$^0^5kfZK{HQ|iKN5H1aber`IwOQIbLo)sCz^T`w& z^u+OXF;G=T0y2awMgF|*mCb(hKj(|v;@qa#DKl@K65xDt?9`NeE{656Z~4P~DGN8& z6t1PT2kj;9weeazJ$ObJ_X9b;x(!{S=*>C1tcUt=&m=0-a-)K#U_s+jMk(ejZDxy` z6LZk*vfaql-~`Lcc&v`1`N9X5ciWf-9qU~Ce-xv2xgxRNtP-2^fJ_W#~w2gm?@LT6R1AtNxx*%fsMK|*-!g| z|BLH4;Kx-A2fZtG?Z=>zUpHD-#6M1(wycsN-ahvxOryfPBI|1OIJH42gRV_@xb{lD z^oN*cscnH4Dc^_XQ}Y*(J#E;i^|@(d_cO=-StA2qt-_QZp-S+{+0BA7EaspGJAoyy zwB4-I&Kel5++TmsKy(5Nl&CE%lv%~}x10Tz_7LTNA;7cSqISBiScmkPM4j5A>lQll z^7q^n^`R#1PDuhk_|_IJ;`3W+mQvi}k7X^<2E6{c%cA?HnZ9-&G8+#EW(xDI zkJ34dZT7DSsXR>z?FzjQpQ0_@XGXv+#n!NaXm2l2DoT$WmiJ%1r5^os+?6 zt+QM0Gu8cd_qm3-^Mt_|%yg3#*yWvj|e_r30IJGGe=LRB-T1S>}=z>q#F)gQ@n zC_7)PKp`}HG50l1nT^4TAZ<{jOkqwpuCh&qwp(e%>dg)Jl7Vv$K!(e>{1xUfe>nO~ z2Jl?q(p1>o>ums)!%q9p1j{-*3u$G@Fb~WXE1=zCfU?0in7^i_`K6eUR?BCA-qa))`8R7(wq%eU02`U zV7vXwYj1$&O(!Ojk~OYM(IoC#pza&7RB zjjqSaxCIwEY4Z}SaL+#o7bD`l6FXA#x*~`ND~7*dxy$8ArkzkqTY>}|P9Q_F)mb*G z98fM>YwU0DO>$FxL_c66l)q&1+!^b$>ha~WuB7RW(SE~Cc7xhynrf6qVmn_&3pO@h zgm5`zn_dvFf8$Ho&u>7tJC-p1Is1sY7Z2lb<-lvu0=4v8g9Qpdsdh~%SA9(^`wDn!C2E>RxNgxTP)rx`2Wr)ve0iI@`20xlK{nBRCR}CHGip@vZgv8j5-^$SrfgobCCefG?&6#4I!}C)6Gp(TId?Pb! z64`uf}}@3oYunN4wOxrLy2C$g`$@^!+$CY-snVmA$gsO_sBxXhPK zNRt_z&AYPQDr5f4H@(k+={6wUCwMK+;1N&M6XZwr%F&%FAHYx>euufQdQza7ue^ys z=H6CX4KZMEU-M*S{#&&7UwHSNf%=R0NIGi7xVs=1Z)Pc@EL?b9}}H>nM;Ja9Ls zmyxv`%Sz9B`D2}MXOv{!=n{v>fJ0x6n9N2U(KdHAMQvyP&%hw9%im)nwXho(nmntl z<_fNCYNK~CMPweYSDqeD*Dj0C^eUc5bdhj~@w9GpZ?1o4a*2q3e*2ZgjfMpG@%h4E zj*90my3Gb+p9AOFd9Gy03$5+?W9)JaKKbq2PAiu78-`JoE8}NB7Sjv3ZWlVtp_9t_ zxrWE4g&x)sua9j{B!q|C4_v?QxH%RczQ0`-9$qwe<9fkTLwGn$o4+kDa^dV)5YL*% zS`~>VTFn)*HSvuhv{Ac;j_Rce?#+8S>w{$zIl0Eh?%nDZ{WjfFK{;hJDyZ3lnX-K& zcQvsr*BE|7=k9*vgt$GimN_Sd%j~;`H=~-ja-c(42H96N?YwLLD^VX%JkyQzE|y!3 z{HBrc+=yoPD7%ModIfq{IxhT=fEF~lQ*Z|)+$ zP_k>c7ByzODYkpbyoHnmwIe=nusFibUX{tWKu1~uGq6mKL{|6D=3^(g;_hrDnQm6> zk)IsqV!UnHW#`9H(UD$|lKrmwgtqijm?eMlf_T9A(WhMMeJz)I8YtwMeo&AQAJH+; zJ0??DJrYJOV>ec9l2Sk_o~=x;FXL!C7wdLJvCK_PJ8CdCUhv}CqQ)Hc+)$>HoFcOs z*^ky^Ib~)uH?U*LUiKUAww|hfUmvZ(FC=s#?QW)YMAx=wPSHRl*E+px6{%KqK-}#c zbitIuwwLaD6ba=Qqobo9$xNMSUp8QlTxTI;!%M=g$wdESFDX$kSoAMp`YHotesfT%C| zgN5Cfs@3qP>J>4%U6$~nqh|iVXCM5#3xcl9qcK7ktokfpiNLkaT-ePS?9~{N`Be|m zZg;1vqex4fS>JxiFwhKOIA(;339o!Ol3{gW0Po#(7`OR6UKVz-m|c@i`~IaETDQsmvNB=UpKs4;QL6H5vHQ8suNnNc{r4I#NU;sAd5)mw6>+E`haNu z@0VD$+p<-7?byWUt(5q{-gXu{e!9y|3OahU9a`?9mixQqFg8s=JkE{4=Y^>GPWw@? zC-3#1g+C0#-Qapvi*HkFhR^UB8;jdEcj*thfW6uIPI;i(W#y3|25!rGC2qb3Qq}c= znEdHq1Iupe87yy3lsEDewe9$v*N-8of6Hh3bmcP>_=3zS&rzl8IeS_X=$a`Uzu?~Y z&O>EkW&M{*Z3s;hP2tjzb6#)WQ1m$(U#tynDU^G8L;;7BU2(?wGb2?t^<6uTtiZ>z z&4BtZ>k-7m+vK=#lb%yEkTJjCFAvf&uSvuvPqJ9i?`%#KZ5or^6X8ZbK8DhUc=mz% zo<5XdPnm1gme7uw;t457-Ab3@3b_#eS87AbR(RNbcIFoq;u{uhSCWl>OmN%@#~p< z9YZ9}S3E*szqQue|JA14j5^vH$|sXy?$8p&K5sY#ocjZj7AW zw*U2D!t}h2@feVkDQ zzxZW}Zp0hZlfir~w1t)gOxigR;f{E>?8aT5Rr|1+ng)(8$7Rtdr2~Q!#X0Vg@5#Z_ z&!*RF$Vi{LIxou!xIX2J(yj7%eipQ=stv4_*?diGh?ruP?$c|bI&SjdK+dDe^XwVR zK(0ab(_{dlFcX)y&|R!9S&zL;`A*}+#=^Cs%?ZzMZ@mX#PGyN#m_&`j)$Sr+i{gz} z8;MsB!cMLlS7%?E_L+nfKj^Qv~TEIO@>NHC^07(RjB;4q{b z@R%8w`($m6&-OYVc*R1*PQKu4h9e+3?PsQ8>bM7%*_LG(|(ZSv}y+?XH* z0i6a0`oiD1-^L>Fv9lAv6YnD0OUw4GmvJHCV@-JWiW?G;?i&(;{B}lyn>E8qFkOA^ zX1V*`D6aOj;gw6wZ{IKvFlP|a@+X3Y3j%MVFzp><04H|7K?U#m_wrAQS-YRD>IxLD z9jFIqmZcJY-@+0z0FR<)E(%!N!kep>i`Cy`sg{fDu%*R_sbm++zzI9y;GC+$mX1o54dGIHJ}Px z9Bm`XtT*%~1Tfv00Il1Vj<-R=A544}fA_@LX*Aw>x7ExS)Rj;S8Qw0DjLn56&F4w>2^CYTyw7$iPJQ8v7Y>LC z2T`z!7y%1~+%*W}pX8I!)BB{`^HFraY#4X_#wxUQ!z;)YzNg)(e|C)+b8T?2WLVc* z8#J@b?%e)LexB0FJ@-Z~0B3_+8n?vo_E&i4Yy2LP9pk2`X~n5#_tmd`vtRIQm8py) zqLp86t9sb$p&yFFT}Bt+YuacDW7kw|=Z^KcZO13Hzr%D{zyxZ5Rhb&xvKl7Z4xu7j zn-sp_^KQTUwVUn%RLO2w_>OppP$-W%B=ZY*&rI%O|_RxQ6C6m?%%GPAD3L6x@r;q!|yL(Vbsuq=*_ldAi0}YV~#2w zMzn9DbEEkhx%O{yPO{!wgvl*KiQXFel2kBY(q|$%F!c2s3$|#oi04Q zdOkUaIKj#oqV4CPtk3k}$J(8=9QKu^gMqp3JHvhhpf)XZYMYAz?%daU8D?Ds8uLT; z2ZvKgE{f|rv-|H$Tu|33X+JnC=Al~n-L+$Nxy5{3UPN8z974IedCR1i%3bT&BE_ERSKQfuS&Nc~)XAr7O#GIToP=A#q-I)!1*<1E`g6H#68xegH!c z&Q%~j(Hg?c6LYp>R$}E5C@jN9+>!_~tKX|=7lg4g6l+@V&fsq~3qyB(($MRj$Jljn zvmWpn$wcJO{J>jw@j406lKB!8s+;BwqS2F;ngJg!joAA8W%Vm@uKceJ_gvPq*(c1i zO==>!uEg+{kA}vaFiIY+&2TWbS!s3N`tm`QG%D>+J1oXk-(4c3-+FIz?h^H>@yQjN zX7;XLmEX8RHSi5-IKAK2aa%IzL@P)#KQJ#nu`%!7Pmr!bcKLShL|5GuY`4TB ztYQ{f4oisY1P^b=L}~Q|L;pBH+wJ;N>Vn>ZqvxhWPWQ)pqA+7uf1K?w1!)H>R&@O8 zGnqnCl-OQ^@=@{4>XM6mH|mJU&e2k4ja>Wn0_5gHY?55wQuJxT$dHPoGbF;o6HOS_Q-}S>(b}M0pa0klV*0GSJf;tvHp;Bg24f>IAsJ3L&JjG zX2|oZ`K!-bm+kEmrj|EGqX7L@+M3kg=%1|*o4IF{Htv8cb(ck1V*V{o*mRqw`y9Ep z))m&ohUVMwRLhV?Bx!vDPpM@Z(YK+BE0aAJa<1^*KW_Q;YDU`>&~?We3R3%Kx}jxp z)#8I_RHK2RAN_U|WOficoBMBpgx zDS?2f;AGPAgkLQ(+!w;sf;*P^Y!@``Pc5`50IR3M9Jp^JZE44efqM?NaMp~nJ*Q*0 zT*F~*Bar|U7cgZ!0DK6ekWZ^a(#yL-ot*x#stRWB^Z4)DJXms`FA(|$(8#v@%oxME zXj=%q8#a`es-$hyk>Bt7y6av~mS~DvZwPBg=NNhqNIcUR#v;(5$aS*S*|c_@;$gh~ zRMiS*3ke+8ZKPW7rj|*x38uczN&C9+z=HETjM=}5kb1;6e~=dgtpq?C^9b8I)^R*~ zvyhA5R6WNa;AP$kikL5?GB5}TV*D9D6OI7e3$e5rEls7R!C0UufBK8eM{3e)f;?%> zF{avWs%l(7cqgPnW8FOxh`MY}#zPx|F|?Sk=Nq$nuHdjyhk9+4Ysd99HzkJg^N7m& z9E@+t3q%FHl%t8}MCL8wQ)^gaYJpXKhPtgLSfvm^>qPsz^X{!M1LUJ=C$TpkNo{oi z`6788{WucfFl_Q`e4l56ovt-2wvsRGc7E${mEBq&H0ZO7*?tr7;q@_|2E3*iJdH=B zFj{$`Y`*{%>ypwkUwV{Ct<@^bp*x%{+c<(lj;RT5F=DeMyFlBVXwu*FC4PA11XP7v z9`~mCpFRfvUp-a_z&nD&6vR&StHlRju${Uy14+XEP4F5?K~8BA%mKJrZ*O;Pc-d4R zO*FW!)AT}A?x~dCqD4!Bdulnm-9om*7e1*hyNCF6*0KcjF30(;W~Xvn?7pxG<|UZk zvq>F_(#8s7@zweKLbmxm@NZ-*xNbLfUN+mWq>A1Vc|u4zXct54%l#ZxqjStz9sVwu zXI`{I9!m+r>M*~Ty?=AYy(YoXwyCIN|>0r@>&c;ULJ^;t9=U;&E;kIyJsW%C?7bf;|tI=R7h=s6E zelrw!$xqbziyeP;h8!=%^6?UhIP-9<&GW^r>3TL4w-uN-=1f%)a$L!x^u+=9GPXdf zu}hVjY-%|^^{zKwp2w7u30~Suu%3Efe#&0Q-k*5R>-{!WO>FUQaMywTrEo)ZVEg-9 z!WJIC`O=#eA*a~clq7`4jQ)QZ^G3bRUMdNYHr4fV)^w`CsdrfGHVEgLCs3zaXHTh< z3%4eCkZ{o)^^Q;#<{Gb^%mWNO)!PyDk#+r0Q9nH1O|&!OIg05i^0pV8?}N*vd$x1= zmI}aB=1l>sGC(1%4YUA+_16U09|$|h2{1mv;s1q=8$s-}-yUB34UQX;9J>GJj#?-mM4tUNYE#v@N{ zT5Pu|ax;~_1aRRuMDZj*ZV(Jf?5tXy5U{X<&_}Ipg5B)B00PP$fai_S@EV0vMb?2-}??S51*>mS;Y!pU1kr;VFAfjU<+zVbyN;)2eVYi4~fe3r(P&sz== zgZ=N(JhoBec6HeWNCs0dICBNhw1HcXG+N~-41K&7YgK!~M5X+rf=}4-JUm53=TVL0FO_Cvy z4waYa&12tyZGlaRu@A|SepCo3QkaNC9Z8a=thh#Uc67iwDO+K?$8I)k?fUi`*T8kL zY^m|p&Xl1~oqapy#HVgAKreqvM|GV&P)MzdwL=dQN6#lzj>=JHA?~8Gy)BM@$KCDq z_0-3RsR#8)k8=K>v2z10-PqHX-0WfgZ)qKkbIx@oUd5g#rV?I@_@ZusIg!wU-SQ<( zY~||}e%>=`g612#Ro6%`6-0)O1XMDP9i#iK#GO&L0!akcxF3EOQE9j?TP7OTuX#-5d2$}A?E{DuRNYLKVj9QwQ|+s(Sfa#1`w&2;Nq z+abal`)MOJq$icW)V>CiUf;zCV*hyoivf{->XeOaiMqDFRs_WWGiu3Umcs;5iGgPt zWW9vAwG3B1#-8SNJ$TiXm1(wN;0RrP2N)|MCc}K=aY)SKD4^RtFtIiEG~(Cu2R#UR z`f>$(&iG?!B*JWV>+k2BmE3nOFmg?57?5x?gQse6ie?&EzW+{QsZ#tArLTSwpB0_FXarj#;&%B4`HH*g zoH@bTG2;+GBCcyOTb;sa(i~}(sr(u4<6E$m(w!_AM?PW&7E@1Oz>M^rbUP_v1%!u z;D(OQH|F(W|1c`?QH&1VHCP=KS;D6X7YM8mz;JrSFrvy z^L}#QqcGEB_0PB*S8HiCPGfZyw8_nnq)4lzR@*e5Rmx`Qh2nU?w7&=&m{s)ojC!5l z-eyo@YV(54McOXt@n?EKE<2GZM33yb*HD&2=6HS;&74f6^k9UZf}2RlxH+~YG9=v6 zP`U8Zc|9Lm6W#~m!d%0m=2Sd(%RhP0<&>F_NQ4ew@csIEhMQWfgoH3$4suy>moW*c z8Oc^$s5nDr^cMr&LkqBU%@z+tNit#DwcBPLO|JJ}M;x^|Jf&u28S%QH)sF|%r0uTR z%;##kT)0=0mSq(7_)htfwBs8G%JL(0PpAsadh%?OY#vvs?Qf;&K277+7-mIZ+QO@t+f@k_p91AlAn`&hu^}3oC7K9GM|> zRwAOo`1kNIE9@Dqtl(rr8#4QcgEF=d00?3fB?I2rrTtK=BmH zB$ILM6aggk#b)vKehegDbtWJ+t92c4EYEv*lu|T-lKcM=_SRuhu3sA{!bVg?M2Rg3 zNDBxUv;qbpARyhPG$TlNC;|%75|RRvLwAF8cMU1s-F?>J{(f=J^?iqboJ*LQ_kG^y zS#htm?wg3KUDtDWjq3eyOsP;;CoMhtBC=+_e{d?MC4jfk!JkWKIu%I z73uRc=@T%Ahw)e>Dv*Cx;*6}`YG!_#Z>|-V?b*0NS#`Y{@UB770 z&-_H-7~{##x5sUB-Ud!tlv3$-?Y4)k(5VA|@H;2oQ3KuCI{vtS%$Q~ft%ATK( zhY=qWb*)p!-|ID?v-xq1Df?rKs71mv{><&QwM1s`mqo#>c(=_yp)pkI8}g1To896d zjb{=fwzHVwjwA5xErDk3L!vBNs`qr&Xfe{Wiy4qMr;FZWRxBZq;IqdN4=K8M6sg$} zJe1af)c@rZBWT9WvFC=A%SM$pt`wF^+o?&aFh_X_dV*fz%Wvt*Sdmu5z|xW7$3P-A z`9_f;^7?kjm+7xplzxlp3w7lg%C40PK8o0!`Ji1has!1Rx;+_bJ4i=-h#Aa9XpObRna~{3|K3}=ad5nE*cKNyVuP*e!yio zsqi;qm=o;`^QdC-|1RIzytepHK`<_=?PRZXK}${74QWiPaZsR@D=KNtm%+W`TL+q7 zXsw#WSC?%zykJ!CBA&U+@rlp{`yKO|OqQ-K!&D@Zo@lU`n2j-W#2ok3goF@oZu)ru3r6jTpq> zd?ec;kC@?qnBI{S3T!pWeK?12KflNvx5MGyRZ_g3FW8}v?RL`Pan;NZOHzncmGd9o zL~9~z&PBIii$7bQNRLx(rqs%Kpd%Pd9ZI6<_&|Y_Cvl00oNM9-W(e)=U7bx4$q~m~ z=CYS#D)$R1c zRppddf^iLOS{nyWN4w}agm#aa&LXkNZmzf==hU?RrIHQD}n)Y~ybXLBiY_0-26Uyw5{=Kh6b)d8Ys_yV`X*cs>313y+fE1sP$ zB{t;veflhTb3q#8lWlM@^u1?t5Kefp&n@Jy&dB#d7x55Ao2VaXAS3|4Weg#(lC3 z>V|{gW%iPEBW1-;P3UhF{p22Rw4l4`oMTaSf${JAS`=fpZ@G5IDKDo3|3i?Jt2nD! zj4QP3E(O*0xJz{CZ`AbJ5AGSYkrt}plkLy_nF=71<8-FH=Uh}*>5{{R_DP|&%^rNp zD9?~_p68LEH$;jpmvOr=;^ie?6SVS@sO@bQStK#2t-c?A2eXC}F;26IEgOE+>h_E< z=VM~Iki$7I@yM+vSJU~{euvA*S&U;h(aXYjxb`iyncQvrJyN4g;V>;3%pgSjAgfY) zs(uxV)i;NTAp29fKF_4rBMcBCgJ=#oXfukaALt9doCJ*i28BTEZ!-DGZ_jtlZg@IH z6-{dRQGgCBXoZ;YV&ifwQ_?SNU}K3aT%}y~B43WMgwg87K6G89A36aBG}j~rHa|1} z_JYPV5p6?|h*ElJ8m+4A&zJd`=FH_(Ia8kY0Z60<4lPx?;V>uMta-a-^kx z24jU~ncDjoWKIrE>V7Nd!YEz9K3{>R%V<7F7(aQk3^tU@exvmN6kP+V1HJ`Tzo5$g z|L9Kqc2vyZ_5b-GG?7q`6H(Q6u?_LkdG>pi!y4V}^$|bz-sj7~PA=U00c`$jGEzV5v(V+`GY#XOtz9h5WZlOu%*@z0BXFmth9lV;R6vM|#U zuzo^O^L_-4)$a7IuBH2Vdu_aE#-Vu6#~k1OhBfdE(VuS7gH`U`W3 zy+awB%i(2%p86ez-$wT-UDVbKk!qW)1teo7!?d1>1E7mKE3b&^77~7F^ozo7hX6|XN^F>YH z!#UKkv^Y`IcLiAAwG!}S3l&e3ujM$OxI)`fFO{$0*R>sHG9>z3>&F{@vd-Nw^SYDd zVDYUlQNm=1U!)_)g-WC+x6m+NxT-q=B23H%$~BEW!Qfyu+B4Mpo8$Z6nO$?a^xZC2 z!K`?c4RF8I`uUz$rD(ByD}Lir5t|?GTDd%lGn$jss=_EdUWF-WkY$&;Zx?=&Nz2cz z`++8twYb*D@~zo+zv`%Awp&c+maOD#9mUP%6ME_|64>`j_hYYiUwh{3)(Hv zX&u`_S(`6(3g>06ektQ8I`NVKW`rL)CE*pk_vYv_|Jk}(^B%RDoFU{A==tr30a^<) z#V;?S(}FPO*>$1L9x0kY=<9U(>wxiE=p^4N_a5fjknv86>0dd0k4996Tu z+4AUYJywqKH_V4D-6qcCmi?y)9LbZN>{2KG8NF8fBk!_W7LbUIChHOX7FZU3~_EH zDXz+Lo!Pmm*eEBT2|Nn;3|-Y+?0oh`hM%y{tMSWM9+FkqJvoLJ?D(vY9Ud-h#bWnF z5|2+yBN98fj^c%jdyc9rJmN)4TLv=l?x{>i@9~t!$mYd8@6exU^Th1WVs z)E`AVWhi7=QeN8d;g3*OObaVq(y2`Iq%fyh;qmhJK6qc!FTtfddM5kx2Ra*tjK#Ea z#n7-?`lJ0lv0eo5s2?<(bNZL9y%7g9Q3t~UMRa)wA~RzS1S({lMHg2Pm`#&J<3F}; zif8Br4on97MjTIUHXv%1ldj!2jW&+#pf+@73?2E-+sAR3K%#MXa5DJZ8|zXzS7p62n&eR zuL*)-COzRSTlx5lFiZm#Or))R*gp{(@>*-uV?`kCB!mgJ)vV7md-o>QwzITNadvHO zH-z@i#M!J|?nnvnji3ZCSR5=c{E#5is=M+-oMd2`PvDz)d-mDiBu2j()^7VWb`fEV zqI;K?bNt(4JxeOW?nS@1Z-LfA=(fTI{3aqYeVuNSV4i>q+;4vz5Y(j@LWr zO7>GAi&`6l>iH#d+=j2y_afwxBMAK67+ry(AW8Fg;)5E`uY~?No)qYSjm zK{bq;+EpY&YTyXTL++XN^bA(I`P4E4J^xZ|Lp1rluQ@6A1Wso1o;#=B!}h~-LX}0i z8;#CU2NDrWazFR1IAnsn3`pM65ckE`)h{p(s7={Z8l;N-`p!*YJ9*hATxc{^9vYDd zvcF2yi297+5_`)Rj<1F*T6l3KUE1Ucr}-Jq$+AB@hvOL8&S4lB(OpM;)p4{z+V=JX zmO#x?Yr2WmQg2(?pimYIzoi%#>yuF>ZlZwY6xSK2#lTPh=-e}-vZ|_LXYO6xIC5C~ z^%MM{tfZL}HTS*mZF2`7y-j;tzJ1Z-l>Q}u`GERF;LPkyU$5N0*wCanR&Dp)mL8Xt zf1O4KH)spETa=#r!q8v@s6Os*n9Rt0apAl@T0g+DEMBMl1XSKzzfY-9uJ0&nzqzo| zK&gI&O`OmDE})!=t@Pe0GmgkkSU@?8TG%J%OoT7=1XGV0U*|7KdUZji@S1&#V1tD1 zAN{)G_j{uzb!5iKV6&g?Kc211w)l{ZzDE0+GexY%^;-|BS#Gv-iHcBMcH9ndXccwL z8u&{kId zd3q@YL^sZma%Ol1M|*6?)#0B=l75=cysD7Ym;T0Q4XuIm={Fc1(aL83F0a2~A=_=$ zu36zQR{QYl`9bLa_(Mt|=jV-5S8!9MKJ_8uKKZ<@+^;55*cblNW<0i#q0Oj=yoPsu|RaZFmh1I<0G= zr?h|^>e4;QgE^d6%PqP-!Ec3cS8(d%t5+0EE!12a{;<#!BwzMW7*_DlOkvUcSkQe3 zPym~%VvtGs#{RLz?}X5g!^FPrx9(SQxK4XBW%zGH7Q}v}NvFaoUBe}IlfFp$IfALB zdV0F)=#+0Jkb||Vs`^p(@0Qb>?*E+cZ$5`wb!-tr-mW*LEPZ--FumQWcIl^={w{cz z^%)xpIZIMBCN#OoULDTIGAZlYY0jzceh@UjU*bdQ2t%b_zxPH9$)xys@bZnB$&CNl zBI@GW$?KlJH$BTN{*u$4x`YJTt<|y~mQsfiGZQfyfnp$oS}zp2axrvQ5C74w@NYs7 zR&}*pn@@~(3eSqKD`9D~aryo@o5KHLqFy+;4ddIObMvE6l6C}m z|C_Lgz4o75FDY=*7G;r^Z0;)MO*V7id$UqV36k$*cnX!y69_lL42XVuenZE?0Sv9I zA8$P~mEV7FXe4=SnviJs!9>y=HFfc?Nv`qFo2L9pHsY&UFYEe_0s21Sn|k?nm#S=u zRq^jDK`QyKh2z#jMfEt9};rl9rL zG047vDy&1AUX6B@sPUTWU+W|c=lX;t2j4Nc6eu%0*MkNNRoX&P2^y* zE?bTU-Amh|+Fuqg`<#dsb^8ezJxnGE_;a)q5Ji{6g~N^z+$t*}s@*R8yF^;$q6clF6>>7Wh?EZCs6JFBH|Dawe}f;u`<5d^ZinNK79DR z$+K__vt3|ZV)*UaMdzHqO_!1H8^}!<^(UJ>)uQIMd!}4e-;l+mE8m;B5>&f@d;3EJ zNn0R?GgEsCIfAg20HdT*kXC^Ci`lf*a6wgX3Zzm_w__~<{f==dIg7E0jxcW^B9Hg* zPJjRDbiQl#Y-jO82fs0rs+{oayWx?~%)9U771Bo>{;F8L9*qchyn~4QOnGHPR-F@T#uC>#wPE3k z8c|P@TKAMw?Ie+RtJ(}x)KKhENa13+tX`^L~&p$)^jLfaB$LyRn= zgkpH-Q!la44@0tBAJXd<1u7>pKcv%17Obl~Gyme?h z(vj-!0VP2b%0a+*t>b8?nMXfnD$jbnykBEUxpI8#C>^oA78mf#$S9-B$fy_?1N3e( zgp)hv&D8nOkLt)tzlfjf%Ti^*$iwg#er-GvKYth-*r*1Hh7$khq4ykS#?REOOvm{bPaq;nKqu-*U!#WB%5Sw8E${UkhWRfW@fzl z77=s!&MG+x2%dABsATR@Nw7>=1v!d`)Rr4`2ne(*WIE_Z;R~tU8NRD^f$n$biz%ua z^IeqQxYOR83otXA#r(C?+kKWv|ATj<$GnG#>DxX%4bF0o_%W%p#Thp4WYBb|X5zt5 zgOVSs_Mt3feiu7MFzz;ChLCd5Xar|V#q9Hm*4^^q@A~-YZGElJ@YZ*emlZn-Pe>(X z8LVnV=e`;}dthTyPyRBTAus-HXfh$VdLd7x)P#s(+sGwye z8#U~4w2@HlZuIj}r+7vqPicE6I`BtqLrG`95$BlHao{%zR-}B(a{1mQT}1vQh_WOs z?+lPlTd^`-)U;MUF5aaha^usA+3-djZ-%u!!>ObB*~j~|A;K}?)odH`EsM&xYdtf) zjVg6~KBS5-jCYI#pQOL$VvsMB39>1-?v0S{xd+NZx%tKxE-_8m%_$;&`+BjvN95M` z$vBuav@PDAr8L#E<%nKWpwc0F{_Rfs`+^SsjfhBLC(GsiBLM+jv5_!!>`PtjSr@P- zA6r+&lw)N$OWB`%KFnUYW?NB?zeFz45^k*XDLmCEJb|#1n>#!S3l>*-dEZL?a1 za(4By2iatOAM~8%rz)SFZrI@?JI^+X-^{h^QM%lAN$+~Hn3U=qvM!2u&=+A{`+0xq zQO8%surxKEVbzPY_{i%a7#zkCpwl8Td|OO~Q$^uuHe#xStyrf9*`8dLFtNLcA3GUr zPdCpR=|RVkU>lr=FppZbL^hqJ7uMSuyev(;JMU}D-(?_7l-V5W=iM0XrMUda88)*< zZqppU67cc(kt*gI)tL_&N*kzTc-wm^lG$V=2Ryd#P@t6Gk%Xiy*P>%IkC;#tr5|Y2 z`J<>Yc{2ElLin}RvBC(MGHSBQMtYtRqO8@*GiPHEmP)Q)kOHoIgh6)3Ah1ZLM?s51 z0klS{f)ZppP$Ta~(o>yb+sA@BmOn|_3(?luMdVbeK}%=@gT+$+$>x!YJ&3GL^%>@o z`Urc!3cD_4w`rLj<&B!=Rp*9r+t^XtseuBNUI5uNNqV30D(r(n>y4z3ZEi7XES4ARG zs!b};Xeh@EZ@gTr+%(@S>7Z?E4mOj{c5=u~5TCk59OFVEg)=IrGev@;^(@6yh~l+c z2C|w$DgJ|6P_2Ipv{?nv;50^WbfVtVIql17x2fZ>kPwPE-rwjic&BPSUQzCpn2Pb+ zm6SL2L!Pj_p=GebI6=CM`KXndCUd!(ERrO3<88S;YRqUlFy8mDUBfP+vtW=q`gzjF z#XQ519=W^y>=Zi}jQg6GC%tpag)q#&`y!1L_)Vixp_(d^vL99hL?-!T7DvCSP#tV_ z3@CdOi|3ZxeSx#6R@6OD;nO^T$3RrTPVFrovD{U8Lg7%0nxFmAKF%Q?=X`=Ny@g?e zod!)l{l5H%2E(A$l@9GI{Xk2FgeDB9v7NAYz@i{P&%U$Jz{2yqCaupv6Q#GclarbRFJ-_(U(p(J|XXt-xbfIpYl3w4oP)V z(%D=%rit-TypEaZmbnvYENP!{9*So!j79kkh-8hFiZatK36qOu+({L`RUW$F^eU9k zVf9w#`}8h>Mzw5(xwS>JBnt+XZ}A0xmD^|Ez3^M;mIVSD%{T$8RxLKy4HLTyWVLxf zUsw-&^5zvqESzh3=$XT7{ejoXpea$nU7(K4vk62(Ybf!E(xB%^$?9ng2_zmRKu%&>dU{C9mozzC^x#OMJGy6$FZ$cu&&pir zLDME9>e=dB_mLJ>O6J8^X?S|sx{?@R+PHAsLs3LRB|CkhuQBk zv7)C{9|A_rL}H`N#RyI8PrEFbDmv!%19yj76eMwp4VppThL^npE72kWhf+q;e>BU|FqSDE~)iNlFz7V;C5s`Z=2!CO7j=Yki?6rS_#$Pgf+`ywxNG|uDzd0 z$!fmySE@Xc_*9x%F8O*zrCa~QQP;6@hvBxA_Mtk1q1ZzMQ6tnV4%43Ffk|1?9evPS ziIsKs5_aiJQ|vaQHa%%VovB}h-=u1BxN_y0`^3y zWeb^(M|^B2qC*xcdGn8UtU7G(u0BeuT4>rdE@g|p}_b< zyCwzvWw}!Mtz8}4CBVuVP=0Fv0fZPHwia7AGs+`&7RCB=W^New ziQ!c`3MA2qhfFUUvo&?3fY4FppsD!;&y0-Z)?A0pUgR~NpJMyR>4jHT;{EDB@rM-q z_e}XoWk>TB=BCI_Sxon*51>x=L<(#-!aA{%_bs{)Y&TBomn_7FPAwt&VTkH&EU_8y zPJG3fYd8euD$azalM-J>sQ(f#{pW!xPmjSP$D zXRbgRcI8Z~ga0TE@9+CnW3bwe8o!1QU)0x zCK8yq3xHC)6RbxSsFn-?uehAthqgX1eKH0b(w8u#;y6*|4=tDs;7;M zM8%IH0nx$|-|3eiNnQy@=@xm1C1${%hj>U{nLkc@z%wHzxwOU=9WAS^{QFwCk@|Zi_I%fA}v=VhxE4}m+>)3@uaIN4wYDWR~x)Q+08XZ zJ3h=AwHEKN5L35Em1sX~WGw9v-SPB6{d2NJ^Zy<_ew{9o9~OC6D}Al=1wLMIDKPEv zmWie|7v=V^vFtkWox1i*jbAzxkqy4T^s`_1IS^X~hI;$%E>3lpI~-ei zUfXz%xi}LjSkjax|6%*|xL0;#Q7JmRV_%5V*{)-@_Ga5f{C~CRf&@?SgcVBRCAm3ZkNS)5vI2pAZ^EZlz8It30 zpx1J8VL-vBe$RDgne7l0j8K(dV*j{^!@{;>L6=!1myeH;rOn&a7l)}rC)@Ti#;$%j zt7cN(FHqRc$m&DFBy^qXB}E3VuweT8_5Oa+q`YsV^ppdKQ*xh6ljgg~V)t$ZFK*{pJa(pk= zvv;ft(RpX|Dre~;(@w09DWZyjD2-m?;Zi?K1wlf9h0#sN;ddK8eY`(l1pZRLU<{&^{UEc{=?5f5*Rs3fMTUVf(!`V8I_w?9NxPuO?V+dD zK;eKe5Crl-KUBOQzY)kPZPTAck#;4}8!Y)PKi@r1ZP&_1AxOD=75`S)5Nk-J?R-!v&z!pjK>MjfF5m8F zXg(X!R)~GRsuP6#CfyOOw^*2lnX2KyHKLWMP-R;7jFoJ2!gC`Td3G{hq=k%&5ti&v z2`YYf=RB6Y(S_AATqcguNTh-Qf(2Y=@r9pC4AvzzOTnvQz?O&_&}@*s#DRx_k;9j| z^Mzqj`T^5D+kE?cB##;KS%|5r>YLKwROZKrVtNP@^k2uEIlcR{f zjHs3Lt!F1mJ0+DH_4`})JChaPSyXf!T3nCw?orxnB}DKpC55zqVnYXf)55IzM&HZ# zqEQ4Q2H2@ZRN0Bsc2*F#ZHO_KE1k=;bDx^mJjif*OAMjZmJ9OXjY5D zhL_WMR&qsYVpT{7_#Y4JHiOnbAdaacMw$|U#a%bvqW#NJoSI`cs!y>Y#$mHxRc~*M z%;mI^Mo&IfDK6{$xYAKY$XyWcS?_(@5Tx5O`S#HHs1BQ1qPTxP2zvEJ;->9658imQ zw60b>HW8~>s|Yx^V?+6JVHBy>7Y<(HtwnHhILwjfdJ(ljLbIQr>4HRPqqDI2zJ7FSJ(w4zE}}h_bYGAk!ToL?@yq{s4+gLgo03Ey%6*wa&TS5_a$>Q zmP^lQ>Mc6-W^0w?3wCES4^AAcJX+-~T`frgbs)k+ot4T;6iPpWMa{rYyDzoK09n7R zqN_}U4@Az+CtD>rfqv+(?);*@x2osIM=ZrCt%;W|oN%)W(Zf!{LY9$GD~mUBp$b(@t6V%XJ%<*IZ-iHr5`*uGsZQ1V)QIdq=X4H`Se=dYsLd?bORVrx zA+69A&t2$YF$R6wna)T$qzWK)f9hzh+RQ<>u4H02=*$NQ|m4Rrbg={7Fu?YMNy)u_c0crdA~e}DRZ5HZWcVck$$D>|R*#R0Zl z7Xb{!a<f~5iDl(f0zr95cvYP4We+g zmH6KM$NRsFP!9C!K+|1jG{UWM$k#Nee++qIV4zRptl>9tqhDWMK~*Q0f^Tvv&r8ur zA)QEtW08Ke4*63j$kdsc#HYUJC`Ex;&PCh@7^5oo%h9L2+W1Dwvr>&CCXJL(eaNJf z-(>=Q!TD0$)jIh~_vqw272UH)Q6FAD*=zIVu3q+}oJ>qk8N0E-Y2c4KJI(a4ir_m; zRzBDavHg<-i#E-6zIgQ5=QTD`udUUj0)=QJ&E}36re*6!Yy6Gs?XK$e&d(hQ(8#9cj z1@alU{mQzpJB{Y|E%JkW-k5L}Z_4Tj-pTJJX^jKFRj<|rDK5LO>QKb+gwrO0~? zZnBibPHh(qC$6mtt-hYnUslQ;E1!yZp~5Fi^L=});*EQ8Vss=9g+V`3u`I^WU1(=p z<^jpm)p%EIjQtm+;b)yM%qp)IPx;!CR{IHr9FHg5l-V(t*2Il^J^ubh(-}F&>+aog z0e*${NJGwdD)y(>IP?{RtT~KBfid4(X=S(pR~>^)ysa&>oYVQlz%pM?a-qCjG-%&y z)=VWb|N6jXxK7w5pBXV=E@}zBBD$A&kiCMFvjA(sz?F!nvA4Igk zM3>DIs~jXQ=T3C8O8&I-*;~KwQFeNcRNQ*6R@tfa&hZ@pH*m;xcE=pdJ}i916ExbNgdJ0l_ zN)4=ZB;3;!J8rn6O=#2Y@S;%voala~IyQeaeiu`mtmzSw)bHSHpEWNi^Wspv8c?${ zVrk7#HAanuf9xh>#AMGU@sEi{$h9BB>M6DfdLt^Ll0B6<%4K42I1hAW&3R_Sits~( z`IcNLd3zCaQEfoc!WW;;6_N-e^b{nSz2l4ZWK)cOqRjt%Xw%aROLHFY-qwGOHH&z0 z?pSPCOJ1UVtt5GFQ&8LP=m27SzH;|52ZfSTLGQS3j8khyNwfJs?xj0Nlqf6j#)Rg| zO>VO{PnzYOa6;Mq{BmQQh^1!694%T(e(DCXorncnPM4-C$m!sFoQhgt>Hw-X1 z2*%{XuWi+nZMc6|Ab+)ZnaTAy0h^)MPlWHd-e)*(JhqFKR5vcMH(t1|QcAX%eNw(b z{mv-6kUTc>16G?+-@~Ir<6Ig)_QwZ0xxi`%v}8x`p14bM<>XCj4Hs-Azu+*%@gD~u z6N6KEWk_$W($u<^Ku_TKI@iZO%TNL1MY-Gz^(l~p8wIy|V_Xj7<>Q@IadjQjX7=Yh z9Wp^iJ~`d)M`jImJte(osg?^j#?`dkdN01jMzU41mri=^@9ZtZZ~$2YP5k!ZD;x=R zxg%HYnn?ofMTVrxLRyD+m@iqcC}Fr(Lfy@FIymvnu(2|+)PQl-CyGD5Ye+vzx4>L? z1VhG47U#>zE z&;I;1SC*JpBD3|v8|&>ZJzSFd9^!m|Z{im}k~m!n6{wEwh@Q9Eu)xF<@*4LG@F+e~ zs8*phdOnAGJgtNmo<$3blsiTX%8>5NgD97 zUDk?Hy6BijI$|gVtWOX0oDRd}Q{H6IJ&17hZ&$N?E5?kCbln-X*?6nMvG4o1)u?}D zdmJgPkrZvTdoZ^#Fhsfim~Y#jS@e7_%w}EDzN`!*Tm@Vg$e#YWvSy*RJr#21zRJb# z`mNUlo>aIF`?FQthamOzIHT0O&^EZ5A7Z6_Kp)x7f7CP~K}Op$#ecAw*+*xG^p%9sl@&m4BVzOXmp*|s}K!>S>V z)Z6VA*V`Kja;QTRp4<6bVCTygtBTB~l&q?#(4NO}(_g&7R}bxnBbdT9I&%_G+Y6Pa z#reilF@1R#IE?!UYt?3{$c{O4HkiMl=BX>Kmhhx#dS#_$cj+ZsJ+6K^(n~RP=nj`- zKrhx8wO&85@{~M(@vT|CaTinTE};#v@8P?J54O(?e(n~})$_4)>?p)%0Z?X6d~W5T zAb^2EC&>_}@<6;rV@YzwG^#gMxs+nqTs-#z*1Xw;J9|f3K9rPu1SQK4bBUNIF)M|m zp)XXq*jyPU_nR%fBt_a|Z&bgaj(EeNghKX#xD!yq)qb|ce!FAW^Z8vAezIYy!jr#T z$6s8)#qcjMWG{J)4C)0af40_Wmo){Kv+D~RLpp|e6U?4bT3zjxtCmMjE_9QoZ+3}n zT#`>8OqEV0{en#!tiaGa$x@f@u&Ajtf_E9SsVq#SSnkuz# zePSPt)-xg$Z_?LdL!8@cQo?9*@ocX$!f99e$s6XFbA#Me#q=qn^MC?leQut5wHmjL z!fyJE5-DASn5^BW!I&o9*_C!%B=lkL`z%Y8<*JsbF=#VR?w8l!#@vUU$26CtyWv$s z>Xh82g0b205YFC`T+I)U#t}5Y?7uQCd0sJWJ{Tuxp0RvTovm;5^0{OF#DHl zRAId)~Cbx%>zF>#J#8BT?VJ}qoc}*xSf-^;^M79Xh4T-s;`oni3ppha3(i5y*7>cwqi;8+ zvF`j%{@nRLix4rbMf6;O>aX+nzhqXRx_7~-pA)8>!wY!+oREK3_52S0=f2Q>_3!{2 zO;ezebq#%Q|MMI4OLz+Zx?{8zLI3<#xz+L_r9d;>g%O05^MTLbBeUgOQ;W-u!vB4( zngiiE)!p8sS>L*#<~ zaWy8)@+UFanI%DCxKJG7xvEuVw{mS>IDN7ku^s0ce9_(A9X0mXF#^g^6K|hAyMS|3 z1S$=(-#l})V=kNyZZGt#q`=h8km+xd2KGvBl66Qwb=c8o#Fn>+fKr`c3J zN?L?m7lwIr%lF2Htp~L|*SQ<=mZzRnWqyC8KLl!UTFiWml|gSx&pChD6CIQVOJUZX%E-ZWZ(? zsOmawZH@u)yUA#&O(6@^tQ?)k?B-71^y23z$~{>vnyTjCTn3@Op2qM^ zHTV_MKzar+u3iv>R6*s*is=O4rw;lKJ)2``%DHKvbP{_%4i|U-m!0d{TNUsOX`(^& z6I-AtF$ARg25=i{`}{&_%fRW#yz&8u;u4n_XmwvS20aDaNDJ3x%8qON`@h%6GH(Nw zLy*5jM>Jo}UK4|Zh+snT=A8&}19&fhPjIKlFfaUfyz-C?VaTG}AHJx_k_jwlGP=Ma*8jqIbTdfRn zMBW2QiWd_;iY_uQ1_F3WB5b;ZNKo)yCVo#gKkqE|wY2l?jl9net^OjtE6g}gyVLrp zBaiBZ$6y0ggIB$lB*&p~4hna6rciDx00s)r$>2n5HJ6hefL8QTq6|?wa0LL=)ZnAW zYRhWvTs29}tWFQ+Jmc0>P0NYAHqmmlMdBH6rl7L*V#6y%8YLb39D5jQdx*-DU0g0w zSs|e)EW(%ykJhf_{ak1?YgMw{Y+|V4$@Nl(iUsrGt@f@Qu4Y9pXAYwckPy#?m3Qx| zNLesyWYvw^BO=P&j_yv9qFm}u@K(29NZ_2ihhsyYm^gP%}(}5ohamp1DudA;QNaj$3UL)andbjkj0Wc%Si} z?oZVW3~_XrEzu%$>$5l?3X%q6m9(F*a=pZbUY}QlLrrtlC1Fd&FhD_d+nN{Q2`QI4?xTHdH6u40Igg>!tkg5|RB9j7rc-1@uf}>X+ zeHrSHTSpazQ%>*mhAez^gx!Z4D=Sk3o$L1>e+HO^ha^^*ot^GgzMxuar187Tkk522 zcU(uoNC$K7!s+~ALWEq2>&vcUS62G%iY++d9$T1H5v@HHj~w^k4}-3JO(VCDQtw?Y zAJ)Fc8(tOPldQ=|+Z@2Kc~WN{1{n%2On6e7cmkV8ShF)QBX~@a9=+0AI96KQ30Dpb z-%Z=Q<ma-3!FoLp-{9NF#9_iU+;}Hp?DR<* zqP}F(?@1|9OsCO~n@tnfioDiR3_0!3y2yumAK-mY*gFJu#gAJU`j)Xj_J}0h`nTIB z{fvjgi3Nf0;VMn`qkC2(GG`R(-2Gniv>Il?7FGWi9#JPKyx5}6aa@kvLq(^)K zyVYGjGbCO=K+zfcn0 z#q$&#n74U1-px@hxnC4?p2$6)pDB_hPdh)Tp1ctxak9VJ-znKf!lrRuI*2bS&*<;R z4?}$k&CHT3k!y{GW!BbA0_?7gBs zB+&a?sUZ_A9h;8AaoJOwx;|SQkV;V=U3F|0LJlYTs+RD?b#SP^o_iYuNkLI(&m~F; zADIXo9eT1TGUJ%8BX1L(6y+j?wf>jfL=LiRFPL^0of2)wWqyhn$;mI?X5rvtvFeeQ zyD#n6-FpNXc;^GDbZr0c2pPGTa^p&)TD{H*U*&8GXW;3-!+!lS?+TUk_+a+ic<`4( zP&W1jO`n_cp!Zw?3efRrLlVwop=a6ppg|Dl_WP&3x%wUJTd;wL++@W}4I#~O`=#`*Ymb+&10f1?i)zd;6uqx=K(7PLVk_;J zWM!=@3gkk~)Bv=KqE;g(^NSRTs>ca zbAn{lyoIF;{-?t^Nbj(4%xXYA9{reZ_gEf>^I940M~{hHQoR5D0mq!eKVdHdini`f zNzk}J6+@!w_`uN=dR)5Do|GIsV;8s?VhYt2zAA&}7u0 z(VwadD*e@a!yqi@tAF^t_W(8D6(0{I7~H_PkeOSyb5Ph(2E1z%YOf%uDK#h@wf2s- zUrdQRO9J`{=^%Ouul6Z_3iQ8d7jFQ5lI)2{(5**$pNuKW@fVzu)QZg`<6(M1jvsiY z@z$6@D%8tY;B+6#$wINhFb`MgzID-wlFk#epRyD8HO>YUdO02Wq2~Yo*Xs($gLx3T z{R{%%1XrllODr#&VnB`B4_Z+(*EgVTq-}S0PL~sU7Qo%BfJ7L#UEeRg6SqTfx48wQ z2azrEit0qbKE!f+J+tC)@x68|Rw?T#$ge6}-tgY;j7T{xhj50}OSV$6wwpihEeaA* zN-xEdtf#ZN(hsCvbYSy$b%I3YsLeRvaVtbSf1j>v1ZjZV`ceR8fY<)u{W9awELFUV z$?QyN65n2J(48%H?y@jUZ>yK_SNM0o& z98$FG%BT*$!caD@!ygKA-JhP9mBB{oigs8%K<Ua8<^`2FO^v~<-W*4AvBH|*ZO%YoRs()Rcl4&_x6QZSe5`}RPWH-R|~ zkKY?EsQ7(=@3L+@mkQDAPmj|o%!}dgYX(ZlfU)bxeA!mJH&7DYWW5o6<<0j2$y3lS8qw~jao3P@Z($9v*{rT@)vd{Rjm#q_syrL26!pk|Uij zZ|bm;`B2!w*{B{E60tN%d>&%L{m_`IT&}2mKF+(^4#cJSZ(WfkT_}yE4rz~-x9q)p z?}|67EpeYGoPV)w!X1R@VH3N>-FkLcnJ^2a*N7n?zGhRxv8*ifB1TBIZ(I0@6z+s@W{khk#tJ6m}IPasm7uuxY!Qy@UvN+&=eT5X=ES=gnYO^2%7l6t7z zVK2_Rq_^_yGXYKYs63IqY>$b*9jVpp0t70K+F|3KN!dodrXzlZdDkVo{V{zn&2Ka( z7x5`>Us+CxkYk9poxJF+M9Lk@Xv{n3;fLt2B>1|`*y$pclcbQ5fst_WM~vg9sM2?F zypcR}uSn2Viam%8mq%)oArp0oQM8XpI9@2Q8YM;;Eqb*c!P!o?SsU90Q7TXDYhcN; zz~3=j1HW2@5c7>{DNYCp@sQT?$*-w~Bf_}QX$C2&x8(P2jfdvbjqf9SD&p>KhlNB- zaSRL18rU76Gh=y~zPpOvALscr@ka6oeTgr2c@^@8m_6AF5(mTMZ9Z|_I>#TcX6YNk zyGoU7N#O)(!yt$lS2vIHvdPM>gUwKaUR5u1w-`iT*dQFWu$8tJyRx7&U%7Xgkbf%x zu@&_0Iokw4WPR`SukeoLLP zZs=4FQWZT|!#Ea=vM_HxPn1DIM6Z~8!h2CC(jv&`g)FLOZALy!XAAhxC^2+!GiyyOz_! zTH3lekV*NlCpDn?6>{7t*g*F$O;n!AD6fv&_T=cX&ChFtP{{IDH>)F>h?@v|>zfVg z(24UuVzDYiehln!8@Am>V>^Md`|gpegwTa!75ln7QG(22IzYs0wV8UWvHomBf)et~ z+rEY+>yV|D^1+7H{&}10)kCSHdUQr|Zd7iNUJf1d`z8h9ef3N1G1G_MXuxRvo6zET zg>CFlFd69H1NQ(FuitEWy(T9*g=@UHAhfWH|8up-NbqCg~bMhy!Zn9SFzahJ?^)yVT2-+NU z9CA0GZ!Ek@k){dNbhfjtw440GfJln6zQQF5d|x^>p7@0jSUqT?$2y04j9>ITl8txT zk#-LR1?WeF!j=?STkVhabyc_U02aYdd&3^NTbRgB2IdQTUye_B#*`O zN?ZxbXG0;FS3=a8a|zwHTFryuUbjsZq0_X4 z*$)EZx<@O8n%u6C=b_MejewQ*uU`UA=qJ)Nity*x35r00>>N-~=pj_Md{}9(!N>-j zo~U=wUbhRm(QuA#%Q9H=;oo(bYY!Gg0Opf0(RFLR6EWR1Orc~%>ogOr=uz{a?`J8LAh$j*~x_Yy_A_yem*{WJ)j{ zuTaQP<0*yUDYu~Q!1WJci*6(-C}Y%Wi{^V=cE2z3-ASw~?}NU#D*T*Qo4k<9Ie-_c z?yQFUeC(|nee|EWFa0gle7g;JWA6$@$7xk~KGp8-cNuo>N!O_V#Q7I?8$`DG=G6%3 z*rqGz>RCfz{E5g@#)-wN=dJy-rD?eR4CqFD1C8sZ%g}n11D=_|csP3LzrKkFHUII= z3BoJ$INAGaG@k?X8;6(XiV*ndEr zbCS7IH04`~`X*7%+KV#v<=b%zo35h z|My4t@b~5l#!nXgcuDy$Af3KJ(C#;YdCZ5$5cB(90}8)nz`D9%?P}fvY}+!~Kg0De ztR4O6tT_Re`dj zCg(B#3AFR~%9L)=hw=X}z&v2|(*buU>isAw<G31K?Z z>k$w}e^``o;Q6oW2i(JdRT3hO1LraO0osd){#UM&{Yh_c3ZRk|Wp_H_^NR+)3WUIgRg;e9VGQ2@AL$ znEt!e^It^?bcMy`#weCCfPH}7si|gZeTaetEB3-LOX0{HXv{5wm}L;6>bI1R>(2_f z9^f_S z3`vsOWD{qyk{d#o-LPGXJ32!$hAAaWl4ukzyP941cCQ~do0MHgI^!~&U2;Q|`FSHh zau>S$yxKV(?PxnY`~G?F_xru~ec$JK-skyzp67YngyBQ21$j)wQSwQ6jXGu*lBX8g z?nR81Dm%U0ih)y&W!Q81=vXLi*mO&uG6rVE_p3kpdnfT)v5vWqJViGOp`^(2Tc=mZ zW7?&SCkRlTX-4ZLkUU(yEaKyl+7IGRbzxN_u}MlvHG#gTIDzYSHPwuM^Ip>OHKNPy zi%i2}eoEDG-9ULZD$%TN=M!-Dz>2L__4+Fz8x1EkzeeJh8} zZPHv?T=Q*aR7{5u)Py4{dDgeNItblX^<+Tzso43>Q0P$WsPiN5w4Pg1SoOZEe1wA! zgpwP_Cx0#3yGzZ@#FG~im=_x<&rMP-S}VM0Mzd}_+6CN}M7;4!zi7@mLx~4GqoDin3^&b z4IMA+xnsq)T}#@HC;<@=bpo0dbO~UTzV2*E< zaBFDyJrXHlfAcqH9RBp;)L2gsHfv9gm!RM`F0CDL(K?#I-%;KT-#j4jN<=1dX3B%C zJkQ}^>KVYMMk7! zk7`ip5lzz&W@Hv!oBJ|))T9H zQ{u#h5qf`)mjO2kxfav4^?(?)Z3#HOP*nvjah6Vk&UDJMJUlDLP~>glq13izpUKC2 zB~`~lXOULG1iiu9CV`m_g7=V!fVp>@Lh<-Py%h6Uf~u`sQ9f^@tS>R6_x zpVlH%!*Fz;i%I^*SQG>@jjhFbc0HfKh+6o%7V>sPjs~sXu!p}jSkeL4C>Rl3$=NqI zizrd|6X5Q z$Z$7nml}s!nAC;xx8BE!xdA&?d;}sB^rk$Ek^vV!$*dPjKhI$YLcYe^`RZ?DW^nlg oy!Ky|jXe7QsqR0%t+7m@T&nbg>-xSuGvwyojxG*7`$J#<3I1j5CIA2c literal 0 HcmV?d00001 diff --git a/stability_analysis_results/table10_vs_table7_comparison.txt b/stability_analysis_results/table10_vs_table7_comparison.txt new file mode 100644 index 00000000000..9409318f496 --- /dev/null +++ b/stability_analysis_results/table10_vs_table7_comparison.txt @@ -0,0 +1,42 @@ +Private vs Public Stability Comparison +================================================================================ +Private Dataset: table10 +Public Dataset: table7 +Model: ('mv3(xnnpack_q8)',) +Private Device: ('Apple iPhone 15 Plus (private)(iOS 17.4.1)',) +Public Device: Apple iPhone 15 Plus(iOS 17.4.1) + +Metric Comparison: ++-------------------------+---------------------+----------------------+--------------+------------+ +| Metric | Private (Primary) | Public (Reference) | Difference | % Change | ++=========================+=====================+======================+==============+============+ +| Mean Latency (ms) | 40.60 ms | 40.00 ms | 0.60 ms | 1.5% | ++-------------------------+---------------------+----------------------+--------------+------------+ +| Median Latency (ms) | 39.50 ms | 39.00 ms | 0.50 ms | 1.3% | ++-------------------------+---------------------+----------------------+--------------+------------+ +| Standard Deviation (ms) | 4.30 ms | 4.04 ms | 0.26 ms | 6.4% | ++-------------------------+---------------------+----------------------+--------------+------------+ +| CV (%) | 10.59% | 10.10% | 0.49% | 4.8% | ++-------------------------+---------------------+----------------------+--------------+------------+ +| IQR (ms) | 4.75 ms | 4.50 ms | 0.25 ms | 5.6% | ++-------------------------+---------------------+----------------------+--------------+------------+ +| P99 (ms) | 50.28 ms | 44.88 ms | 5.40 ms | 12.0% | ++-------------------------+---------------------+----------------------+--------------+------------+ +| Max/Min Ratio | 1.3784 | 1.3636 | 0.0147 | 1.1% | ++-------------------------+---------------------+----------------------+--------------+------------+ +| P99/P50 Ratio | 1.2729 | 1.1508 | 0.1221 | 10.6% | ++-------------------------+---------------------+----------------------+--------------+------------+ +| Stability Score | 38.4/100 | 41.7/100 | -3.2 | -7.8% | ++-------------------------+---------------------+----------------------+--------------+------------+ +| Stability Rating | Poor | Poor | N/A | N/A | ++-------------------------+---------------------+----------------------+--------------+------------+ + +Interpretation: + Public environment shows better stability with a 7.8% higher stability score. + (Private: 38.4/100 vs Public: 41.7/100) + Public environment has 4.8% lower coefficient of variation, indicating more consistent performance. + Public environment has 1.5% lower mean latency, indicating better performance. + +Recommendation: + The public environment provides better stability for this model+device combination. + Consider investigating factors affecting stability in the private environment. \ No newline at end of file diff --git a/stability_analysis_results/table11_primary_report.txt b/stability_analysis_results/table11_primary_report.txt new file mode 100644 index 00000000000..6c7a9fd4b74 --- /dev/null +++ b/stability_analysis_results/table11_primary_report.txt @@ -0,0 +1,43 @@ +Latency Stability Analysis: table11 (Primary) +================================================================================ +Model: mv3(xnnpack_q8) +Device: Apple iPhone 15 Pro (private)(iOS 18.4.1) + +Dataset Overview: + - Number of samples: 10 + - Date range: 2025-06-11 01:49:37+00:00 to 2025-06-12 17:33:28+00:00 + +Central Tendency Metrics: + - Mean latency: 16.20 ms + - Median latency (P50): 14.50 ms + +Dispersion Metrics: + - Standard deviation: 6.16 ms + - Coefficient of variation (CV): 38.03% + - Interquartile range (IQR): 8.75 ms + +Percentile Metrics: + - P50 (median): 14.50 ms + - P90: 23.20 ms + - P95: 24.10 ms + - P99: 24.82 ms + +Inter-Jitter Metrics (variability between runs): + - Max/Min ratio: 3.1250 + - P99/P50 ratio: 1.7117 + - Mean rolling std (window=5): 6.10 ms + +Stability Assessment: + - Overall stability score: 7.2/100 + - Overall stability rating: Poor + +Interpretation: + The benchmark shows poor stability (score: 7.2/100) with significant + variation between runs (CV: 38.03%). + Performance is unpredictable and may lead to inconsistent user experience. + + The max/min ratio of 3.12 indicates + substantial performance differences between the best and worst runs. + + The P99/P50 ratio of 1.71 suggests + occasional latency spikes that could affect tail latency sensitive applications. \ No newline at end of file diff --git a/stability_analysis_results/table11_primary_time_series.png b/stability_analysis_results/table11_primary_time_series.png new file mode 100644 index 0000000000000000000000000000000000000000..a3ce4b7082bbc1b8be64d9e8895af14d0db88bd7 GIT binary patch literal 70499 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%0Ds~yc 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�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⋙cZjJvtGeyZTp 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

    UWMoO^uB>y5Ov3A__Zt$UyL5JQqIxpBa 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⪈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¥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≻N5K3BO1+3d{-9@(la=Y&Q2r14{&lCH$ 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�kAM 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 Od?atliDirEKK>uI4q#^h literal 0 HcmV?d00001 diff --git a/stability_analysis_results/table5_vs_table4_comparison.txt b/stability_analysis_results/table5_vs_table4_comparison.txt new file mode 100644 index 00000000000..c2a3e84858b --- /dev/null +++ b/stability_analysis_results/table5_vs_table4_comparison.txt @@ -0,0 +1,39 @@ +Private vs Public Stability Comparison +================================================================================ +Private Dataset: table5 +Public Dataset: table4 +Model: ('mv3(mps)',) +Private Device: ('Apple iPhone 15 Plus (private)(iOS 17.4.1)',) +Public Device: Apple iPhone 15 Plus(iOS 17.4.1) + +Metric Comparison: ++-------------------------+---------------------+----------------------+--------------+------------+ +| Metric | Private (Primary) | Public (Reference) | Difference | % Change | ++=========================+=====================+======================+==============+============+ +| Mean Latency (ms) | 1.00 ms | 1.00 ms | 0.00 ms | 0.0% | ++-------------------------+---------------------+----------------------+--------------+------------+ +| Median Latency (ms) | 1.00 ms | 1.00 ms | 0.00 ms | 0.0% | ++-------------------------+---------------------+----------------------+--------------+------------+ +| Standard Deviation (ms) | 0.00 ms | 0.00 ms | 0.00 ms | Infinity% | ++-------------------------+---------------------+----------------------+--------------+------------+ +| CV (%) | 0.00% | 0.00% | 0.00% | Infinity% | ++-------------------------+---------------------+----------------------+--------------+------------+ +| IQR (ms) | 0.00 ms | 0.00 ms | 0.00 ms | Infinity% | ++-------------------------+---------------------+----------------------+--------------+------------+ +| P99 (ms) | 1.00 ms | 1.00 ms | 0.00 ms | 0.0% | ++-------------------------+---------------------+----------------------+--------------+------------+ +| Max/Min Ratio | 1.0000 | 1.0000 | 0.0000 | 0.0% | ++-------------------------+---------------------+----------------------+--------------+------------+ +| P99/P50 Ratio | 1.0000 | 1.0000 | 0.0000 | 0.0% | ++-------------------------+---------------------+----------------------+--------------+------------+ +| Stability Score | 100.0/100 | 100.0/100 | 0.0 | 0.0% | ++-------------------------+---------------------+----------------------+--------------+------------+ +| Stability Rating | Excellent | Excellent | N/A | N/A | ++-------------------------+---------------------+----------------------+--------------+------------+ + +Interpretation: + Both environments show identical stability scores. + +Recommendation: + Both environments provide similar stability. Other factors like cost or availability + may be considered for choosing between them. \ No newline at end of file diff --git a/stability_analysis_results/table6_primary_report.txt b/stability_analysis_results/table6_primary_report.txt new file mode 100644 index 00000000000..1b4d674a4dd --- /dev/null +++ b/stability_analysis_results/table6_primary_report.txt @@ -0,0 +1,40 @@ +Latency Stability Analysis: table6 (Primary) +================================================================================ +Model: mv3(mps) +Device: Apple iPhone 15 Pro (private)(iOS 18.4.1) + +Dataset Overview: + - Number of samples: 8 + - Date range: 2025-06-11 09:33:04+00:00 to 2025-06-12 17:33:28+00:00 + +Central Tendency Metrics: + - Mean latency: 2.88 ms + - Median latency (P50): 3.00 ms + +Dispersion Metrics: + - Standard deviation: 0.35 ms + - Coefficient of variation (CV): 12.30% + - Interquartile range (IQR): 0.00 ms + +Percentile Metrics: + - P50 (median): 3.00 ms + - P90: 3.00 ms + - P95: 3.00 ms + - P99: 3.00 ms + +Inter-Jitter Metrics (variability between runs): + - Max/Min ratio: 1.5000 + - P99/P50 ratio: 1.0000 + - Mean rolling std (window=5): 0.45 ms + +Stability Assessment: + - Overall stability score: 43.8/100 + - Overall stability rating: Poor + +Interpretation: + The benchmark shows poor stability (score: 43.8/100) with significant + variation between runs (CV: 12.30%). + Performance is unpredictable and may lead to inconsistent user experience. + + The max/min ratio of 1.50 indicates + substantial performance differences between the best and worst runs. \ No newline at end of file diff --git a/stability_analysis_results/table6_primary_time_series.png b/stability_analysis_results/table6_primary_time_series.png new file mode 100644 index 0000000000000000000000000000000000000000..ecec083799f5cd01da7acb2b3295e810295e9016 GIT binary patch literal 46768 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

    |5ze{@)w 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 literal 0 HcmV?d00001 diff --git a/stability_analysis_results/table7_primary_report.txt b/stability_analysis_results/table7_primary_report.txt new file mode 100644 index 00000000000..4dfaef5468a --- /dev/null +++ b/stability_analysis_results/table7_primary_report.txt @@ -0,0 +1,51 @@ +Latency Stability Analysis: table7 (Primary) +================================================================================ +Model: mv3(qnn_q8) +Device: Samsung Galaxy S22 5G (private)(Android 13) + +Dataset Overview: + - Number of samples: 11 + - Date range: 2025-06-11 01:15:17+00:00 to 2025-06-12 17:06:01+00:00 + +Central Tendency Metrics: + - Mean latency: 1.03 ms + - Median latency (P50): 1.01 ms + - Mean trimmed latency: 1.03 ms + - Median trimmed latency: 1.01 ms + +Dispersion Metrics: + - Standard deviation: 0.06 ms + - Coefficient of variation (CV): 6.03% + - Interquartile range (IQR): 0.01 ms + - Trimmed standard deviation: 0.06 ms + - Trimmed coefficient of variation: 6.15% + +Percentile Metrics: + - P50 (median): 1.01 ms + - P90: 1.02 ms + - P95: 1.12 ms + - P99: 1.20 ms + +Inter-Jitter Metrics (variability between runs): + - Max/Min ratio: 1.2079 + - P99/P50 ratio: 1.1881 + - Mean rolling std (window=5): 0.07 ms + +Intra-Jitter Metrics (variability within runs): + - Mean trimming effect ratio: 0.36% + - Max trimming effect ratio: 0.98% + +Stability Assessment: + - Overall stability score: 62.5/100 + - Overall stability rating: Moderate + +Interpretation: + The benchmark shows moderate stability (score: 62.5/100) with noticeable + variation between runs (CV: 6.03%). + While average performance is acceptable, occasional latency spikes may occur. + + The max/min ratio of 1.21 indicates + substantial performance differences between the best and worst runs. + + The P99/P50 ratio of 1.19 suggests + occasional latency spikes that could affect tail latency sensitive applications. \ No newline at end of file diff --git a/stability_analysis_results/table7_primary_time_series.png b/stability_analysis_results/table7_primary_time_series.png new file mode 100644 index 0000000000000000000000000000000000000000..e2029d5e9e5cc4062fbf09aae3a93a30e84946d7 GIT binary patch literal 59792 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�ga0lx6oKwdfz>><0iEFU88Rg+ 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 literal 0 HcmV?d00001 diff --git a/stability_analysis_results/table7_reference_report.txt b/stability_analysis_results/table7_reference_report.txt new file mode 100644 index 00000000000..b9d6897cef4 --- /dev/null +++ b/stability_analysis_results/table7_reference_report.txt @@ -0,0 +1,43 @@ +Latency Stability Analysis: table7 (Reference) +================================================================================ +Model: mv3(xnnpack_q8) +Device: Apple iPhone 15 Plus(iOS 17.4.1) + +Dataset Overview: + - Number of samples: 7 + - Date range: 2025-06-11 03:17:41+00:00 to 2025-06-17 03:03:25+00:00 + +Central Tendency Metrics: + - Mean latency: 40.00 ms + - Median latency (P50): 39.00 ms + +Dispersion Metrics: + - Standard deviation: 4.04 ms + - Coefficient of variation (CV): 10.10% + - Interquartile range (IQR): 4.50 ms + +Percentile Metrics: + - P50 (median): 39.00 ms + - P90: 43.80 ms + - P95: 44.40 ms + - P99: 44.88 ms + +Inter-Jitter Metrics (variability between runs): + - Max/Min ratio: 1.3636 + - P99/P50 ratio: 1.1508 + - Mean rolling std (window=5): 4.12 ms + +Stability Assessment: + - Overall stability score: 41.7/100 + - Overall stability rating: Poor + +Interpretation: + The benchmark shows poor stability (score: 41.7/100) with significant + variation between runs (CV: 10.10%). + Performance is unpredictable and may lead to inconsistent user experience. + + The max/min ratio of 1.36 indicates + substantial performance differences between the best and worst runs. + + The P99/P50 ratio of 1.15 suggests + occasional latency spikes that could affect tail latency sensitive applications. \ No newline at end of file diff --git a/stability_analysis_results/table7_reference_time_series.png b/stability_analysis_results/table7_reference_time_series.png new file mode 100644 index 0000000000000000000000000000000000000000..c103fab5e3811290100d679413d20bfce5146233 GIT binary patch literal 55405 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 ac2!N9BGQzO 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 L{an^LB{Ts5thTJ{ literal 0 HcmV?d00001 diff --git a/stability_analysis_results/table9_primary_report.txt b/stability_analysis_results/table9_primary_report.txt new file mode 100644 index 00000000000..6af4e8d9a04 --- /dev/null +++ b/stability_analysis_results/table9_primary_report.txt @@ -0,0 +1,43 @@ +Latency Stability Analysis: table9 (Primary) +================================================================================ +Model: mv3(xnnpack_q8) +Device: Apple iPhone 15 (private)(iOS 18.0) + +Dataset Overview: + - Number of samples: 10 + - Date range: 2025-06-11 01:49:37+00:00 to 2025-06-12 17:33:28+00:00 + +Central Tendency Metrics: + - Mean latency: 44.90 ms + - Median latency (P50): 45.00 ms + +Dispersion Metrics: + - Standard deviation: 2.38 ms + - Coefficient of variation (CV): 5.30% + - Interquartile range (IQR): 1.00 ms + +Percentile Metrics: + - P50 (median): 45.00 ms + - P90: 47.30 ms + - P95: 48.65 ms + - P99: 49.73 ms + +Inter-Jitter Metrics (variability between runs): + - Max/Min ratio: 1.2195 + - P99/P50 ratio: 1.1051 + - Mean rolling std (window=5): 2.26 ms + +Stability Assessment: + - Overall stability score: 68.1/100 + - Overall stability rating: Moderate + +Interpretation: + The benchmark shows moderate stability (score: 68.1/100) with noticeable + variation between runs (CV: 5.30%). + While average performance is acceptable, occasional latency spikes may occur. + + The max/min ratio of 1.22 indicates + substantial performance differences between the best and worst runs. + + The P99/P50 ratio of 1.11 suggests + occasional latency spikes that could affect tail latency sensitive applications. \ No newline at end of file diff --git a/stability_analysis_results/table9_primary_time_series.png b/stability_analysis_results/table9_primary_time_series.png new file mode 100644 index 0000000000000000000000000000000000000000..ee3632305f9de3f0de716716312428b539cb43da GIT binary patch literal 60853 zcmbrmby!qu`v!`HG)OlHD4|G)v?8UnC=4PkB@NOg(k;?mQc6m9cMK&UUDDmnd55iT zzpcM>{y5h)4h}P{S?hhDy6@+Hman|51ST3O8XO!P=3`0Gr*LqH`EYRX5R~iSH%14ltMmsGKWgTvN>{kxVaoM8wDw@&?7^x-qRxV3m>JN&O>&2lK! zl6mknNpIgE;ol%Tz{>Q26xcRRR;FmT)*_LOpubCcOEH7+%poNGEquz;FuM48$DVQN zFCMo(8nbV9B~0zE6~?yf9Zm{b@o?x*eh7<+i9w_GxFLe_&r`rtrlo5?{tx?Y2p)U> zzwde&zS2bf_tOJyb+|wO(BnpWh}-RdKPpX&AocHYqQtL9{Q3?L)<6uVe~+R?N&@-! zC=HzdKfjPBXxw(nS@Ovf5t`nlhX`>_JME56lOqK>)liSahZeKG^t1g^EP<;=UTUk4 zuy_$m$1SCL8(}AB>3MZpDevueyLqZZ#~2mU@sEnRO-ASAnUD?P@UP?1Nk1qxoscio zlL@=?yn{oOx%SMGNv#4uV!ABzdxGhp0F!jw{l2k`pf>tV5frC*amS>sr z*IFqZne@7%LNdxp6xx!-{oYPp3|`ZRdC*R z6P{d>(QvN8c-gjTZRJMAYHy9Rqw!SDgkzqvx;;{&>jkeKG$D}BdS(8o!gj)1nW3mB zXh4>~n*-_CUTCWh;UTsJFp)N#fA*ijk{D;8)Jy{!Ma-dx(GhVk_M-A`UKMUUzikVN zew-UP9!dCJW#%sy=Z90S49dCVreku#=X+`{dQE7UOs4v8l=S?FhN+dR%1$>b71E_i zq+>WypMO@`FX_8A?s|D{(Mn;fxzwA?dvV?oepm3(N?N3P$IhWz#hdK|F3UbKBKtfk zMWe0h`m*zbF{^R8%);9_g=4OTsgMHg$#HKClG*5JEm?1Tuo2E-A`D}CD zhto;!SR&1S1l6H(3G%Lo6Sm9HvgC?PLSBP7Bb)&3GTBtfxq6Qjy}7 zHtVd~O+HMDq=uCHtHV%7nHnm^Bd{&SVyV>euHl#N z!9ph}$mHg4_1oU8jr95NP{+}yx@S_*u4UTmS#r?3YK$nN(Y3-H#W5J1;MAUThwBv2 zq#c3;g*E=`!OWR78_O=1nj`I!yw<%c;6rwEi&nzN^Pw-DmCBUcFT6tr{)R@jfIiciW|tieUOS=kk>Jg;kAyf<4{JaNef#L4ZKzj2BtH z{qBNVLTg+3&i788z7#QaXO`T7$!f<%dlO2lF1E>v4yh;UFn>Y3iX}d9Dzz@vk?gH_ z-+&Kx@l!AOE&^MKbP;)++RlS*z+JsRq&k`7c(^giEzVd#%rUST)w4GrD(BFGpXv^L zvt-PXUCnHvD|*tGIW=B9hs$Buaw^=UH znB~F37sP@Ndt0)-g;L&U3$bPbsX+^mmG;)Y4e;A%Jbc*0x5@-1KH6%;wsmAKEui~A zm9-CSW;VYOYgb6MXFEiKa(hLfFG{mRMbCiHT-r&!%HK(!o6fXqTl}SYJyJr?pg&Tt ziu+ReVnX9{Wwr0oPXahs1~Q<`uCbB4Tt-7(pXb8x#%&$;SH27Ck$$X|I~Hd=EOkEk z*6MFQdm)PFIX4I4*afl3&LQ5s0o4v{NVU%`mvjy1{pUeCZR>F*rV}gC52BN2n$Jyo z;&>gU!#^H3AJ1PW6}dIU+PUiT^hS=M)3$RNceGyTCj6v+8sqRySGm*>I+kHI^(oTgSj$waWAo<8SQNoe}qz$3P%@%5S|ARx#yry3U=D8Z0z=S`EeI8Gj!W z7Z+Dyv;JaJe^NP9o_c@U9b0w+L__9Hf>T=xew)1nyiWQ=r`hUOkQ^e{PAwy(ufkT=4kQL9&=o)wrvaEqM+sQjv_) z;C)P3SXhmz)u`NTPVptltA#!Zs{NL|)6Lopv&!jr=vB4V>m_40jxOrMdf?<0^Qv|_ zCQ8u3HbuxI!g4jv&GzDg!DKu=r*S&v zvwnBw@wd)(R&^`n&9SW2Jq5)$(1 zze>U$kSRBlP81Rx+pw{Z#!C$+WPa)6&r&lYHK)@=ppnR!e#`2$n%>a~?^gvKM0{H4 zeQa?GOAKj~@1$LuE*~^3zr`nNgmTz-+NKi zwq1SBDV#uz7Zl0pn%x+x$YyYfILY(ni+gRb;5U6VB7fP_EQL6pft;uc@d1xsd}`^5 zjx&4K=b_66(Za)P{ls%J3($D$L=+j%?2=Q5d3{+V&*fLyB+bvB4N1>BvcEN9TsWOnUPmAzGw@wfgl3A6I=gqw%i2*va-HJ=UTU#E~!C9N;i z>u&HPxLd_p)itjx+@3e&vEK=q^4nj#&*MT@vmAC@s9&K6Y!$tV`}jEXZ6z?6)e*y3 z8sP1>ZkpAem)L&kaCn~W+xUVzphNp!^2n0!+E(f_(~4y}mf1UZ4Op8RhM}vEU6gu{ zwAH8*ZVe!6I#ZBhuic2mBgdAjG9-M3tf6234yjVKo>j!FPdnRQ?9m*kKel8KRQQ>8 z7h%PR9arTSn!=fo=gw&jH!Gpea#xq{c1l6(6T@xdmyzJm!J$Tc`~K@ehCFqp1(cGr z_rtt`XIqVvLOl*0-Y|BYd+f!Bova3K|5X3Z~ zVfXtmg%>UC81szN8oh#B#WDLu@$2%0#NSiQjIST4Y@ky z>t9OfN08pLKEGRd9RBn?=kpG8v)P(m`_VXd?P3QxJg?DmgLjCB+ z1yG^nDh*-mF{%Mg+SHqhvb?&b1spVY)e|Lp@rUBRjAcLu6B7k1AuZy#%{DDvchFc5 z_M>(rv@tfmj^`U9W}PfzdV2r+OrA_)@Jw6xAr%BYcWV z?JI?gbD)~whUSHj6}MMddRUjhD(6lHco-UCc%|-oZXH0vp;x*NoU>ZLj`hS(EMMh8 z%tE&mOSK0A)_u)LJjZkv3o^O!X!hol``HT3W9TeZ(_-nY1S z&cU*Km%q#TiT!@9!K=Rflw)>--kU7X{TPj+{mlmQb@m7q#~`%+I4T9bU7DD;6RJ2y z=TrQd8$jv4E*8!D&c{l}Lm{edHIDdkW6Wd6JM*%5zT@_b@d;joANq_rS)IYLbZi_l@XO+!982!3v=4WJF@;x2)tQnP`^e7dLMT{Aa zZnemo1SFlz`m+dx`dJqctA%}gJB@l-Jgn|dW?EJ+b*vRbjmdP;9mc3=4pP}%H_y~w zMQ)$*G%Dlj)I2gNu2bN}`RQCeGS!}}m%U~8Vb7iCzVz+cv7&f)O1Fw3b1UuiiA@|( zfjP0`txc8e`1B`AS)Ly01l=g&zVUXmzLn<*IEI{?_f3QRuVc`1DDH^ohuqZf^v;g96SP`T zgh@?(8xn>Vwq_cuQKSerp#H~9FmU1a`U-5PJYcO3pqQ($-K5-;_h`el$$N!1I~Ob* zB&scE6uMtPJaK#X2@16+u{>Hb>`Qi#6yq0q;{5>zYvxA{x|h!E!37XSpeS{z5rpM@ne!VEzIe_AA&N%@TsC=fmY-7!7N4OX20)(33q@Y#3=8td_{L4 z{_!F3Nz~>qx}EX>T?<^QiI75E=m}j69M_8@7vXbNOR)&Km{PfLhuB-sw7#ZBw4H^ z5qSRf`1vw+>n6h8Kmb0k3nGSK_O~$ix6t)BgXdq5pD*di|Ca}O+(xtU^TI^6K79D_ z4it0t!RLEL_f$)g>@4EFR7FOcf^ly@xyj2*;_2yEmSIgjUS-eG5yqIBi_r3(+a`pY zJA@fL|9Ze)CRr4}YR82(?aa(+H-{nW;uzuy-+BJY10*BeV~S_JG#g)t1_07~)%)ni zx0@zwG$zJ0YT)_T1H3dQ_I15D&LHxAnx`%ZCH4&@3n@21H^i%jT7Z}ZDYr~Jv|1l6 z#xZ-PnMPn7%dU$yT5Oc@{-MtQu~htwh5{jZiWyiiyzXLoIpunp{IcAV{c!-b$t-fJ zFse*8Dc9>J!FYK#%U^2}$3MzQDtn7YcR+e0X7h4; zMI;j?JBmA_f$sm>OGZY<{4P%-^(B(~RpAT@4IDR3L1_ei&+vql)8H)tq3I8H?*sCL zHZ9P+t?tR)FFZy=*?ZcK4Osuj5xHY|%)G3FgfHyQju#UlRd#F%E+>XnXFHu`0NvnN zHzWnV|IM%9(w>Bi00KZBYz>Rw@=|JWi?W7u_{Ax}a!CMejDY-EZE6LKs0sWp^5PUK zbczvv=lK&J1sI$Wdoy7(X0i+|pZ_3bzEQroVC3X90V{OIPtO7Q;kDbtj}1tl(8E(^wF*s8azzO_R~+sFMkpAR25GU97bUbo z_h~eAv_ENp`g9w>9<7b>^0LJQM{~gcOgCZ+@42`R$neK3M5ZcDD_hOqU^p=D!}!jkkqb!4{i}jK_4(&z6I9 z888meVJAqef8O^-$?V6WboQHabACGduLxUvB-s`HhOyB2HgZjqn==M`j+5M8*M_!F5p@1`lLAhqhyyJS^1^+2J%cU ziSY}bETvBFUT$7qV1x9Iy)u~P4wyZbDIF&m!3vC2XSqL3ef>_5Te^yDR~+vEM-Qxki3V)>QPmVKf^v;)t`pjlPHL<2;8t{0v1x>B1-(%{ zzF&fHjY5C2OkQWqNUwClOr>);uvr5!8vTx5X}ku$3)xGm8s&iOG<&p@8@uFGz`N>utsv=uC;x80s6o7Ze z6UMCZB6!8b=v^na?!Q%@NM+5)TxuGgZvH-Et)nY@_VqpWZP@X$;8>FDudOcV^G}hro$q#r-(5_rwBUD_Fu-7Y?Q5NJ zbOv@|{4=kZmH&Po;0YjoqB|P?*Rf^DNrlcf^y2TB>b#)5oZ7KiIP4Z6ye#ajItRSZ zAx&L^)6V0~vqY~!JUM|GF~MVKurnr=xGUR!NC+f)D)PIplSbX81|GWg9QO%cfllY^ zwX?V=y`w=zIs1C<05ly@hz)cqlyZAKfe39U;bL(vFL`7?%s$?GvW^c>q}Ak#8}nVt zx^_2r4WczpLEUeET#B*lpQhIxGr9T2{W`=rDj9p%vV8hzroUX*bOn&6L4deP6ZSqX zu3~%n{_>+U@f}F2IHuXl0t$44ObaKc^$`{*ppEQx64`Y-m~}KEw~6>GJ&(4e0+nTt zTmY1jo9dyc1?3=&C0WEh-FoGtU;yZuIuQK^N zi}4Ph#l%(z#_n+WMG9*M!&1{{aVKVt&P!y<1K9TEl28`0HI#vBA|y)j*_#wfCzFJ; zqgA>!*q&ch%(Nrr=}BnGD)jlTdbJt|*dGoDhV#lKR1xJ?Zom!Z#=jH3kbH7KzD(~- zXEC#j(U|YpPf7ltNkALU&6dG>Jt1@lQTTu>ld5!cq+q}wcV{MM&d7Lb zE(%Jzs>Oo$yuy)Sx2O1dZX#3KCD|s&(kUoQ7Hd&-L( z6lgVDcE(%aLa4F&>2vOm3$#`X4x_bW(L&ZquqNn|lAN}64`2nmL`F>Y2B_!d>9N4% z85~g!p+@6W3)DNRxv)Oc7rpL@`CvVPtySX!rQ9Scd;-}NzDqW>xg6(Vcu*{XK zAC+Y`%xd9gXQ(fq9-Spl1aVT@8SEm^HWU;3Rj)8V9t?rJGE26uYl zd;)Phd{cr3XUe&uwcglN2{rK*`8|XC!y3V{W;NgZOGx?NWGc7CMH36i={vtp2*xJk zW;!n}!)D*#03}N+f%40lG%R+C;6zOSL=Mf{l?7YpJ@@A@_BJLQBiHwku24e{z9R1N z@s55C@}(CYL*gaKFLU9_>e~Ty>Tt<(buV#e(;{DtZ}~7^Ok)Q^z%j z6rx8mN4%%v+L^TZ?2mX7aw&G72lFlvZ%Tcu{WRUk?4k0tYiH&fwpsK{WSqv$$xGbr zS`YS6wM>1RF&%X1qAh=G*w=%#mZ;%%t?1B8Y`TNZ1|bj+i!!Y7T6n+PR)+I#Ct4{P z(REpMKu2MksRnzdL6M0bD6F8MBM1HJcYJzz&`jx&9kZDo0*a`T`I)n+r5 zx1QM}BhjToU$Uu&kTxVrL{g_yZh(LKEkc!*t@y;cArt3YJAY3-f^OCtX4;0MGxcf* z`#DlUhc_ovR?-23vz|8TSp81gLv3XibLOi#r4C%x#MI&(pFyHXs3$nRD41)j3f!+B z*?+G`grE)S@eyvl=)N8Ka#q)^?*_(;+IR1#4)+c%Trrz-GuDQzUeV;2HCkkpf#L@= z8Hnt(;@>!)i&&x)GHnq)kmbr}pBuipttQO3fN^RJdM_m!PiTn$#AVs9K@Sf!6-a~+ zml3KCNO7-!uDC_&f{2#-PMbDAD!n;7#V!h+#-&M>EM29aShd7BT6u$^Z{$PsMPfV= zo&$pajAKTer5_PxTiiUTc89GX(K>RwD;;<9nm}W-icckubH?6c)3KEmOgwM9z_0@3*UHCz(sv3ofP;D`28!!*}OM=nC<(A(&)OO-LG5@?= zrq_)QZ7$0(^a5y@G2#NnTK+*|JmN|GuX^K4DI-8&g4%H?hvTWe2}SsWby1YVHAh0l2-aA=uo zWcQC>C5ib5@IidviK&TRkB$xTH88XShjK8iG8Sn$c|mjSSF644E|tsD2K2tWSh3q9 zY#9Mqe?BGP=i8#0pr@F6I<2B#4l3*MYS{06uCwR&j|zNwA64;ieA)SwzE$2;1VxP>_M28X2g8IxjqK$n=i4E$v+`}MkrHRr^M zOsw0eD=%cPN8}^Q;A-Jro%s)=5|J`K(Okf|IaLSx$s+}+ORaPsZ4?sZ7KkSY>;Cxx zc@N#M+bu-v_q*zy%$V1PdN6SQl1YfPr_0o}g{Wj;e^}^t^CM9680v}^6B3{nX$BZ| zk%X%xVyYSeoK|~2iAZIuH2p$1?rP@&o{m&J@I~qXxoezWC z0ItZa_H>iCswW}nArpMeyU=I>?FBr zk%1d1&0HcEw->P}`0VK908wEvW>TspA+2tv#OM$#u!91?*c^!}tO5tpfe#m_V3CI_ z&BjV{4lmA5<22vkE;bfSfaWix)6eWp$@jJcaIJq+od}N(DIp_0XuI zAOF3YS*8Idb0ABE&bNnJbg{MC@hN9R`ut^MK_lGM%5ndzay6S}_UU>lm3RQL+s$4c z)fWYgV*Z3#Bfwby;JBC!8jI?n!cZaS-VCWo41~KYGA&F?G+(?ZHcGNp+@EcfVUTq> z0Zx8cxNU{^;$BNx+jjZ!G~n&GX~F;|^8u}K7}6;}sRT)%1YlL#bh*T!APWB3Fh$vV z0K}@M&bM2s?t`XEACPbWB!mY;TI!DLTmpN&k9cbqLgj>fZPrKa^X$JqSDt|d;de;r z;IH-ue3{Ss>VK5as?>-CE*sE`{7Px7rJMLKg9l1xfyG3H@I`QTrNNO7C|# zt@h~*(+_8c?C;ujzBKaXEm9F=31)>~20V6C6q}9!o<3-zF7>B%n(B!wy|n7)TIx$h z1}nR8elOMD06ygMeA89^V;=zQ)iE!w(!Eb_Qiq{Nnu5sOCyTk3GSF(OW=IA}x95~X zQCEldGoaA%0qh13TLlJ(BA&!A0v0%m-GA>DsX@OAz<2`? z5Uh5`*6N3ifmmeYpH#WkfG&s-^n#V$bgm_EnNC}Q=BJnohtD!pNb*T!PiAm9ilK+d zJP|1aOr8Na$nRns0i;}LpzLV&Hp~$sVH3q`t8H$`{5--bD$daz%L6@)K0I?aK6wQS ze?dHtKDlr87DroVhRTBvM(24ud zXw3nfNPnp^RR2VFa(^+d%dLy6NBcEtGv1Jl_M7)qTzhp0*mgLN#5~PdkGHHk%|!8O z>kRt0S~!J|eZkmMy*2;g)C25xie zDEz{I*h}yC3}RV)4pL}70wu1xkz|}^k%@|cB(f_ zpCiU{Tnd2*w|igj16)OQ7-xf{IC=qA6!t0`8@tb`k;~SqGOUpgb#(;lD?0^kX^LCY zi8^e%c0p!xKmgX{2!*g;R?))(ZW??7AeAM1jNiV?`iktp)y=-zLYA6yX0HxZU+QQy z{PO*EFRC55vQx~so%>?N|EMHx8<<$e3M~y}g;pjCQ$dQ+LT($Vi5{?Od#3w;XZ8rl z)n2Ey$%?&ikwTOvs^d`{e9#1%a&JMdv0t_Wj3n2UwyB7F$X1)D3TWYmPS1gl`GLBT z2*@Qm4{M$%rb|b&t5-9p*XO8~G7q~-VH%9?ZB9*nK5W`%fBt@Kma9gv9{P?kW=%jc zbQ$z4TYv-a7P*qUo^7jl^NY9WBBAFLniBJ4fAQfris{>$6*wQ16#od54ynh`^Rw-k z9hJWjn=&@cy@%8p?06ULp9<&qYA5n$@r?aS6kE9*)vfH!@v3r1z%FH`aOn_wC_sz){rKaoFMPzK+9{LG42qiOA8dIju1dR;Y z_SXTj?>K~zJlqFLKKmBzO1l1!?da0+I*~$zri)VpPX3EW2Z%<-)qDL?32x1YA8~9O zF?o{SEJ#+71Bv90kd83vJr3Q@i2Vw@p*#($iAvi;nwhh(M??8EOhs~qA$>2_v?Zas< zs@1V;s!)o$HBk+5FrkI$lv1Ude$`iZvSoI;s`(<0my3fVi#K~cd(z!=6B(N_ZhflA zWXz^?P%Is?u`H-EE{uZzlV3-{w3ngUTkgNjwgP$$4fTN1?&n7m0s%9juc?hSM9}Z2 zmeu2(>m^dn8N1oCdo+5vTs)fbXcJ1nQLr3Ph@#W>Q@Wm6W}pCsE!f|qK7a0Pg4HLh(0vLixrAejxt@6&=TVcls9T&&dzxTV&;Gv z3Lb$W9_3zlgpzb{dB%|c%59pz{JlY;9_H5m@G(!md8P<;G<}(@iOgl|!QXYKZ#w?c4bUK5-%3Ge=C% ze_C^A&sR3G`XeUz42Ov2rjc1B@$v$xEm zUi~wy(pnug!eK1ZTa&MGvR?zd)<{oDv>{zPkOayniy%ecf}O1Ulpsh$EJaX->q;+% z-JXQsK@!9WLHcvm#d2f>`jHFo%=h4mDe!50jVZ8Yr!u08U{s{*-S$}n%l1HQyk7e~ zKdb%DtG}NkL-FycndaKa5eZ~{tWX>$UmNLt!~_8eIK`_HyTKhJn{)8>&_6B8pZ&?J zj-^;yH+^FM=WvdMgNf4Vyw(T)HtXyu`6*sQ0avY5nft$5QLIt|1IUF>XkkKEfZu+g zAnBdO#JVzzjqPatmQ8C|!%p-_@`-NyIie1Tv6+wpnxPz3@9Klm&Q(4j(A3K_kFCJ^ z>p~Zi-0!tU6PUlD+5hpVdSm75gZ&kf;Ll28w|Zj={ENT?wa35xu3z1g)K~2v9%4Uy zwEe4W#1fl@B&tzDY=H*T4l5Sq}ePQDhLMDzLg@xTMsOG5)|~xQek;E(k6ss0>ON zOMM7p+L|&^b-dJj27j&(2Wwg|xyya|&q^~j%AFApJkg|$t}S#ijvsDQnV+Z&SEQ*(RW~f}@q#|hsf4@dUHDn;u&dWvkv)1xW>u&I@3m}pHeyze* zB1EBt$-MVrpCs+z&lSf0Wdv?>5*lpI`LDmGIB!0}4)lWMAcbEO5H#lRB&oWLH3O+M z_BQW%+@P^-tJA)H`tcUf#rvefC2ws zylsrsOoS8dhJ*~^ippm~Hp8vahTT?$H68Xo7;AeXH z-6SZl$qG{tb2BaV!9j)4_tw$l-r#P1(|;H&4p^~f2Wx7k`%FV6PREu6CLDiUt8WQ+ zL_e}KV7yTA?n`)p{C6cEfw5Fl{Mm;8h43;(#nEgCNBhc2Zw#ly6gA%s<+xdXe_L#% zX4{niD{xW%avk_pp|&^GJKwe5%{IFQQ8cO{!>BsHUsPQPZmiHqA-!~8ntx>^%(zP4 zyES7cL)f0>sZadPg8IJdtvu6g$4xR;0Y;(a$7)OSuh{}&1hdCK+6;U~o+%6r;%UFq z(<~3AqfOx?Z86P7+3CY6x08K$$`Ihgz#jt;z{(i((foB~(zzoBkWu~1sO&Vwc^X)M zzq+*be1L@dvHm0i@nlRu>;a*ZM2tQTF4W_nng-^)uwvxLj1fMGOUHCp2E1-ZU6C7? zi&HNxjtI)kuQ4NqTdZ|6sljW20erKuwz1fC?c$tgsSnuA&8yHin4_xvx6qf8(Tyz( z*BOaGa0jlH0=aN78+ENT@$)d3A+Ct~FZX&cGO8s*`-jbC1SSgEjT$~!?q`*WWS;r# zp7t{hQGUEJLSsw6&>g$@7okzCfgxVRUOnq?0UG#7l~PR>q|`Ltmc{r_^G@sbK&?x3 zg(tWR-%9S@OAJ|yDYL#S;`Z+;{w#GF-kj~#56B?{7qchjx&C_4eBtY0)|F*@{Ia3s zhOW3^VJx|mn~$HM>0gCsz#STjjRC?aGsWc3_}AB`H-3M5v(~L6+$~oPhtvtd=*-Ro z{+H>?3oKoOyybt5*@BF2^?r88Vn5Pr16;?`l&1IsqWp%2}-g3;xx*?&cqX zpL8^U0zLZ$(z6^ia{F5%Vjz~b2F+yswqd{A4-He;Ip5J%AH@@sz>-J=h3sDwL>ntb zNOZ#O*?UL@D;TugKMo=WgsK8E@s3iq52!)4fDmR!1nD?x?869)a@52B)*l`ku`D%k zLBf=o>J*Rycm~P_!lz{1WgEUs!G*>o@}bT&+9+< zb37Llu+x-+4TkC=Xaq0WY-`Dqb$_b`nesR~u%r_NzWpsG%na#`achp`n`dC_$OR*9_QsdrLSVz@AA0Vt=GHz!*#Wn@LWdlY85vJJ+iPOe%jxCRuj#AfT+>uR>w-s zPD+3V867Yjlt7i^2^uFefG%n3O@4$xk@1h_hh}xJo}&luLnzK`SVAk*yS6%nBuGl_ zAt~KO3c;9hJpLZp2M~f<2_U_XA^DouU|cB>W2AyXo%^fVg{;medvz_a`4ZscZJMh} znnzm(AF)4-7Q2ZDLe@y4I2mE?FRHEGUpHE2LF;h15eS(2WOh}TCRU4C(U(A82*^eR z7()t#oSk>exUE+PooY2KEx+i8ZT|%%cqqrR)V>LM!s&9hl$Jl2@$iN0Z|R@T(d{J= z&D>x97-|kiY39Ii#^`t3cs}a}WGbiW^MsbK0QLF+dTQE-HmL1jA2wYx0h5Ff8qNip zaQJ5wi#>k)c-vG6D0_BIyL`Xz9u&p%3l30n5WU?cdbBV;x>jN(;50F^?xZFpybJUo z8^LUAR@Ao1>CaYP;9ovf---fu9l+aqeqo^^U`49|*y>S3^ zhx4x|JamChpk0IKO!YOsCrn&WBfemb$DeUHwP-~2D43Gba1+lZp3g?QKGuv*=gjW) zLXbjEx9^xvaC~anrl+;+nX}TAj#h%AtPb{A+&?-LNOo6NlIKo02?X%;LV!zLNV}nj zg!wr^&@ly=!KC+#5@Qt%GH#4OFwt?qMdiGw0GrFJG|?ZWUNumN0vsVsAKmy%fRSN3 zQ88&U)8Gjq3f<~i$^%kDO&|`NoI2q&86D&pIvOp|9_YIVKq8=bzH|};t)e%miM0sv zRtA!efVA*%((K~wczLWdjL{vy6CKc}05Uv_lLIi@kfKtk2PXTFB3LvMYO2AMl)+#o zP6U$*?kKN?kkw+3jF}PX)ym|?0)ab}BUmMt8K`UC$%4~t{rEVvYIsME;i`4q#8n7J zkMg{9z|0OU8|WpA3WDAY@@83s29H+aRc{|N_>|b0>Yu}rna;KQ)|#I20{sgg29^3G zNB)bFIDcL%8*z~gKLS^T-s{3=@BNksT)~uJj&zT&QH!um&}%tC? zR=i@^n-^db^#s<7wjmw#T?|H|X5<>mMUMh}jy=^hOgpH4>PO#dGFns*Q%;|E?bRoO zJPYfS0LSv0Y4o03&PZ$l!+3q5-vI;+K%x#Edwd86R^=cudid?OD5)!UUM8|HrKPcT z3tTS9VHc1wo*kRt&6ok&=Xj;t@NaANfL0}QX+DqSwc@8|S(06bayr14(2`(FxEW&SNA{2;y?-1S_^_`zLSSr$Kl^x6q4fy&wbj$U!6fd5C zEEX>~{+z4PL}C1}fsg+3G+?o^K*9eXgByrjBAC~k@Gz9+4_Fap@ghny2wwZf?EC7@Tkp~?d3<5(UZ4;V zp6_b9(CO*6xwJaN2vUlSKGZ^ zVBO-3d~usCmXdStpMQMZu5Q9&WVIuw&asM{=FHM%HGA}hOh*Zd-59r1I58Tx^To7* zJ!4kfx?|(~kxElFpx4#)>%j!W$EhXx!X$nwv(chL2}K0*^a)- z>iIJ(^o4u_P`;(c(#lJXOgxbEI{^a!_b^4!zX#(S_0#q4RwnAY$h*y+GJh1!WkttZ zk8E9sRQfpbB*#jaUSVXbATUATLVp1^gx%{yK+QdXUKR>;eb`{qr5Wgt*PrJn@>

    Wqw8>{BJK5kJ)786efGbu^cUuB_fa&)kmH>?ifH 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

    @^^bvVuLmp#D1dp!CE>)^Bzpno1s>o}8H89s9- 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 JhOqkc{}1)I9vT1u literal 0 HcmV?d00001 diff --git a/stability_analysis_results/table9_vs_table6_comparison.txt b/stability_analysis_results/table9_vs_table6_comparison.txt new file mode 100644 index 00000000000..8255d8c3748 --- /dev/null +++ b/stability_analysis_results/table9_vs_table6_comparison.txt @@ -0,0 +1,42 @@ +Private vs Public Stability Comparison +================================================================================ +Private Dataset: table9 +Public Dataset: table6 +Model: ('mv3(xnnpack_q8)',) +Private Device: ('Apple iPhone 15 (private)(iOS 18.0)',) +Public Device: Apple iPhone 15(iOS 18.0) + +Metric Comparison: ++-------------------------+---------------------+----------------------+--------------+------------+ +| Metric | Private (Primary) | Public (Reference) | Difference | % Change | ++=========================+=====================+======================+==============+============+ +| Mean Latency (ms) | 44.90 ms | 52.71 ms | -7.81 ms | -14.8% | ++-------------------------+---------------------+----------------------+--------------+------------+ +| Median Latency (ms) | 45.00 ms | 47.00 ms | -2.00 ms | -4.3% | ++-------------------------+---------------------+----------------------+--------------+------------+ +| Standard Deviation (ms) | 2.38 ms | 21.83 ms | -19.45 ms | -89.1% | ++-------------------------+---------------------+----------------------+--------------+------------+ +| CV (%) | 5.30% | 41.41% | -36.12% | -87.2% | ++-------------------------+---------------------+----------------------+--------------+------------+ +| IQR (ms) | 1.00 ms | 13.00 ms | -12.00 ms | -92.3% | ++-------------------------+---------------------+----------------------+--------------+------------+ +| P99 (ms) | 49.73 ms | 97.36 ms | -47.63 ms | -48.9% | ++-------------------------+---------------------+----------------------+--------------+------------+ +| Max/Min Ratio | 1.2195 | 2.6316 | -1.4121 | -53.7% | ++-------------------------+---------------------+----------------------+--------------+------------+ +| P99/P50 Ratio | 1.1051 | 2.0715 | -0.9664 | -46.7% | ++-------------------------+---------------------+----------------------+--------------+------------+ +| Stability Score | 68.1/100 | 4.6/100 | 63.5 | 1379.7% | ++-------------------------+---------------------+----------------------+--------------+------------+ +| Stability Rating | Moderate | Poor | N/A | N/A | ++-------------------------+---------------------+----------------------+--------------+------------+ + +Interpretation: + Private environment shows better stability with a 1379.7% higher stability score. + (Private: 68.1/100 vs Public: 4.6/100) + Private environment has 87.2% lower coefficient of variation, indicating more consistent performance. + Private environment has 14.8% lower mean latency, indicating better performance. + +Recommendation: + The private environment provides better stability for this model+device combination. + It is recommended for applications where consistent performance is critical. \ No newline at end of file From 82c72ebdd46615d2e9de7d252b14736043fd643f Mon Sep 17 00:00:00 2001 From: Yang Wang Date: Fri, 20 Jun 2025 20:57:50 -0700 Subject: [PATCH 45/46] setup link Signed-off-by: Yang Wang --- private.xlsx | Bin 18144 -> 0 bytes public.xlsx | Bin 13552 -> 0 bytes .../comprehensive_stability_summary.txt | 98 ------------------ .../intra_primary_stability_summary.txt | 94 ----------------- .../table10_primary_report.txt | 43 -------- .../table10_primary_time_series.png | Bin 63029 -> 0 bytes .../table10_vs_table7_comparison.txt | 42 -------- .../table11_primary_report.txt | 43 -------- .../table11_primary_time_series.png | Bin 70499 -> 0 bytes .../table12_primary_report.txt | 54 ---------- .../table12_primary_time_series.png | Bin 81561 -> 0 bytes .../table12_vs_table8_comparison.txt | 42 -------- .../table13_primary_report.txt | 54 ---------- .../table13_primary_time_series.png | Bin 81060 -> 0 bytes .../table1_primary_report.txt | 37 ------- .../table1_primary_time_series.png | Bin 37716 -> 0 bytes .../table1_reference_report.txt | 37 ------- .../table1_reference_time_series.png | Bin 34518 -> 0 bytes .../table1_vs_table1_comparison.txt | 39 ------- .../table2_primary_report.txt | 37 ------- .../table2_primary_time_series.png | Bin 37828 -> 0 bytes .../table2_reference_report.txt | 37 ------- .../table2_reference_time_series.png | Bin 34617 -> 0 bytes .../table2_vs_table2_comparison.txt | 39 ------- .../table3_primary_report.txt | 37 ------- .../table3_primary_time_series.png | Bin 37837 -> 0 bytes .../table3_reference_report.txt | 40 ------- .../table3_reference_time_series.png | Bin 50128 -> 0 bytes .../table4_primary_report.txt | 37 ------- .../table4_primary_time_series.png | Bin 41797 -> 0 bytes .../table4_reference_report.txt | 37 ------- .../table4_reference_time_series.png | Bin 33342 -> 0 bytes .../table4_vs_table3_comparison.txt | 42 -------- .../table5_primary_report.txt | 37 ------- .../table5_primary_time_series.png | Bin 35797 -> 0 bytes .../table5_reference_report.txt | 45 -------- .../table5_reference_time_series.png | Bin 72372 -> 0 bytes .../table5_vs_table4_comparison.txt | 39 ------- .../table6_primary_report.txt | 40 ------- .../table6_primary_time_series.png | Bin 46768 -> 0 bytes .../table6_reference_report.txt | 43 -------- .../table6_reference_time_series.png | Bin 52963 -> 0 bytes .../table7_primary_report.txt | 51 --------- .../table7_primary_time_series.png | Bin 59792 -> 0 bytes .../table7_reference_report.txt | 43 -------- .../table7_reference_time_series.png | Bin 55405 -> 0 bytes .../table7_vs_table5_comparison.txt | 42 -------- .../table8_primary_report.txt | 45 -------- .../table8_primary_time_series.png | Bin 84096 -> 0 bytes .../table8_reference_report.txt | 54 ---------- .../table8_reference_time_series.png | Bin 94132 -> 0 bytes .../table9_primary_report.txt | 43 -------- .../table9_primary_time_series.png | Bin 60853 -> 0 bytes .../table9_vs_table6_comparison.txt | 42 -------- 54 files changed, 1413 deletions(-) delete mode 100644 private.xlsx delete mode 100644 public.xlsx delete mode 100644 stability_analysis_results/comprehensive_stability_summary.txt delete mode 100644 stability_analysis_results/intra_primary_stability_summary.txt delete mode 100644 stability_analysis_results/table10_primary_report.txt delete mode 100644 stability_analysis_results/table10_primary_time_series.png delete mode 100644 stability_analysis_results/table10_vs_table7_comparison.txt delete mode 100644 stability_analysis_results/table11_primary_report.txt delete mode 100644 stability_analysis_results/table11_primary_time_series.png delete mode 100644 stability_analysis_results/table12_primary_report.txt delete mode 100644 stability_analysis_results/table12_primary_time_series.png delete mode 100644 stability_analysis_results/table12_vs_table8_comparison.txt delete mode 100644 stability_analysis_results/table13_primary_report.txt delete mode 100644 stability_analysis_results/table13_primary_time_series.png delete mode 100644 stability_analysis_results/table1_primary_report.txt delete mode 100644 stability_analysis_results/table1_primary_time_series.png delete mode 100644 stability_analysis_results/table1_reference_report.txt delete mode 100644 stability_analysis_results/table1_reference_time_series.png delete mode 100644 stability_analysis_results/table1_vs_table1_comparison.txt delete mode 100644 stability_analysis_results/table2_primary_report.txt delete mode 100644 stability_analysis_results/table2_primary_time_series.png delete mode 100644 stability_analysis_results/table2_reference_report.txt delete mode 100644 stability_analysis_results/table2_reference_time_series.png delete mode 100644 stability_analysis_results/table2_vs_table2_comparison.txt delete mode 100644 stability_analysis_results/table3_primary_report.txt delete mode 100644 stability_analysis_results/table3_primary_time_series.png delete mode 100644 stability_analysis_results/table3_reference_report.txt delete mode 100644 stability_analysis_results/table3_reference_time_series.png delete mode 100644 stability_analysis_results/table4_primary_report.txt delete mode 100644 stability_analysis_results/table4_primary_time_series.png delete mode 100644 stability_analysis_results/table4_reference_report.txt delete mode 100644 stability_analysis_results/table4_reference_time_series.png delete mode 100644 stability_analysis_results/table4_vs_table3_comparison.txt delete mode 100644 stability_analysis_results/table5_primary_report.txt delete mode 100644 stability_analysis_results/table5_primary_time_series.png delete mode 100644 stability_analysis_results/table5_reference_report.txt delete mode 100644 stability_analysis_results/table5_reference_time_series.png delete mode 100644 stability_analysis_results/table5_vs_table4_comparison.txt delete mode 100644 stability_analysis_results/table6_primary_report.txt delete mode 100644 stability_analysis_results/table6_primary_time_series.png delete mode 100644 stability_analysis_results/table6_reference_report.txt delete mode 100644 stability_analysis_results/table6_reference_time_series.png delete mode 100644 stability_analysis_results/table7_primary_report.txt delete mode 100644 stability_analysis_results/table7_primary_time_series.png delete mode 100644 stability_analysis_results/table7_reference_report.txt delete mode 100644 stability_analysis_results/table7_reference_time_series.png delete mode 100644 stability_analysis_results/table7_vs_table5_comparison.txt delete mode 100644 stability_analysis_results/table8_primary_report.txt delete mode 100644 stability_analysis_results/table8_primary_time_series.png delete mode 100644 stability_analysis_results/table8_reference_report.txt delete mode 100644 stability_analysis_results/table8_reference_time_series.png delete mode 100644 stability_analysis_results/table9_primary_report.txt delete mode 100644 stability_analysis_results/table9_primary_time_series.png delete mode 100644 stability_analysis_results/table9_vs_table6_comparison.txt diff --git a/private.xlsx b/private.xlsx deleted file mode 100644 index 60a106a6c846d1ebc4a0c4a2a47f9a72226f7cc9..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 18144 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 diff --git a/public.xlsx b/public.xlsx deleted file mode 100644 index a218d95fba798072395f92050ff38fbff38fa522..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 13552 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 Z+%F>z28f*Bk6J_^vkyRk&Bx#G{twQU{#gJ3 diff --git a/stability_analysis_results/comprehensive_stability_summary.txt b/stability_analysis_results/comprehensive_stability_summary.txt deleted file mode 100644 index 3e9d1456144..00000000000 --- a/stability_analysis_results/comprehensive_stability_summary.txt +++ /dev/null @@ -1,98 +0,0 @@ -Comprehensive Latency Stability Analysis Summary -================================================================================ - -Primary (Private) Datasets Summary: -+-----------+------------------+---------------------------------------------------+---------------------+----------+-------------------+--------------------+ -| Dataset | Model | Device | Mean Latency (ms) | CV (%) | Stability Score | Stability Rating | -+===========+==================+===================================================+=====================+==========+===================+====================+ -| table1 | mv3(coreml_fp16) | Apple iPhone 15 (private)(iOS 18.0) | 1.00 | 0.00 | 100.00 | Excellent | -+-----------+------------------+---------------------------------------------------+---------------------+----------+-------------------+--------------------+ -| table2 | mv3(coreml_fp16) | Apple iPhone 15 Plus (private)(iOS 17.4.1) | 1.00 | 0.00 | 100.00 | Excellent | -+-----------+------------------+---------------------------------------------------+---------------------+----------+-------------------+--------------------+ -| table3 | mv3(coreml_fp16) | Apple iPhone 15 Pro (private)(iOS 18.4.1) | 1.00 | 0.00 | 100.00 | Excellent | -+-----------+------------------+---------------------------------------------------+---------------------+----------+-------------------+--------------------+ -| table4 | mv3(mps) | Apple iPhone 15 (private)(iOS 18.0) | 4.00 | 0.00 | 100.00 | Excellent | -+-----------+------------------+---------------------------------------------------+---------------------+----------+-------------------+--------------------+ -| table5 | mv3(mps) | Apple iPhone 15 Plus (private)(iOS 17.4.1) | 1.00 | 0.00 | 100.00 | Excellent | -+-----------+------------------+---------------------------------------------------+---------------------+----------+-------------------+--------------------+ -| table8 | mv3(qnn_q8) | Samsung Galaxy S22 Ultra 5G (private)(Android 14) | 1.02 | 0.51 | 97.08 | Excellent | -+-----------+------------------+---------------------------------------------------+---------------------+----------+-------------------+--------------------+ -| table9 | mv3(xnnpack_q8) | Apple iPhone 15 (private)(iOS 18.0) | 44.90 | 5.30 | 68.15 | Moderate | -+-----------+------------------+---------------------------------------------------+---------------------+----------+-------------------+--------------------+ -| table7 | mv3(qnn_q8) | Samsung Galaxy S22 5G (private)(Android 13) | 1.03 | 6.03 | 62.53 | Moderate | -+-----------+------------------+---------------------------------------------------+---------------------+----------+-------------------+--------------------+ -| table6 | mv3(mps) | Apple iPhone 15 Pro (private)(iOS 18.4.1) | 2.88 | 12.30 | 43.75 | Poor | -+-----------+------------------+---------------------------------------------------+---------------------+----------+-------------------+--------------------+ -| table10 | mv3(xnnpack_q8) | Apple iPhone 15 Plus (private)(iOS 17.4.1) | 40.60 | 10.59 | 38.45 | Poor | -+-----------+------------------+---------------------------------------------------+---------------------+----------+-------------------+--------------------+ -| table12 | mv3(xnnpack_q8) | Samsung Galaxy S22 5G (private)(Android 13) | 3.09 | 33.81 | 8.07 | Poor | -+-----------+------------------+---------------------------------------------------+---------------------+----------+-------------------+--------------------+ -| table11 | mv3(xnnpack_q8) | Apple iPhone 15 Pro (private)(iOS 18.4.1) | 16.20 | 38.03 | 7.21 | Poor | -+-----------+------------------+---------------------------------------------------+---------------------+----------+-------------------+--------------------+ -| table13 | mv3(xnnpack_q8) | Samsung Galaxy S22 Ultra 5G (private)(Android 14) | 2.98 | 39.37 | 4.91 | Poor | -+-----------+------------------+---------------------------------------------------+---------------------+----------+-------------------+--------------------+ - -Reference (Public) Datasets Summary: -+-----------+------------------+-----------------------------------+---------------------+----------+-------------------+--------------------+ -| Dataset | Model | Device | Mean Latency (ms) | CV (%) | Stability Score | Stability Rating | -+===========+==================+===================================+=====================+==========+===================+====================+ -| table1 | mv3(coreml_fp16) | Apple iPhone 15(iOS 18.0) | 1.00 | 0.00 | 100.00 | Excellent | -+-----------+------------------+-----------------------------------+---------------------+----------+-------------------+--------------------+ -| table2 | mv3(coreml_fp16) | Apple iPhone 15 Plus(iOS 17.4.1) | 1.00 | 0.00 | 100.00 | Excellent | -+-----------+------------------+-----------------------------------+---------------------+----------+-------------------+--------------------+ -| table4 | mv3(mps) | Apple iPhone 15 Plus(iOS 17.4.1) | 1.00 | 0.00 | 100.00 | Excellent | -+-----------+------------------+-----------------------------------+---------------------+----------+-------------------+--------------------+ -| table5 | mv3(qnn_q8) | Samsung Galaxy S22 5G(Android 13) | 1.02 | 1.63 | 89.31 | Good | -+-----------+------------------+-----------------------------------+---------------------+----------+-------------------+--------------------+ -| table7 | mv3(xnnpack_q8) | Apple iPhone 15 Plus(iOS 17.4.1) | 40.00 | 10.10 | 41.69 | Poor | -+-----------+------------------+-----------------------------------+---------------------+----------+-------------------+--------------------+ -| table3 | mv3(mps) | Apple iPhone 15(iOS 18.0) | 3.33 | 30.98 | 37.50 | Poor | -+-----------+------------------+-----------------------------------+---------------------+----------+-------------------+--------------------+ -| table8 | mv3(xnnpack_q8) | Samsung Galaxy S22 5G(Android 13) | 2.77 | 25.21 | 19.91 | Poor | -+-----------+------------------+-----------------------------------+---------------------+----------+-------------------+--------------------+ -| table6 | mv3(xnnpack_q8) | Apple iPhone 15(iOS 18.0) | 52.71 | 41.41 | 4.61 | Poor | -+-----------+------------------+-----------------------------------+---------------------+----------+-------------------+--------------------+ - -Private vs Public Comparison: -+----------------------------------------------------+----------------------------------------------+------------------------------------+-----------------+----------------+--------------+------------------+-----------------+---------------+ -| Dataset | Private Device | Public Device | Private Score | Public Score | Score Diff | Private CV (%) | Public CV (%) | CV Diff (%) | -+====================================================+==============================================+====================================+=================+================+==============+==================+=================+===============+ -| mv3(xnnpack_q8) on Apple iPhone 15 (private) | Apple iPhone 15 (private) (iOS 18.0) | Apple iPhone 15 (iOS 18.0) | 68.15 | 4.61 | 63.54 | 5.30 | 41.41 | -36.12 | -+----------------------------------------------------+----------------------------------------------+------------------------------------+-----------------+----------------+--------------+------------------+-----------------+---------------+ -| mv3(mps) on Apple iPhone 15 (private) | Apple iPhone 15 (private) (iOS 18.0) | Apple iPhone 15 (iOS 18.0) | 100.00 | 37.50 | 62.50 | 0.00 | 30.98 | -30.98 | -+----------------------------------------------------+----------------------------------------------+------------------------------------+-----------------+----------------+--------------+------------------+-----------------+---------------+ -| mv3(coreml_fp16) on Apple iPhone 15 (private) | Apple iPhone 15 (private) (iOS 18.0) | Apple iPhone 15 (iOS 18.0) | 100.00 | 100.00 | 0.00 | 0.00 | 0.00 | 0.00 | -+----------------------------------------------------+----------------------------------------------+------------------------------------+-----------------+----------------+--------------+------------------+-----------------+---------------+ -| mv3(coreml_fp16) on Apple iPhone 15 Plus (private) | Apple iPhone 15 Plus (private) (iOS 17.4.1) | Apple iPhone 15 Plus (iOS 17.4.1) | 100.00 | 100.00 | 0.00 | 0.00 | 0.00 | 0.00 | -+----------------------------------------------------+----------------------------------------------+------------------------------------+-----------------+----------------+--------------+------------------+-----------------+---------------+ -| mv3(mps) on Apple iPhone 15 Plus (private) | Apple iPhone 15 Plus (private) (iOS 17.4.1) | Apple iPhone 15 Plus (iOS 17.4.1) | 100.00 | 100.00 | 0.00 | 0.00 | 0.00 | 0.00 | -+----------------------------------------------------+----------------------------------------------+------------------------------------+-----------------+----------------+--------------+------------------+-----------------+---------------+ -| mv3(xnnpack_q8) on Apple iPhone 15 Plus (private) | Apple iPhone 15 Plus (private) (iOS 17.4.1) | Apple iPhone 15 Plus (iOS 17.4.1) | 38.45 | 41.69 | -3.24 | 10.59 | 10.10 | 0.49 | -+----------------------------------------------------+----------------------------------------------+------------------------------------+-----------------+----------------+--------------+------------------+-----------------+---------------+ -| mv3(xnnpack_q8) on Samsung Galaxy S22 5G (private) | Samsung Galaxy S22 5G (private) (Android 13) | Samsung Galaxy S22 5G (Android 13) | 8.07 | 19.91 | -11.85 | 33.81 | 25.21 | 8.59 | -+----------------------------------------------------+----------------------------------------------+------------------------------------+-----------------+----------------+--------------+------------------+-----------------+---------------+ -| mv3(qnn_q8) on Samsung Galaxy S22 5G (private) | Samsung Galaxy S22 5G (private) (Android 13) | Samsung Galaxy S22 5G (Android 13) | 62.53 | 89.31 | -26.78 | 6.03 | 1.63 | 4.40 | -+----------------------------------------------------+----------------------------------------------+------------------------------------+-----------------+----------------+--------------+------------------+-----------------+---------------+ - -Private environment is more stable in 2 of 8 cases. -Public environment is more stable in 3 of 8 cases. -Both environments show equal stability in 3 of 8 cases. - -Overall Insights and Recommendations: -Stability Distribution in Private Datasets: - - Excellent: 6 dataset(s) - - Poor: 5 dataset(s) - - Moderate: 2 dataset(s) - -Best Configurations: - - Most stable configuration: table1 (Score: 100.0/100) - Model: mv3(coreml_fp16), Device: Apple iPhone 15 (private)(iOS 18.0) - - Most stable OS version: iOS 18.0 (Avg. Score: 89.4/100) - -General Recommendations: - 1. For datasets with 'Poor' or 'Moderate' stability, investigate potential causes - such as thermal throttling, background processes, or power management settings. - 2. Consider increasing warm-up iterations for datasets with high CV values. - 3. For critical applications, prefer models and devices with 'Good' or 'Excellent' stability. - 4. Public environments show better stability in most cases. Consider investigating - factors affecting stability in the private environment. \ No newline at end of file diff --git a/stability_analysis_results/intra_primary_stability_summary.txt b/stability_analysis_results/intra_primary_stability_summary.txt deleted file mode 100644 index a26286aab30..00000000000 --- a/stability_analysis_results/intra_primary_stability_summary.txt +++ /dev/null @@ -1,94 +0,0 @@ -Intra-Primary Stability Comparison -================================================================================ - -Overall Summary: -+---------+------------------+---------------------------------------------------+---------------------+----------+-------------------+--------------------+-----------------+-----------------+ -| Sheet | Model | Device | Mean Latency (ms) | CV (%) | Stability Score | Stability Rating | Max/Min Ratio | P99/P50 Ratio | -+=========+==================+===================================================+=====================+==========+===================+====================+=================+=================+ -| table1 | mv3(coreml_fp16) | Apple iPhone 15 (private)(iOS 18.0) | 1.00 | 0.00 | 100.00 | Excellent | 1.00 | 1.00 | -+---------+------------------+---------------------------------------------------+---------------------+----------+-------------------+--------------------+-----------------+-----------------+ -| table2 | mv3(coreml_fp16) | Apple iPhone 15 Plus (private)(iOS 17.4.1) | 1.00 | 0.00 | 100.00 | Excellent | 1.00 | 1.00 | -+---------+------------------+---------------------------------------------------+---------------------+----------+-------------------+--------------------+-----------------+-----------------+ -| table3 | mv3(coreml_fp16) | Apple iPhone 15 Pro (private)(iOS 18.4.1) | 1.00 | 0.00 | 100.00 | Excellent | 1.00 | 1.00 | -+---------+------------------+---------------------------------------------------+---------------------+----------+-------------------+--------------------+-----------------+-----------------+ -| table4 | mv3(mps) | Apple iPhone 15 (private)(iOS 18.0) | 4.00 | 0.00 | 100.00 | Excellent | 1.00 | 1.00 | -+---------+------------------+---------------------------------------------------+---------------------+----------+-------------------+--------------------+-----------------+-----------------+ -| table5 | mv3(mps) | Apple iPhone 15 Plus (private)(iOS 17.4.1) | 1.00 | 0.00 | 100.00 | Excellent | 1.00 | 1.00 | -+---------+------------------+---------------------------------------------------+---------------------+----------+-------------------+--------------------+-----------------+-----------------+ -| table8 | mv3(qnn_q8) | Samsung Galaxy S22 Ultra 5G (private)(Android 14) | 1.02 | 0.51 | 97.08 | Excellent | 1.01 | 1.01 | -+---------+------------------+---------------------------------------------------+---------------------+----------+-------------------+--------------------+-----------------+-----------------+ -| table9 | mv3(xnnpack_q8) | Apple iPhone 15 (private)(iOS 18.0) | 44.90 | 5.30 | 68.15 | Moderate | 1.22 | 1.11 | -+---------+------------------+---------------------------------------------------+---------------------+----------+-------------------+--------------------+-----------------+-----------------+ -| table7 | mv3(qnn_q8) | Samsung Galaxy S22 5G (private)(Android 13) | 1.03 | 6.03 | 62.53 | Moderate | 1.21 | 1.19 | -+---------+------------------+---------------------------------------------------+---------------------+----------+-------------------+--------------------+-----------------+-----------------+ -| table6 | mv3(mps) | Apple iPhone 15 Pro (private)(iOS 18.4.1) | 2.88 | 12.30 | 43.75 | Poor | 1.50 | 1.00 | -+---------+------------------+---------------------------------------------------+---------------------+----------+-------------------+--------------------+-----------------+-----------------+ -| table10 | mv3(xnnpack_q8) | Apple iPhone 15 Plus (private)(iOS 17.4.1) | 40.60 | 10.59 | 38.45 | Poor | 1.38 | 1.27 | -+---------+------------------+---------------------------------------------------+---------------------+----------+-------------------+--------------------+-----------------+-----------------+ -| table12 | mv3(xnnpack_q8) | Samsung Galaxy S22 5G (private)(Android 13) | 3.09 | 33.81 | 8.07 | Poor | 2.62 | 1.87 | -+---------+------------------+---------------------------------------------------+---------------------+----------+-------------------+--------------------+-----------------+-----------------+ -| table11 | mv3(xnnpack_q8) | Apple iPhone 15 Pro (private)(iOS 18.4.1) | 16.20 | 38.03 | 7.21 | Poor | 3.12 | 1.71 | -+---------+------------------+---------------------------------------------------+---------------------+----------+-------------------+--------------------+-----------------+-----------------+ -| table13 | mv3(xnnpack_q8) | Samsung Galaxy S22 Ultra 5G (private)(Android 14) | 2.98 | 39.37 | 4.91 | Poor | 2.61 | 2.34 | -+---------+------------------+---------------------------------------------------+---------------------+----------+-------------------+--------------------+-----------------+-----------------+ - -Best and Worst Performers: - Best stability: table1 (Score: 100.0/100) - Worst stability: table13 (Score: 4.9/100) - -Model-based Comparison: -+------------------+-------------------------------+------------------------------+------------------------------+----------------------+---------------------+---------------------+ -| Model | ('Stability Score', 'mean') | ('Stability Score', 'min') | ('Stability Score', 'max') | ('CV (%)', 'mean') | ('CV (%)', 'min') | ('CV (%)', 'max') | -+==================+===============================+==============================+==============================+======================+=====================+=====================+ -| mv3(coreml_fp16) | 100.00 | 100.00 | 100.00 | 0.00 | 0.00 | 0.00 | -+------------------+-------------------------------+------------------------------+------------------------------+----------------------+---------------------+---------------------+ -| mv3(mps) | 81.25 | 43.75 | 100.00 | 4.10 | 0.00 | 12.30 | -+------------------+-------------------------------+------------------------------+------------------------------+----------------------+---------------------+---------------------+ -| mv3(qnn_q8) | 79.81 | 62.53 | 97.08 | 3.27 | 0.51 | 6.03 | -+------------------+-------------------------------+------------------------------+------------------------------+----------------------+---------------------+---------------------+ -| mv3(xnnpack_q8) | 25.36 | 4.91 | 68.15 | 25.42 | 5.30 | 39.37 | -+------------------+-------------------------------+------------------------------+------------------------------+----------------------+---------------------+---------------------+ - Most stable model: mv3(coreml_fp16) (Avg. Score: 100.0/100) - -Device-based Comparison (Grouped by Base Device): -+---------------------------------------+-------------------------------+------------------------------+------------------------------+----------------------+---------------------+---------------------+ -| Device Base | ('Stability Score', 'mean') | ('Stability Score', 'min') | ('Stability Score', 'max') | ('CV (%)', 'mean') | ('CV (%)', 'min') | ('CV (%)', 'max') | -+=======================================+===============================+==============================+==============================+======================+=====================+=====================+ -| Apple iPhone 15 (private) | 89.38 | 68.15 | 100.00 | 1.77 | 0.00 | 5.30 | -+---------------------------------------+-------------------------------+------------------------------+------------------------------+----------------------+---------------------+---------------------+ -| Apple iPhone 15 Plus (private) | 79.48 | 38.45 | 100.00 | 3.53 | 0.00 | 10.59 | -+---------------------------------------+-------------------------------+------------------------------+------------------------------+----------------------+---------------------+---------------------+ -| Samsung Galaxy S22 Ultra 5G (private) | 51.00 | 4.91 | 97.08 | 19.94 | 0.51 | 39.37 | -+---------------------------------------+-------------------------------+------------------------------+------------------------------+----------------------+---------------------+---------------------+ -| Apple iPhone 15 Pro (private) | 50.32 | 7.21 | 100.00 | 16.78 | 0.00 | 38.03 | -+---------------------------------------+-------------------------------+------------------------------+------------------------------+----------------------+---------------------+---------------------+ -| Samsung Galaxy S22 5G (private) | 35.30 | 8.07 | 62.53 | 19.92 | 6.03 | 33.81 | -+---------------------------------------+-------------------------------+------------------------------+------------------------------+----------------------+---------------------+---------------------+ - Most stable device: Apple iPhone 15 (private) (Avg. Score: 89.4/100) - -OS Version Comparison: -+--------------+-------------------------------+------------------------------+------------------------------+----------------------+---------------------+---------------------+ -| OS Version | ('Stability Score', 'mean') | ('Stability Score', 'min') | ('Stability Score', 'max') | ('CV (%)', 'mean') | ('CV (%)', 'min') | ('CV (%)', 'max') | -+==============+===============================+==============================+==============================+======================+=====================+=====================+ -| iOS 18.0 | 89.38 | 68.15 | 100.00 | 1.77 | 0.00 | 5.30 | -+--------------+-------------------------------+------------------------------+------------------------------+----------------------+---------------------+---------------------+ -| iOS 17.4.1 | 79.48 | 38.45 | 100.00 | 3.53 | 0.00 | 10.59 | -+--------------+-------------------------------+------------------------------+------------------------------+----------------------+---------------------+---------------------+ -| Android 14 | 51.00 | 4.91 | 97.08 | 19.94 | 0.51 | 39.37 | -+--------------+-------------------------------+------------------------------+------------------------------+----------------------+---------------------+---------------------+ -| iOS 18.4.1 | 50.32 | 7.21 | 100.00 | 16.78 | 0.00 | 38.03 | -+--------------+-------------------------------+------------------------------+------------------------------+----------------------+---------------------+---------------------+ -| Android 13 | 35.30 | 8.07 | 62.53 | 19.92 | 6.03 | 33.81 | -+--------------+-------------------------------+------------------------------+------------------------------+----------------------+---------------------+---------------------+ - Most stable OS version: iOS 18.0 (Avg. Score: 89.4/100) - -Insights and Recommendations: - - mv3(coreml_fp16) shows the most consistent performance across devices. - - mv3(xnnpack_q8) shows more variability and may need further optimization. - - Apple iPhone 15 (private) provides the most stable environment for model execution. - - Samsung Galaxy S22 Ultra 5G (private) shows higher variability and may not be ideal for latency-sensitive applications. - - iOS 18.0 provides better stability than Android 14 across tested devices. - - For critical applications requiring consistent performance, prefer: - * Model: mv3(coreml_fp16) - * Device: Apple iPhone 15 (private) - * OS Version: iOS 18.0 \ No newline at end of file diff --git a/stability_analysis_results/table10_primary_report.txt b/stability_analysis_results/table10_primary_report.txt deleted file mode 100644 index 747d983a958..00000000000 --- a/stability_analysis_results/table10_primary_report.txt +++ /dev/null @@ -1,43 +0,0 @@ -Latency Stability Analysis: table10 (Primary) -================================================================================ -Model: mv3(xnnpack_q8) -Device: Apple iPhone 15 Plus (private)(iOS 17.4.1) - -Dataset Overview: - - Number of samples: 10 - - Date range: 2025-06-11 01:49:37+00:00 to 2025-06-12 17:33:28+00:00 - -Central Tendency Metrics: - - Mean latency: 40.60 ms - - Median latency (P50): 39.50 ms - -Dispersion Metrics: - - Standard deviation: 4.30 ms - - Coefficient of variation (CV): 10.59% - - Interquartile range (IQR): 4.75 ms - -Percentile Metrics: - - P50 (median): 39.50 ms - - P90: 43.80 ms - - P95: 47.40 ms - - P99: 50.28 ms - -Inter-Jitter Metrics (variability between runs): - - Max/Min ratio: 1.3784 - - P99/P50 ratio: 1.2729 - - Mean rolling std (window=5): 5.24 ms - -Stability Assessment: - - Overall stability score: 38.4/100 - - Overall stability rating: Poor - -Interpretation: - The benchmark shows poor stability (score: 38.4/100) with significant - variation between runs (CV: 10.59%). - Performance is unpredictable and may lead to inconsistent user experience. - - The max/min ratio of 1.38 indicates - substantial performance differences between the best and worst runs. - - The P99/P50 ratio of 1.27 suggests - occasional latency spikes that could affect tail latency sensitive applications. \ No newline at end of file diff --git a/stability_analysis_results/table10_primary_time_series.png b/stability_analysis_results/table10_primary_time_series.png deleted file mode 100644 index 1226ae38ab543d33ab7c69cfa9ac4f0a5b2fd833..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 63029 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

  • ^H2;Dwe(xFO1QWM=qmS@#Q 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 diff --git a/stability_analysis_results/table10_vs_table7_comparison.txt b/stability_analysis_results/table10_vs_table7_comparison.txt deleted file mode 100644 index 9409318f496..00000000000 --- a/stability_analysis_results/table10_vs_table7_comparison.txt +++ /dev/null @@ -1,42 +0,0 @@ -Private vs Public Stability Comparison -================================================================================ -Private Dataset: table10 -Public Dataset: table7 -Model: ('mv3(xnnpack_q8)',) -Private Device: ('Apple iPhone 15 Plus (private)(iOS 17.4.1)',) -Public Device: Apple iPhone 15 Plus(iOS 17.4.1) - -Metric Comparison: -+-------------------------+---------------------+----------------------+--------------+------------+ -| Metric | Private (Primary) | Public (Reference) | Difference | % Change | -+=========================+=====================+======================+==============+============+ -| Mean Latency (ms) | 40.60 ms | 40.00 ms | 0.60 ms | 1.5% | -+-------------------------+---------------------+----------------------+--------------+------------+ -| Median Latency (ms) | 39.50 ms | 39.00 ms | 0.50 ms | 1.3% | -+-------------------------+---------------------+----------------------+--------------+------------+ -| Standard Deviation (ms) | 4.30 ms | 4.04 ms | 0.26 ms | 6.4% | -+-------------------------+---------------------+----------------------+--------------+------------+ -| CV (%) | 10.59% | 10.10% | 0.49% | 4.8% | -+-------------------------+---------------------+----------------------+--------------+------------+ -| IQR (ms) | 4.75 ms | 4.50 ms | 0.25 ms | 5.6% | -+-------------------------+---------------------+----------------------+--------------+------------+ -| P99 (ms) | 50.28 ms | 44.88 ms | 5.40 ms | 12.0% | -+-------------------------+---------------------+----------------------+--------------+------------+ -| Max/Min Ratio | 1.3784 | 1.3636 | 0.0147 | 1.1% | -+-------------------------+---------------------+----------------------+--------------+------------+ -| P99/P50 Ratio | 1.2729 | 1.1508 | 0.1221 | 10.6% | -+-------------------------+---------------------+----------------------+--------------+------------+ -| Stability Score | 38.4/100 | 41.7/100 | -3.2 | -7.8% | -+-------------------------+---------------------+----------------------+--------------+------------+ -| Stability Rating | Poor | Poor | N/A | N/A | -+-------------------------+---------------------+----------------------+--------------+------------+ - -Interpretation: - Public environment shows better stability with a 7.8% higher stability score. - (Private: 38.4/100 vs Public: 41.7/100) - Public environment has 4.8% lower coefficient of variation, indicating more consistent performance. - Public environment has 1.5% lower mean latency, indicating better performance. - -Recommendation: - The public environment provides better stability for this model+device combination. - Consider investigating factors affecting stability in the private environment. \ No newline at end of file diff --git a/stability_analysis_results/table11_primary_report.txt b/stability_analysis_results/table11_primary_report.txt deleted file mode 100644 index 6c7a9fd4b74..00000000000 --- a/stability_analysis_results/table11_primary_report.txt +++ /dev/null @@ -1,43 +0,0 @@ -Latency Stability Analysis: table11 (Primary) -================================================================================ -Model: mv3(xnnpack_q8) -Device: Apple iPhone 15 Pro (private)(iOS 18.4.1) - -Dataset Overview: - - Number of samples: 10 - - Date range: 2025-06-11 01:49:37+00:00 to 2025-06-12 17:33:28+00:00 - -Central Tendency Metrics: - - Mean latency: 16.20 ms - - Median latency (P50): 14.50 ms - -Dispersion Metrics: - - Standard deviation: 6.16 ms - - Coefficient of variation (CV): 38.03% - - Interquartile range (IQR): 8.75 ms - -Percentile Metrics: - - P50 (median): 14.50 ms - - P90: 23.20 ms - - P95: 24.10 ms - - P99: 24.82 ms - -Inter-Jitter Metrics (variability between runs): - - Max/Min ratio: 3.1250 - - P99/P50 ratio: 1.7117 - - Mean rolling std (window=5): 6.10 ms - -Stability Assessment: - - Overall stability score: 7.2/100 - - Overall stability rating: Poor - -Interpretation: - The benchmark shows poor stability (score: 7.2/100) with significant - variation between runs (CV: 38.03%). - Performance is unpredictable and may lead to inconsistent user experience. - - The max/min ratio of 3.12 indicates - substantial performance differences between the best and worst runs. - - The P99/P50 ratio of 1.71 suggests - occasional latency spikes that could affect tail latency sensitive applications. \ No newline at end of file diff --git a/stability_analysis_results/table11_primary_time_series.png b/stability_analysis_results/table11_primary_time_series.png deleted file mode 100644 index a3ce4b7082bbc1b8be64d9e8895af14d0db88bd7..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 70499 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%0Ds~yc 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�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⋙cZjJvtGeyZTp z|K!MfKx)BA8x|^KZ78>A2$_9Uai%!Ih4$uQ?!gcTgN)5n?V#w>o zBkb|ktyF%ogC+?1kgv6A6{@x);J=JZT-x5utbS0~hZei6LgqdTD-c_1UJ%mEAf@F=;1J{Qm_9~08%mT3*hXig;r+$JD9bV1rzWd`Z*$p zx54W~;*uMBtk=?Y9B_Alq-U%%nBYCzvj?S-L^BY=U%>h;eZnf=@&NNT~x}o=S3sw=exs z(r18z3jDIhz#^q>Z$r-VLRttp^>JR!=|3{>6UZC&`%R7)nwNR6S7K%BvNhV&H1z1a z2CoXOXtx28-{!d`@VB1MS+jii^RBCo?Zk07PRLG@0$eCs#)gDoZXG$$1z7IAmSqzc zN73`>j-C9Vq~u$pOT1XQ359B2rr&f-@^StIgd$n!ql$%f?;db_H) zGd6k5+2m&ibDtG%Gi=>@4Qx4=c46n!;F> zL>B@pi(qlc|7?`D3{St++#EG%YPawpFfcGdoLQNE6N^Ec8q3*7rvssVx8_}=*pY^K znOjh*{HYuJa*n&lY;zJG{HVY6NdLzR^lzh$d!?So_owGRvoB15gQ+LNQwc3JbL0ly zZ+WqKjN=hZl&mIEAzVajKu;?Dr}yRsd+zj2J(Du@4OR(*PaLV7@M!$tKwFLh*fvbb!GvmNVyGUs}T z8RYpr?Vy;444cJ$uxtI;OaHJ#A?6JY?pr;D=l`HSZ6f0&Q9vzax;fYU!!v-3L6wCuCa#-F1%${ozukpI>VkGpD-u-m7Lr zR9nO}MC^rDy=^}b*ZT_r6e$`g7d51z0y^0I5ncR23!K1rLRh${at$doL;1}7MZnBI zi?}8rcd&vSQ^=*8|D~*PD~-reg!_kX3S9(dSc)(8Kb#W#F+dr0Lno#>2Z31CPwR+* zg^!$pU=2OipSbh7uiqg70aqu!K0{M5^2&U*>$Aw*)%NCbXbHE@Qxd|RKzMl(;^ezy zgiJoKqHuZ_9+%I54oD}$Dn);iPisU1!K#^+eE}Ng-pLm?BA)#(%vY{!(342(!#A08yOm{rQ+p83upX-S9%r>q9gY{h`k97OUWBG^9#B|i z%ulp8Hdw@ZBq6QxHT9%U8~J1xMj_i5&_zVZ!AuogLGr~5sWT;x^Q9c(;(dC>6|eNO zJzwgJ^xC^Te@|^0nL9Ca>wQV}Zrzf%5a_BZ(uo-2HaR6F2j3(4deh0o?aW3A_@+B5 zX4Q&e1IY^7xAe1b`Pt$-TP@^&_)6fk9TIY&*5il?o4-v6^J3tj5Fb2u_UwQCDCn-R ziVwn%9j*Rjl@?5dvm&IP^M?OsRoK7Ea1ZsK!x!m7O3NRh)Od|OAmgKnB*cwlid+yw zEi{P*xvfp0tdXWnWj)}#ESJ8$I40>WIsz+6N8^T_=yQFD^!7+xdJSOL*#y&r#5? zWV5|mCy(+d|KU){D*;XK)5^kx36PBIFjN8K-39N6CN3ZvWS@H86;s9s?If*h50b4^ zfBNG)?e>BYGyVhLX^ z-)b)25gw1YsU#Zi$MRkVpg#mh!v?_VsSRa%K35Mv0xDa0$OX>s!HZ?wx+aIwEdfO@ z3%Xbc=if-m=TUqPI1l=%07*?&v`B9Jeyne#@AR|Qr}i{lyGtHFMBL!oVe>@QxkR_+ zD8wY*c5rMdSTUPQAr!ujIl9>x|#6 zM*(eWz^bcE31-wUyvL%3<_`!l{xwFIksXP~bYvLB_G*ll--bgpCVPrB^xf9%;FKVn zRa6%o@8Cys_7moqe3V;x`@d*})qHf;!ro%hmi1njzrE#Ms^L)f>xUH!2&Oy!@CscH zyM7$2Zoa`LJq0!iO;QTv_jvb)|EpENx+TNvIWe%DcV;%nEy2@mU%z}?#p$_d3v@~p z@dwQdo`Mz$rt-P{nxW!jJujHn`$=W?zzugVVqg|7 zShO*qSLGdSsvq9v*~3URUoGAzs_sboviyPHZfio|GBl~cMcNAfiPFH91z^+e1DTQk z2KL&{=$Bq-vT8^MD7y3_40N-ROf*bf3I+PLJhX`%7TkP)yF@4yI8pUeJc5$1UcGX- z*aF){=amPN9|M^+X99!{9<(xzvsrbhKcheBg|rkTDxq?dF=afTzdeZXz`-D*Rc@>L-TxNOyUBEUXC8x3w3S>W}8IueO+&qjndJ z_LDt_d0xp}y8R!~?0-bF|4*V>uo%7vZ586?cdsJiL>Hn(0WqNAlI-3SiH%Vh$Y^)}16U;m3j2W8&JcY#9#kA;1SB|q6 z!ub9_*=R2PTUo=tLZI~x35Pi0_nSeNO_CAqLGqg?o<--bU^0Snkvl|_cBp5|+t-Mj zrdb`6(u7B{C~%2P88Al62*a~P$YXQC1kED{iqAIE%O}Xe;m^n<+N;!g!=SV(BfLCs z!hj&?8)>*9T%1=R?P21cTD%<+^6ilQ>kvtX+qRP6U!g!t$saPyfjq(QeB$UMW?%IKE$NmnXh{Y8iJrex0igE^!*Y_(WcA^jffEY^u98Jt|69LwaO3; zZCTK&mh~wUd#CzT_C0+7&zsU3NXL%)@DR+e6{KnkQ+G&=`ss3zH)rAKK9D&4-fvSG#Xs zSZMR!|2^hY7VCVU(|q>M+q-`TtM{Tqp>F1Y&i7vB%wdkCCzlm+ITdzST`hIZ&$oW) z_e;-p-vmMyK|uZf-MvxBx!OrVwf}ynHVbk+7j-_z+>gH!vC(!=g&^HQeeY+9p^G3< zM+XQgQC_+VVv2#i;qU}32RZMzLFNXd{mAehkfL*wz>+l-P=b&%9PeKNaRfG@y2AXw zKF+FENJH~QY{R#! zxGS&Vw7o9k*@zk6& zex>a3_j?d+pVwFC8jRh&Y8+8!H~=UkS;2&J7deVh(7$PuUieU~J1&#C=D=e6;AE&U zp88l1_}0xf6Rx|?AuVGYR+F9>D`cV=Z~(0pT8hK7q{CgxiW3n+2YW|MZ)Iml)Y2vD zyC79*%KYv|pjrB`>{ZTx&Hmlp+Ox|OEV#xVvA?%u3xz#Y-tv7Fw&!eljh|z}Bar&% z51vMgyuh_z@=WuQYKq^oTM^6Exu7zo&WmqSV-H)oU~yXi2;`DwU_O8lm)k~-G&b8Y zu-lggHIKBjO0snUOd?B^Z_qd_W$z8db}Tsuo9XMb)7?CJ-*%PN>huojk9iDB?D2@V zk){rf@BjS>H0d75NZRsRzup|a{iAPsYd7qrr>6TtU)PQKT+5J%M7rR8d4PRmZ{-M* zFM0}`zU8&>2w%dM_BBKL4SRn7P;XHEK30FMMCY>Tkt;BkHl`qmKU-6%*|of=NI2Gg zZQ3RyEf*o_kNI(7>N1<7+`AHJsh!hKs-R^NGJaRb99qy~QKcNSi&7G2RFjx^kSZEy zs13qTKsk~Ck>g?%S;E0Atbp~l(L_6ndv9;^y%hbpPX-c#M)5YA(dFq%A;TvWcnos8 zJ56-s%wynFpuW4Sh`foYh#X$FfXTB2KJG!E9sH>mfnrL2eZbm_Q=fz^BV|KQ-#iKKho@3IRRcEc} zEp|kI&W3F@v;HGqC%(2nliSL;{Nh3ja0myLy`&mPdZ*c;(q8>QT>e6=ha zQ5-cI`DEYmlX4QHK;e|pl`FHouEFTY}i9bydTqJHzutvp}TndgKUPyff% z7X969L`RgJQ#Fakhby#53q>f>w~K|mvjXSJeCh)h zwNV&5+Z=tyE-zkz7qvl16oF=h_ibNOqUrrYd=${oYZ;|l2vQ%g`k5fc1M|Y78>b$D zr~)aiIujvGC@I8ArRKFdd`cIpMaw`R%w%y(&pwSLUJmh{a9ult3|bB=t7svn=73!w zzO%3O;j-(bEm^Vmj&|@M>s4!zQ?{dsCruo$jfdX`5|Q$-e=_Yjw@EM26+qn4<((6y z;CO`$+#-#Pn~~1iNxajY3dO;9Q+3BMC@JHV3-I1)qFGKLF}Iah7F|+2bc@I|oWZRj z)Rst$d7_C5s8DyboTwwzLc)tceIM3w_F1>>Uq}+5Q9H)ooP(D`tNOXW_lDZxni_*q zuZ5XCF{BROey3ttC`6zYg|tE0PSl_mFDl>*EkdKdJ@3=ggFai(9N{G*=E21*)>_;~q+U1{*8<>hNNT}odH!jKmuVukr#VN!f7XIg zw+%$%3k0;zpK*bfBr7g{X0S!%EG9wJjBnLGogXk?;puqyXYfmn!CpG}dee^k$bKYG z3%Xuh2e%Ajm1u${UV`vF0yW);R(|W(9(VPkm7Sqjtss^^l0cyaEwjgCM_<#$=7ETl z(3E6b$e1O+(Ef-aT|J^2(lWDHZl6c)gf!3DCnO&->Nr>|A>QC4*;u1&7CfXugCe43 zpAyXP2Cwa2Jr|YI2BRzo^Uj)tQ0l69;nJ@>&85xmS!B8wT#)Z*+8$7KWJgb!J^n+< z<5v~xOg@5#gifYu%Z?aR1F;*Th(NZsq>xDqI~sHx;clmNW<_h+8dLEu-H#BMFPN zdfa;Lfz}OfANg;CQq)PirK%@g?6;F3`^QDMA)!%_*6ExfBXg%qwoo-`w@~Gp_X~2m zDb(${gGz?n?DdDXr6=Z3wK&|uaq1V*cX*JSrlyb<7a$~G9_+}Ny&gf}XVc(|Rl`pR z^HCAwGEOgWK2s4_kg5#!U3V~xS<&c+^vdmevlrIpZ_f}5r_mDflLyBKAg2kzmQp@< zS7ggjjF^C=8EnRFL^jf2QeEIRMhTGuhdBgY{4tfaOSlWTLsikr^YhGh2gLr1hV=NU zUUzHA!j{}9Iooz!_{M;G#M84e57OBtC~?B~0ZeT^_3*ICTu%Ndz418JH?kyx749B| zilQ7B{$t8r?yRRTZXD!;pg^?tbim>p`BUJy{^Fm8z=I?>9=IePineu$r^qsO+tY zZ}C=1Hcq`Ve~4mNA#iEMF5M*F*;*S__#laWGiWxw@x}nJftmh`&SU43-4=#si!BsP zOfD=6-;g_}tN3KF@@PDD>s1Zu>3OtkXdG5jESAfdWyJT|Z0z4@@ad+{$A0gSUK%B? zu+#w}?D6}FE?oEV5K(EOHwyJx_y>jNjYK3vpH)gwR6Fyv%m*h%{T<*~vvw)gTpHv3 zh}ug9hrI$I&8D^U91OTKS-E^z) zOS`NC{}bC$7S8#f2mD6O2I{WdGTS{!bLtvbzLk{-o2x((o22~pCF9Q|1}nFB)kuw= z_8wp3gHnT-VNX#TY$qTL3Ae$!;98g+zCq-Tt&N*5Uk+-#EL`zA_Qb&xSggDJ3OX+<8W+OeebIrQ9e&cG8hpRHBAR->~y1TC(b=dg0mH8lIV zs<6DPaqj4Bxp7}L?iAIe{?2jH7IUipMdV48mO2diN*Lponc?s0eyQe)5v4zE=+4kI zBlqNd?g92WGyHK=lA49skn*M|Cw;QoTBMfLpTNNyMb$n%qsz8?)Z^yRt=frHXdhqu zOn6N*Sw3iL(Yedb>rG8%pW@@?rtUl9MlL>EA+oy^>TpT0+ngS-45o6JU92wO7teMN z-kGL6b(D~Jb9iSY26X+>U{+LpgezmU>c$-s(SS0?&97%R72}5CN)v_kVHF8!G z(a;k*3+M4D4d~+tzvSu8AvMi7jV43^^IYNaAlSLC>S?Upp9kJ$PDv^}Eih}=;-;<> zK%@M$*<)&lr0G0Q8MfVrT+vDIhns3ltZIt%PJ{OgstVmZH*`~`C|Jowf4Syw(zWi4QmreRdPHN%UoY zaGTXTM?-_WG(>N4dF5ewKa*yqS+yb0s^zv>v-O?&d3SSuyTT#UEloFc?5X7&MyJPo z;#q!4%K8|6!UU{r--kcU6QcaOm}`3aDGv}Zx-&UnQ@6Vjh;%Ad!&suDDc3C^SfK0- z!Ked5Jm znBJg(jXWGltL32EGd==M=Pj!C$m122+1mRFf*5~YK+TQMsdyISCptr@6GU0y9#(%n zSlP_A=e5i#`x>VT`>x;qfZHp7+a;DW{A9Am52nH0ZOf;IAF!B8fWkR1xIm7UA;UZg z*F$-`wF%gzL&*WqKK{|}A3)3%oY;WiaGb>o5Uo;STzt7CtTc?ZD zQ;ft_cK42R05>>1M_BIsbjI&a-lPh@tZB|Gd?ZEgj{Dr@R!18FD50xCadO(CHb)!h zUER#mS(|*h1{CNUC4p`0=?u@mH%tQMqlyJx(d>DNaW^a89GfcCp`)iaOz>aBpcjvj zxS*n}tk3*NdsqP!9&dnl^MpvRAFP813eIhsmXL3I;c4?5Y+3ZvIWoWG2P5|NV773P zdG^zL06G0Y3Zt@+g1Lba`WdCt_W5vtaTlEW0{!8T-Oin(g#Jne4los1uL2x5#iP9; zQ|RQc9~e#ii!>(Ay2{F)+y!r!Gnwlc#zhG7neFZE^r@U=6zzP4v0$Gs50b6YpzJlh zYace>xB&pctSMqM_A{&qy`Tt@X7isp!fiJ!^Ei+DTAK8z0jlI$20I zy4egCGcJsWSEq)HkihK$&)Ut1`8&d2Zr0H`cuxclD8eTY}JUL-ozIA-`zvs^JU2>xO*z@PYY)%4kJLNE9`ENW9t*Y`Yr1 zg3Hd7NC3iL4dC2+B$J*n#>yYaumhMKn4>mlk;RhQw})gKA%UiPXM=r1Y@c!P>;0DN zx}V+#nc)CcQ8oU&D75xGJL6h(?Koz5&*knh_`>rwo9|9bJT?K@b1Wv}5%$&^7=>*y zcF`Fld$kca$AXwBzw7A&w%~X=_TX>G?Vx~pSC!KAV)C?_3M3wWzX|6e4`r9Q!|Xtfj(9Ne2gU838C1+3t!d=dwh^1 zR$Y=1Xh>2lhKrjW{8VGO9@f>az`@! zZzT24G8a3_E;*0!3xt!AL)V@!1fTUuV4xB;DZMch7-}N~jjfN$x=xY^%lSn;Ox`7< zP9Y~57x<9AXn=h3eG5EvB*M@{`DXiICZw?rN1lKlHy0kv*toc|i*h!Nw>VTam|V$O zRITju8m_LHju_)m072L&dQxMemSad{JNIIAj3ch8+*;+M49miPsyf$o%w8D0V|9-W zj@(cP!E|sCHf6s=XlxGhmMeQHL7oJIniqd&!f?CHJ-)=rf5*N~tp0*r;z$Mo+d>IQ54HCuS8>Wl=U~MU3t}5I$QPi3)GO-wgXy;%iY8(E%hyL5-mabTYh%eLfW(n*ucR9yOl{*~fU#`c8

    UWMoO^uB>y5Ov3A__Zt$UyL5JQqIxpBa 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⪈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¥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≻N5K3BO1+3d{-9@(la=Y&Q2r14{&lCH$ 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�kAM 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 Od?atliDirEKK>uI4q#^h diff --git a/stability_analysis_results/table5_vs_table4_comparison.txt b/stability_analysis_results/table5_vs_table4_comparison.txt deleted file mode 100644 index c2a3e84858b..00000000000 --- a/stability_analysis_results/table5_vs_table4_comparison.txt +++ /dev/null @@ -1,39 +0,0 @@ -Private vs Public Stability Comparison -================================================================================ -Private Dataset: table5 -Public Dataset: table4 -Model: ('mv3(mps)',) -Private Device: ('Apple iPhone 15 Plus (private)(iOS 17.4.1)',) -Public Device: Apple iPhone 15 Plus(iOS 17.4.1) - -Metric Comparison: -+-------------------------+---------------------+----------------------+--------------+------------+ -| Metric | Private (Primary) | Public (Reference) | Difference | % Change | -+=========================+=====================+======================+==============+============+ -| Mean Latency (ms) | 1.00 ms | 1.00 ms | 0.00 ms | 0.0% | -+-------------------------+---------------------+----------------------+--------------+------------+ -| Median Latency (ms) | 1.00 ms | 1.00 ms | 0.00 ms | 0.0% | -+-------------------------+---------------------+----------------------+--------------+------------+ -| Standard Deviation (ms) | 0.00 ms | 0.00 ms | 0.00 ms | Infinity% | -+-------------------------+---------------------+----------------------+--------------+------------+ -| CV (%) | 0.00% | 0.00% | 0.00% | Infinity% | -+-------------------------+---------------------+----------------------+--------------+------------+ -| IQR (ms) | 0.00 ms | 0.00 ms | 0.00 ms | Infinity% | -+-------------------------+---------------------+----------------------+--------------+------------+ -| P99 (ms) | 1.00 ms | 1.00 ms | 0.00 ms | 0.0% | -+-------------------------+---------------------+----------------------+--------------+------------+ -| Max/Min Ratio | 1.0000 | 1.0000 | 0.0000 | 0.0% | -+-------------------------+---------------------+----------------------+--------------+------------+ -| P99/P50 Ratio | 1.0000 | 1.0000 | 0.0000 | 0.0% | -+-------------------------+---------------------+----------------------+--------------+------------+ -| Stability Score | 100.0/100 | 100.0/100 | 0.0 | 0.0% | -+-------------------------+---------------------+----------------------+--------------+------------+ -| Stability Rating | Excellent | Excellent | N/A | N/A | -+-------------------------+---------------------+----------------------+--------------+------------+ - -Interpretation: - Both environments show identical stability scores. - -Recommendation: - Both environments provide similar stability. Other factors like cost or availability - may be considered for choosing between them. \ No newline at end of file diff --git a/stability_analysis_results/table6_primary_report.txt b/stability_analysis_results/table6_primary_report.txt deleted file mode 100644 index 1b4d674a4dd..00000000000 --- a/stability_analysis_results/table6_primary_report.txt +++ /dev/null @@ -1,40 +0,0 @@ -Latency Stability Analysis: table6 (Primary) -================================================================================ -Model: mv3(mps) -Device: Apple iPhone 15 Pro (private)(iOS 18.4.1) - -Dataset Overview: - - Number of samples: 8 - - Date range: 2025-06-11 09:33:04+00:00 to 2025-06-12 17:33:28+00:00 - -Central Tendency Metrics: - - Mean latency: 2.88 ms - - Median latency (P50): 3.00 ms - -Dispersion Metrics: - - Standard deviation: 0.35 ms - - Coefficient of variation (CV): 12.30% - - Interquartile range (IQR): 0.00 ms - -Percentile Metrics: - - P50 (median): 3.00 ms - - P90: 3.00 ms - - P95: 3.00 ms - - P99: 3.00 ms - -Inter-Jitter Metrics (variability between runs): - - Max/Min ratio: 1.5000 - - P99/P50 ratio: 1.0000 - - Mean rolling std (window=5): 0.45 ms - -Stability Assessment: - - Overall stability score: 43.8/100 - - Overall stability rating: Poor - -Interpretation: - The benchmark shows poor stability (score: 43.8/100) with significant - variation between runs (CV: 12.30%). - Performance is unpredictable and may lead to inconsistent user experience. - - The max/min ratio of 1.50 indicates - substantial performance differences between the best and worst runs. \ No newline at end of file diff --git a/stability_analysis_results/table6_primary_time_series.png b/stability_analysis_results/table6_primary_time_series.png deleted file mode 100644 index ecec083799f5cd01da7acb2b3295e810295e9016..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 46768 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

    |5ze{@)w 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 diff --git a/stability_analysis_results/table7_primary_report.txt b/stability_analysis_results/table7_primary_report.txt deleted file mode 100644 index 4dfaef5468a..00000000000 --- a/stability_analysis_results/table7_primary_report.txt +++ /dev/null @@ -1,51 +0,0 @@ -Latency Stability Analysis: table7 (Primary) -================================================================================ -Model: mv3(qnn_q8) -Device: Samsung Galaxy S22 5G (private)(Android 13) - -Dataset Overview: - - Number of samples: 11 - - Date range: 2025-06-11 01:15:17+00:00 to 2025-06-12 17:06:01+00:00 - -Central Tendency Metrics: - - Mean latency: 1.03 ms - - Median latency (P50): 1.01 ms - - Mean trimmed latency: 1.03 ms - - Median trimmed latency: 1.01 ms - -Dispersion Metrics: - - Standard deviation: 0.06 ms - - Coefficient of variation (CV): 6.03% - - Interquartile range (IQR): 0.01 ms - - Trimmed standard deviation: 0.06 ms - - Trimmed coefficient of variation: 6.15% - -Percentile Metrics: - - P50 (median): 1.01 ms - - P90: 1.02 ms - - P95: 1.12 ms - - P99: 1.20 ms - -Inter-Jitter Metrics (variability between runs): - - Max/Min ratio: 1.2079 - - P99/P50 ratio: 1.1881 - - Mean rolling std (window=5): 0.07 ms - -Intra-Jitter Metrics (variability within runs): - - Mean trimming effect ratio: 0.36% - - Max trimming effect ratio: 0.98% - -Stability Assessment: - - Overall stability score: 62.5/100 - - Overall stability rating: Moderate - -Interpretation: - The benchmark shows moderate stability (score: 62.5/100) with noticeable - variation between runs (CV: 6.03%). - While average performance is acceptable, occasional latency spikes may occur. - - The max/min ratio of 1.21 indicates - substantial performance differences between the best and worst runs. - - The P99/P50 ratio of 1.19 suggests - occasional latency spikes that could affect tail latency sensitive applications. \ No newline at end of file diff --git a/stability_analysis_results/table7_primary_time_series.png b/stability_analysis_results/table7_primary_time_series.png deleted file mode 100644 index e2029d5e9e5cc4062fbf09aae3a93a30e84946d7..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 59792 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�ga0lx6oKwdfz>><0iEFU88Rg+ zA=KvHgk4#nD8!uSTXm0}n^!z~`3V)nEakn1bEmFi99RLk7MO_>W~);VqhewJXmb)# zwhQ9&xq@%7ojYBW*&mWUa}_D6$IQ2580+tlOEaI-FJOQ6BLaWc2?a8Y_nh{AoJ9oP zi8WdBw1OSgCRv8KI5=z|Jy0Q+TTrv0(C;1S){M{ZcdyaX-ft&a(vteU4SyeD+6GebB3zBzqs=Kq^ zpj*@49$HQ9$%dJ@M6OV)W`pO?NLTS1?}isNjcZIQ?3$S-r9p|5mu%}qOM!H%#riD8 zIOYrdyhO6)cEuJ~HR*L-LgV@G3S!o&pJVH;2RL|3Q=Q#?1~fts6|CZ5j#x` zzoMuHwTHan&PbI99vPXTQA2wb?E329LGOl~Z_8nfWjx(-Uh#*$|3ZI3Nc8mpCM7q- zB&#NL_RAxqag2|=*-qW*C9t66Q`K)pJ0J#LP|Y=t%8!Y&=(S(@VXxnrNH<7MNT?kn zy8s0I|#tD zG=NjdA??zcZy#T9t7$o%CgmD>qiJR<0T8I$mX_Hzr?)~z+>rmV!l^1tlfL)009vx| z+j@ZxX3s5usT@%W*>OO=P_LCI5)@fSPX*E~<0TX1`IW znE4d%G&!&QUe3U&n#^2Gvv>Xv#fO*ajY6&(yCRw^F6ea3TA%>dr#bcQqcx~!W((C! zP19^Jl);pB^$B~2d=9bmTrU-h$@Aq;I2+%!Fs41P;XCU7SZ zp^KmLSir}%lne=hnEdtr<29FalFaX{cfgHX4IL|n=I*!?h|!S+xEE_QT>f$#X->mE z!F4?I+_;$OPNl>A16Op$t?{!br??`28owDkd*Q_@1_?tb2J$@3CiG9Yta(kroGuG7@qQ~FZxIQ05Z~~_?+xZ!4opPZn66BnLV|EvJ7udD$X4OPi-a59t zxn5OYB~nB1I#g;z%7-}Q4U>(MbCgYOBQM!X&z%Yu1*gfdy#e#Kt;;(qy~R9hfivHe zcLQg(dDPl=!%W0Hdy?k^(U*hx&zqk}7*8WDIH4ix^JWON>pRG_cJ80ES z%!2O}M^4%FPIN@t!c_qVbAj>fM*M8Vo>dAiZvnPRDYq>Z%O36SbZwmEyb0p&TlC?q z5t-Tbv{}4|3Q+4oEEQH{Y~6CD!S8Rx{j@6!Z`cHtX~O)G3!ktW!wr9&X2JikPuW1~ z{ua{5v>g}U(@EEt6oV0E17ZFze(MH9S_<5i3vV%VAYn%%7iY-$p@auE&fJYpFD z{$HBih7n?Iq7r@!?td>`iKj%mZo>J8>Mm(DIfL~A&Hh6VdKpV`#O^0tQOC4nmPJd5 z>{l+8e$$g7xZI%jy-2Ps%w6^$=!eaWu(}A9<@DW0Ym`+Cm%4z~8NbTL(LYG93fu+j z^0&F~g!QE=5xM|9VbNS*`IVRX@#4+3hePtYOE@G=VK|X(XGu3EsIIe~6FmFsy^}z< z`Gvr1XIOk$u9V|lH05Sx9YcMb?~he)7NSBR7y#Gk7F79_VSf3@$`;+j^37-pbjNY{ zXNb$=$j;d?Nr>KP>N_pcQ0+z58eg$c1gBy=lzEV+UrW}8jh1;qz6eFQ6-65xGP^FA z-o9Ff{Ee&s{0&S-NxIXSb?j;x&N4gqUGIdgvYSDvKK`n=9I(|0mFX1;mrA=+aK_d9Vp1lINpww1J+ zyS6*)P`dcH3Nb?u)^fj3pD01*9e=1!*P5Q_Hg^28LmPIRbSnd43S(Kg=rbX9H%nqY zBRi>#Gz|=~tBgFDb~MB+zj`Cl+^|qPJdp1hMf-LY>5tR9J)Cq-~3wsE6C^WOjd#L z`N&z>k*CwQgkIg%6q>}dT=d_@lgBRiN5{LnpKH}1sF&6`&u521?^ZLNud6Dwo*Qc= z!~wjghd&N;3O=J6_ zbLTFb-n)z$UP6~a`SSn=d# z$Hr(|G=}simRs~*mg@fkT7I>jWa;HIbWZ(UBNl1s$voa&c;VQ5Cb13m&KbgUP;tK7 zVXZbHRph&~Cu{EFbGCO|{qWW7FV>beY-!ppw=Ao!Qdrtw@=O{2jH2+8-}{JRic|*|)&OOQNlPQ^Kp?4yg)o zLdA1v+4>9w0?8uShxR2V!S7z+h_KALVS(n6*WQN>JCYg&BToz-E3%A!-z)C`m6{o9 z0RalYt=1mwClR#ECLhH*eU$P>%AJ<0I~SoA{c4f-t*l1U+yKYjz&u@=m|||ic|kwZ zrGcdLoTqEoJJR8YKI%kjeOMql?FItl-#Jj`+-li^G?=9!yG_Wju2QBafr9RBzK>k; z`KMm@zv)vR>Q3|ThaYmNUOy&Y47A?jp2Mcn)^yCoTHE!K$IKt@+!fN4pVXMJEV$Hj zg&Aw2Nx#S8@B@WV3eWd*ZTxsfV=2Q`OScH0@!Gn2Dog3J5=Hw>)_J2&)z|6%_{XRFU%mNW*Rb*8p_GNf621 zc<1MbkrB&G$v}8-lr>pC68m61+0Q?Ozx&7PNk;CT<~R%M*&9x7d5<{xtK>?*Kg>V* zn(H~Y`S(v>j=g^UG-&e4pEapLm3jgPXBkMnbp&64%f*Pejk)YMuR$Ln&2iTjaS%*_ z<8o^NtP~gpU8iYN9{xxBHEOFVaJb;~?6f}gYz$ZEkT36wHYAFwivHNB=Ae8K=^3!#UPo*V2L1VjP?IPHspnEg z#BO7sH@$Gue|2tK3$U9E^GHj7z;G>|`m|KR#v5Q81f7sC+38;t zqhL(4-!l8To>Rghjl*g9-4(!L9A_kl>7mx76D|Dr3&bAr9KBSL4Xz$O=zg|g+lj4#!EnHa3#yw*UCpck(nP72cOMa? z77k1}ss6csQsvV7l9HU#n4lsPcnkm?1hvz&j%b+a=;)9ev_dnOV@xqPcR1D8-NRb= z*iSNmdXv{~^sK8zhrM@Tw6}%cl;Je#5!n=@y-DpqFI5?4B5;x+zMj5jEFtg6*Vg(L5JPuNNP zd0caNK4!x*aw;zo?f@+I=1}_$-V(R?8kAcu-WSQTNs$ul@u&A{T3}E3geMQF zc?BSmFqR+ezrq~wq-nO?j-I+t>bm}Le!icMNRo>2sanf^6-S0D6~Iu0Z5aAhZwSwG znOrQds9vFewUL4mh-m(4Hb>!A=j~A z#&a>YJY0BVZ=Oof7~RlZbNMi_UfJ$`%8_)!Oz%?onYZG^`bJj7{Xg4|1^vqmOuKti zbsmIpLx73C_4x7Qi{xL|qQ21bRmk_X{k5J5Ql)6O>FF>=up_~viF|BpD!+VHSa6AR z)t|HG1&%y8srYrihF*C6>cok3sayZisTUcl6@5yWS}!FbK_M2_UR(2+c}>OrfdQjG zx<65ZEZWXGN3;3C=S#kSfFXj}#6-rE#Oz-b@i##9%W_6?UpjM3YfVpm!zfaQLEXW0 z6vC}t&xISr8kaP>Wl}MU?iyEp--?UD?cAE|EqVfau{reY6B^*h_VM-AV3rBV{f*o^ zrR`Zv%(it=XHlgy3Qzu#KvIR0rhKeMZGVu*`{f?6GPfPu4hB9U1fm#Q<*D1a`@2GF8st!dQ$WdMqrXpJ3w#-C+ zggXWm%EUCu@f-gw3_!?5b;A`m#ZE5uyT=fv28vdY!hKbJU zVA9uK0g@zBT$iQ~&}N%B2P-)T?Oy=>MA@v4 zda6ARANFLikMyjpXDi%JRV1VozXAO;I+W7N0K0%uFp0eSW7}8@BBSXKCYS_M){DMD zY*b*yFcpKBJ@cVI5sAw`ozorR*Qz~(5N566y={7(z@(HNsQVJUX_bh|m;;F<9tsi= zq6GyN_g1x{^vL8WGCw=7b*AT}3e?M$);D2#kzpw2WZN}E-&EeFP&KGSA{I1V-re2u zW8>qOgo9bwT?)sfroeUcxQ&zgQ2&fQj37m8$TK`59FfI{G?&+e|I=vI~zFtV!F*sy(Rh1 zgyltHb(Vl_=zmg}CXGCJpzQ1td(|-eV4#-C3(1GxdbWBQ`gMoH@-dMkJ8GUy!jKL3 zkK|wCzMdz7TpSJbhfM268|MRE6eey|K@23s#Px(Y?+=GK?4O0V zgtz+k%DXma7Z$0guVX41trJQHKhIwp}dy@-P%{F&eTOO ztNLTzGcV3fv~KFU*5Ic%#9I5mKf18|=PPt=(CE~`nmY{0hzi6&W&jXN#6Sy#Jg1A) z)R+kHx^X={J^d!{2Znpmmhgi9&uQdI+txPbbYW)|?Ht)j14u8~lbqN3(+n!B(eHX4 z5e>jP^rJ-Zt%4*1Ve$yjWGF9RKH3m)wFb&wEuZh=HU^LDR|0qyQrQk<(>pHhtue4} zGqFC#e%&OeZIb}Ra$5uA=h>!H^O_Lx%GeZoCz!97a!PhjVPKuS)^<$WXcXeEH=te) zqH{xFFLYYS6UOW4C@pH3%DckMAl#L$(gK}Bc#*$Y=(Qc^`@ZH(qH0OG}@ z9tQ26dlC}WfbKVn!M$HL1Ag5qn9X8TOhHEG2{_Lj9otJ=_cAzJUml8*D&~7I5|yV5 z92kekKx-v}X6V(R9DMym0%KhlHUnE5X9wGvKZO@v8x0q0AMl%MX=w%OzQ}TiX7cB> z+AcPO_l#+RdWRw;-S1Ng9|c|did>9`zA6WIV$U{38$Xs7xvrRlwI9l2VV!*Xee_Q* zk3=y@F?^O$_4rm-MtghvP2MmD|2`lHrv6VFk>t!_I%C?{&(Ar8$vDxvD!lN+>T8AW zs7KTMNj1+jkw4dLYJxTkZl_AXrm7h30AuF`^uD-}06bl)49HjiBgYArEuFbx%P;Xh z{O03ll(tq=WT`bzm_56$7E=I8U|4>cW%a%qF&zDef>R{8d;HUSu%vMlVngjV}!?i9%o4T=%pwit)j7k?BH+T@Am3Gyp zOp7q@#sf~Vh|`68`TchAZ_A|Qj@KSbOi0eJCrHrZC}){v?tBv(lWidrc}u=W$7kgVM1+)vML31#`F?S5@2NKU&a) zwGh9f-ZU8IIb2*OU)z{z6@jQm;c-%bPG&CoX@*dS=@?F;E&Yfn(%<6mqiO&VwF&L~SZt{lCF8?Ks_S>eTkDrQY z*RFg_N_XQqNaD_ia^)(7d*>a^_T4F*|8dRnaavw~_rVB)%lgFd9U>K1pu2noYVp(l ze2!n46tq@dtbet@-M4O3uY93C zBAn*S13HpeXX@XsBH|kkCiMjB>zxzxPIp|WPOaBadsjS}jPIVr#rZi|(~t*kie`QPe%k=;h*eP_)gurgfcco_V?(;jxtv)%miQl*OF0iLQw zM%4fnvb=7x-gC;1^k8b7DrX1rW-j3ROkh{hOkuo(J_Lw|()te!7;6N{myFGVjOsWG z$PcM0B*bG*e+?Qf=-2LM9Sf@!?0ubm{(Ib(Y^Dyg%i;@a&kb6M6{fNFz=QX*o9beU zrLZs-)+u6Fcud1!F)fEvwrL#{79+sN!>yFgeFLlDIR#1a;gvhqu9Yca%Hs3>sKJ#G z?QHRT037mh7CZd~&-{2OXsR#qUM4N@UJx!x3n5l1J(!teGAg(%0ipxHcyC)DcC7ct z5iqH0;%gYm>sS*)8^6Wg9Pht#OsI_wW$KpBF)_74o#v>-BWnWTXBRY#UPXyeFhV#P z85ybJy&tXqDnLR~h{Oy4Fp)E~yL}sd9XKDaWB0lD0URa~ywN9vlq8`LjA2!?R(5uf ztU>txi3d{XOM^-7ukSgaF)%ZqhQv2M+W}bEQ{S`nFNQxyLQUnHvI$DL->eE|Qwh1` zt&aNqu+ji9iKHRs_3O#prUN#xsEW=FVsL zngHqg=m?$i9pWO$l+uPn4x5r@{CzJ;Uv(ZRa^ZM+VO+cnAVVQ*HbJ85o}%PWlI0du z+= z4#bvm(k^e$%^-adb?R&pq2_hI;g>{7c02y>-_yC$O0=U`4sF@0hPr)wP|no^Ho@j< zo8&TBj5R?iY7N7?KsQ1RPwzu(t5l+D(f7ZBMl(vKEB-`C55;JGQk%Jn)6+y+;oRA? z_EiaeecLGBL;J=q(ou!L4>3~mn*aU+y__ewsgGYS zT27WFq@ubVgZ-YdV5a)nY(RR-h1E#NP_6jM-4D6CuXXJ3?)Dm54GC(otkvrU2zqRva{R$(UP)(UfQ}&!eWK`t>A83j>^`y`eKvNWR zllmnM-Nib?*|Q`h9*Yi(b~-mS1PKTT)N6e%Sp(MybPe$2FY@ybuzLhVB*656)6B)2 zkCkCChpCOW5t#!HGkBh%PKYyK&n3U z()xD29918QuV*gTO&V=R1*ztUCp0tvny<)>@o5Z;fq|*B+JThyXd~=f36g%26vReH zYryOt&p~c)Z0M7hh^NKz(@2KDg@Y^DVcDwX4pC5fAbVg=C{WENiUG!RyNH}eKwywG zqS4$FH0DFTh)fDIrzyn6sQ-w<;FE=Ij`M560-50508Ke-*O-{M7T@y%oxYb5t2@Wv z4D20=ut(=zKW{RdWVv_&hH|vE=iir?4!4IXZ4>!$DkIt(I5j@DgmRmk=zl2r^d!_& zIIIm{TPr~Mr`l66Ac7VtKFN%Zfq{+4BTGg0@=^+}VlSlDsb=H%5niV~69dQnw6C_x z9$C*dJ3gG!>m@&TPA9zCsem`RuVjY5GrK6Q=8;7~o0kZ)EX_*jFStb)O!#AMb9_nS z6_@M)l8CxyQ5wkEQrIo}>JX(!C1@4IX*x^LZ|njLMH=KN7sd_u=@yuju|aGOi_H%| z7Y3GeaRw}9CdUSi$cU2q&3UiosP292@Lc5M@v577@u7%=gwy+K8Eu5C#=5~(qrCBU zkVUatFAc5KbeV`5HO3X!XziACfyR@ezpD<|EQnglr-W_~)D@0mMzwJ<&8r~mcy|u| zv|;5zn9Ar!BXe?>A4WbLZ;R-s@`s^Io|ToA_j||mdsIVUR9bE|)+#F|%Z(e~`~2fP zpf^$qQCBLk?pJm$Q&R^u!1gJw-9jmN5+8;UlBk3$sWKdYWNQxQ*r1wqT&2Ch29!FJ zd}?GX|65Y-*1~GQ6EF7}w(9__M^LU1 zKQ`oWt_O|<#3$a+{jFM3zKoxj0>YqE+;vxP)(ItdB`HnrE0kck!nK`j&`6MSnUoSD zw_K}Z5C#xvAd(zRrhVzq3W{gZ9}(WL>0A!$8zkGbPFtkFyIZ{@OJU%y`L2X|B}Ww@ zu4gS4`Sa5#++uCSck9P27@l9{aHhD(hJS^bx$4s$3lPH4s|I`3d2+*y#YEh!l^-iX z2<&DxH0mbh#t-Z-wR5+F>Nj9fysbV3cKkL}8lAOpRYk%@%cH#OrF zgY>8ATvt9dJi9ynLfZz4Ut%tL-iedS&A&8Cn~BerH5ovn1o((@=wge1GfEcY84uJF zND|Y!{PEYV7!_e&X?WoH^&cM3Shhv-CW;}_&l>^gIGCH8H~d4-_$e7?|1Fi(w1S0$ zgVvk&XkFcA=1~X$P;mdLjNuS(T`UxZf+V@9v3X z|GNZ5X6RRNN3z8(W&T{SDye7;Vq1o7a}*iyc&giKuGUViri?>hwLw5llCGWMPWQKY3o>cxjsCBi@9>-I zEAzeEyyIvjcxh&x!uy_y#eTPHsu>e_nIBVQIs(F`f_2SzVtU&lQoa8wjr8g(r)%2Z zhmKKbMq5*(^gArR>CA;@;NyM78$VU5G!vMpjBX0=+w`Ly)!y~}I&6JEAJJ&FihD{4 z7Au>!PBv&qVd+@2DvsF!P!e&5N-yA+*&MD-5Xd%Y zcF5gSoNxlQnvPH#40piK5JZNjCZO{}qYk=WduRnBR9hE1(>ZA!03IZ+cWsbh#m!g4 zHmk_=%Q(wH!&ThZ?ZMRLQJ1^|`vhDss9irCe#n%K+Zes|R+761TVLrqjl`;92;WY- zK+T_8J0ChL`YeRnI{eW-8tN-q_ar52V0Ox2WX%oR)hnGTYHE8~jg#-UqUU>a?%uzD zVj+K)nJpiwt1^~&+YfFl1ntnNHDun>eMW1PKTXpXyAS^bz=$W1=$cPf*aJaL9XsxR zJ*o6x%_WP$ZQE?knMdlK{t8g*X|H3-M=n;LYFc(d$z5am)saj#Ova#(QrhPfssGdo zAijl0kTsl`mt^iuztr|@)O-3xO8#ASuo+&uZDe0Dfax2%Ak-@dKpn>MMUY&SeKl%?!|Rr2?v68KvCs0b?vnW({iotr+*S~9SXqd{jy2fo@^UQ zhRxim)&Y{bh%TYWk*uQ=t@dX>;eShTxN2UI+eRuRR7-i^d9XyJ>-B+z&bu@pNZknX zlC6FkuAq{8GV}%X8mk$pb^%t+Ih7WLXQ$#Y4wFFF^m=F7UhO@{VZKJhMBLjQ9=zWM z|5dGp2>~ZqAMAa*6ltgwshQH$yJc&T!*74dNXi&>un9um#!P;FVt z_YdWZ>@AWM|Kxxp-_Sdma{8nkcOb~)Y@n%s`UUD|!O=v>n58SZvAFk*qvqzpbM`s^ z?d@kmnMFLpXdL`DysBy|`H&~+o~_4`ms2y`2nYRy(owAw8Zy96<3ivZgYjxVM~Iq! zbxFq}(K|DBZ&v&JfzCzAa{D5OfP(vj#$Fa&%{Gsj{#uyY^`)41V7swI|8kHl2p3G` zP9`-pH{UfdU|d;Q5&OIy;}cMrntJBp!-wOd*nUNaYTl2o(4&9P!9H=qUix@*SjVXl zT;uA107rK=+whi8JLSs3s5MU~c5>_!xI?|76C-xJ)i?Rk4SLX{qT2V^8ik1VV`~tb zNz3W_(0 zFSGRV+46tipZ%!-Sge%dvP#b?YT0uR6*#0cs!tBCy{Ef5Aq%lNo{Dg!p;qs?L86IP zR)MLNN8J@2o84p%tko3b++c}1FseMKeCBHuASsMPF?;dd`9=Rm0{RUa; z6I`FbryB#%lz8A>`fftWLIvtU(D|S=u|vkj3VHd2&FhbZzdxEO(dV*;-39(WsbWR4 zJjsMq+4C(uT|f2iI9`YOj-VcbTu6t)W$n9u3deZO3)!bnuLygQ>i#V~>WIbt%HM<1 zgXY(3Lqh$Ay=wvfvoAQF?2u|1HkDVp%c=LUs!=3H>}75{{HaW*VcV(qMBUpHdH3j$ zj7%yT)u97gzaY^c8N%HiIler95)8ykirAeX${77y_3z97rSv%_2fK-6Mv8NlvSM}a znCXOVN3qO#u9--vp`@NBi+5Bzkaqp{0%5*?n@h)lVY`N2-aB7yg!uym2>08T(^GM2(#xH*= zNEkR1k07<}acvp^!OFjL*CN!LwUBiJ$#7y*27>DFgI4pzr}P6YQPGAU)_l{k23NMj3t+Gi}LSY zWNhrhP7o(4Kn7%lD#{HX15WpU_zRIM^EWOf#KOh;W*b4L>V7|1 zz;7`nS}KkWNHmo$XpP2(7bfioCYkSY&kl?y}LKo1#drlUc_^5EU){P>_yTZ?Wnvk=?3=OhgRS| zS>%5`iIS;0lsGIhGfr6wa;OCLraKMn`r zz!zedJ50t%(Y?qPrT1*X@yz^pG)&CWk*fW~jQiK5c_D)CJvk*-s67<%tO|puV}5`m zUBvzw@Ak7PO{3<1-xtU6<0YwpOM<9$5xX|90sgZ8(4J@Wy+E*k_=ZeyIy`8ZN>FdS zBSVpx)IpMW@G`x-7??Px9|5GciG=;?Ros681HQzp)CQX-k>VsnL$}oXWrK=Fp%Rn*@IKm?DT$}jhvU+Q_JD&=9!_pl*t~uIQ{k2N=hemQJ znws8`q@q)A`pzq=f?`PbUVW7&OV#*2Smsyz5?CYq&Sy{m5F7%6BV;#@yug-YH;D+n z-m{=WMcwMx)?~4sUGLe~;~wz(HSu%UN?l!Dky69qf(*VvkbE0wYn^Pb{gIOp!GA}kBjczlPoY3i4F z4tu!u~Z>uQ3hp_M3vkpL@5pZBWm@QcMXQ&b84cb8`%r5!QC6!+d4NGESzg;NUQVdSo1$r9k8JO z<)_7G3~CH#;=Ab_&gb%;pno^zIUP|G6xk9u%+zvIPq968o%}~E4DQn_OiWcX9SMJR zjmqA+qgKmCscTq_cX+cH&R|J1dp#X1W+EA_!65f0((gj&vAl-Q^zZUO%(SX0M96UQ zL(qx{^*XKUx6l(Z&uOl5Z^fSijfZX4BBm$&Fj{sq*gZTt4JFmTMZW1cCW8Id>>jGI&a=il=}Pd1CUe3S~=1*nS;o;SICeo0C$YqKuj9;mlQ z0b~XY;_(YkQ0FU4+a+Vw-=A&NZSvEBw`vAoqQj`CpIz|zkgtY)~GL9v4DNL%F zI@5u+JG#?bWH*+I?$3^r6l1)t7)->9Lt7(* zL`M|r-BK+m`pVBcP7M8_9&K-t`g<3t{0rCiqhg^`yTynvu#+iTT~SLj)84xeAJzaa{GH{4`_29P z_kCbY#NkNUbU!>0t-tS+#nAxlr@l}RzgWCI{k@WFMxj^zY<@V8)))??U936yg#Mzf zc$2U}u&VPl@##?U(=JLmdp zu^{5b>#*C7Bp@!Y2?CdEyU3y0pr1t$ovI1?!@89+*^t5 z*BQ{7E~RDE^z0E@LsA~s2X_8!VU4DKmYhQ84`A*k>MbxXdwXCp8JxW|E9pmnAV(j~ z7K@5h_k8P%-r340>gz;F0Zyay-*vBqmK)}A^&{c_jVDT{w>Pl&b4TYYznO2wZ7qAe;@+8gbPTa6l zy3R{}6(UT-N%q@22M(A0!?{C$dkC_>d&fXJcC$)aam z<>)*I??}T2W6j6WSKnwpopQ4xH`-Y6tvL0DL@PNXM@Mt&0favnuj0z5mG8G4khwOn zZ6ITb|K2v3@aa^6@$hUKeRV;F#o>Xh4-U@p7t*;*M4Ud1j;u4Z<5a2T<<85+FOTU3%eybFc?V$kp0S_g(}=97nmgY`V0N1%_98xoS>(Qh4ht*Ftr-BT6u@aTAU0q8F&UR8Ld#l{FxfAq5M`>J1km>ct9`0_U%g&h!p_GnjN2%eY~A5+sJNy;Hi2tyxTlj(p3v zXbPyk*F$%dZEv9!s!af43i0nHrEJ*tAwIZmxgn=%>#Hl*&sjSSGycdTNcmL$c}U2p zw#qPGhteSxgewlI$>fe4Zl~8eIN|jt6jQS5=zrtkP!+9NbH;Y=yjv|cbeA;HQ|*7U zq-x&X+O5BeiCIk9_M=&@&uaVGMcUYv-8XOS2mNGfR#xa2>?Xs&)GD`8EOOV$v`xIU zOHJ;onMfOZp5uzh#hJ0iSmR=}>jqzPy$v={LB$RXA$nF zco*y*c$BD2k?e!cNKP%}Z7)G}jAhoD&~uKBT$f=JkrcsBckt|c`F76_-CvCA+7VbeJ)1+mv zBA=mRt3J=r{mLDG6hQy?chu|LrKHeZU&$FLrAL{4tV3lJcr)jJ87Y=x_ociqzCpot zW^>VrVSz{8Ii*$_UxDUXPx_k_Xn_E%J9sg~U)Dh}!fBcQ^3j3Lq=%$#2}D(@qlgUaTn63lxFwM#AE z7ifukh&(uMi!nl?p>(cJRyW230n&ZhO%%*SO^1WTqpF2s<{jQjO@Cz4YmA;3C^OgkL z;6~x`-XA$syq60LOK-N5f+74a;3ed;w7TOH-nm3) z@N8ymC!8P*W@T*OqnWiVaV*X1lI8t6R+mL|>nkt*=3K^`Niu0nn%p)yE}uW z3;i5}auf60ej}~~)IZ-4k7Ig-^Dzv{#Vpo&$g~mgT%a3=+hbpKd3Fa656N0SVdB8i zS6fd(u#3YIJ0h@_ns%8D_58ihV{e%yZbG_eba1;G1RA5g>~b64>9QOzHE5S>OoMTHKT3F%4%Oh^z!X(zuSr( zj{`WOSGr2Dwl@F@-xM5tH$Y+0J6VN+Xz#T_=`UZcObGv#Du%7Zcgta5S^1Lu`P+?9 z3e_t|#$FV@O|EOc8};m|T2{TBiQeD<6pPV2e`c{QkCO2$ce$dI_Sl`oPG-8f!|Yf^ zLwBt1m9cNcB17;d(dRL4Mj|z377K|tQj-yCJH@+8uLv<2=@x1;xpjF}@oku$`U`dz zl-gc7CEQcDS-PdB@wxsfiTU!?z+*wzCj~wvGlN6IR#YMx<J$%1eLK{^|_p&hF`$^ii^YIILInQ+GcQ*YZ z9u;yvX+lpfDPG^HU#+9qc~h^WIBwC^!S%RN8RlqMd7a=cL9L|(H{;~h9uvIq@ro8f zXsFHUCA)1A=p|d8i^Z&KBEno@p~N&4LT+0EixyoPKd;t|j^DYexg0|}G!eVRGiyg7 z({uMi&tt;WDEG}6aSjTPlhldZ<|}22jxjN~11lQeBkUgpM8xSndcz^p=tLmyuscGu zR$}bnA%|A_BkF?u=eimCcb>%K1?{Cuif_JT=`*nUmisEx_t(ub{Cq@)N%MIxal}YG zfSiwhA>{qhPzTF#%HYt1&aF9=W57c#DK39e@#OsYk!*r*%)&Io4W26cIsSF|wH^7%si_u1s`at+V;hnk)BfUt+coCTJ*VSg6V&dWZ=#=X=b2 zb&XtKm(yhhafdoD(zskEhtj>hjqe)|iKi4mfOe{!7;mCE_`c1cL#ZdH>?(`jNUjr0 zBg)D{tXWKQW1KQ2>1TqZAyrHKy8UMwWR|m=G3X71K;qNABz|y=s;LX^+)b(X7F)5(>YLNnw8Lj#ac|^T{_m_4kcf=WFSSw}^bkvJ+XK z_*M@|-Q(FRN|#MaHQ!jcAGEq;>w6~5xd_vaWwNfopTptw&AcY_FmcH=Ib9zxB5!@?8fNZ?~8W5hQ;Jsw}VCN9rQ!))9rR7 zwrHnIvd;IQcG8atHq-MhK0mWxVg^2WZwv5+_)1)#lOFIkb8+MAZ%6*b$T+DC8M4sdp}c(DMp^GfD<OCj2 z3v@DVyJO!`6{;z!#kjU>7x*rEmPOc|UZdnQ{23mb7!{>R!%9ZWM@>eNw0EpWDZ@8B z+{jT#=UDy4gnWJmDHGJ5SwduerPJjgg3uYtlGugf0!MEi-FLjxRP`>50`> z$YOi_I|2JZoExxF@_o*0PcGY!pNW-8lE1zE5$_5`^kwN$t*A%h8-Dr;J!$8;)7Qz_ zW$K#y?TmL97%1K)NZir8)mqz6keaO>K=dfunVJm+m8MTLzJtcHErTT{+9LP9Ox0PO zc-f!-@mU$VtIWJKZ9>?6mWC3%B98vlY&@OVFj-TzE$*PN(sJ4=;X>(#ltJs9ojNCoH^3jmZeL7;LD%`O(-kI=^&pB;zvY|_XV-sM-Vw@Ox;4q!Y@R2i0;TX{ z(YXGN<(a}7rog58I2q`@=O)(B_(}ch}qP`F`12w?#C@x4=i&m6cm?TfN`W z4rk%%8Po5JDe9&B4HOgmJd>}X+*~lviowvY{DZ+p4xqZ&m;eK`kPGKZn#HVacXVbZ z0l2xZANG85K{W@fHu*ju4F_S&;J2CG;+8x3QhjZx_`1A%u{#aSKV&4LbWbV8Q*HFK2fUHI6#H&zMuhGmwwKC`Z_4m=}sH`ANP9{O-%w^Ygfk_1@ zdqR&M5x}r$&F#l)(`_|k6!uGH*en|5M-ySB0}QcCS~iso<n?vsHwH>PEMW18P3($o1EJ z&jw9kyph#+maQk0-lISx6O>r7e&?~)ZN&8tq3g%W%1qHBz_MV9)W#a>H?ypBk(mL1 zzGk(Fb7e8;lFsS}-i1a_wx)HL;~02E(-<@9~@-T8QxTCev!@%jb$UU4xcKVY(1&e)?hwjxmNshN{XcT673N0)WjloWxY)^qhn%5 zU>ZsdO#f3EZRY*CR1xz{rsE%MTun{QXV?s5a03`W>iT|kHB%_COxlWk;@hHj{P=PC zEWHml8CMlEzZ8D7S5^+SF+init3j7LRlV%_{T-yvM?grZ0sg)5-b2_pW=!5`Iv7>z zXwa9NW^V`FyC9=H^GOMV!Qvu&J56tqH!f1wGP&jhFXJ-&(O#C0)_8~X0%b3DvVC~0 zUJ+*0mAPPGE1LocElw^)b%Hl-@1J>HBq09FqG+3pz(qe}ctU=~o`P|+bR#!uJ9yGe zRHF0M%`H@_Mul6)PT;#7gIirB#;#8mRS9aUH2Nb@Z+{L~_-5({%!9o0hX`w0cx<*N zanQB15r*3*7n^M;lJaxPzkS5;4eG&)a18eT^oe5z85*cSp*Ox*50(lQKqY^3kI#I= z=;Ea^k6X>S<@F8>%L7}B!?C+gGr^&WC3Kzj9cwpew&d0_zCND}F&-jgJsM46ev$h@TIl_>WFTELI7i6yg_<*^D3D z?QgDK_2=3G?%IN@=DVGHXl1Cy!ZvTv*>4UZBfS5U zqJZX953{jPaCTR=_o;r>UY3sRe!7~=%?~+X6qvMlsHK=0Q(n8J8ZEiB!@9~3mO2XZ ztu7LqlR2bqaoPF;G<8uiC3IQ+gU4&y1LuQ*$=LDUy;?KX~v0uktQ4vDm&1VI$)>O;81^^|FZHTU*lz z$F)`fhp(x;3N!t6$Gcwb>o4zp`oOq z0DPm#1W!=68`bJdTEPvyotqL&AgHNShL#`nn;k;m*X0b#sybXV7mdkV09W?$mgC3j zmDlIc!X2_lW;d;e;$oeN-^jK93_3Z>e)6HlL&VWCIFC9FZM!7JvbW?v7Yfex_eTyz z!M^_d*S@~c;Xmx#8gP?&1O}0E-_~6~>odVvswQE|v%3|?ALRPVO%qTp6PD}Q1|X+A`SuMVJDs(Y z6DH1nRQM{N&ee}rGC6zXrGSEXYD|Q$n`V~HV$nvVJ81;FxOAT*f+ z#2%r7?VJ1(XN!7et@udB1uBnMtJ4^vmWrZ_kH5t&=CML`+s61l+HCM}SK!7h_(jk= zuR69oE+8QYUD;s>-2Y6zc29))1Ppju%p)w1kDejICZ*?fjV=fXHuP)llPit?@N;%+ z(GgqOHZH~5V!fxd(59I3T--H&ZKQM_{Qp{e^KdHHw+$F2Wh|mWC`9I>5<-MBN3qP5 znUHy&Q)J4Vc^)#8Ar_X3Oc^uJWe&>_mf3eL?e^Q=@9+H`$9H_+`e&~#>+!7nx$kQ{ zuk$p^Zz0M*m(eZ+Lk}l@)vvuC^vrojtMdRv#+83fB=ctc$8@ywE_G2WV z^IL3C0aKiApP9C%iSq^ClR5{XuX#_Tkrn1Lp&Z|hID>Wv2guD(-#>ySa_$}6OH_k- zNxzD}P@}glQJgDPEcJB$Y=DuY%e{e>zAmW2OG!zaIl4R}+(NTB+?u2~W}UA2NPyUv zPRD%aX^Y5wZ*7)B%~BDW^77t3;Z1DC`jAWQqO|m9K==PER({>IyH988nLl{PDPVZWYvVDN|kd_&OM!Ijp^3AbK3iOn|VfoW4p)B@^`ms5~-2! zA<{yS?zpC1P30{AzWj-(q3%ChF(rnIw$QW0$AWD-^9d?H+xW222);r?&8q_XVdsR2s~XDd`q#g;#kW?4iAd}~fL4bM(6C)A?6$b5sH_b5 z3#HnaQpd=gd)kjDB%aH?@gU_f{76kpy88p+p%JEQ<3Ddebp|HUKSSe3CehV&T*Dya z*F*ID>oUbIe1-19Cuv9mXf-Q-mC|XVx%f;@-v;rlth)r^&3#xDu9m_P$;9aFug3>~ zh~~=szhHLD;~)MtqTiX|2hs4yquLZ02IinQ#;W$9%iWV$g-@C93 z)_nk(8FjcD6OQvW^T@e#$K|EpITvJ|fMtY6|GTbtt=Z!FD!3PJb!a%Bb-8}9PYC3b z%+p<~um#=@40+)b^{>hPDeBT0=f@ry{w02li$J0z4}M?q*91;%j&36AL&`{ zIv5rZjc>xKN{~tMIMu~LsR14cQCpIJj>V0-<4z4niL9uDGyz_e+YjH*{8wM zJX+aLSEhRIj2)25BoGhVP%NVk2C8|xWlT&b%>&s1*M@m=$Y^=xej}dCK5&;mP4o^e zCTDD5jHOixdZaMGV#_3<6uzT+Uyjt{}MZH^}K%GZA0mh<(mM z&+wwP!XvfkZD#zbpaSqLE+-#P%K`U|Fx~9f7`i%{Dm)=nYvMS&Bim`J!3v=F>5ls) zA7E9%aL!0|Xr~i>AGcZ~OpB>-}yEH#7t0r%e zr&4rg-lfZ8EExMlc0_nLITuNimU)DT3Wq`BJyVoUU${&&bp>M1J0gsM%^TlN*!#pE z4+2Zc{vU`mVJSFLBiUC*61eN_1xry;0@2~Bk7=BKt}C;o*1vno=pQKLLYoRxI|Vm}DU7afg8Y|$~7 z*hqv9Zl65$7^4+Je^-D+96$iKTz0Q2FR25-Pxj6D4lP!%pn~ETh?`T{c3Vfm_>@)I z)U5e9CmYfJjBrhSRKzjA?Bir44NzPH$%#g2gsXH421%asA}pN zi~t>-)@Jeu@_5`W+}-WI+OY$4EcbgGmJV&n$AOP_toEWdKM1>d&@MXZ>;=xtc4oUe zYquYW`+Ge8v@m)XG=uaseHaR#K2TPE0j!Vz;*P(r|3sE9+-E1vVQTC^s($T*CekH- z3Pz@sZmQZos088XGlVisx?!I|NayB-K@Y)un2XoD%T?0HuYdgfdoTZ1i-Q*Hzv_H3 z*a}!Lh^ciwfyR56LT!vN-B~{JH#`jp&7EEA@vM_?kJdii+BEhW+KjlPVKo4YBhJ zc|AlbPs2sUCOLoEj*5=$_1ZGCI}Q%@C9H53fC%mQO8+LxQ}KQ1C_;Gu+Eshbj(3@^ zJEB21vD}@_gON%?nm1Vqfp%Ku-RJ3e2Kp2atk^=aqUUu^7)|&`ohT9u004+63@OdK z+cwbD3Ll(sSv%EHX7*r8)U&njyyxXqqF_q8yJF9m1i5Yn7JmB&>Hn}DPguh} zX(pvivdHj=M{6i4({Fgat5Y?d%J+h|Ya$Q6p_WCpCpIp&_~6A#s%f0BELnUqI#wZI z)p~Q|gURhbPEoPvb*G^k*MCnDpXUzAECYswjII2r1ud^#iY?#30IWC-M>!9j+blKt z&#?nM`>{ZsHXpo1zW}!@OWsQ9A{?i(GSlIoUBHX*n#HPIIgwxdhp)=KW zi2LRaFpdECK*wvU%`>`u`#b0(Zrcx&l4=o>NFa!J*Q&30@KaB*)Z>OhKmlebhz5pJ zaR+*m{)8}MCt5gl18ZWg;$|>E@W-H<+X*1H0~UB!?J+B&<*BGUFG*VuhEJCS4qKN^ zC4Es>e*3Hi%j1at)y@uS0a-W4Z5?A(7VdI`G8tUciO;WCyhB2OmI)_VnDn{NjisN8 z9ic2mK=3xPyz)t<+M;yevyjT#!Qu#k%W2!~h81SU?vAwkOZ2i*vv{lytcC*Y$DN#f zomf@m6rRSp*W;<+>>S)$zs=@OCSOmecp6`9uKIp~=f%sXjXk$e31j?^DJaCgpl>60 z98p@In2@noW0%_6zVM*%F77|5CA^a?>XY`Q{uP?)=4(IM$tPsd{dbu*j>bzWD;q5& zF5?cL(PMwcj7fhL9$La`9HNQKp=LJ5saR@~<Aly!?5# zvh3u$b}@st+k?R^9!b_BdOS^nq{=TzlO;J3`NV-fJ`;BYJa$0BO@{Tys}jUQK|-YJ>o@NU_zTEjH@BH0#Qt{_4?N`pBd4 zMD($enKAKJrwgT`s3dnPioQ)gSW>+}P)6b0SjS{_;uwA|&TOm;aJ*LykX)jOZLFu| zE_x}maDt!09mgKElSFE=*E;w>IJ>P>;LL)1nR)#EOgVZB6o=JBAml8sltgB{8V$N? zoSY>?8C6SlBc6`F8yLCA`*AF2u?{Zfr{N`nON4`SQEp+3i`&+u4X-yPK)l#>%ubRc zjx{g4g!TP_Ol)b1F$1@A*?k{E`qXj`|uRP2RxSrSD?J8)iX~dA^fseD|gGYsf zb0_Z2O^!!(*&3>83aK5g+65$m?mfv81ibyWo@cMoKf2V?c+z-O1IC0x+VF=fi8kXW zbc`qNlp2LJ1`8jnFu?Kfx`WGx!{4F4{-fvIa_dR#EiPQbu13N|o)b$#Z^FZY{QTmC zwqwHmL?L?DofjDb3!MzzlR0)~ML}kl_j#H$Yr9@}%EmmWjU|tXJBjl8{Y5`$3*b}@ zEdH^IMT)hG2{ZcbcN~-#@vi6?E9L4nbu5m5pkJzC3yond@-VxMOQ>?=E`IL7+`FmF zyTVhm5}US0JhcTn0`L@`(nskm_mS3q`}9)3DfIHc_HRTJdW8OK=F6J>PjsT?(ry~` z>h6QA^$%Z3$7Y+kX}7SAQOH04jB*0t7aDdsp`h^v13(MI38oap8th6 zx2_ptM0odm{HO};7EV?yi-siMy*oyB_T>308eagnmXLg%^tG>ZmE{%1@g+N5h?jJv zx+hOP3U`e7k4JNYKFn-LR5R^S6le0#)KFB*v|wzyk(GimqIzWIpt#;&e6Wmi>pM{h z`DHPneG3us77Go#99fjdD8baq#v9fB@olm7ft+fUZ4ojUuXjcFj|b*a( z=?|prKHS9IQsFW1-8~JPZR^i{;nDW!s>SGS1NN)WVXK^hEer>a*;fWu_K_RrLt807 z-2qouN<>-7k6}KWvauAOIwH7iQ{9rpE&aXI_Bmna9~E#~&Ax8LjGY1cCHsCkI0>RNxMZuAVz9DK@A_S0~yX#6VgA7?E$TazKn zfaDoGt`g(!DT1!78`q!|JYDp~%Q4{XNTbM^fQHTfpWdi~3DN%!jg`K`FnFmsgkU zvnJHRCs;Mm&=XNT&(^sUz=kzYIo&eTX3@+K`{X0gfk@1=ZH>&!oPNVjUrr zL?HimsU7BN&krLJ>8Na_)EX%q;uH@`kI6|r8;kuyU0>I@gBq=FN!(-Svz#XS^;;F)laGVKUKDe{wbyWiSU zfwzM%7}3=a1eV%W#g%!C#rF+TMviOZnrdcwC>3aB?TnKNpWbw*M0joPcJ0;2@zK9C ze7QPMc&Wr?t+R7xcJlN$d=8FhJz1w>cYMcQwR2+kfh2AG&EOVjC#K0nbB9JpvjFc4 zsgo@Z&ha=qP4#llB`T$%vZ(`W;5#X~Pg(OQC-N*aL+69}0kvXI>-YeqL0p_VS8j2s zI|^${Evim!*C4n;-1i@*^;@&+Bb zrThuH>~=)WE|PhzA$1oAMK}1 za8B`Fu1>f!``pfvGP^k<>^;?*U9rK;c|?^IOE^7^iOsETfWswQ=G)+0G&8&LR3&R( z$183TKb|Nh)=&8LPF$cmN%pnu~t3Z(2GHhtZtb-ga`6lCDxm^hFD>r~6&Fk1J&l{VW*s@4R6Y=MuA@ zed}lvLDMUFAEUp#dd`XE)X|Fg&39yF`Gfp3lE{tD?q`u)WF)sH$OaScZ0<_M$(TgG zW$BSpvJN{ZGj>a}vU`p^G!RS)e>=tzpag5JB(_s>;j;C8af zA`46?Rj3m6>M(!qhD)>}Kfea_xsmhvL?f9bdL>9_2L)+@fIixu!C1AZof1w z)FxTAZWl%!y?ExBC7I4i%tZrCZBfWy(VX?T2Q$$bbW~4{e^XbwWPp6c_)ydKmvzOT z12Kv#nT!J&KL`VusPV0k<(bmhjVKJZ4nS z#roye@Ph3E$+%4Bigg>f5_4=1J_lM;m6pKwl?sX!YhN1wH%5>nNri9 zGOFQ4_hXbz&KDi9CDiTMrC6)X)+j_J2;RjQhXs|IT2qy*nJ!wPbVQ6+m@RtLe9-qk z`K$3ia~UWOQJ-;WXH*W6UQ?(gG%75Q<}s9lKrXtd_V`~>jsL{M%aVTNFVih2M7!Qw zlEeRQ+7)9K-CMf*#1zSBPV-HLKj;&o>Bo0*y9@*Q6oxxL7WKdX@XM#ZgrBP&l{Mr? zm0n_B$_X6)C0V7$58F~AIjMPHa9)|?wwml5OWx5yC8g_{8Y|?8`i!B>{bKxV4>vvz z&e7{aN@)5BTH=G=mA60o+C$gYqPsFk2p*iU=)YRAHODm)buPYZax$3tRh*4thbjJ1 zA<{_LDqkz*J950wvYE_n23JBq>fX{=@nu61=`%DY57foxS4W-iB?2!_+W?vETMfR~ zQAg_VgKThdd|!JLh%4uA>L+JkY{+bGCLgHc`_6?g(#4Y+FK{=NbZIc+r!w;RsLMO& z!QPv)X?m|3rOm|m`3>UkOTI#Qw25V9sD%ugOD0UO2f;KUh+7)aRb4RQpGt{LalYhNCb!6{sBCDLyxPaaLkTshSAELVv zQXDtut}6qV#+u_1f>*QFABhzA`}nW6^cUSr9ICK3dKOtVOFcb<*ZVxou5qv2FWlk{ z)1EZd9Teq7Qlm4XG*zyxZ8wUIF-#D$nRMhlzxAl5s*!KzIhD3SM&ob=pTC+@ZW7&I zqAQh}3nkn1g@@8n{I*w2a4W76J-+kqq)FlcxEY8JybhxSa>1}MAt9wKPZ_Pew?BG0 zu$xpc3@`a-t|_IW|2-)#pPf+`p6+cH`xfTv9>U3vWLW4@li4qfTxLVBTn_d+mrA4K zwIbX7m2a#EPMMAgJ*w@R2v$rNE#L3EVd6_nyO7X3^HpfIUG*T`ZE>e*IscP;yEY>y zgiPj491G3kQA#PnknX?F$;K9Qg=dX_s6np>CEX@F62Pxg_aN zbuZ0!UexNxTS@biPDg{yrs}Q|Jr3Y^SWb$yqOdzWZt_)zimxXg&ZX!YifzAV8s*{3 z?^t8MSkNoul;a&e_U!I#h0}-}k*JgLuzNy+!e*O*{G>lukemC?V)D#nx+XGi?4=T8 z^^bG0AlIhp;=#HVykl=K8DkI{%J-o(xd zpPh!lAFsDSSHLf>`%wrfji|rH!F~t(%WvWwds+qYE?eoGPA5a+Toq&pfO~>n%btta z^Bi$m#Oy>KElyr{TcU8{@31Ptp_%dg#6$7BxAjB4X*)5CJ1tMb57zO|`0kD!Og;S; zo|vy0OjUSYjAYQljFPherCn~G%`=c$=OfYpsd@?$w#7=%3Rx0%6FdNUsw8 zb}H5F2}MZ9_)>e%;cp`+#D~qZF zR-@K8mSPz)18i)F$Z$dDP`y<>OMm%!=GNGm3y2&`-4J?lJV(A0-e#B2?xy47SO%`V zeG>j+d3%0KI6o@Gbudx%h?HC#vZFgqvMq6M+`A*h6+J`AvE4FlHR!YKU~DZAF-Fbi zRinBSh%{4s`!<}7_Q4Ixt3u#z*Z7Jt<64p&q373FaU0T*SyUXN(gj-g^rpXvL*{I% zTETr884)@9qjtq9E|tXg6ZQO$c3!iXcUkFUrbWcQ`q)^`^27JdN1HSyXV=%hCck>D zr7JvTzM2u09gNt#g0%EPd*9hVbfnUVC=%q&#C*9>A_e5jv2&JwTEU%DT<&~> z-dgHmFVB?Pbei7YuI4PLva%`97N*wf?ut|&%sb^vc_D#7jKJBO<1lEW&|@mPC8Tt{ zZqcp_g{sRoGUPUHWwe*ZWfLinI7^i$Q$qdCoocVamLbi<7FN6{%ZctGPp#nL-p}u;I=^m z@wuN%Nr)pjZegxFVr3R*28t&7tKUgQP_fu6W?9N@iiSDXy<-?X<@k7;2t6OLe@^jQ z>64C}qi=qG#Beo^ecqS-5tYMrrW&pA-e-Sq-&$c$7VU6>4eNK553YFsOBV+0#M-q)#otF-OdbZ@$y z=;;7T!|>dzMZDf6aa^{fb3~Dxn&%q>@M);8zkZuTAhv!G5OE|6R37g`=F69L`jK%$Z4FH zj(*L%OEK5`_(4a`V>xBz$S-kxVcu%Gzbhk`C~7lIV>Bt&Sl=|vMEz9+D(1&Ie95GG zP~w<90jfdEO0jdIOgBUP;WrKoPXBl-ef5pc)ei=jjvju>x3rRwqY&@BFBb#Dr;(4x z{--8!SV8$!p7>o%VZ+&G(k?Zjw6MF2t>9pbHHYPkf4qgd4*Rb=dLw}?zhGY(5G6p$ zm~r1l$Vk-_x z0jofnd;mJy)oY>M`I_plDA|}62TQ}|zGg~4Af#kvq-0aJDKGT=pG+8AKlv*u{#8nO zvtzn6f<(mdTA&H#8g!umWCfrCfbVMRp@%E1X5#IewGXxtTcEa3oCqYwyZ5jZUXGjJ zUg~cw44^Ugi-Sts+}w=Ex0wnM1+@SD0lcU{ZEVdXas>f~ z^}ntZLVwNt=X9&$TgCJXm^lm(goOgvXA{VFO#4BdMJrCo7(x8^5-;=FW3~0=SnOU4Qcps+U z5~+WtCY+SM;7E0AEN^=tDt*G$I0@LMqd?!QGV;kciz+7BnET)!^#Fg$*L#VBqqUS> zy~Idi!*yHYX-{?p2+Tf=fJvM+ zRV&o-#PYE3?5jA-LLtt)Q>H}PPgtk#mzYN~XKS>`5^QgGAAUS6(QjYd zd1JxPAG^R?%%x8GvbnPjAAFbcI&8oC zkpnJAGNDQYgbE<#G5KB|)%V)}3>P}vwQ_R(!rs8{?d94d=HvE>HL5ndxd00mA6NQy z?CVfK2P_@UtxsOyVY@w-*#hk92@^Fd6Aj3n2xa0@@>`bQ#VUY1cGy)-se8$`7PEVr zL#>;m25`>J+w1e`kKQWsv5ql|<|N%P>3)WiCo(%u`#)9j!?oF2E~0fV!)$s0mQVu1Z@|W5Da)27#^oxtKO7hpG}u4X`CdYo$M^<9U(4 zf&-}N{BO&;YscKR+WZt(dMDIwuIuuSGm1KqDhVr#Eh#S_Wjo)iFPuL?XErGXFRVcZmLz zC;9cS9>%8&J@D#YTipyHdgjuvj8jK1gaoTQzFC-eL6}g*avVIgNP+0bp?8MCNLeYV z??)Pafpb*fFu9^I9>-C=+Nl(HPr04dJq2Cd2I}^O9AH0NmtSxnumpR!P{6m3w^|N* zeOQ}3+;_p91{FTGtZ}x`q=$8DHZ^#d6scA1)CDpGERTHo^h;!UJD)Ni%T;|R0f1}<;r-3jIHwc?(AXx>AK$c)cTF z$kU-Rhn~l(Gu>;UJNod!?$^Zq$uj=~AR9K1bp$Bo$i%`~uOgrcpBpUANlQ;}0>hOC z7+>@b*ukUKCMQh6@O35MB|u#4q#!*SyjL~SUcjkYc^~@CBaqm2zlMX?va^I*qRsTB z3_vc`s7nCj4yW&K`@wFo25A1G-8O!HaCNgq4-YI3tuG0i_OeGcC5d&8N|u5@7wb(N#a?>?2%& zH`zQBV2>8>*-D&>Ye4r8bNfd~CnEb13m+W5bkM*?>-+$qrKNz8=5EHKFKP96dw`2J z0y>ML^}nNDTGdx6ofmDu_g6Avb-acgw@(^Tj^}I zWA7osQ8x;-zVs-+N_5?bX4k6fFa5EO%)N9g<|SIV#36kr2bx|D^%^Z5#>_Iay|y)X3zz#5P~XkOVkCMnS=m zsnkT>?XyEtHie1hb3n12?`!)3|IB?UsaMF0T_9f5mu(LN@o2orE_$j8u_&thCDPqy zMny5T3!>n<@rszG4@2czl2Ysx6{kkOCT`VCg0luu zQUk5?7n=SbxLgQ>)Vub_249J&htJ+3h7p@*2;BATBr2-X4u`1-M01(hP`_MCmRhMv zej;jmBKTZtqNbCV8vqTH5L}NV*j2k|#EkuK!57o5--F1~#wS-8hVIcx2%?Wq**d?K zKhhDl@OP7&^SL5ev^=-3CC_bhPz+qn#XMTY3_v1}^Ap99u^X7|lcbQ)3XAkx#|8dMZ7_LBDJj~WfM zOO)bhgR6JYNb{?ff|BYbKboGG)pU7kn)YN*ZNFg?JlEdX z_>7>eCkH|1)H4x7CBEx@MYAM5xP8ogjc;(IR`^t>x5na=areh4y-e7gQxZuZo8L&)Bt3a<+c8Z%qyV))Xp2%9R7{3HY);qiCUkZ%MG7;spQ~9Z zJDb$7t-21*wX*6XX3wcqgJ5z5d|%Rh{FUfg_Okt%aIK@A1*OO&T8q|bo`(2cV`;iY z*7Q%eE*3}6UMnzXuB7WEQsOsy-`1SRFgz_Yo%f+d1v7%kc2jWL z5$a(*|GP=Uo*5)B?58wyFkEALlW*9kZGSEfdhdKwpr+@K(A*qJE`8OQEg4-2k?^ z`GG>#gG&W47%>XgaoBNxB3Kw5M6zZ%8Hg8oZF{R$6Ct(8GVckMAUxN=3$FF=!x}0Qh0jy~l zo7UV3f|Mvf*oX?SEF0k5CQ6MuKMH2L?QNSsP9#4kyu0j;c&m6B@mj6MrGnRO*I@}b z*fHkF#hdoYQgcl{=$UoB_&paJkSKdkbRou{${cmD?_2=$pITN{#k@AN4={1!{!|qd zBqKs=N41C$YPTPw$VX%p6%{qUY0APF6@*{wTpO2wFNVx0kAgQ0OMAU2UoxKWQx76y zBQ(_75F=?pBsm~QuLnmV|BXYJBy)u;AZ@>{3T|}yD?<{t#)(|u=Dct$TzYe*57@j% z>M`JqDqQ`j9BonUHT(Tnbk2n(B%tFV&>e-iGh|{PS~>&q9@tb3z4PUZjQx{UFau6l z8EJvX_ttniX^N>7P9wAz^;Y2wjkp#dxWIM`E9&HCM-KCf6HYq9`qZAxN3s+bm`Ab8^R}VB`{C=J7{t#b7WCvsXj z`J)5v_kyV?;1n+?${~cs6EAL@sFDXEqN3-ec60i($*kep{utMJ9PV zBN-Va0-lY{+a)(>sx@}``>jd%5_5EqTD5SP3m;&EtB>Jjv#kZb=?(R2PrH>>PM`K} zxxBk6ZL!`z{)tR@Ekh(&%RreDr6VcQ<=*9^PA#r^%tMZpMIZgyV3uoQvi%NIp+wK zMX2fL0s3L4oGn7Dv~b@3lZcJ6^mBUgS9)i;@>K;I44C&uEGH1!>$@*9Fd63Z2nHShf=!qN^Vd4;IFV$VqtoQS_+8X5amn!x?* zIpuCBP#N;7q>yUlc~@UUO4+=YT+mNB!f49G-243UZ3FKYH`#i@OHsZ?MHrDI2=?KGk84!kXPFuZafQ{*wns_DjCXg<)f$cp0oz zYcY6>1v2Uph1u}6?Xv`>A@{H)0@rWM_D)K3o&>bd@WWt=`hgbI7#4EMe4#40qnc5k zE)`*wsO?0LRorfF;X*B_HCjGqth8~)P7&&Nrii1D-c|pwH56pp!JjgWz9;P5Nvs)w5nHEcY~$O%JEjV=NnC zQL3^E&I$S57d;bu-I%~I)*R=Do3ZY&V^<5@_oS7fbOTvIlxcp& z=lCoJZY<)-FHghjtG6Z%(L~J-I!rQ*NfOx2Q;XgFd||hQL1{@E2(dSetsyE+MaoO*ybnjgGKI$+*Qm(z??|<5f2uezKnTnz$wRRG)nHQwz zlbo|AQ8uS<{{l=Nv*^h`kM&W^W5iD`+{S*J?`%;`Va!O&Yc{)=PqTCT1BQP-FvUFslZm=K|l*#O%6-phhwa^%do0*C&-iP(KGM0nK?O&W=xgv3_;^<2} z<(z$j_Iea#$3mXtor)I)& zNIiZW~R0cXpOo!T0bC{C%(S(t+o1 z6chB4Sgb3*fA%;k%wo19SrH1p6`)#k1RxoQ=Ni@ynkpi=Y@#3xvNYPwU#N~Yc8*Pr_f>Hf&gEU=e z;Z|L7_zKg$~(-BtO0`s6S__q=vkQ0ahb>=*v#Tl| z*7JOnV`*P}&3M62GXqBLlZe^#KdY>gE|V!EA~x(4W~UnbB=ipd>97#|!kCEtbgo6s z7Sql=AT#R(ma2YMk<#!xfT^&?&Fz{Udh>TXbm&$fg%P%zlcc8DnFYeet8Q8q;FZK$8)HIH*n z{aRNz{*OKX``m(81T=E07wvPlUUrbAW<%u1*?%J8eP8g&Y^1U$N4-4X9x4%r?e|Zb zgZ#MykU@)J7vcBk|Ji6=Nby*w)-y100#zQ2dG&hl!j9cS|F=94>T|6&?c-d6mS2=T z9N`PX4K{-zhjsh^e5I$LNlu-XnduDM;V0I*XBW9|e@z^Y73Sj`00OCl1!&uG&ML{= z`Y&sA^KHIq3x`y^Y8SI~t!A{EKb!W?fC8bBwkg>8i1eL>um;FtuNa~EWQhsO}&QIP_3 z(Zdb=yHEVjt8H}R%_By~`2#b$cbZh-=3ykI>O z;h~58d!c_%B^;hL!0Gp1%jj7EFJS`>(`|5Hi7u;tNOx>x20hlw0;mGAL0;HeWO?0u zxL>x&&+E`+{^wQSO(uFw3wZv@Zu&Q?Rp!~Vv${zvMJ7F|7_eIWS z#1=30&E4RF)QZIHP*3ts) zyQ&Y~1cqZMV9_u4oaLZD?Arf+1pm53-C32#yPkt;Wl!ghIej&FS)-UP)r8HiXulfx z?CV&FzdCKXr|S;^TE9~R&wu%T8Xc6^{grc7zA0rr_<-Esp09@X8*-g7C#mG9io#_zm+knH80`|R6CY%2uBl4Uw_ zq96R}S^f!4@RL7XxZ0U6eFjTJF!_ot|Ml9M&0J^dOXo1u)^u!WNXRAVG#rN#JL!M9 z6=uoU$N1Ick*x`W>e$x2>N|tLw6wJQkZEJ9KcNuctz}-fS)^22&W$F7Z*mW z)gjam9a%g1;lG?Sp$E0Un_bXE!~NB98&|oa^XqNxbwZV2Kf4-;9Z?558VpH?wX-v!36Gr4?Xr1>t>-0&QO^Tm+lnB0y}EoU<=8i z2??C0y}2RRbU)t*IKyO+0Q$8*XXSl36JA<^fVs~)ydxbMNEp%~&QZ)$yJ0*~oDLiR zj?nfj1L8|pq>>4A+`6DaEh#G-asGx$BgkOULyOol7-~$CP@Caz`ts$AdFu^$`j~#8 zvPr`>VC?7H%S`*)1nJ;bxDQw2+BgtlL{7KHwh+*{jMs2I%6fep^skDII_Vt&-!KVD zOgI#Q`vig4j=&LGtLe~;%D)`NsaB#`K4KRu0}zH$SBz#f^x`xu>nZc=`=C32#MKqP zb3^E)V}kt`LwI{JTUTchTI&+Qw0r&y`Bke@2phF3hZQc`ohA1JHrMU75b%JVt_2*W z*nScQiJfr@gK)5N2vQY;F?WDT+z0oe4}mFYi@_C9_nMcsjp2=0pq70%+Qa1I^Ap(o zS+&yU?ZRMbOJHCrkN|Cg%zc`eAGzcHE{x)10TF;w%$$C&jiiJwzYuEyY>RQR!#(4B z3KR}Qpr7*o!-(x23@}eLLsu+Kqr!??zxi~5kEx!a`3FWq@f%^m6soYQdukunw!V`KFG;@YUv97d?5L>H6w=_1s zhKeXd_Bg=Omo;5`5howLyjfab8#49J+NRV96T&^=GaCIeA^%& z)#LD=fKD%^2v#MHQ&NVwYGF3xDlS0UWLIzH3C6;Q7Ey rCKdnx+gXEa{Qr1z|BtKH6(1118(iA1vaiX*-nFE-oLIi7j@SPKfLz7B diff --git a/stability_analysis_results/table7_reference_report.txt b/stability_analysis_results/table7_reference_report.txt deleted file mode 100644 index b9d6897cef4..00000000000 --- a/stability_analysis_results/table7_reference_report.txt +++ /dev/null @@ -1,43 +0,0 @@ -Latency Stability Analysis: table7 (Reference) -================================================================================ -Model: mv3(xnnpack_q8) -Device: Apple iPhone 15 Plus(iOS 17.4.1) - -Dataset Overview: - - Number of samples: 7 - - Date range: 2025-06-11 03:17:41+00:00 to 2025-06-17 03:03:25+00:00 - -Central Tendency Metrics: - - Mean latency: 40.00 ms - - Median latency (P50): 39.00 ms - -Dispersion Metrics: - - Standard deviation: 4.04 ms - - Coefficient of variation (CV): 10.10% - - Interquartile range (IQR): 4.50 ms - -Percentile Metrics: - - P50 (median): 39.00 ms - - P90: 43.80 ms - - P95: 44.40 ms - - P99: 44.88 ms - -Inter-Jitter Metrics (variability between runs): - - Max/Min ratio: 1.3636 - - P99/P50 ratio: 1.1508 - - Mean rolling std (window=5): 4.12 ms - -Stability Assessment: - - Overall stability score: 41.7/100 - - Overall stability rating: Poor - -Interpretation: - The benchmark shows poor stability (score: 41.7/100) with significant - variation between runs (CV: 10.10%). - Performance is unpredictable and may lead to inconsistent user experience. - - The max/min ratio of 1.36 indicates - substantial performance differences between the best and worst runs. - - The P99/P50 ratio of 1.15 suggests - occasional latency spikes that could affect tail latency sensitive applications. \ No newline at end of file diff --git a/stability_analysis_results/table7_reference_time_series.png b/stability_analysis_results/table7_reference_time_series.png deleted file mode 100644 index c103fab5e3811290100d679413d20bfce5146233..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 55405 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 ac2!N9BGQzO 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 L{an^LB{Ts5thTJ{ diff --git a/stability_analysis_results/table9_primary_report.txt b/stability_analysis_results/table9_primary_report.txt deleted file mode 100644 index 6af4e8d9a04..00000000000 --- a/stability_analysis_results/table9_primary_report.txt +++ /dev/null @@ -1,43 +0,0 @@ -Latency Stability Analysis: table9 (Primary) -================================================================================ -Model: mv3(xnnpack_q8) -Device: Apple iPhone 15 (private)(iOS 18.0) - -Dataset Overview: - - Number of samples: 10 - - Date range: 2025-06-11 01:49:37+00:00 to 2025-06-12 17:33:28+00:00 - -Central Tendency Metrics: - - Mean latency: 44.90 ms - - Median latency (P50): 45.00 ms - -Dispersion Metrics: - - Standard deviation: 2.38 ms - - Coefficient of variation (CV): 5.30% - - Interquartile range (IQR): 1.00 ms - -Percentile Metrics: - - P50 (median): 45.00 ms - - P90: 47.30 ms - - P95: 48.65 ms - - P99: 49.73 ms - -Inter-Jitter Metrics (variability between runs): - - Max/Min ratio: 1.2195 - - P99/P50 ratio: 1.1051 - - Mean rolling std (window=5): 2.26 ms - -Stability Assessment: - - Overall stability score: 68.1/100 - - Overall stability rating: Moderate - -Interpretation: - The benchmark shows moderate stability (score: 68.1/100) with noticeable - variation between runs (CV: 5.30%). - While average performance is acceptable, occasional latency spikes may occur. - - The max/min ratio of 1.22 indicates - substantial performance differences between the best and worst runs. - - The P99/P50 ratio of 1.11 suggests - occasional latency spikes that could affect tail latency sensitive applications. \ No newline at end of file diff --git a/stability_analysis_results/table9_primary_time_series.png b/stability_analysis_results/table9_primary_time_series.png deleted file mode 100644 index ee3632305f9de3f0de716716312428b539cb43da..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 60853 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

    Wqw8>{BJK5kJ)786efGbu^cUuB_fa&)kmH>?ifH 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

    @^^bvVuLmp#D1dp!CE>)^Bzpno1s>o}8H89s9- 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 JhOqkc{}1)I9vT1u diff --git a/stability_analysis_results/table9_vs_table6_comparison.txt b/stability_analysis_results/table9_vs_table6_comparison.txt deleted file mode 100644 index 8255d8c3748..00000000000 --- a/stability_analysis_results/table9_vs_table6_comparison.txt +++ /dev/null @@ -1,42 +0,0 @@ -Private vs Public Stability Comparison -================================================================================ -Private Dataset: table9 -Public Dataset: table6 -Model: ('mv3(xnnpack_q8)',) -Private Device: ('Apple iPhone 15 (private)(iOS 18.0)',) -Public Device: Apple iPhone 15(iOS 18.0) - -Metric Comparison: -+-------------------------+---------------------+----------------------+--------------+------------+ -| Metric | Private (Primary) | Public (Reference) | Difference | % Change | -+=========================+=====================+======================+==============+============+ -| Mean Latency (ms) | 44.90 ms | 52.71 ms | -7.81 ms | -14.8% | -+-------------------------+---------------------+----------------------+--------------+------------+ -| Median Latency (ms) | 45.00 ms | 47.00 ms | -2.00 ms | -4.3% | -+-------------------------+---------------------+----------------------+--------------+------------+ -| Standard Deviation (ms) | 2.38 ms | 21.83 ms | -19.45 ms | -89.1% | -+-------------------------+---------------------+----------------------+--------------+------------+ -| CV (%) | 5.30% | 41.41% | -36.12% | -87.2% | -+-------------------------+---------------------+----------------------+--------------+------------+ -| IQR (ms) | 1.00 ms | 13.00 ms | -12.00 ms | -92.3% | -+-------------------------+---------------------+----------------------+--------------+------------+ -| P99 (ms) | 49.73 ms | 97.36 ms | -47.63 ms | -48.9% | -+-------------------------+---------------------+----------------------+--------------+------------+ -| Max/Min Ratio | 1.2195 | 2.6316 | -1.4121 | -53.7% | -+-------------------------+---------------------+----------------------+--------------+------------+ -| P99/P50 Ratio | 1.1051 | 2.0715 | -0.9664 | -46.7% | -+-------------------------+---------------------+----------------------+--------------+------------+ -| Stability Score | 68.1/100 | 4.6/100 | 63.5 | 1379.7% | -+-------------------------+---------------------+----------------------+--------------+------------+ -| Stability Rating | Moderate | Poor | N/A | N/A | -+-------------------------+---------------------+----------------------+--------------+------------+ - -Interpretation: - Private environment shows better stability with a 1379.7% higher stability score. - (Private: 68.1/100 vs Public: 4.6/100) - Private environment has 87.2% lower coefficient of variation, indicating more consistent performance. - Private environment has 14.8% lower mean latency, indicating better performance. - -Recommendation: - The private environment provides better stability for this model+device combination. - It is recommended for applications where consistent performance is critical. \ No newline at end of file From 9e2ee88c7d49aa65a8116c5ba3ae6d8349463850 Mon Sep 17 00:00:00 2001 From: Yang Wang Date: Fri, 20 Jun 2025 20:58:30 -0700 Subject: [PATCH 46/46] setup link Signed-off-by: Yang Wang --- backends/xnnpack/third-party/generate-cpuinfo-wrappers.py | 3 +-- 1 file changed, 1 insertion(+), 2 deletions(-) diff --git a/backends/xnnpack/third-party/generate-cpuinfo-wrappers.py b/backends/xnnpack/third-party/generate-cpuinfo-wrappers.py index 32f2500c272..9d1830c8e2c 100644 --- a/backends/xnnpack/third-party/generate-cpuinfo-wrappers.py +++ b/backends/xnnpack/third-party/generate-cpuinfo-wrappers.py @@ -66,8 +66,7 @@ ], "(defined(__arm__) || defined(__aarch64__)) && defined(TARGET_OS_MAC) && TARGET_OS_MAC": [ "arm/mach/init.c", - ], -} + ],} if __name__ == "__main__":

    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 AF#rGn diff --git a/stability_analysis_results/table2_vs_table2_comparison.txt b/stability_analysis_results/table2_vs_table2_comparison.txt deleted file mode 100644 index 0c7a8e6dce5..00000000000 --- a/stability_analysis_results/table2_vs_table2_comparison.txt +++ /dev/null @@ -1,39 +0,0 @@ -Private vs Public Stability Comparison -================================================================================ -Private Dataset: table2 -Public Dataset: table2 -Model: ('mv3(coreml_fp16)',) -Private Device: ('Apple iPhone 15 Plus (private)(iOS 17.4.1)',) -Public Device: Apple iPhone 15 Plus(iOS 17.4.1) - -Metric Comparison: -+-------------------------+---------------------+----------------------+--------------+------------+ -| Metric | Private (Primary) | Public (Reference) | Difference | % Change | -+=========================+=====================+======================+==============+============+ -| Mean Latency (ms) | 1.00 ms | 1.00 ms | 0.00 ms | 0.0% | -+-------------------------+---------------------+----------------------+--------------+------------+ -| Median Latency (ms) | 1.00 ms | 1.00 ms | 0.00 ms | 0.0% | -+-------------------------+---------------------+----------------------+--------------+------------+ -| Standard Deviation (ms) | 0.00 ms | 0.00 ms | 0.00 ms | Infinity% | -+-------------------------+---------------------+----------------------+--------------+------------+ -| CV (%) | 0.00% | 0.00% | 0.00% | Infinity% | -+-------------------------+---------------------+----------------------+--------------+------------+ -| IQR (ms) | 0.00 ms | 0.00 ms | 0.00 ms | Infinity% | -+-------------------------+---------------------+----------------------+--------------+------------+ -| P99 (ms) | 1.00 ms | 1.00 ms | 0.00 ms | 0.0% | -+-------------------------+---------------------+----------------------+--------------+------------+ -| Max/Min Ratio | 1.0000 | 1.0000 | 0.0000 | 0.0% | -+-------------------------+---------------------+----------------------+--------------+------------+ -| P99/P50 Ratio | 1.0000 | 1.0000 | 0.0000 | 0.0% | -+-------------------------+---------------------+----------------------+--------------+------------+ -| Stability Score | 100.0/100 | 100.0/100 | 0.0 | 0.0% | -+-------------------------+---------------------+----------------------+--------------+------------+ -| Stability Rating | Excellent | Excellent | N/A | N/A | -+-------------------------+---------------------+----------------------+--------------+------------+ - -Interpretation: - Both environments show identical stability scores. - -Recommendation: - Both environments provide similar stability. Other factors like cost or availability - may be considered for choosing between them. \ No newline at end of file diff --git a/stability_analysis_results/table3_primary_report.txt b/stability_analysis_results/table3_primary_report.txt deleted file mode 100644 index de69f4e2946..00000000000 --- a/stability_analysis_results/table3_primary_report.txt +++ /dev/null @@ -1,37 +0,0 @@ -Latency Stability Analysis: table3 (Primary) -================================================================================ -Model: mv3(coreml_fp16) -Device: Apple iPhone 15 Pro (private)(iOS 18.4.1) - -Dataset Overview: - - Number of samples: 10 - - Date range: 2025-06-11 01:49:37+00:00 to 2025-06-12 17:33:28+00:00 - -Central Tendency Metrics: - - Mean latency: 1.00 ms - - Median latency (P50): 1.00 ms - -Dispersion Metrics: - - Standard deviation: 0.00 ms - - Coefficient of variation (CV): 0.00% - - Interquartile range (IQR): 0.00 ms - -Percentile Metrics: - - P50 (median): 1.00 ms - - P90: 1.00 ms - - P95: 1.00 ms - - P99: 1.00 ms - -Inter-Jitter Metrics (variability between runs): - - Max/Min ratio: 1.0000 - - P99/P50 ratio: 1.0000 - - Mean rolling std (window=5): 0.00 ms - -Stability Assessment: - - Overall stability score: 100.0/100 - - Overall stability rating: Excellent - -Interpretation: - The benchmark shows excellent stability (score: 100.0/100) with very low - variation between runs (CV: 0.00%). - This indicates highly consistent performance suitable for latency-sensitive applications. \ No newline at end of file diff --git a/stability_analysis_results/table3_primary_time_series.png b/stability_analysis_results/table3_primary_time_series.png deleted file mode 100644 index ee423fabda3916788c30a653f4c7d9debfefdfe9..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 37837 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 D3XXLh diff --git a/stability_analysis_results/table3_reference_report.txt b/stability_analysis_results/table3_reference_report.txt deleted file mode 100644 index 1843177746b..00000000000 --- a/stability_analysis_results/table3_reference_report.txt +++ /dev/null @@ -1,40 +0,0 @@ -Latency Stability Analysis: table3 (Reference) -================================================================================ -Model: mv3(mps) -Device: Apple iPhone 15(iOS 18.0) - -Dataset Overview: - - Number of samples: 6 - - Date range: 2025-06-12 03:49:34+00:00 to 2025-06-17 03:03:25+00:00 - -Central Tendency Metrics: - - Mean latency: 3.33 ms - - Median latency (P50): 4.00 ms - -Dispersion Metrics: - - Standard deviation: 1.03 ms - - Coefficient of variation (CV): 30.98% - - Interquartile range (IQR): 1.50 ms - -Percentile Metrics: - - P50 (median): 4.00 ms - - P90: 4.00 ms - - P95: 4.00 ms - - P99: 4.00 ms - -Inter-Jitter Metrics (variability between runs): - - Max/Min ratio: 2.0000 - - P99/P50 ratio: 1.0000 - - Mean rolling std (window=5): 0.89 ms - -Stability Assessment: - - Overall stability score: 37.5/100 - - Overall stability rating: Poor - -Interpretation: - The benchmark shows poor stability (score: 37.5/100) with significant - variation between runs (CV: 30.98%). - Performance is unpredictable and may lead to inconsistent user experience. - - The max/min ratio of 2.00 indicates - substantial performance differences between the best and worst runs. \ No newline at end of file diff --git a/stability_analysis_results/table3_reference_time_series.png b/stability_analysis_results/table3_reference_time_series.png deleted file mode 100644 index 159c0608b6c0e63ab3941f0cbea6dc553bb7dba5..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 50128 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 diff --git a/stability_analysis_results/table4_primary_report.txt b/stability_analysis_results/table4_primary_report.txt deleted file mode 100644 index 83b8414b499..00000000000 --- a/stability_analysis_results/table4_primary_report.txt +++ /dev/null @@ -1,37 +0,0 @@ -Latency Stability Analysis: table4 (Primary) -================================================================================ -Model: mv3(mps) -Device: Apple iPhone 15 (private)(iOS 18.0) - -Dataset Overview: - - Number of samples: 8 - - Date range: 2025-06-11 09:33:04+00:00 to 2025-06-12 17:33:28+00:00 - -Central Tendency Metrics: - - Mean latency: 4.00 ms - - Median latency (P50): 4.00 ms - -Dispersion Metrics: - - Standard deviation: 0.00 ms - - Coefficient of variation (CV): 0.00% - - Interquartile range (IQR): 0.00 ms - -Percentile Metrics: - - P50 (median): 4.00 ms - - P90: 4.00 ms - - P95: 4.00 ms - - P99: 4.00 ms - -Inter-Jitter Metrics (variability between runs): - - Max/Min ratio: 1.0000 - - P99/P50 ratio: 1.0000 - - Mean rolling std (window=5): 0.00 ms - -Stability Assessment: - - Overall stability score: 100.0/100 - - Overall stability rating: Excellent - -Interpretation: - The benchmark shows excellent stability (score: 100.0/100) with very low - variation between runs (CV: 0.00%). - This indicates highly consistent performance suitable for latency-sensitive applications. \ No newline at end of file diff --git a/stability_analysis_results/table4_primary_time_series.png b/stability_analysis_results/table4_primary_time_series.png deleted file mode 100644 index 979703d41925650b1f65fff79f442f92f0f350e5..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 41797 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

  • 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 AF#rGn literal 0 HcmV?d00001 diff --git a/stability_analysis_results/table2_vs_table2_comparison.txt b/stability_analysis_results/table2_vs_table2_comparison.txt new file mode 100644 index 00000000000..0c7a8e6dce5 --- /dev/null +++ b/stability_analysis_results/table2_vs_table2_comparison.txt @@ -0,0 +1,39 @@ +Private vs Public Stability Comparison +================================================================================ +Private Dataset: table2 +Public Dataset: table2 +Model: ('mv3(coreml_fp16)',) +Private Device: ('Apple iPhone 15 Plus (private)(iOS 17.4.1)',) +Public Device: Apple iPhone 15 Plus(iOS 17.4.1) + +Metric Comparison: ++-------------------------+---------------------+----------------------+--------------+------------+ +| Metric | Private (Primary) | Public (Reference) | Difference | % Change | ++=========================+=====================+======================+==============+============+ +| Mean Latency (ms) | 1.00 ms | 1.00 ms | 0.00 ms | 0.0% | ++-------------------------+---------------------+----------------------+--------------+------------+ +| Median Latency (ms) | 1.00 ms | 1.00 ms | 0.00 ms | 0.0% | ++-------------------------+---------------------+----------------------+--------------+------------+ +| Standard Deviation (ms) | 0.00 ms | 0.00 ms | 0.00 ms | Infinity% | ++-------------------------+---------------------+----------------------+--------------+------------+ +| CV (%) | 0.00% | 0.00% | 0.00% | Infinity% | ++-------------------------+---------------------+----------------------+--------------+------------+ +| IQR (ms) | 0.00 ms | 0.00 ms | 0.00 ms | Infinity% | ++-------------------------+---------------------+----------------------+--------------+------------+ +| P99 (ms) | 1.00 ms | 1.00 ms | 0.00 ms | 0.0% | ++-------------------------+---------------------+----------------------+--------------+------------+ +| Max/Min Ratio | 1.0000 | 1.0000 | 0.0000 | 0.0% | ++-------------------------+---------------------+----------------------+--------------+------------+ +| P99/P50 Ratio | 1.0000 | 1.0000 | 0.0000 | 0.0% | ++-------------------------+---------------------+----------------------+--------------+------------+ +| Stability Score | 100.0/100 | 100.0/100 | 0.0 | 0.0% | ++-------------------------+---------------------+----------------------+--------------+------------+ +| Stability Rating | Excellent | Excellent | N/A | N/A | ++-------------------------+---------------------+----------------------+--------------+------------+ + +Interpretation: + Both environments show identical stability scores. + +Recommendation: + Both environments provide similar stability. Other factors like cost or availability + may be considered for choosing between them. \ No newline at end of file diff --git a/stability_analysis_results/table3_primary_report.txt b/stability_analysis_results/table3_primary_report.txt new file mode 100644 index 00000000000..de69f4e2946 --- /dev/null +++ b/stability_analysis_results/table3_primary_report.txt @@ -0,0 +1,37 @@ +Latency Stability Analysis: table3 (Primary) +================================================================================ +Model: mv3(coreml_fp16) +Device: Apple iPhone 15 Pro (private)(iOS 18.4.1) + +Dataset Overview: + - Number of samples: 10 + - Date range: 2025-06-11 01:49:37+00:00 to 2025-06-12 17:33:28+00:00 + +Central Tendency Metrics: + - Mean latency: 1.00 ms + - Median latency (P50): 1.00 ms + +Dispersion Metrics: + - Standard deviation: 0.00 ms + - Coefficient of variation (CV): 0.00% + - Interquartile range (IQR): 0.00 ms + +Percentile Metrics: + - P50 (median): 1.00 ms + - P90: 1.00 ms + - P95: 1.00 ms + - P99: 1.00 ms + +Inter-Jitter Metrics (variability between runs): + - Max/Min ratio: 1.0000 + - P99/P50 ratio: 1.0000 + - Mean rolling std (window=5): 0.00 ms + +Stability Assessment: + - Overall stability score: 100.0/100 + - Overall stability rating: Excellent + +Interpretation: + The benchmark shows excellent stability (score: 100.0/100) with very low + variation between runs (CV: 0.00%). + This indicates highly consistent performance suitable for latency-sensitive applications. \ No newline at end of file diff --git a/stability_analysis_results/table3_primary_time_series.png b/stability_analysis_results/table3_primary_time_series.png new file mode 100644 index 0000000000000000000000000000000000000000..ee423fabda3916788c30a653f4c7d9debfefdfe9 GIT binary patch literal 37837 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 D3XXLh literal 0 HcmV?d00001 diff --git a/stability_analysis_results/table3_reference_report.txt b/stability_analysis_results/table3_reference_report.txt new file mode 100644 index 00000000000..1843177746b --- /dev/null +++ b/stability_analysis_results/table3_reference_report.txt @@ -0,0 +1,40 @@ +Latency Stability Analysis: table3 (Reference) +================================================================================ +Model: mv3(mps) +Device: Apple iPhone 15(iOS 18.0) + +Dataset Overview: + - Number of samples: 6 + - Date range: 2025-06-12 03:49:34+00:00 to 2025-06-17 03:03:25+00:00 + +Central Tendency Metrics: + - Mean latency: 3.33 ms + - Median latency (P50): 4.00 ms + +Dispersion Metrics: + - Standard deviation: 1.03 ms + - Coefficient of variation (CV): 30.98% + - Interquartile range (IQR): 1.50 ms + +Percentile Metrics: + - P50 (median): 4.00 ms + - P90: 4.00 ms + - P95: 4.00 ms + - P99: 4.00 ms + +Inter-Jitter Metrics (variability between runs): + - Max/Min ratio: 2.0000 + - P99/P50 ratio: 1.0000 + - Mean rolling std (window=5): 0.89 ms + +Stability Assessment: + - Overall stability score: 37.5/100 + - Overall stability rating: Poor + +Interpretation: + The benchmark shows poor stability (score: 37.5/100) with significant + variation between runs (CV: 30.98%). + Performance is unpredictable and may lead to inconsistent user experience. + + The max/min ratio of 2.00 indicates + substantial performance differences between the best and worst runs. \ No newline at end of file diff --git a/stability_analysis_results/table3_reference_time_series.png b/stability_analysis_results/table3_reference_time_series.png new file mode 100644 index 0000000000000000000000000000000000000000..159c0608b6c0e63ab3941f0cbea6dc553bb7dba5 GIT binary patch literal 50128 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 literal 0 HcmV?d00001 diff --git a/stability_analysis_results/table4_primary_report.txt b/stability_analysis_results/table4_primary_report.txt new file mode 100644 index 00000000000..83b8414b499 --- /dev/null +++ b/stability_analysis_results/table4_primary_report.txt @@ -0,0 +1,37 @@ +Latency Stability Analysis: table4 (Primary) +================================================================================ +Model: mv3(mps) +Device: Apple iPhone 15 (private)(iOS 18.0) + +Dataset Overview: + - Number of samples: 8 + - Date range: 2025-06-11 09:33:04+00:00 to 2025-06-12 17:33:28+00:00 + +Central Tendency Metrics: + - Mean latency: 4.00 ms + - Median latency (P50): 4.00 ms + +Dispersion Metrics: + - Standard deviation: 0.00 ms + - Coefficient of variation (CV): 0.00% + - Interquartile range (IQR): 0.00 ms + +Percentile Metrics: + - P50 (median): 4.00 ms + - P90: 4.00 ms + - P95: 4.00 ms + - P99: 4.00 ms + +Inter-Jitter Metrics (variability between runs): + - Max/Min ratio: 1.0000 + - P99/P50 ratio: 1.0000 + - Mean rolling std (window=5): 0.00 ms + +Stability Assessment: + - Overall stability score: 100.0/100 + - Overall stability rating: Excellent + +Interpretation: + The benchmark shows excellent stability (score: 100.0/100) with very low + variation between runs (CV: 0.00%). + This indicates highly consistent performance suitable for latency-sensitive applications. \ No newline at end of file diff --git a/stability_analysis_results/table4_primary_time_series.png b/stability_analysis_results/table4_primary_time_series.png new file mode 100644 index 0000000000000000000000000000000000000000..979703d41925650b1f65fff79f442f92f0f350e5 GIT binary patch literal 41797 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