Spaces:
Running
Running
Commit
·
d3a1d6c
1
Parent(s):
00dd4ff
Add parity, test coverage and distinguish between device support and test coverage
Browse files- .github/scripts/check_dataset_update.py +15 -10
- .github/scripts/process_report.py +15 -5
- Makefile +0 -1
- README.md +1 -1
- constants.py +4 -2
- dashboard_data/Mac.json +241 -0
- dashboard_data/config.json +222 -39
- dashboard_data/device_map.json +3 -0
- dashboard_data/iPad.json +206 -0
- dashboard_data/iPhone.json +151 -0
- dashboard_data/quality_data.json +23 -0
- dashboard_data/support_data_11a1fab.csv +8 -8
- dashboard_data/support_data_8c0acbd.csv +12 -12
- dashboard_data/support_data_a9b92c4.csv +8 -8
- dashboard_data/test_coverage_112a023.json +239 -0
- dashboard_data/test_coverage_11a1fab.json +233 -0
- dashboard_data/test_coverage_8c0acbd.json +234 -0
- dashboard_data/test_coverage_a9b92c4.json +239 -0
- dashboard_data/test_coverage_ca49596.json +237 -0
- dashboard_data/version.json +1 -1
- main.py +331 -38
- performance_generate.py +486 -17
- quality_generate.py +0 -186
- utils.py +69 -6
.github/scripts/check_dataset_update.py
CHANGED
@@ -1,8 +1,8 @@
|
|
1 |
import json
|
2 |
import os
|
|
|
3 |
|
4 |
from github import Github
|
5 |
-
from datetime import datetime, timedelta
|
6 |
from huggingface_hub import HfApi, login
|
7 |
|
8 |
|
@@ -16,12 +16,17 @@ def check_dataset_updates(dataset_id):
|
|
16 |
last_modified = dataset_info.lastModified.isoformat()
|
17 |
current_sha = dataset_info.sha
|
18 |
|
19 |
-
repo_tree = api.list_repo_tree(
|
|
|
|
|
|
|
|
|
|
|
20 |
cutoff_date = datetime.now(dataset_info.lastModified.tzinfo) - timedelta(weeks=6)
|
21 |
|
22 |
commit_dates_hashes = [item.path.split("/")[-1] for item in repo_tree]
|
23 |
new_commit_hashes = []
|
24 |
-
|
25 |
for commit_date_hash in commit_dates_hashes:
|
26 |
commit_date, commit_hash = commit_date_hash.split("_")
|
27 |
commit_date = datetime.strptime(commit_date, "%Y-%m-%dT%H%M%S").replace(
|
@@ -42,10 +47,10 @@ def check_dataset_updates(dataset_id):
|
|
42 |
except Exception as e:
|
43 |
print(f"Error processing commit {commit_hash}: {str(e)}")
|
44 |
continue
|
45 |
-
|
46 |
# Sort by commit date
|
47 |
commit_info.sort(key=lambda x: x[1])
|
48 |
-
|
49 |
# Extract sorted commits and versions
|
50 |
new_releases = [info[0] for info in commit_info]
|
51 |
new_versions = [info[2] for info in commit_info]
|
@@ -94,15 +99,15 @@ def get_commit_version(repo, commit_hash):
|
|
94 |
try:
|
95 |
releases = list(repo.get_releases())
|
96 |
releases.sort(key=lambda x: x.created_at)
|
97 |
-
|
98 |
commit = repo.get_commit(commit_hash)
|
99 |
commit_date = commit.commit.author.date
|
100 |
-
|
101 |
for i, release in enumerate(releases):
|
102 |
if commit_date <= release.created_at:
|
103 |
-
return releases[i].tag_name.lstrip(
|
104 |
-
|
105 |
-
return releases[-1].tag_name.lstrip(
|
106 |
except Exception as e:
|
107 |
print(f"Error processing commit {commit_hash}: {str(e)}")
|
108 |
return None
|
|
|
1 |
import json
|
2 |
import os
|
3 |
+
from datetime import datetime, timedelta
|
4 |
|
5 |
from github import Github
|
|
|
6 |
from huggingface_hub import HfApi, login
|
7 |
|
8 |
|
|
|
16 |
last_modified = dataset_info.lastModified.isoformat()
|
17 |
current_sha = dataset_info.sha
|
18 |
|
19 |
+
repo_tree = api.list_repo_tree(
|
20 |
+
repo_id=dataset_id,
|
21 |
+
repo_type="dataset",
|
22 |
+
path_in_repo="benchmark_data",
|
23 |
+
recursive=False,
|
24 |
+
)
|
25 |
cutoff_date = datetime.now(dataset_info.lastModified.tzinfo) - timedelta(weeks=6)
|
26 |
|
27 |
commit_dates_hashes = [item.path.split("/")[-1] for item in repo_tree]
|
28 |
new_commit_hashes = []
|
29 |
+
|
30 |
for commit_date_hash in commit_dates_hashes:
|
31 |
commit_date, commit_hash = commit_date_hash.split("_")
|
32 |
commit_date = datetime.strptime(commit_date, "%Y-%m-%dT%H%M%S").replace(
|
|
|
47 |
except Exception as e:
|
48 |
print(f"Error processing commit {commit_hash}: {str(e)}")
|
49 |
continue
|
50 |
+
|
51 |
# Sort by commit date
|
52 |
commit_info.sort(key=lambda x: x[1])
|
53 |
+
|
54 |
# Extract sorted commits and versions
|
55 |
new_releases = [info[0] for info in commit_info]
|
56 |
new_versions = [info[2] for info in commit_info]
|
|
|
99 |
try:
|
100 |
releases = list(repo.get_releases())
|
101 |
releases.sort(key=lambda x: x.created_at)
|
102 |
+
|
103 |
commit = repo.get_commit(commit_hash)
|
104 |
commit_date = commit.commit.author.date
|
105 |
+
|
106 |
for i, release in enumerate(releases):
|
107 |
if commit_date <= release.created_at:
|
108 |
+
return releases[i].tag_name.lstrip("v")
|
109 |
+
|
110 |
+
return releases[-1].tag_name.lstrip("v")
|
111 |
except Exception as e:
|
112 |
print(f"Error processing commit {commit_hash}: {str(e)}")
|
113 |
return None
|
.github/scripts/process_report.py
CHANGED
@@ -217,17 +217,21 @@ def analyze_support_changes(prev_csv, curr_csv):
|
|
217 |
|
218 |
def generate_report():
|
219 |
# Load current and previous data
|
220 |
-
prev_perf_data = read_json_line_by_line(
|
221 |
-
|
|
|
|
|
|
|
|
|
222 |
|
223 |
prev_dict = {(d["model"], d["device"], d["os"]): d for d in prev_perf_data}
|
224 |
curr_dict = {(d["model"], d["device"], d["os"]): d for d in curr_perf_data}
|
225 |
common_configs = set(curr_dict.keys()) & set(prev_dict.keys())
|
226 |
|
227 |
# Load version data
|
228 |
-
with open("dashboard_data/version.json", "r") as f:
|
229 |
prev_version = json.load(f)
|
230 |
-
with open("report_data/version.json", "r") as f:
|
231 |
curr_version = json.load(f)
|
232 |
|
233 |
prev_releases = set(prev_version.get("releases", []))
|
@@ -384,7 +388,13 @@ def generate_report():
|
|
384 |
else:
|
385 |
# If there are changes, show the metrics
|
386 |
performance_text += f"{device_info}\n"
|
387 |
-
table = format_metrics_table(
|
|
|
|
|
|
|
|
|
|
|
|
|
388 |
performance_text += table
|
389 |
performance_text += "\n\n"
|
390 |
|
|
|
217 |
|
218 |
def generate_report():
|
219 |
# Load current and previous data
|
220 |
+
prev_perf_data = read_json_line_by_line(
|
221 |
+
"dashboard_data/performance_data.json"
|
222 |
+
) # old data
|
223 |
+
curr_perf_data = read_json_line_by_line(
|
224 |
+
"report_data/performance_data.json"
|
225 |
+
) # new data
|
226 |
|
227 |
prev_dict = {(d["model"], d["device"], d["os"]): d for d in prev_perf_data}
|
228 |
curr_dict = {(d["model"], d["device"], d["os"]): d for d in curr_perf_data}
|
229 |
common_configs = set(curr_dict.keys()) & set(prev_dict.keys())
|
230 |
|
231 |
# Load version data
|
232 |
+
with open("dashboard_data/version.json", "r") as f:
|
233 |
prev_version = json.load(f)
|
234 |
+
with open("report_data/version.json", "r") as f:
|
235 |
curr_version = json.load(f)
|
236 |
|
237 |
prev_releases = set(prev_version.get("releases", []))
|
|
|
388 |
else:
|
389 |
# If there are changes, show the metrics
|
390 |
performance_text += f"{device_info}\n"
|
391 |
+
table = format_metrics_table(
|
392 |
+
config,
|
393 |
+
prev_dict,
|
394 |
+
curr_dict,
|
395 |
+
improved_metrics,
|
396 |
+
regressed_metrics,
|
397 |
+
)
|
398 |
performance_text += table
|
399 |
performance_text += "\n\n"
|
400 |
|
Makefile
CHANGED
@@ -8,4 +8,3 @@ use-huggingface-data:
|
|
8 |
|
9 |
use-local-data:
|
10 |
@python performance_generate.py
|
11 |
-
|
|
|
8 |
|
9 |
use-local-data:
|
10 |
@python performance_generate.py
|
|
README.md
CHANGED
@@ -1,5 +1,5 @@
|
|
1 |
---
|
2 |
-
title:
|
3 |
emoji: 🏆
|
4 |
colorFrom: green
|
5 |
colorTo: indigo
|
|
|
1 |
---
|
2 |
+
title: Argmax OSS Regression Tests
|
3 |
emoji: 🏆
|
4 |
colorFrom: green
|
5 |
colorTo: indigo
|
constants.py
CHANGED
@@ -4,7 +4,7 @@ from iso639 import Lang
|
|
4 |
|
5 |
BANNER_TEXT = """
|
6 |
<div style="text-align: center;">
|
7 |
-
<h1><a href='https://github.com/argmaxinc/WhisperKit'>
|
8 |
</div>
|
9 |
"""
|
10 |
|
@@ -30,7 +30,7 @@ Tokens per Second (⬆️): The number of output tokens generated per second. Hi
|
|
30 |
Speed (⬆️): Input audio seconds transcribed per second. Higher is better.
|
31 |
|
32 |
🎯 WhisperKit is evaluated across different datasets, with a focus on per-example no-regressions (QoI) and overall accuracy (WER).
|
33 |
-
\n💻 Our
|
34 |
Reference: <a href='https://platform.openai.com/docs/guides/speech-to-text'>WhisperOpenAIAPI</a> (OpenAI's Whisper API)
|
35 |
On-device: <a href='https://github.com/argmaxinc/WhisperKit'>WhisperKit</a> (various versions and optimizations)
|
36 |
|
@@ -103,6 +103,7 @@ PERFORMANCE_TEXT = dedent(
|
|
103 |
## Metrics
|
104 |
- **Speed factor** (⬆️): Computed as the ratio of input audio length to end-to-end WhisperKit latency for transcribing that audio. A speed factor of N means N seconds of input audio was transcribed in 1 second.
|
105 |
- **Tok/s (Tokens per second)** (⬆️): Total number of text decoder forward passes divided by the end-to-end processing time.
|
|
|
106 |
|
107 |
## Data
|
108 |
|
@@ -132,6 +133,7 @@ COL_NAMES = {
|
|
132 |
"device": "Device",
|
133 |
"os": "OS",
|
134 |
"english_wer": "English WER",
|
|
|
135 |
}
|
136 |
|
137 |
|
|
|
4 |
|
5 |
BANNER_TEXT = """
|
6 |
<div style="text-align: center;">
|
7 |
+
<h1><a href='https://github.com/argmaxinc/WhisperKit'>Argmax OSS Regression Tests</a></h1>
|
8 |
</div>
|
9 |
"""
|
10 |
|
|
|
30 |
Speed (⬆️): Input audio seconds transcribed per second. Higher is better.
|
31 |
|
32 |
🎯 WhisperKit is evaluated across different datasets, with a focus on per-example no-regressions (QoI) and overall accuracy (WER).
|
33 |
+
\n💻 Our regression tests include:
|
34 |
Reference: <a href='https://platform.openai.com/docs/guides/speech-to-text'>WhisperOpenAIAPI</a> (OpenAI's Whisper API)
|
35 |
On-device: <a href='https://github.com/argmaxinc/WhisperKit'>WhisperKit</a> (various versions and optimizations)
|
36 |
|
|
|
103 |
## Metrics
|
104 |
- **Speed factor** (⬆️): Computed as the ratio of input audio length to end-to-end WhisperKit latency for transcribing that audio. A speed factor of N means N seconds of input audio was transcribed in 1 second.
|
105 |
- **Tok/s (Tokens per second)** (⬆️): Total number of text decoder forward passes divided by the end-to-end processing time.
|
106 |
+
- **Parity**: Difference between measured WER and ground truth WER (Measured - Ground Truth). Positive values indicate performance is worse than expected, negative values indicate better than expected performance.
|
107 |
|
108 |
## Data
|
109 |
|
|
|
133 |
"device": "Device",
|
134 |
"os": "OS",
|
135 |
"english_wer": "English WER",
|
136 |
+
"parity": "Parity",
|
137 |
}
|
138 |
|
139 |
|
dashboard_data/Mac.json
ADDED
@@ -0,0 +1,241 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
1 |
+
{
|
2 |
+
"date_generated": "2025-06-16T15:52:13.069236",
|
3 |
+
"xcode_version": "Developer",
|
4 |
+
"total_menu": {
|
5 |
+
"MacBook Pro 14\" (M4, 2024)": {
|
6 |
+
"sku": "Mac16,10",
|
7 |
+
"chip": "M4",
|
8 |
+
"ram": "16 GB"
|
9 |
+
},
|
10 |
+
"MacBook Pro 16\" (M4, 2024)": {
|
11 |
+
"sku": "Mac16,11",
|
12 |
+
"chip": "M4",
|
13 |
+
"ram": "16 GB"
|
14 |
+
},
|
15 |
+
"MacBook Pro 14\" (M4 Pro, 2024)": {
|
16 |
+
"sku": "Mac16,12",
|
17 |
+
"chip": "M4",
|
18 |
+
"ram": "24 GB"
|
19 |
+
},
|
20 |
+
"MacBook Pro 16\" (M4 Pro, 2024)": {
|
21 |
+
"sku": "Mac16,13",
|
22 |
+
"chip": "M4",
|
23 |
+
"ram": "24 GB"
|
24 |
+
},
|
25 |
+
"iMac 24\" (M4, 2024)": {
|
26 |
+
"sku": "Mac16,1",
|
27 |
+
"chip": "M4",
|
28 |
+
"ram": "16 GB"
|
29 |
+
},
|
30 |
+
"iMac 24\" (M4, 2024) - Higher Config": {
|
31 |
+
"sku": "Mac16,2",
|
32 |
+
"chip": "M4",
|
33 |
+
"ram": "24 GB"
|
34 |
+
},
|
35 |
+
"Mac mini (M4, 2024)": {
|
36 |
+
"sku": "Mac16,3",
|
37 |
+
"chip": "M4",
|
38 |
+
"ram": "16 GB"
|
39 |
+
},
|
40 |
+
"Mac mini (M4 Pro, 2024)": {
|
41 |
+
"sku": "Mac16,5",
|
42 |
+
"chip": "M4",
|
43 |
+
"ram": "24 GB"
|
44 |
+
},
|
45 |
+
"MacBook Air 13\" (M4, 2024)": {
|
46 |
+
"sku": "Mac16,6",
|
47 |
+
"chip": "M4",
|
48 |
+
"ram": "16 GB"
|
49 |
+
},
|
50 |
+
"MacBook Air 15\" (M4, 2024)": {
|
51 |
+
"sku": "Mac16,7",
|
52 |
+
"chip": "M4",
|
53 |
+
"ram": "16 GB"
|
54 |
+
},
|
55 |
+
"Mac Pro (M2 Ultra, 2023)": {
|
56 |
+
"sku": "Mac16,8",
|
57 |
+
"chip": "M2",
|
58 |
+
"ram": "64 GB"
|
59 |
+
},
|
60 |
+
"Mac Pro (M2 Ultra, 2023) - Higher Config": {
|
61 |
+
"sku": "Mac16,9",
|
62 |
+
"chip": "M2",
|
63 |
+
"ram": "128 GB"
|
64 |
+
},
|
65 |
+
"MacBook Pro 14\" (M3, 2023)": {
|
66 |
+
"sku": "Mac15,3",
|
67 |
+
"chip": "M3",
|
68 |
+
"ram": "16 GB"
|
69 |
+
},
|
70 |
+
"MacBook Pro 16\" (M3, 2023)": {
|
71 |
+
"sku": "Mac15,4",
|
72 |
+
"chip": "M3",
|
73 |
+
"ram": "16 GB"
|
74 |
+
},
|
75 |
+
"MacBook Pro 14\" (M3 Pro, 2023)": {
|
76 |
+
"sku": "Mac15,5",
|
77 |
+
"chip": "M3",
|
78 |
+
"ram": "24 GB"
|
79 |
+
},
|
80 |
+
"MacBook Pro 16\" (M3 Pro, 2023)": {
|
81 |
+
"sku": "Mac15,6",
|
82 |
+
"chip": "M3",
|
83 |
+
"ram": "24 GB"
|
84 |
+
},
|
85 |
+
"MacBook Pro 14\" (M3 Max, 2023)": {
|
86 |
+
"sku": "Mac15,7",
|
87 |
+
"chip": "M3",
|
88 |
+
"ram": "32 GB"
|
89 |
+
},
|
90 |
+
"MacBook Pro 16\" (M3 Max, 2023)": {
|
91 |
+
"sku": "Mac15,8",
|
92 |
+
"chip": "M3",
|
93 |
+
"ram": "32 GB"
|
94 |
+
},
|
95 |
+
"iMac 24\" (M3, 2023)": {
|
96 |
+
"sku": "Mac15,9",
|
97 |
+
"chip": "M3",
|
98 |
+
"ram": "16 GB"
|
99 |
+
},
|
100 |
+
"iMac 24\" (M3, 2023) - Higher Config": {
|
101 |
+
"sku": "Mac15,10",
|
102 |
+
"chip": "M3",
|
103 |
+
"ram": "24 GB"
|
104 |
+
},
|
105 |
+
"MacBook Air 13\" (M3, 2024)": {
|
106 |
+
"sku": "Mac15,11",
|
107 |
+
"chip": "M3",
|
108 |
+
"ram": "16 GB"
|
109 |
+
},
|
110 |
+
"MacBook Air 15\" (M3, 2024)": {
|
111 |
+
"sku": "Mac15,12",
|
112 |
+
"chip": "M3",
|
113 |
+
"ram": "16 GB"
|
114 |
+
},
|
115 |
+
"Mac mini (M3, 2024)": {
|
116 |
+
"sku": "Mac15,13",
|
117 |
+
"chip": "M3",
|
118 |
+
"ram": "16 GB"
|
119 |
+
},
|
120 |
+
"MacBook Air 13\" (M2, 2022)": {
|
121 |
+
"sku": "Mac14,2",
|
122 |
+
"chip": "M2",
|
123 |
+
"ram": "16 GB"
|
124 |
+
},
|
125 |
+
"MacBook Pro 13\" (M2, 2022)": {
|
126 |
+
"sku": "Mac14,3",
|
127 |
+
"chip": "M2",
|
128 |
+
"ram": "16 GB"
|
129 |
+
},
|
130 |
+
"Mac mini (M2, 2023)": {
|
131 |
+
"sku": "Mac14,4",
|
132 |
+
"chip": "M2",
|
133 |
+
"ram": "16 GB"
|
134 |
+
},
|
135 |
+
"MacBook Pro 14\" (M2, 2023)": {
|
136 |
+
"sku": "Mac14,5",
|
137 |
+
"chip": "M2",
|
138 |
+
"ram": "16 GB"
|
139 |
+
},
|
140 |
+
"MacBook Pro 16\" (M2, 2023)": {
|
141 |
+
"sku": "Mac14,6",
|
142 |
+
"chip": "M2",
|
143 |
+
"ram": "16 GB"
|
144 |
+
},
|
145 |
+
"MacBook Pro 14\" (M2 Pro, 2023)": {
|
146 |
+
"sku": "Mac14,7",
|
147 |
+
"chip": "M2",
|
148 |
+
"ram": "24 GB"
|
149 |
+
},
|
150 |
+
"MacBook Pro 16\" (M2 Pro, 2023)": {
|
151 |
+
"sku": "Mac14,8",
|
152 |
+
"chip": "M2",
|
153 |
+
"ram": "24 GB"
|
154 |
+
},
|
155 |
+
"MacBook Pro 14\" (M2 Max, 2023)": {
|
156 |
+
"sku": "Mac14,9",
|
157 |
+
"chip": "M2",
|
158 |
+
"ram": "32 GB"
|
159 |
+
},
|
160 |
+
"MacBook Pro 16\" (M2 Max, 2023)": {
|
161 |
+
"sku": "Mac14,10",
|
162 |
+
"chip": "M2",
|
163 |
+
"ram": "32 GB"
|
164 |
+
},
|
165 |
+
"Mac mini (M2 Pro, 2023)": {
|
166 |
+
"sku": "Mac14,12",
|
167 |
+
"chip": "M2",
|
168 |
+
"ram": "24 GB"
|
169 |
+
},
|
170 |
+
"Mac Studio (M2 Max, 2023)": {
|
171 |
+
"sku": "Mac14,13",
|
172 |
+
"chip": "M2",
|
173 |
+
"ram": "32 GB"
|
174 |
+
},
|
175 |
+
"Mac Studio (M2 Ultra, 2023)": {
|
176 |
+
"sku": "Mac14,14",
|
177 |
+
"chip": "M2",
|
178 |
+
"ram": "64 GB"
|
179 |
+
},
|
180 |
+
"MacBook Air 15\" (M2, 2023)": {
|
181 |
+
"sku": "Mac14,15",
|
182 |
+
"chip": "M2",
|
183 |
+
"ram": "16 GB"
|
184 |
+
},
|
185 |
+
"MacBook Pro 13\" (M1, 2020)": {
|
186 |
+
"sku": "MacBookPro17,1",
|
187 |
+
"chip": "M1",
|
188 |
+
"ram": "16 GB"
|
189 |
+
},
|
190 |
+
"MacBook Pro 14\" (M1 Pro, 2021)": {
|
191 |
+
"sku": "MacBookPro18,1",
|
192 |
+
"chip": "M1",
|
193 |
+
"ram": "24 GB"
|
194 |
+
},
|
195 |
+
"MacBook Pro 16\" (M1 Pro, 2021)": {
|
196 |
+
"sku": "MacBookPro18,2",
|
197 |
+
"chip": "M1",
|
198 |
+
"ram": "24 GB"
|
199 |
+
},
|
200 |
+
"MacBook Pro 14\" (M1 Max, 2021)": {
|
201 |
+
"sku": "MacBookPro18,3",
|
202 |
+
"chip": "M1",
|
203 |
+
"ram": "32 GB"
|
204 |
+
},
|
205 |
+
"MacBook Pro 16\" (M1 Max, 2021)": {
|
206 |
+
"sku": "MacBookPro18,4",
|
207 |
+
"chip": "M1",
|
208 |
+
"ram": "32 GB"
|
209 |
+
},
|
210 |
+
"MacBook Air 13\" (M1, 2020)": {
|
211 |
+
"sku": "MacBookAir10,1",
|
212 |
+
"chip": "M1",
|
213 |
+
"ram": "16 GB"
|
214 |
+
},
|
215 |
+
"Mac mini (M1, 2020)": {
|
216 |
+
"sku": "Macmini9,1",
|
217 |
+
"chip": "M1",
|
218 |
+
"ram": "16 GB"
|
219 |
+
},
|
220 |
+
"iMac 24\" (M1, 2021)": {
|
221 |
+
"sku": "iMac21,1",
|
222 |
+
"chip": "M1",
|
223 |
+
"ram": "16 GB"
|
224 |
+
},
|
225 |
+
"iMac 24\" (M1, 2021) - Higher Config": {
|
226 |
+
"sku": "iMac21,2",
|
227 |
+
"chip": "M1",
|
228 |
+
"ram": "24 GB"
|
229 |
+
},
|
230 |
+
"Mac Studio (M1 Max, 2022)": {
|
231 |
+
"sku": "Mac13,1",
|
232 |
+
"chip": "M1",
|
233 |
+
"ram": "32 GB"
|
234 |
+
},
|
235 |
+
"Mac Studio (M1 Ultra, 2022)": {
|
236 |
+
"sku": "Mac13,2",
|
237 |
+
"chip": "M1",
|
238 |
+
"ram": "64 GB"
|
239 |
+
}
|
240 |
+
}
|
241 |
+
}
|
dashboard_data/config.json
CHANGED
@@ -1,9 +1,43 @@
|
|
1 |
{
|
2 |
-
"name": "
|
3 |
-
"version": "0.
|
4 |
"device_support": [
|
5 |
{
|
6 |
-
"
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
7 |
"models": {
|
8 |
"default": "openai_whisper-tiny",
|
9 |
"supported": [
|
@@ -15,27 +49,23 @@
|
|
15 |
}
|
16 |
},
|
17 |
{
|
18 |
-
"
|
19 |
-
"models": {
|
20 |
-
"default": "openai_whisper-base",
|
21 |
-
"supported": [
|
22 |
-
"openai_whisper-tiny",
|
23 |
-
"openai_whisper-tiny.en",
|
24 |
-
"openai_whisper-base",
|
25 |
-
"openai_whisper-base.en",
|
26 |
-
"openai_whisper-small",
|
27 |
-
"openai_whisper-small.en"
|
28 |
-
]
|
29 |
-
}
|
30 |
-
},
|
31 |
-
{
|
32 |
"identifiers": [
|
33 |
-
"
|
34 |
-
"iPhone15",
|
35 |
-
"
|
36 |
-
"
|
37 |
-
"
|
38 |
-
"
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
39 |
],
|
40 |
"models": {
|
41 |
"default": "openai_whisper-base",
|
@@ -46,6 +76,8 @@
|
|
46 |
"openai_whisper-base.en",
|
47 |
"openai_whisper-small",
|
48 |
"openai_whisper-small.en",
|
|
|
|
|
49 |
"openai_whisper-large-v2_949MB",
|
50 |
"openai_whisper-large-v2_turbo_955MB",
|
51 |
"openai_whisper-large-v3_947MB",
|
@@ -53,24 +85,38 @@
|
|
53 |
"distil-whisper_distil-large-v3_594MB",
|
54 |
"distil-whisper_distil-large-v3_turbo_600MB",
|
55 |
"openai_whisper-large-v3-v20240930_626MB",
|
56 |
-
"openai_whisper-large-v3-v20240930_turbo_632MB"
|
|
|
57 |
]
|
58 |
}
|
59 |
},
|
60 |
{
|
|
|
61 |
"identifiers": [
|
62 |
-
"
|
63 |
-
"
|
|
|
|
|
|
|
64 |
"MacBookAir10,1",
|
65 |
-
"
|
66 |
-
"
|
67 |
-
"
|
68 |
-
"
|
|
|
69 |
"iPad13,4",
|
70 |
-
"iPad13,
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
71 |
],
|
72 |
"models": {
|
73 |
-
"default": "openai_whisper-large-v3-
|
74 |
"supported": [
|
75 |
"openai_whisper-tiny",
|
76 |
"openai_whisper-tiny.en",
|
@@ -78,6 +124,8 @@
|
|
78 |
"openai_whisper-base.en",
|
79 |
"openai_whisper-small",
|
80 |
"openai_whisper-small.en",
|
|
|
|
|
81 |
"openai_whisper-large-v2",
|
82 |
"openai_whisper-large-v2_949MB",
|
83 |
"openai_whisper-large-v3",
|
@@ -85,15 +133,51 @@
|
|
85 |
"distil-whisper_distil-large-v3",
|
86 |
"distil-whisper_distil-large-v3_594MB",
|
87 |
"openai_whisper-large-v3-v20240930",
|
88 |
-
"openai_whisper-large-v3-v20240930_626MB"
|
|
|
|
|
89 |
]
|
90 |
}
|
91 |
},
|
92 |
{
|
|
|
93 |
"identifiers": [
|
94 |
-
"Mac14",
|
95 |
-
"
|
96 |
-
"
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
97 |
"iPad14,3",
|
98 |
"iPad14,4",
|
99 |
"iPad14,5",
|
@@ -102,7 +186,14 @@
|
|
102 |
"iPad14,9",
|
103 |
"iPad14,10",
|
104 |
"iPad14,11",
|
105 |
-
"
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
106 |
],
|
107 |
"models": {
|
108 |
"default": "openai_whisper-large-v3-v20240930",
|
@@ -113,6 +204,8 @@
|
|
113 |
"openai_whisper-base.en",
|
114 |
"openai_whisper-small",
|
115 |
"openai_whisper-small.en",
|
|
|
|
|
116 |
"openai_whisper-large-v2",
|
117 |
"openai_whisper-large-v2_949MB",
|
118 |
"openai_whisper-large-v2_turbo",
|
@@ -128,9 +221,99 @@
|
|
128 |
"openai_whisper-large-v3-v20240930",
|
129 |
"openai_whisper-large-v3-v20240930_turbo",
|
130 |
"openai_whisper-large-v3-v20240930_626MB",
|
131 |
-
"openai_whisper-large-v3-v20240930_turbo_632MB"
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
132 |
]
|
133 |
}
|
134 |
}
|
135 |
-
]
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
136 |
}
|
|
|
1 |
{
|
2 |
+
"name": "argmax-pro-sdk",
|
3 |
+
"version": "0.5",
|
4 |
"device_support": [
|
5 |
{
|
6 |
+
"chips": "A12, A13, S9, S10",
|
7 |
+
"identifiers": [
|
8 |
+
"iPhone11,2",
|
9 |
+
"iPhone11,3",
|
10 |
+
"iPhone11,4",
|
11 |
+
"iPhone11,5",
|
12 |
+
"iPhone11,6",
|
13 |
+
"iPhone11,8",
|
14 |
+
"iPhone12,1",
|
15 |
+
"iPhone12,2",
|
16 |
+
"iPhone12,3",
|
17 |
+
"iPhone12,4",
|
18 |
+
"iPhone12,5",
|
19 |
+
"iPhone12,8",
|
20 |
+
"iPad8,1",
|
21 |
+
"iPad8,2",
|
22 |
+
"iPad8,3",
|
23 |
+
"iPad8,4",
|
24 |
+
"iPad8,5",
|
25 |
+
"iPad8,6",
|
26 |
+
"iPad8,7",
|
27 |
+
"iPad8,8",
|
28 |
+
"iPad8,9",
|
29 |
+
"iPad8,10",
|
30 |
+
"iPad8,11",
|
31 |
+
"iPad8,12",
|
32 |
+
"iPad11,1",
|
33 |
+
"iPad11,2",
|
34 |
+
"iPad11,3",
|
35 |
+
"iPad11,4",
|
36 |
+
"iPad11,6",
|
37 |
+
"iPad11,7",
|
38 |
+
"iPad12,1",
|
39 |
+
"iPad12,2"
|
40 |
+
],
|
41 |
"models": {
|
42 |
"default": "openai_whisper-tiny",
|
43 |
"supported": [
|
|
|
49 |
}
|
50 |
},
|
51 |
{
|
52 |
+
"chips": "A16, A17 Pro, A18, A18 Pro",
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
53 |
"identifiers": [
|
54 |
+
"iPhone15,2",
|
55 |
+
"iPhone15,3",
|
56 |
+
"iPhone15,4",
|
57 |
+
"iPhone15,5",
|
58 |
+
"iPhone16,1",
|
59 |
+
"iPhone16,2",
|
60 |
+
"iPhone17,1",
|
61 |
+
"iPhone17,2",
|
62 |
+
"iPhone17,3",
|
63 |
+
"iPhone17,4",
|
64 |
+
"iPhone17,5",
|
65 |
+
"iPad15,7",
|
66 |
+
"iPad15,8",
|
67 |
+
"iPad16,1",
|
68 |
+
"iPad16,2"
|
69 |
],
|
70 |
"models": {
|
71 |
"default": "openai_whisper-base",
|
|
|
76 |
"openai_whisper-base.en",
|
77 |
"openai_whisper-small",
|
78 |
"openai_whisper-small.en",
|
79 |
+
"openai_whisper-small_216MB",
|
80 |
+
"openai_whisper-small.en_217MB",
|
81 |
"openai_whisper-large-v2_949MB",
|
82 |
"openai_whisper-large-v2_turbo_955MB",
|
83 |
"openai_whisper-large-v3_947MB",
|
|
|
85 |
"distil-whisper_distil-large-v3_594MB",
|
86 |
"distil-whisper_distil-large-v3_turbo_600MB",
|
87 |
"openai_whisper-large-v3-v20240930_626MB",
|
88 |
+
"openai_whisper-large-v3-v20240930_turbo_632MB",
|
89 |
+
"nvidia_parakeet-v2_476MB"
|
90 |
]
|
91 |
}
|
92 |
},
|
93 |
{
|
94 |
+
"chips": "M1",
|
95 |
"identifiers": [
|
96 |
+
"MacBookPro17,1",
|
97 |
+
"MacBookPro18,1",
|
98 |
+
"MacBookPro18,2",
|
99 |
+
"MacBookPro18,3",
|
100 |
+
"MacBookPro18,4",
|
101 |
"MacBookAir10,1",
|
102 |
+
"Macmini9,1",
|
103 |
+
"iMac21,1",
|
104 |
+
"iMac21,2",
|
105 |
+
"Mac13,1",
|
106 |
+
"Mac13,2",
|
107 |
"iPad13,4",
|
108 |
+
"iPad13,5",
|
109 |
+
"iPad13,6",
|
110 |
+
"iPad13,7",
|
111 |
+
"iPad13,8",
|
112 |
+
"iPad13,9",
|
113 |
+
"iPad13,10",
|
114 |
+
"iPad13,11",
|
115 |
+
"iPad13,16",
|
116 |
+
"iPad13,17"
|
117 |
],
|
118 |
"models": {
|
119 |
+
"default": "openai_whisper-large-v3-v20240930_626MB",
|
120 |
"supported": [
|
121 |
"openai_whisper-tiny",
|
122 |
"openai_whisper-tiny.en",
|
|
|
124 |
"openai_whisper-base.en",
|
125 |
"openai_whisper-small",
|
126 |
"openai_whisper-small.en",
|
127 |
+
"openai_whisper-small_216MB",
|
128 |
+
"openai_whisper-small.en_217MB",
|
129 |
"openai_whisper-large-v2",
|
130 |
"openai_whisper-large-v2_949MB",
|
131 |
"openai_whisper-large-v3",
|
|
|
133 |
"distil-whisper_distil-large-v3",
|
134 |
"distil-whisper_distil-large-v3_594MB",
|
135 |
"openai_whisper-large-v3-v20240930",
|
136 |
+
"openai_whisper-large-v3-v20240930_626MB",
|
137 |
+
"nvidia_parakeet-v2_476MB",
|
138 |
+
"nvidia_parakeet-v2"
|
139 |
]
|
140 |
}
|
141 |
},
|
142 |
{
|
143 |
+
"chips": "M2, M3, M4",
|
144 |
"identifiers": [
|
145 |
+
"Mac14,2",
|
146 |
+
"Mac14,3",
|
147 |
+
"Mac14,4",
|
148 |
+
"Mac14,5",
|
149 |
+
"Mac14,6",
|
150 |
+
"Mac14,7",
|
151 |
+
"Mac14,8",
|
152 |
+
"Mac14,9",
|
153 |
+
"Mac14,10",
|
154 |
+
"Mac14,12",
|
155 |
+
"Mac14,13",
|
156 |
+
"Mac14,14",
|
157 |
+
"Mac14,15",
|
158 |
+
"Mac15,3",
|
159 |
+
"Mac15,4",
|
160 |
+
"Mac15,5",
|
161 |
+
"Mac15,6",
|
162 |
+
"Mac15,7",
|
163 |
+
"Mac15,8",
|
164 |
+
"Mac15,9",
|
165 |
+
"Mac15,10",
|
166 |
+
"Mac15,11",
|
167 |
+
"Mac15,12",
|
168 |
+
"Mac15,13",
|
169 |
+
"Mac16,1",
|
170 |
+
"Mac16,2",
|
171 |
+
"Mac16,3",
|
172 |
+
"Mac16,5",
|
173 |
+
"Mac16,6",
|
174 |
+
"Mac16,7",
|
175 |
+
"Mac16,8",
|
176 |
+
"Mac16,9",
|
177 |
+
"Mac16,10",
|
178 |
+
"Mac16,11",
|
179 |
+
"Mac16,12",
|
180 |
+
"Mac16,13",
|
181 |
"iPad14,3",
|
182 |
"iPad14,4",
|
183 |
"iPad14,5",
|
|
|
186 |
"iPad14,9",
|
187 |
"iPad14,10",
|
188 |
"iPad14,11",
|
189 |
+
"iPad15,3",
|
190 |
+
"iPad15,4",
|
191 |
+
"iPad15,5",
|
192 |
+
"iPad15,6",
|
193 |
+
"iPad16,3",
|
194 |
+
"iPad16,4",
|
195 |
+
"iPad16,5",
|
196 |
+
"iPad16,6"
|
197 |
],
|
198 |
"models": {
|
199 |
"default": "openai_whisper-large-v3-v20240930",
|
|
|
204 |
"openai_whisper-base.en",
|
205 |
"openai_whisper-small",
|
206 |
"openai_whisper-small.en",
|
207 |
+
"openai_whisper-small_216MB",
|
208 |
+
"openai_whisper-small.en_217MB",
|
209 |
"openai_whisper-large-v2",
|
210 |
"openai_whisper-large-v2_949MB",
|
211 |
"openai_whisper-large-v2_turbo",
|
|
|
221 |
"openai_whisper-large-v3-v20240930",
|
222 |
"openai_whisper-large-v3-v20240930_turbo",
|
223 |
"openai_whisper-large-v3-v20240930_626MB",
|
224 |
+
"openai_whisper-large-v3-v20240930_turbo_632MB",
|
225 |
+
"nvidia_parakeet-v2_476MB",
|
226 |
+
"nvidia_parakeet-v2"
|
227 |
+
]
|
228 |
+
}
|
229 |
+
},
|
230 |
+
{
|
231 |
+
"chips": "A14",
|
232 |
+
"identifiers": [
|
233 |
+
"iPhone13,1",
|
234 |
+
"iPhone13,2",
|
235 |
+
"iPhone13,3",
|
236 |
+
"iPhone13,4",
|
237 |
+
"iPad13,1",
|
238 |
+
"iPad13,2",
|
239 |
+
"iPad13,18",
|
240 |
+
"iPad13,19"
|
241 |
+
],
|
242 |
+
"models": {
|
243 |
+
"default": "openai_whisper-base",
|
244 |
+
"supported": [
|
245 |
+
"openai_whisper-tiny",
|
246 |
+
"openai_whisper-tiny.en",
|
247 |
+
"openai_whisper-base",
|
248 |
+
"openai_whisper-base.en",
|
249 |
+
"openai_whisper-small",
|
250 |
+
"openai_whisper-small.en",
|
251 |
+
"openai_whisper-small_216MB",
|
252 |
+
"openai_whisper-small.en_217MB",
|
253 |
+
"nvidia_parakeet-v2_476MB"
|
254 |
+
]
|
255 |
+
}
|
256 |
+
},
|
257 |
+
{
|
258 |
+
"chips": "A15",
|
259 |
+
"identifiers": [
|
260 |
+
"iPhone14,2",
|
261 |
+
"iPhone14,3",
|
262 |
+
"iPhone14,4",
|
263 |
+
"iPhone14,5",
|
264 |
+
"iPhone14,6",
|
265 |
+
"iPhone14,7",
|
266 |
+
"iPhone14,8",
|
267 |
+
"iPad14,1",
|
268 |
+
"iPad14,2"
|
269 |
+
],
|
270 |
+
"models": {
|
271 |
+
"default": "openai_whisper-base",
|
272 |
+
"supported": [
|
273 |
+
"openai_whisper-tiny",
|
274 |
+
"openai_whisper-tiny.en",
|
275 |
+
"openai_whisper-base",
|
276 |
+
"openai_whisper-base.en",
|
277 |
+
"openai_whisper-small",
|
278 |
+
"openai_whisper-small.en",
|
279 |
+
"openai_whisper-small_216MB",
|
280 |
+
"openai_whisper-small.en_217MB",
|
281 |
+
"openai_whisper-large-v2_949MB",
|
282 |
+
"openai_whisper-large-v2_turbo_955MB",
|
283 |
+
"openai_whisper-large-v3_947MB",
|
284 |
+
"openai_whisper-large-v3_turbo_954MB",
|
285 |
+
"distil-whisper_distil-large-v3_594MB",
|
286 |
+
"distil-whisper_distil-large-v3_turbo_600MB",
|
287 |
+
"openai_whisper-large-v3-v20240930_626MB",
|
288 |
+
"openai_whisper-large-v3-v20240930_turbo_632MB",
|
289 |
+
"nvidia_parakeet-v2_476MB"
|
290 |
]
|
291 |
}
|
292 |
}
|
293 |
+
],
|
294 |
+
"model_checksums": {
|
295 |
+
"distil-whisper_distil-large-v3": "9cd8271143b919402ae776c30b479565",
|
296 |
+
"distil-whisper_distil-large-v3_594MB": "ca532f45ddbf8a3d241132cc5cf41639",
|
297 |
+
"distil-whisper_distil-large-v3_turbo": "b8638452c6568dfe33a33bfcc2bc6aca",
|
298 |
+
"distil-whisper_distil-large-v3_turbo_600MB": "81746b4b1afbbb01a8ae9ea452460d88",
|
299 |
+
"openai_whisper-base.en": "fbcfd586f15e2952251b1d3257f18471",
|
300 |
+
"openai_whisper-base": "36e60501ad0f01c1a5719e83a1f63f20",
|
301 |
+
"openai_whisper-large-v2": "21b86c07318aeeef54598f15b7903979",
|
302 |
+
"openai_whisper-large-v2_949MB": "71bad4e1566749d1060eda42308d9fb4",
|
303 |
+
"openai_whisper-large-v2_turbo": "7734959b6550e7b5c2d732bf2b7acd23",
|
304 |
+
"openai_whisper-large-v2_turbo_955MB": "cb6411862a48ec75325572081f01e5b5",
|
305 |
+
"openai_whisper-large-v3-v20240930": "17ebd78ff7edfa59001b554e9cc4c021",
|
306 |
+
"openai_whisper-large-v3-v20240930_547MB": "c945dad68449ac3c78ecb2d561ac189d",
|
307 |
+
"openai_whisper-large-v3-v20240930_626MB": "578fe5a07f4eb7e4187c920bca571aa5",
|
308 |
+
"openai_whisper-large-v3-v20240930_turbo": "dfbf09ab741af1d5400ddbd07bb37dad",
|
309 |
+
"openai_whisper-large-v3-v20240930_turbo_632MB": "33954440dbd785ca1828afe25514f5a5",
|
310 |
+
"openai_whisper-large-v3": "a6f24dc72785722e9cea89e227856dfe",
|
311 |
+
"openai_whisper-large-v3_947MB": "ef6b0e9622a046ce2361b4c72307877f",
|
312 |
+
"openai_whisper-large-v3_turbo": "c550fbdea70c5784d322c0a427f8b5cd",
|
313 |
+
"openai_whisper-large-v3_turbo_954MB": "e639c4bb98d905064ef5dd38757dd9d1",
|
314 |
+
"openai_whisper-small.en": "38efe6a00706bbdb995795c67a836e5e",
|
315 |
+
"openai_whisper-small": "f1d21adb950bc9be5d5343bcdeccd23b",
|
316 |
+
"openai_whisper-tiny.en": "e1183fd55448923b1ce43a2da67aa21f",
|
317 |
+
"openai_whisper-tiny": "7147518a3d68ddbea0691e04cfffa4ff"
|
318 |
+
}
|
319 |
}
|
dashboard_data/device_map.json
CHANGED
@@ -2,6 +2,7 @@
|
|
2 |
"Mac14,12": "Apple M2 Pro",
|
3 |
"Mac14,14": "Apple M2 Ultra",
|
4 |
"Mac14,2": "Apple M2",
|
|
|
5 |
"Mac15,10": "Apple M3 Max",
|
6 |
"Mac15,3": "Apple M3",
|
7 |
"Mac15,6": "Apple M3 Pro",
|
@@ -9,12 +10,14 @@
|
|
9 |
"Mac16,10": "Apple M4",
|
10 |
"Mac16,3": "Apple M4",
|
11 |
"MacBookAir10,1": "Apple M1",
|
|
|
12 |
"iPad13,16": "iPad Air (5th generation)",
|
13 |
"iPad13,18": "iPad (10th generation)",
|
14 |
"iPad13,6": "iPad Pro (11-inch) (3rd generation)",
|
15 |
"iPad14,1": "iPad mini (6th generation)",
|
16 |
"iPad14,8": "iPad Air 11-inch (M2)",
|
17 |
"iPad15,3": "iPad Air 11-inch (M3)",
|
|
|
18 |
"iPad15,7": "iPad (A16)",
|
19 |
"iPad16,1": "iPad mini (A17 Pro)",
|
20 |
"iPad16,3": "iPad Pro 11-inch (M4)",
|
|
|
2 |
"Mac14,12": "Apple M2 Pro",
|
3 |
"Mac14,14": "Apple M2 Ultra",
|
4 |
"Mac14,2": "Apple M2",
|
5 |
+
"Mac14,3": "Apple M2",
|
6 |
"Mac15,10": "Apple M3 Max",
|
7 |
"Mac15,3": "Apple M3",
|
8 |
"Mac15,6": "Apple M3 Pro",
|
|
|
10 |
"Mac16,10": "Apple M4",
|
11 |
"Mac16,3": "Apple M4",
|
12 |
"MacBookAir10,1": "Apple M1",
|
13 |
+
"Macmini9,1": "Apple M1",
|
14 |
"iPad13,16": "iPad Air (5th generation)",
|
15 |
"iPad13,18": "iPad (10th generation)",
|
16 |
"iPad13,6": "iPad Pro (11-inch) (3rd generation)",
|
17 |
"iPad14,1": "iPad mini (6th generation)",
|
18 |
"iPad14,8": "iPad Air 11-inch (M2)",
|
19 |
"iPad15,3": "iPad Air 11-inch (M3)",
|
20 |
+
"iPad15,5": "iPad Air 13-inch (M3)",
|
21 |
"iPad15,7": "iPad (A16)",
|
22 |
"iPad16,1": "iPad mini (A17 Pro)",
|
23 |
"iPad16,3": "iPad Pro 11-inch (M4)",
|
dashboard_data/iPad.json
ADDED
@@ -0,0 +1,206 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
1 |
+
{
|
2 |
+
"date_generated": "2025-06-23T18:22:05.764459",
|
3 |
+
"xcode_version": "Version 26.0 (17A5241e)",
|
4 |
+
"total_menu": {
|
5 |
+
"iPad Pro (11-inch) (2nd generation)": {
|
6 |
+
"sku": [
|
7 |
+
"iPad8,9",
|
8 |
+
"iPad8,10"
|
9 |
+
],
|
10 |
+
"chip": "A12Z",
|
11 |
+
"ram": "6 GB"
|
12 |
+
},
|
13 |
+
"iPad Pro (12.9-inch) (3rd generation)": {
|
14 |
+
"sku": [
|
15 |
+
"iPad8,5",
|
16 |
+
"iPad8,6",
|
17 |
+
"iPad8,7",
|
18 |
+
"iPad8,8"
|
19 |
+
],
|
20 |
+
"chip": "A12X",
|
21 |
+
"ram": "4 GB"
|
22 |
+
},
|
23 |
+
"iPad Pro (11-inch)": {
|
24 |
+
"sku": [
|
25 |
+
"iPad8,1",
|
26 |
+
"iPad8,2",
|
27 |
+
"iPad8,3",
|
28 |
+
"iPad8,4"
|
29 |
+
],
|
30 |
+
"chip": "A12X",
|
31 |
+
"ram": "4 GB"
|
32 |
+
},
|
33 |
+
"iPad Pro (12.9-inch) (4th generation)": {
|
34 |
+
"sku": [
|
35 |
+
"iPad8,11",
|
36 |
+
"iPad8,12"
|
37 |
+
],
|
38 |
+
"chip": "A12Z",
|
39 |
+
"ram": "6 GB"
|
40 |
+
},
|
41 |
+
"iPad Pro 13-inch (M4)": {
|
42 |
+
"sku": [
|
43 |
+
"iPad16,5",
|
44 |
+
"iPad16,6"
|
45 |
+
],
|
46 |
+
"chip": "M4",
|
47 |
+
"ram": "8 GB"
|
48 |
+
},
|
49 |
+
"iPad Pro 11-inch (M4)": {
|
50 |
+
"sku": [
|
51 |
+
"iPad16,3",
|
52 |
+
"iPad16,4"
|
53 |
+
],
|
54 |
+
"chip": "M4",
|
55 |
+
"ram": "8 GB"
|
56 |
+
},
|
57 |
+
"iPad mini (A17 Pro)": {
|
58 |
+
"sku": [
|
59 |
+
"iPad16,1",
|
60 |
+
"iPad16,2"
|
61 |
+
],
|
62 |
+
"chip": "A17 Pro",
|
63 |
+
"ram": "8 GB"
|
64 |
+
},
|
65 |
+
"iPad (A16)": {
|
66 |
+
"sku": [
|
67 |
+
"iPad15,7",
|
68 |
+
"iPad15,8"
|
69 |
+
],
|
70 |
+
"chip": "A16",
|
71 |
+
"ram": "8 GB"
|
72 |
+
},
|
73 |
+
"iPad Air 13-inch (M3)": {
|
74 |
+
"sku": [
|
75 |
+
"iPad15,5",
|
76 |
+
"iPad15,6"
|
77 |
+
],
|
78 |
+
"chip": "M3",
|
79 |
+
"ram": "8 GB"
|
80 |
+
},
|
81 |
+
"iPad Air 11-inch (M3)": {
|
82 |
+
"sku": [
|
83 |
+
"iPad15,3",
|
84 |
+
"iPad15,4"
|
85 |
+
],
|
86 |
+
"chip": "M3",
|
87 |
+
"ram": "8 GB"
|
88 |
+
},
|
89 |
+
"iPad Air 11-inch (M2)": {
|
90 |
+
"sku": [
|
91 |
+
"iPad14,8",
|
92 |
+
"iPad14,9"
|
93 |
+
],
|
94 |
+
"chip": "M2",
|
95 |
+
"ram": "8 GB"
|
96 |
+
},
|
97 |
+
"iPad Pro (12.9-inch) (6th generation)": {
|
98 |
+
"sku": [
|
99 |
+
"iPad14,5",
|
100 |
+
"iPad14,6"
|
101 |
+
],
|
102 |
+
"chip": "M2",
|
103 |
+
"ram": "8 GB"
|
104 |
+
},
|
105 |
+
"iPad Pro (11-inch) (4th generation)": {
|
106 |
+
"sku": [
|
107 |
+
"iPad14,3",
|
108 |
+
"iPad14,4"
|
109 |
+
],
|
110 |
+
"chip": "M2",
|
111 |
+
"ram": "8 GB"
|
112 |
+
},
|
113 |
+
"iPad mini (6th generation)": {
|
114 |
+
"sku": [
|
115 |
+
"iPad14,1",
|
116 |
+
"iPad14,2"
|
117 |
+
],
|
118 |
+
"chip": "A15",
|
119 |
+
"ram": "4 GB"
|
120 |
+
},
|
121 |
+
"iPad Air 13-inch (M2)": {
|
122 |
+
"sku": [
|
123 |
+
"iPad14,10",
|
124 |
+
"iPad14,11"
|
125 |
+
],
|
126 |
+
"chip": "M2",
|
127 |
+
"ram": "8 GB"
|
128 |
+
},
|
129 |
+
"iPad Pro (12.9-inch) (5th generation)": {
|
130 |
+
"sku": [
|
131 |
+
"iPad13,8",
|
132 |
+
"iPad13,9",
|
133 |
+
"iPad13,10",
|
134 |
+
"iPad13,11"
|
135 |
+
],
|
136 |
+
"chip": "M1",
|
137 |
+
"ram": "8 GB"
|
138 |
+
},
|
139 |
+
"iPad Pro (11-inch) (3rd generation)": {
|
140 |
+
"sku": [
|
141 |
+
"iPad13,4",
|
142 |
+
"iPad13,5",
|
143 |
+
"iPad13,6",
|
144 |
+
"iPad13,7"
|
145 |
+
],
|
146 |
+
"chip": "M1",
|
147 |
+
"ram": "8 GB"
|
148 |
+
},
|
149 |
+
"iPad Air (4th generation)": {
|
150 |
+
"sku": [
|
151 |
+
"iPad13,1",
|
152 |
+
"iPad13,2"
|
153 |
+
],
|
154 |
+
"chip": "A14",
|
155 |
+
"ram": "4 GB"
|
156 |
+
},
|
157 |
+
"iPad (10th generation)": {
|
158 |
+
"sku": [
|
159 |
+
"iPad13,18",
|
160 |
+
"iPad13,19"
|
161 |
+
],
|
162 |
+
"chip": "A14",
|
163 |
+
"ram": "4 GB"
|
164 |
+
},
|
165 |
+
"iPad Air (5th generation)": {
|
166 |
+
"sku": [
|
167 |
+
"iPad13,16",
|
168 |
+
"iPad13,17"
|
169 |
+
],
|
170 |
+
"chip": "M1",
|
171 |
+
"ram": "8 GB"
|
172 |
+
},
|
173 |
+
"iPad (9th generation)": {
|
174 |
+
"sku": [
|
175 |
+
"iPad12,1",
|
176 |
+
"iPad12,2"
|
177 |
+
],
|
178 |
+
"chip": "A13",
|
179 |
+
"ram": "3 GB"
|
180 |
+
},
|
181 |
+
"iPad (8th generation)": {
|
182 |
+
"sku": [
|
183 |
+
"iPad11,6",
|
184 |
+
"iPad11,7"
|
185 |
+
],
|
186 |
+
"chip": "A12",
|
187 |
+
"ram": "3 GB"
|
188 |
+
},
|
189 |
+
"iPad Air (3rd generation)": {
|
190 |
+
"sku": [
|
191 |
+
"iPad11,3",
|
192 |
+
"iPad11,4"
|
193 |
+
],
|
194 |
+
"chip": "A12",
|
195 |
+
"ram": "3 GB"
|
196 |
+
},
|
197 |
+
"iPad mini (5th generation)": {
|
198 |
+
"sku": [
|
199 |
+
"iPad11,1",
|
200 |
+
"iPad11,2"
|
201 |
+
],
|
202 |
+
"chip": "A12",
|
203 |
+
"ram": "3 GB"
|
204 |
+
}
|
205 |
+
}
|
206 |
+
}
|
dashboard_data/iPhone.json
ADDED
@@ -0,0 +1,151 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
1 |
+
{
|
2 |
+
"date_generated": "2025-06-16T15:52:13.069236",
|
3 |
+
"xcode_version": "Developer",
|
4 |
+
"total_menu": {
|
5 |
+
"iPhone 16e": {
|
6 |
+
"sku": "iPhone17,5",
|
7 |
+
"chip": "A18",
|
8 |
+
"ram": "8 GB"
|
9 |
+
},
|
10 |
+
"iPhone 16 Plus": {
|
11 |
+
"sku": "iPhone17,4",
|
12 |
+
"chip": "A18",
|
13 |
+
"ram": "8 GB"
|
14 |
+
},
|
15 |
+
"iPhone 16": {
|
16 |
+
"sku": "iPhone17,3",
|
17 |
+
"chip": "A18",
|
18 |
+
"ram": "8 GB"
|
19 |
+
},
|
20 |
+
"iPhone 16 Pro Max": {
|
21 |
+
"sku": "iPhone17,2",
|
22 |
+
"chip": "A18 Pro",
|
23 |
+
"ram": "8 GB"
|
24 |
+
},
|
25 |
+
"iPhone 16 Pro": {
|
26 |
+
"sku": "iPhone17,1",
|
27 |
+
"chip": "A18 Pro",
|
28 |
+
"ram": "8 GB"
|
29 |
+
},
|
30 |
+
"iPhone 15 Pro Max": {
|
31 |
+
"sku": "iPhone16,2",
|
32 |
+
"chip": "A17 Pro",
|
33 |
+
"ram": "8 GB"
|
34 |
+
},
|
35 |
+
"iPhone 15 Pro": {
|
36 |
+
"sku": "iPhone16,1",
|
37 |
+
"chip": "A17 Pro",
|
38 |
+
"ram": "8 GB"
|
39 |
+
},
|
40 |
+
"iPhone 15 Plus": {
|
41 |
+
"sku": "iPhone15,5",
|
42 |
+
"chip": "A16",
|
43 |
+
"ram": "6 GB"
|
44 |
+
},
|
45 |
+
"iPhone 15": {
|
46 |
+
"sku": "iPhone15,4",
|
47 |
+
"chip": "A16",
|
48 |
+
"ram": "6 GB"
|
49 |
+
},
|
50 |
+
"iPhone 14 Pro Max": {
|
51 |
+
"sku": "iPhone15,3",
|
52 |
+
"chip": "A16",
|
53 |
+
"ram": "6 GB"
|
54 |
+
},
|
55 |
+
"iPhone 14 Pro": {
|
56 |
+
"sku": "iPhone15,2",
|
57 |
+
"chip": "A16",
|
58 |
+
"ram": "6 GB"
|
59 |
+
},
|
60 |
+
"iPhone 14 Plus": {
|
61 |
+
"sku": "iPhone14,8",
|
62 |
+
"chip": "A15",
|
63 |
+
"ram": "6 GB"
|
64 |
+
},
|
65 |
+
"iPhone 14": {
|
66 |
+
"sku": "iPhone14,7",
|
67 |
+
"chip": "A15",
|
68 |
+
"ram": "6 GB"
|
69 |
+
},
|
70 |
+
"iPhone SE (3rd generation)": {
|
71 |
+
"sku": "iPhone14,6",
|
72 |
+
"chip": "A15",
|
73 |
+
"ram": "4 GB"
|
74 |
+
},
|
75 |
+
"iPhone 13": {
|
76 |
+
"sku": "iPhone14,5",
|
77 |
+
"chip": "A15",
|
78 |
+
"ram": "4 GB"
|
79 |
+
},
|
80 |
+
"iPhone 13 mini": {
|
81 |
+
"sku": "iPhone14,4",
|
82 |
+
"chip": "A15",
|
83 |
+
"ram": "4 GB"
|
84 |
+
},
|
85 |
+
"iPhone 13 Pro Max": {
|
86 |
+
"sku": "iPhone14,3",
|
87 |
+
"chip": "A15",
|
88 |
+
"ram": "6 GB"
|
89 |
+
},
|
90 |
+
"iPhone 13 Pro": {
|
91 |
+
"sku": "iPhone14,2",
|
92 |
+
"chip": "A15",
|
93 |
+
"ram": "6 GB"
|
94 |
+
},
|
95 |
+
"iPhone 12 Pro Max": {
|
96 |
+
"sku": "iPhone13,4",
|
97 |
+
"chip": "A14",
|
98 |
+
"ram": "6 GB"
|
99 |
+
},
|
100 |
+
"iPhone 12 Pro": {
|
101 |
+
"sku": "iPhone13,3",
|
102 |
+
"chip": "A14",
|
103 |
+
"ram": "6 GB"
|
104 |
+
},
|
105 |
+
"iPhone 12": {
|
106 |
+
"sku": "iPhone13,2",
|
107 |
+
"chip": "A14",
|
108 |
+
"ram": "4 GB"
|
109 |
+
},
|
110 |
+
"iPhone 12 mini": {
|
111 |
+
"sku": "iPhone13,1",
|
112 |
+
"chip": "A14",
|
113 |
+
"ram": "4 GB"
|
114 |
+
},
|
115 |
+
"iPhone SE (2nd generation)": {
|
116 |
+
"sku": "iPhone12,8",
|
117 |
+
"chip": "A13",
|
118 |
+
"ram": "3 GB"
|
119 |
+
},
|
120 |
+
"iPhone 11 Pro Max": {
|
121 |
+
"sku": "iPhone12,5",
|
122 |
+
"chip": "A13",
|
123 |
+
"ram": "4 GB"
|
124 |
+
},
|
125 |
+
"iPhone 11 Pro": {
|
126 |
+
"sku": "iPhone12,3",
|
127 |
+
"chip": "A13",
|
128 |
+
"ram": "4 GB"
|
129 |
+
},
|
130 |
+
"iPhone 11": {
|
131 |
+
"sku": "iPhone12,1",
|
132 |
+
"chip": "A13",
|
133 |
+
"ram": "4 GB"
|
134 |
+
},
|
135 |
+
"iPhone XR": {
|
136 |
+
"sku": "iPhone11,8",
|
137 |
+
"chip": "A12",
|
138 |
+
"ram": "3 GB"
|
139 |
+
},
|
140 |
+
"iPhone XS Max": {
|
141 |
+
"sku": "iPhone11,4",
|
142 |
+
"chip": "A12",
|
143 |
+
"ram": "4 GB"
|
144 |
+
},
|
145 |
+
"iPhone XS": {
|
146 |
+
"sku": "iPhone11,2",
|
147 |
+
"chip": "A12",
|
148 |
+
"ram": "4 GB"
|
149 |
+
}
|
150 |
+
}
|
151 |
+
}
|
dashboard_data/quality_data.json
ADDED
@@ -0,0 +1,23 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
1 |
+
{"model": "openai/whisper-large-v3/947MB", "timestamp": "2024-10-18_16:59:10_GMT-0700", "average_wer": 9.74, "dataset_wer": {"librispeech": 2.41, "earnings22-12hours": 17.08}, "qoi": 0.94}
|
2 |
+
{"model": "openai/whisper-large-v2/turbo/955MB", "timestamp": "2024-10-18_16:52:35_GMT-0700", "average_wer": 7.27, "dataset_wer": {"librispeech": 2.4, "earnings22-12hours": 12.14}, "qoi": 0.94}
|
3 |
+
{"model": "openai/whisper-tiny.en", "timestamp": "2024-10-19_15:40:06_GMT-0700", "average_wer": 12.23, "dataset_wer": {"librispeech": 5.61, "earnings22-12hours": 18.86}, "qoi": 0.63}
|
4 |
+
{"model": "distil-whisper/distil-large-v3/594MB", "timestamp": "2024-10-20_13:02:33_GMT-0700", "average_wer": 8.96, "dataset_wer": {"librispeech": 2.87, "earnings22-12hours": 15.06}, "qoi": 0.86}
|
5 |
+
{"model": "openai/whisper-large-v2/949MB", "timestamp": "2024-10-18_19:51:30_GMT-0400", "average_wer": 7.88, "dataset_wer": {"librispeech": 2.38, "earnings22-12hours": 13.39}, "qoi": 0.94}
|
6 |
+
{"model": "openai/whisper-large-v3/turbo/954MB", "timestamp": "2024-10-20_13:49:26_GMT-0700", "average_wer": 22.75, "dataset_wer": {"librispeech": 2.51, "earnings22-12hours": 43.0}, "qoi": 0.93}
|
7 |
+
{"model": "distil-whisper/distil-large-v3", "timestamp": "2024-10-20_20:32:22_GMT-0700", "average_wer": 7.2, "dataset_wer": {"librispeech": 2.38, "earnings22-12hours": 12.02}, "qoi": 0.9}
|
8 |
+
{"model": "openai/whisper-large-v3-v20240930", "timestamp": "2024-10-18_18:35:46_GMT-0700", "average_wer": 6.74, "dataset_wer": {"librispeech": 1.93, "earnings22-12hours": 11.55}, "qoi": 0.94}
|
9 |
+
{"model": "openai/whisper-tiny", "timestamp": "2024-10-20_20:19:04_GMT-0700", "average_wer": 14.21, "dataset_wer": {"librispeech": 7.46, "earnings22-12hours": 20.97}, "qoi": 0.52}
|
10 |
+
{"model": "openai/whisper-large-v3-v20240930/turbo/632MB", "timestamp": "2024-10-18_20:10:30_GMT-0700", "average_wer": 6.86, "dataset_wer": {"librispeech": 1.95, "earnings22-12hours": 11.77}, "qoi": 0.93}
|
11 |
+
{"model": "openai/whisper-large-v2/turbo", "timestamp": "2024-10-18_14:58:38_GMT-0700", "average_wer": 7.25, "dataset_wer": {"librispeech": 2.4, "earnings22-12hours": 12.1}, "qoi": 0.96}
|
12 |
+
{"model": "openai/whisper-small", "timestamp": "2024-10-18_12:40:03_GMT-0700", "average_wer": 8.11, "dataset_wer": {"librispeech": 3.21, "earnings22-12hours": 13.0}, "qoi": 0.83}
|
13 |
+
{"model": "openai/whisper-large-v3-v20240930/turbo", "timestamp": "2024-10-18_19:37:26_GMT-0700", "average_wer": 6.72, "dataset_wer": {"librispeech": 1.92, "earnings22-12hours": 11.52}, "qoi": 0.94}
|
14 |
+
{"model": "openai/whisper-large-v3", "timestamp": "2024-10-18_18:01:14_GMT-0400", "average_wer": 6.85, "dataset_wer": {"librispeech": 2.02, "earnings22-12hours": 11.69}, "qoi": 0.95}
|
15 |
+
{"model": "openai/whisper-large-v3-v20240930/626MB", "timestamp": "2024-10-18_19:21:06_GMT-0700", "average_wer": 7.15, "dataset_wer": {"librispeech": 1.96, "earnings22-12hours": 12.35}, "qoi": 0.93}
|
16 |
+
{"model": "openai/whisper-base.en", "timestamp": "2024-10-20_12:31:44_GMT-0700", "average_wer": 9.59, "dataset_wer": {"librispeech": 3.98, "earnings22-12hours": 15.2}, "qoi": 0.75}
|
17 |
+
{"model": "openai/whisper-large-v3-v20240930/547MB", "timestamp": "2024-10-18_21:59:11_GMT-0400", "average_wer": 16.82, "dataset_wer": {"librispeech": 2.16, "earnings22-12hours": 31.49}, "qoi": 0.92}
|
18 |
+
{"model": "distil-whisper/distil-large-v3/turbo/600MB", "timestamp": "2024-10-18_17:50:17_GMT-0700", "average_wer": 8.33, "dataset_wer": {"librispeech": 2.8, "earnings22-12hours": 13.87}, "qoi": 0.86}
|
19 |
+
{"model": "openai/whisper-large-v2", "timestamp": "2024-10-18_17:07:15_GMT-0400", "average_wer": 7.32, "dataset_wer": {"librispeech": 2.36, "earnings22-12hours": 12.28}, "qoi": 0.97}
|
20 |
+
{"model": "openai/whisper-small.en", "timestamp": "2024-10-18_15:39:48_GMT-0400", "average_wer": 7.85, "dataset_wer": {"librispeech": 2.88, "earnings22-12hours": 12.82}, "qoi": 0.86}
|
21 |
+
{"model": "distil-whisper/distil-large-v3/turbo", "timestamp": "2024-10-20_12:45:20_GMT-0700", "average_wer": 7.2, "dataset_wer": {"librispeech": 2.35, "earnings22-12hours": 12.05}, "qoi": 0.9}
|
22 |
+
{"model": "openai/whisper-base", "timestamp": "2024-10-18_20:25:50_GMT-0700", "average_wer": 10.67, "dataset_wer": {"librispeech": 4.94, "earnings22-12hours": 16.4}, "qoi": 0.67}
|
23 |
+
{"model": "openai/whisper-large-v3/turbo", "timestamp": "2024-10-20_16:58:25_GMT-0400", "average_wer": 6.86, "dataset_wer": {"librispeech": 1.97, "earnings22-12hours": 11.74}, "qoi": 0.95}
|
dashboard_data/support_data_11a1fab.csv
CHANGED
@@ -1,21 +1,21 @@
|
|
1 |
,Model,"Apple M4 (Mac16,10)","iPad (10th generation) (iPad13,18)","iPad Air 11-inch (M3) (iPad15,3)","iPad (A16) (iPad15,7)","iPad mini (A17 Pro) (iPad16,1)"
|
2 |
-
distil-whisper_distil-large-v3,distil-whisper_distil-large-v3,✅ macOS 15.4,Not Supported,✅ iPadOS 18.3.2
|
3 |
distil-whisper_distil-large-v3_594MB,distil-whisper_distil-large-v3_594MB,✅ macOS 15.4,Not Supported,✅ iPadOS 18.3.2,✅ iPadOS 18.4,✅ iPadOS 18.4
|
4 |
-
distil-whisper_distil-large-v3_turbo,distil-whisper_distil-large-v3_turbo,✅ macOS 15.4,Not Supported,⚠️ <a style='color: #3B82F6; text-decoration: underline; text-decoration-style: dotted;' href=https://huggingface.co/datasets/argmaxinc/whisperkit-evals-dataset/blob/main/benchmark_data/2025-04-15T183244_11a1fab/iPad15%2C3_summary_2025-04-16T013539.json>iPadOS 18.3.2</a
|
5 |
distil-whisper_distil-large-v3_turbo_600MB,distil-whisper_distil-large-v3_turbo_600MB,✅ macOS 15.4,Not Supported,✅ iPadOS 18.3.2,✅ iPadOS 18.4,✅ iPadOS 18.4
|
6 |
openai_whisper-base,openai_whisper-base,✅ macOS 15.4,✅ iPadOS 18.4,✅ iPadOS 18.3.2,✅ iPadOS 18.4,✅ iPadOS 18.4
|
7 |
openai_whisper-base.en,openai_whisper-base.en,✅ macOS 15.4,✅ iPadOS 18.4,✅ iPadOS 18.3.2,✅ iPadOS 18.4,✅ iPadOS 18.4
|
8 |
-
openai_whisper-large-v2,openai_whisper-large-v2,✅ macOS 15.4,Not Supported,✅ iPadOS 18.3.2
|
9 |
openai_whisper-large-v2_949MB,openai_whisper-large-v2_949MB,✅ macOS 15.4,Not Supported,✅ iPadOS 18.3.2,✅ iPadOS 18.4,✅ iPadOS 18.4
|
10 |
-
openai_whisper-large-v2_turbo,openai_whisper-large-v2_turbo,✅ macOS 15.4,Not Supported,✅ iPadOS 18.3.2
|
11 |
openai_whisper-large-v2_turbo_955MB,openai_whisper-large-v2_turbo_955MB,✅ macOS 15.4,Not Supported,✅ iPadOS 18.3.2,✅ iPadOS 18.4,✅ iPadOS 18.4
|
12 |
-
openai_whisper-large-v3,openai_whisper-large-v3,✅ macOS 15.4,Not Supported,✅ iPadOS 18.3.2
|
13 |
-
openai_whisper-large-v3-v20240930,openai_whisper-large-v3-v20240930,✅ macOS 15.4,Not Supported,? iPadOS 18.3.2
|
14 |
openai_whisper-large-v3-v20240930_626MB,openai_whisper-large-v3-v20240930_626MB,✅ macOS 15.4,Not Supported,✅ iPadOS 18.3.2,✅ iPadOS 18.4,✅ iPadOS 18.4
|
15 |
-
openai_whisper-large-v3-v20240930_turbo,openai_whisper-large-v3-v20240930_turbo,✅ macOS 15.4,Not Supported,⚠️ <a style='color: #3B82F6; text-decoration: underline; text-decoration-style: dotted;' href=https://huggingface.co/datasets/argmaxinc/whisperkit-evals-dataset/blob/main/benchmark_data/2025-04-15T183244_11a1fab/iPad15%2C3_summary_2025-04-16T013539.json>iPadOS 18.3.2</a
|
16 |
openai_whisper-large-v3-v20240930_turbo_632MB,openai_whisper-large-v3-v20240930_turbo_632MB,✅ macOS 15.4,Not Supported,✅ iPadOS 18.3.2,✅ iPadOS 18.4,✅ iPadOS 18.4
|
17 |
openai_whisper-large-v3_947MB,openai_whisper-large-v3_947MB,✅ macOS 15.4,Not Supported,⚠️ <a style='color: #3B82F6; text-decoration: underline; text-decoration-style: dotted;' href=https://huggingface.co/datasets/argmaxinc/whisperkit-evals-dataset/blob/main/benchmark_data/2025-04-15T183244_11a1fab/iPad15%2C3_summary_2025-04-16T013539.json>iPadOS 18.3.2</a>,✅ iPadOS 18.4,✅ iPadOS 18.4
|
18 |
-
openai_whisper-large-v3_turbo,openai_whisper-large-v3_turbo,✅ macOS 15.4,Not Supported,⚠️ <a style='color: #3B82F6; text-decoration: underline; text-decoration-style: dotted;' href=https://huggingface.co/datasets/argmaxinc/whisperkit-evals-dataset/blob/main/benchmark_data/2025-04-15T183244_11a1fab/iPad15%2C3_summary_2025-04-16T013539.json>iPadOS 18.3.2</a
|
19 |
openai_whisper-large-v3_turbo_954MB,openai_whisper-large-v3_turbo_954MB,✅ macOS 15.4,Not Supported,✅ iPadOS 18.3.2,✅ iPadOS 18.4,✅ iPadOS 18.4
|
20 |
openai_whisper-small,openai_whisper-small,✅ macOS 15.4,✅ iPadOS 18.4,✅ iPadOS 18.3.2,✅ iPadOS 18.4,✅ iPadOS 18.4
|
21 |
openai_whisper-small.en,openai_whisper-small.en,✅ macOS 15.4,✅ iPadOS 18.4,✅ iPadOS 18.3.2,✅ iPadOS 18.4,✅ iPadOS 18.4
|
|
|
1 |
,Model,"Apple M4 (Mac16,10)","iPad (10th generation) (iPad13,18)","iPad Air 11-inch (M3) (iPad15,3)","iPad (A16) (iPad15,7)","iPad mini (A17 Pro) (iPad16,1)"
|
2 |
+
distil-whisper_distil-large-v3,distil-whisper_distil-large-v3,✅ macOS 15.4,Not Supported,✅ iPadOS 18.3.2,Not Supported,Not Supported
|
3 |
distil-whisper_distil-large-v3_594MB,distil-whisper_distil-large-v3_594MB,✅ macOS 15.4,Not Supported,✅ iPadOS 18.3.2,✅ iPadOS 18.4,✅ iPadOS 18.4
|
4 |
+
distil-whisper_distil-large-v3_turbo,distil-whisper_distil-large-v3_turbo,✅ macOS 15.4,Not Supported,⚠️ <a style='color: #3B82F6; text-decoration: underline; text-decoration-style: dotted;' href=https://huggingface.co/datasets/argmaxinc/whisperkit-evals-dataset/blob/main/benchmark_data/2025-04-15T183244_11a1fab/iPad15%2C3_summary_2025-04-16T013539.json>iPadOS 18.3.2</a>,Not Supported,Not Supported
|
5 |
distil-whisper_distil-large-v3_turbo_600MB,distil-whisper_distil-large-v3_turbo_600MB,✅ macOS 15.4,Not Supported,✅ iPadOS 18.3.2,✅ iPadOS 18.4,✅ iPadOS 18.4
|
6 |
openai_whisper-base,openai_whisper-base,✅ macOS 15.4,✅ iPadOS 18.4,✅ iPadOS 18.3.2,✅ iPadOS 18.4,✅ iPadOS 18.4
|
7 |
openai_whisper-base.en,openai_whisper-base.en,✅ macOS 15.4,✅ iPadOS 18.4,✅ iPadOS 18.3.2,✅ iPadOS 18.4,✅ iPadOS 18.4
|
8 |
+
openai_whisper-large-v2,openai_whisper-large-v2,✅ macOS 15.4,Not Supported,✅ iPadOS 18.3.2,Not Supported,Not Supported
|
9 |
openai_whisper-large-v2_949MB,openai_whisper-large-v2_949MB,✅ macOS 15.4,Not Supported,✅ iPadOS 18.3.2,✅ iPadOS 18.4,✅ iPadOS 18.4
|
10 |
+
openai_whisper-large-v2_turbo,openai_whisper-large-v2_turbo,✅ macOS 15.4,Not Supported,✅ iPadOS 18.3.2,Not Supported,Not Supported
|
11 |
openai_whisper-large-v2_turbo_955MB,openai_whisper-large-v2_turbo_955MB,✅ macOS 15.4,Not Supported,✅ iPadOS 18.3.2,✅ iPadOS 18.4,✅ iPadOS 18.4
|
12 |
+
openai_whisper-large-v3,openai_whisper-large-v3,✅ macOS 15.4,Not Supported,✅ iPadOS 18.3.2,Not Supported,Not Supported
|
13 |
+
openai_whisper-large-v3-v20240930,openai_whisper-large-v3-v20240930,✅ macOS 15.4,Not Supported,? iPadOS 18.3.2,Not Supported,Not Supported
|
14 |
openai_whisper-large-v3-v20240930_626MB,openai_whisper-large-v3-v20240930_626MB,✅ macOS 15.4,Not Supported,✅ iPadOS 18.3.2,✅ iPadOS 18.4,✅ iPadOS 18.4
|
15 |
+
openai_whisper-large-v3-v20240930_turbo,openai_whisper-large-v3-v20240930_turbo,✅ macOS 15.4,Not Supported,⚠️ <a style='color: #3B82F6; text-decoration: underline; text-decoration-style: dotted;' href=https://huggingface.co/datasets/argmaxinc/whisperkit-evals-dataset/blob/main/benchmark_data/2025-04-15T183244_11a1fab/iPad15%2C3_summary_2025-04-16T013539.json>iPadOS 18.3.2</a>,Not Supported,Not Supported
|
16 |
openai_whisper-large-v3-v20240930_turbo_632MB,openai_whisper-large-v3-v20240930_turbo_632MB,✅ macOS 15.4,Not Supported,✅ iPadOS 18.3.2,✅ iPadOS 18.4,✅ iPadOS 18.4
|
17 |
openai_whisper-large-v3_947MB,openai_whisper-large-v3_947MB,✅ macOS 15.4,Not Supported,⚠️ <a style='color: #3B82F6; text-decoration: underline; text-decoration-style: dotted;' href=https://huggingface.co/datasets/argmaxinc/whisperkit-evals-dataset/blob/main/benchmark_data/2025-04-15T183244_11a1fab/iPad15%2C3_summary_2025-04-16T013539.json>iPadOS 18.3.2</a>,✅ iPadOS 18.4,✅ iPadOS 18.4
|
18 |
+
openai_whisper-large-v3_turbo,openai_whisper-large-v3_turbo,✅ macOS 15.4,Not Supported,⚠️ <a style='color: #3B82F6; text-decoration: underline; text-decoration-style: dotted;' href=https://huggingface.co/datasets/argmaxinc/whisperkit-evals-dataset/blob/main/benchmark_data/2025-04-15T183244_11a1fab/iPad15%2C3_summary_2025-04-16T013539.json>iPadOS 18.3.2</a>,Not Supported,Not Supported
|
19 |
openai_whisper-large-v3_turbo_954MB,openai_whisper-large-v3_turbo_954MB,✅ macOS 15.4,Not Supported,✅ iPadOS 18.3.2,✅ iPadOS 18.4,✅ iPadOS 18.4
|
20 |
openai_whisper-small,openai_whisper-small,✅ macOS 15.4,✅ iPadOS 18.4,✅ iPadOS 18.3.2,✅ iPadOS 18.4,✅ iPadOS 18.4
|
21 |
openai_whisper-small.en,openai_whisper-small.en,✅ macOS 15.4,✅ iPadOS 18.4,✅ iPadOS 18.3.2,✅ iPadOS 18.4,✅ iPadOS 18.4
|
dashboard_data/support_data_8c0acbd.csv
CHANGED
@@ -1,22 +1,22 @@
|
|
1 |
,Model,"Apple M2 Pro (Mac14,12)","Apple M3 Max (Mac15,10)","iPad Air (5th generation) (iPad13,16)","iPad Pro (11-inch) (3rd generation) (iPad13,6)","iPad mini (6th generation) (iPad14,1)","iPad Air 11-inch (M2) (iPad14,8)","iPad Air 11-inch (M3) (iPad15,3)","iPad (A16) (iPad15,7)","iPad mini (A17 Pro) (iPad16,1)","iPad Pro 11-inch (M4) (iPad16,3)","iPhone 11 (iPhone12,1)","iPhone 12 mini (iPhone13,1)","iPhone 13 Pro (iPhone14,2)","iPhone 13 (iPhone14,5)","iPhone 14 (iPhone14,7)","iPhone 15 (iPhone15,4)","iPhone 15 Pro Max (iPhone16,2)","iPhone 16 (iPhone17,3)","iPhone 16e (iPhone17,5)"
|
2 |
-
distil-whisper_distil-large-v3,distil-whisper_distil-large-v3,✅ macOS 15.5,✅ macOS 15.5,Not Supported,⚠️ <a style='color: #3B82F6; text-decoration: underline; text-decoration-style: dotted;' href=https://huggingface.co/datasets/argmaxinc/whisperkit-evals-dataset/blob/main/benchmark_data/2025-06-13T034257_8c0acbd/iPad13%2C6_summary_2025-06-17T205025.json>iPadOS 18.4</a>,Not Supported,✅ iPadOS 18.5,✅ iPadOS 26.0
|
3 |
distil-whisper_distil-large-v3_594MB,distil-whisper_distil-large-v3_594MB,✅ macOS 15.5,✅ macOS 15.5,Not Supported,✅ iPadOS 18.4,✅ iPadOS 18.4,✅ iPadOS 18.5,✅ iPadOS 26.0,✅ iPadOS 18.4,✅ iPadOS 18.4,✅ iPadOS 18.4.1,Not Supported,Not Supported,✅ iOS 18.1,✅ iOS 18.5,✅ iOS 18.5,✅ iOS 18.5,✅ iOS 18.5,✅ iOS 18.4.1,✅ iOS 18.5
|
4 |
-
distil-whisper_distil-large-v3_turbo,distil-whisper_distil-large-v3_turbo,✅ macOS 15.5,✅ macOS 15.5,Not Supported
|
5 |
-
distil-whisper_distil-large-v3_turbo_600MB,distil-whisper_distil-large-v3_turbo_600MB,✅ macOS 15.5,✅ macOS 15.5,Not Supported
|
6 |
openai_whisper-base,openai_whisper-base,✅ macOS 15.5,✅ macOS 15.5,✅ iPadOS 18.4.1,✅ iPadOS 18.4,✅ iPadOS 18.4,✅ iPadOS 18.5,✅ iPadOS 26.0,✅ iPadOS 18.4,✅ iPadOS 18.4,✅ iPadOS 18.4.1,✅ iOS 26.0,✅ iOS 18.4.1,✅ iOS 18.1,✅ iOS 18.5,✅ iOS 18.5,✅ iOS 18.5,✅ iOS 18.5,✅ iOS 18.4.1,✅ iOS 18.5
|
7 |
openai_whisper-base.en,openai_whisper-base.en,✅ macOS 15.5,✅ macOS 15.5,✅ iPadOS 18.4.1,✅ iPadOS 18.4,✅ iPadOS 18.4,✅ iPadOS 18.5,✅ iPadOS 26.0,✅ iPadOS 18.4,✅ iPadOS 18.4,✅ iPadOS 18.4.1,✅ iOS 26.0,✅ iOS 18.4.1,✅ iOS 18.1,✅ iOS 18.5,✅ iOS 18.5,✅ iOS 18.5,✅ iOS 18.5,✅ iOS 18.4.1,✅ iOS 18.5
|
8 |
-
openai_whisper-large-v2,openai_whisper-large-v2,✅ macOS 15.5,✅ macOS 15.5,Not Supported,⚠️ <a style='color: #3B82F6; text-decoration: underline; text-decoration-style: dotted;' href=https://huggingface.co/datasets/argmaxinc/whisperkit-evals-dataset/blob/main/benchmark_data/2025-06-13T034257_8c0acbd/iPad13%2C6_summary_2025-06-17T205025.json>iPadOS 18.4</a>,Not Supported,✅ iPadOS 18.5,✅ iPadOS 26.0
|
9 |
openai_whisper-large-v2_949MB,openai_whisper-large-v2_949MB,✅ macOS 15.5,✅ macOS 15.5,Not Supported,✅ iPadOS 18.4,✅ iPadOS 18.4,✅ iPadOS 18.5,⚠️ <a style='color: #3B82F6; text-decoration: underline; text-decoration-style: dotted;' href=https://huggingface.co/datasets/argmaxinc/whisperkit-evals-dataset/blob/main/benchmark_data/2025-06-13T034257_8c0acbd/iPad15%2C3_summary_2025-06-17T205025.json>iPadOS 26.0</a>,✅ iPadOS 18.4,✅ iPadOS 18.4,✅ iPadOS 18.4.1,Not Supported,Not Supported,✅ iOS 18.1,✅ iOS 18.5,✅ iOS 18.5,✅ iOS 18.5,✅ iOS 18.5,✅ iOS 18.4.1,✅ iOS 18.5
|
10 |
-
openai_whisper-large-v2_turbo,openai_whisper-large-v2_turbo,✅ macOS 15.5,✅ macOS 15.5,Not Supported
|
11 |
-
openai_whisper-large-v2_turbo_955MB,openai_whisper-large-v2_turbo_955MB,✅ macOS 15.5,✅ macOS 15.5,Not Supported
|
12 |
-
openai_whisper-large-v3,openai_whisper-large-v3,✅ macOS 15.5,✅ macOS 15.5,Not Supported,⚠️ <a style='color: #3B82F6; text-decoration: underline; text-decoration-style: dotted;' href=https://huggingface.co/datasets/argmaxinc/whisperkit-evals-dataset/blob/main/benchmark_data/2025-06-13T034257_8c0acbd/iPad13%2C6_summary_2025-06-17T205025.json>iPadOS 18.4</a>,Not Supported,⚠️ <a style='color: #3B82F6; text-decoration: underline; text-decoration-style: dotted;' href=https://huggingface.co/datasets/argmaxinc/whisperkit-evals-dataset/blob/main/benchmark_data/2025-06-13T034257_8c0acbd/iPad14%2C8_summary_2025-06-16T192343.json>iPadOS 18.5</a>,⚠️ <a style='color: #3B82F6; text-decoration: underline; text-decoration-style: dotted;' href=https://huggingface.co/datasets/argmaxinc/whisperkit-evals-dataset/blob/main/benchmark_data/2025-06-13T034257_8c0acbd/iPad15%2C3_summary_2025-06-17T205025.json>iPadOS 26.0</a
|
13 |
-
openai_whisper-large-v3-v20240930,openai_whisper-large-v3-v20240930,✅ macOS 15.5,⚠️ <a style='color: #3B82F6; text-decoration: underline; text-decoration-style: dotted;' href=https://huggingface.co/datasets/argmaxinc/whisperkit-evals-dataset/blob/main/benchmark_data/2025-06-13T034257_8c0acbd/Mac15%2C10_summary_2025-06-15T230300.json>macOS 15.5</a>,Not Supported,⚠️ <a style='color: #3B82F6; text-decoration: underline; text-decoration-style: dotted;' href=https://huggingface.co/datasets/argmaxinc/whisperkit-evals-dataset/blob/main/benchmark_data/2025-06-13T034257_8c0acbd/iPad13%2C6_summary_2025-06-17T205025.json>iPadOS 18.4</a>,Not Supported,? iPadOS 18.5,? iPadOS 26.0
|
14 |
openai_whisper-large-v3-v20240930_626MB,openai_whisper-large-v3-v20240930_626MB,✅ macOS 15.5,✅ macOS 15.5,Not Supported,✅ iPadOS 18.4,✅ iPadOS 18.4,✅ iPadOS 18.5,✅ iPadOS 26.0,✅ iPadOS 18.4,✅ iPadOS 18.4,⚠️ <a style='color: #3B82F6; text-decoration: underline; text-decoration-style: dotted;' href=https://huggingface.co/datasets/argmaxinc/whisperkit-evals-dataset/blob/main/benchmark_data/2025-06-13T034257_8c0acbd/iPad16%2C3_summary_2025-06-16T220810.json>iPadOS 18.4.1</a>,Not Supported,Not Supported,✅ iOS 18.1,✅ iOS 18.5,✅ iOS 18.5,✅ iOS 18.5,✅ iOS 18.5,✅ iOS 18.4.1,✅ iOS 18.5
|
15 |
-
openai_whisper-large-v3-v20240930_turbo,openai_whisper-large-v3-v20240930_turbo,✅ macOS 15.5,✅ macOS 15.5,Not Supported
|
16 |
-
openai_whisper-large-v3-v20240930_turbo_632MB,openai_whisper-large-v3-v20240930_turbo_632MB,✅ macOS 15.5,✅ macOS 15.5,Not Supported
|
17 |
openai_whisper-large-v3_947MB,openai_whisper-large-v3_947MB,✅ macOS 15.5,✅ macOS 15.5,Not Supported,✅ iPadOS 18.4,✅ iPadOS 18.4,✅ iPadOS 18.5,⚠️ <a style='color: #3B82F6; text-decoration: underline; text-decoration-style: dotted;' href=https://huggingface.co/datasets/argmaxinc/whisperkit-evals-dataset/blob/main/benchmark_data/2025-06-13T034257_8c0acbd/iPad15%2C3_summary_2025-06-17T205025.json>iPadOS 26.0</a>,✅ iPadOS 18.4,✅ iPadOS 18.4,✅ iPadOS 18.4.1,Not Supported,Not Supported,✅ iOS 18.1,✅ iOS 18.5,✅ iOS 18.5,✅ iOS 18.5,✅ iOS 18.5,✅ iOS 18.4.1,✅ iOS 18.5
|
18 |
-
openai_whisper-large-v3_turbo,openai_whisper-large-v3_turbo,✅ macOS 15.5,✅ macOS 15.5,Not Supported
|
19 |
-
openai_whisper-large-v3_turbo_954MB,openai_whisper-large-v3_turbo_954MB,✅ macOS 15.5,✅ macOS 15.5,Not Supported
|
20 |
openai_whisper-small,openai_whisper-small,✅ macOS 15.5,✅ macOS 15.5,✅ iPadOS 18.4.1,✅ iPadOS 18.4,✅ iPadOS 18.4,✅ iPadOS 18.5,✅ iPadOS 26.0,✅ iPadOS 18.4,✅ iPadOS 18.4,✅ iPadOS 18.4.1,Not Supported,✅ iOS 18.4.1,✅ iOS 18.1,✅ iOS 18.5,✅ iOS 18.5,✅ iOS 18.5,✅ iOS 18.5,✅ iOS 18.4.1,✅ iOS 18.5
|
21 |
openai_whisper-small.en,openai_whisper-small.en,✅ macOS 15.5,✅ macOS 15.5,✅ iPadOS 18.4.1,✅ iPadOS 18.4,✅ iPadOS 18.4,✅ iPadOS 18.5,✅ iPadOS 26.0,✅ iPadOS 18.4,✅ iPadOS 18.4,✅ iPadOS 18.4.1,Not Supported,✅ iOS 18.4.1,✅ iOS 18.1,✅ iOS 18.5,✅ iOS 18.5,✅ iOS 18.5,✅ iOS 18.5,✅ iOS 18.4.1,✅ iOS 18.5
|
22 |
openai_whisper-tiny,openai_whisper-tiny,✅ macOS 15.5,✅ macOS 15.5,✅ iPadOS 18.4.1,✅ iPadOS 18.4,✅ iPadOS 18.4,✅ iPadOS 18.5,✅ iPadOS 26.0,✅ iPadOS 18.4,✅ iPadOS 18.4,✅ iPadOS 18.4.1,✅ iOS 26.0,✅ iOS 18.4.1,✅ iOS 18.1,✅ iOS 18.5,✅ iOS 18.5,✅ iOS 18.5,✅ iOS 18.5,✅ iOS 18.4.1,✅ iOS 18.5
|
|
|
1 |
,Model,"Apple M2 Pro (Mac14,12)","Apple M3 Max (Mac15,10)","iPad Air (5th generation) (iPad13,16)","iPad Pro (11-inch) (3rd generation) (iPad13,6)","iPad mini (6th generation) (iPad14,1)","iPad Air 11-inch (M2) (iPad14,8)","iPad Air 11-inch (M3) (iPad15,3)","iPad (A16) (iPad15,7)","iPad mini (A17 Pro) (iPad16,1)","iPad Pro 11-inch (M4) (iPad16,3)","iPhone 11 (iPhone12,1)","iPhone 12 mini (iPhone13,1)","iPhone 13 Pro (iPhone14,2)","iPhone 13 (iPhone14,5)","iPhone 14 (iPhone14,7)","iPhone 15 (iPhone15,4)","iPhone 15 Pro Max (iPhone16,2)","iPhone 16 (iPhone17,3)","iPhone 16e (iPhone17,5)"
|
2 |
+
distil-whisper_distil-large-v3,distil-whisper_distil-large-v3,✅ macOS 15.5,✅ macOS 15.5,Not Supported,⚠️ <a style='color: #3B82F6; text-decoration: underline; text-decoration-style: dotted;' href=https://huggingface.co/datasets/argmaxinc/whisperkit-evals-dataset/blob/main/benchmark_data/2025-06-13T034257_8c0acbd/iPad13%2C6_summary_2025-06-17T205025.json>iPadOS 18.4</a>,Not Supported,✅ iPadOS 18.5,✅ iPadOS 26.0,Not Supported,Not Supported,✅ iPadOS 18.4.1,Not Supported,Not Supported,Not Supported,Not Supported,Not Supported,Not Supported,Not Supported,Not Supported,Not Supported
|
3 |
distil-whisper_distil-large-v3_594MB,distil-whisper_distil-large-v3_594MB,✅ macOS 15.5,✅ macOS 15.5,Not Supported,✅ iPadOS 18.4,✅ iPadOS 18.4,✅ iPadOS 18.5,✅ iPadOS 26.0,✅ iPadOS 18.4,✅ iPadOS 18.4,✅ iPadOS 18.4.1,Not Supported,Not Supported,✅ iOS 18.1,✅ iOS 18.5,✅ iOS 18.5,✅ iOS 18.5,✅ iOS 18.5,✅ iOS 18.4.1,✅ iOS 18.5
|
4 |
+
distil-whisper_distil-large-v3_turbo,distil-whisper_distil-large-v3_turbo,✅ macOS 15.5,✅ macOS 15.5,Not Supported,Not Supported,Not Supported,⚠️ <a style='color: #3B82F6; text-decoration: underline; text-decoration-style: dotted;' href=https://huggingface.co/datasets/argmaxinc/whisperkit-evals-dataset/blob/main/benchmark_data/2025-06-13T034257_8c0acbd/iPad14%2C8_summary_2025-06-16T192343.json>iPadOS 18.5</a>,⚠️ <a style='color: #3B82F6; text-decoration: underline; text-decoration-style: dotted;' href=https://huggingface.co/datasets/argmaxinc/whisperkit-evals-dataset/blob/main/benchmark_data/2025-06-13T034257_8c0acbd/iPad15%2C3_summary_2025-06-17T205025.json>iPadOS 26.0</a>,Not Supported,Not Supported,⚠️ <a style='color: #3B82F6; text-decoration: underline; text-decoration-style: dotted;' href=https://huggingface.co/datasets/argmaxinc/whisperkit-evals-dataset/blob/main/benchmark_data/2025-06-13T034257_8c0acbd/iPad16%2C3_summary_2025-06-16T220810.json>iPadOS 18.4.1</a>,Not Supported,Not Supported,Not Supported,Not Supported,Not Supported,Not Supported,Not Supported,Not Supported,Not Supported
|
5 |
+
distil-whisper_distil-large-v3_turbo_600MB,distil-whisper_distil-large-v3_turbo_600MB,✅ macOS 15.5,✅ macOS 15.5,Not Supported,Not Supported,✅ iPadOS 18.4,✅ iPadOS 18.5,✅ iPadOS 26.0,✅ iPadOS 18.4,✅ iPadOS 18.4,✅ iPadOS 18.4.1,Not Supported,Not Supported,✅ iOS 18.1,✅ iOS 18.5,✅ iOS 18.5,✅ iOS 18.5,✅ iOS 18.5,✅ iOS 18.4.1,✅ iOS 18.5
|
6 |
openai_whisper-base,openai_whisper-base,✅ macOS 15.5,✅ macOS 15.5,✅ iPadOS 18.4.1,✅ iPadOS 18.4,✅ iPadOS 18.4,✅ iPadOS 18.5,✅ iPadOS 26.0,✅ iPadOS 18.4,✅ iPadOS 18.4,✅ iPadOS 18.4.1,✅ iOS 26.0,✅ iOS 18.4.1,✅ iOS 18.1,✅ iOS 18.5,✅ iOS 18.5,✅ iOS 18.5,✅ iOS 18.5,✅ iOS 18.4.1,✅ iOS 18.5
|
7 |
openai_whisper-base.en,openai_whisper-base.en,✅ macOS 15.5,✅ macOS 15.5,✅ iPadOS 18.4.1,✅ iPadOS 18.4,✅ iPadOS 18.4,✅ iPadOS 18.5,✅ iPadOS 26.0,✅ iPadOS 18.4,✅ iPadOS 18.4,✅ iPadOS 18.4.1,✅ iOS 26.0,✅ iOS 18.4.1,✅ iOS 18.1,✅ iOS 18.5,✅ iOS 18.5,✅ iOS 18.5,✅ iOS 18.5,✅ iOS 18.4.1,✅ iOS 18.5
|
8 |
+
openai_whisper-large-v2,openai_whisper-large-v2,✅ macOS 15.5,✅ macOS 15.5,Not Supported,⚠️ <a style='color: #3B82F6; text-decoration: underline; text-decoration-style: dotted;' href=https://huggingface.co/datasets/argmaxinc/whisperkit-evals-dataset/blob/main/benchmark_data/2025-06-13T034257_8c0acbd/iPad13%2C6_summary_2025-06-17T205025.json>iPadOS 18.4</a>,Not Supported,✅ iPadOS 18.5,✅ iPadOS 26.0,Not Supported,Not Supported,⚠️ <a style='color: #3B82F6; text-decoration: underline; text-decoration-style: dotted;' href=https://huggingface.co/datasets/argmaxinc/whisperkit-evals-dataset/blob/main/benchmark_data/2025-06-13T034257_8c0acbd/iPad16%2C3_summary_2025-06-16T220810.json>iPadOS 18.4.1</a>,Not Supported,Not Supported,Not Supported,Not Supported,Not Supported,Not Supported,Not Supported,Not Supported,Not Supported
|
9 |
openai_whisper-large-v2_949MB,openai_whisper-large-v2_949MB,✅ macOS 15.5,✅ macOS 15.5,Not Supported,✅ iPadOS 18.4,✅ iPadOS 18.4,✅ iPadOS 18.5,⚠️ <a style='color: #3B82F6; text-decoration: underline; text-decoration-style: dotted;' href=https://huggingface.co/datasets/argmaxinc/whisperkit-evals-dataset/blob/main/benchmark_data/2025-06-13T034257_8c0acbd/iPad15%2C3_summary_2025-06-17T205025.json>iPadOS 26.0</a>,✅ iPadOS 18.4,✅ iPadOS 18.4,✅ iPadOS 18.4.1,Not Supported,Not Supported,✅ iOS 18.1,✅ iOS 18.5,✅ iOS 18.5,✅ iOS 18.5,✅ iOS 18.5,✅ iOS 18.4.1,✅ iOS 18.5
|
10 |
+
openai_whisper-large-v2_turbo,openai_whisper-large-v2_turbo,✅ macOS 15.5,✅ macOS 15.5,Not Supported,Not Supported,Not Supported,⚠️ <a style='color: #3B82F6; text-decoration: underline; text-decoration-style: dotted;' href=https://huggingface.co/datasets/argmaxinc/whisperkit-evals-dataset/blob/main/benchmark_data/2025-06-13T034257_8c0acbd/iPad14%2C8_summary_2025-06-16T192343.json>iPadOS 18.5</a>,⚠️ <a style='color: #3B82F6; text-decoration: underline; text-decoration-style: dotted;' href=https://huggingface.co/datasets/argmaxinc/whisperkit-evals-dataset/blob/main/benchmark_data/2025-06-13T034257_8c0acbd/iPad15%2C3_summary_2025-06-17T205025.json>iPadOS 26.0</a>,Not Supported,Not Supported,⚠️ <a style='color: #3B82F6; text-decoration: underline; text-decoration-style: dotted;' href=https://huggingface.co/datasets/argmaxinc/whisperkit-evals-dataset/blob/main/benchmark_data/2025-06-13T034257_8c0acbd/iPad16%2C3_summary_2025-06-16T220810.json>iPadOS 18.4.1</a>,Not Supported,Not Supported,Not Supported,Not Supported,Not Supported,Not Supported,Not Supported,Not Supported,Not Supported
|
11 |
+
openai_whisper-large-v2_turbo_955MB,openai_whisper-large-v2_turbo_955MB,✅ macOS 15.5,✅ macOS 15.5,Not Supported,Not Supported,✅ iPadOS 18.4,✅ iPadOS 18.5,✅ iPadOS 26.0,✅ iPadOS 18.4,✅ iPadOS 18.4,✅ iPadOS 18.4.1,Not Supported,Not Supported,✅ iOS 18.1,✅ iOS 18.5,✅ iOS 18.5,✅ iOS 18.5,✅ iOS 18.5,✅ iOS 18.4.1,✅ iOS 18.5
|
12 |
+
openai_whisper-large-v3,openai_whisper-large-v3,✅ macOS 15.5,✅ macOS 15.5,Not Supported,⚠️ <a style='color: #3B82F6; text-decoration: underline; text-decoration-style: dotted;' href=https://huggingface.co/datasets/argmaxinc/whisperkit-evals-dataset/blob/main/benchmark_data/2025-06-13T034257_8c0acbd/iPad13%2C6_summary_2025-06-17T205025.json>iPadOS 18.4</a>,Not Supported,⚠️ <a style='color: #3B82F6; text-decoration: underline; text-decoration-style: dotted;' href=https://huggingface.co/datasets/argmaxinc/whisperkit-evals-dataset/blob/main/benchmark_data/2025-06-13T034257_8c0acbd/iPad14%2C8_summary_2025-06-16T192343.json>iPadOS 18.5</a>,⚠️ <a style='color: #3B82F6; text-decoration: underline; text-decoration-style: dotted;' href=https://huggingface.co/datasets/argmaxinc/whisperkit-evals-dataset/blob/main/benchmark_data/2025-06-13T034257_8c0acbd/iPad15%2C3_summary_2025-06-17T205025.json>iPadOS 26.0</a>,Not Supported,Not Supported,⚠️ <a style='color: #3B82F6; text-decoration: underline; text-decoration-style: dotted;' href=https://huggingface.co/datasets/argmaxinc/whisperkit-evals-dataset/blob/main/benchmark_data/2025-06-13T034257_8c0acbd/iPad16%2C3_summary_2025-06-16T220810.json>iPadOS 18.4.1</a>,Not Supported,Not Supported,Not Supported,Not Supported,Not Supported,Not Supported,Not Supported,Not Supported,Not Supported
|
13 |
+
openai_whisper-large-v3-v20240930,openai_whisper-large-v3-v20240930,✅ macOS 15.5,⚠️ <a style='color: #3B82F6; text-decoration: underline; text-decoration-style: dotted;' href=https://huggingface.co/datasets/argmaxinc/whisperkit-evals-dataset/blob/main/benchmark_data/2025-06-13T034257_8c0acbd/Mac15%2C10_summary_2025-06-15T230300.json>macOS 15.5</a>,Not Supported,⚠️ <a style='color: #3B82F6; text-decoration: underline; text-decoration-style: dotted;' href=https://huggingface.co/datasets/argmaxinc/whisperkit-evals-dataset/blob/main/benchmark_data/2025-06-13T034257_8c0acbd/iPad13%2C6_summary_2025-06-17T205025.json>iPadOS 18.4</a>,Not Supported,? iPadOS 18.5,? iPadOS 26.0,Not Supported,Not Supported,? iPadOS 18.4.1,Not Supported,Not Supported,Not Supported,Not Supported,Not Supported,Not Supported,Not Supported,Not Supported,Not Supported
|
14 |
openai_whisper-large-v3-v20240930_626MB,openai_whisper-large-v3-v20240930_626MB,✅ macOS 15.5,✅ macOS 15.5,Not Supported,✅ iPadOS 18.4,✅ iPadOS 18.4,✅ iPadOS 18.5,✅ iPadOS 26.0,✅ iPadOS 18.4,✅ iPadOS 18.4,⚠️ <a style='color: #3B82F6; text-decoration: underline; text-decoration-style: dotted;' href=https://huggingface.co/datasets/argmaxinc/whisperkit-evals-dataset/blob/main/benchmark_data/2025-06-13T034257_8c0acbd/iPad16%2C3_summary_2025-06-16T220810.json>iPadOS 18.4.1</a>,Not Supported,Not Supported,✅ iOS 18.1,✅ iOS 18.5,✅ iOS 18.5,✅ iOS 18.5,✅ iOS 18.5,✅ iOS 18.4.1,✅ iOS 18.5
|
15 |
+
openai_whisper-large-v3-v20240930_turbo,openai_whisper-large-v3-v20240930_turbo,✅ macOS 15.5,✅ macOS 15.5,Not Supported,Not Supported,Not Supported,⚠️ <a style='color: #3B82F6; text-decoration: underline; text-decoration-style: dotted;' href=https://huggingface.co/datasets/argmaxinc/whisperkit-evals-dataset/blob/main/benchmark_data/2025-06-13T034257_8c0acbd/iPad14%2C8_summary_2025-06-16T192343.json>iPadOS 18.5</a>,⚠️ <a style='color: #3B82F6; text-decoration: underline; text-decoration-style: dotted;' href=https://huggingface.co/datasets/argmaxinc/whisperkit-evals-dataset/blob/main/benchmark_data/2025-06-13T034257_8c0acbd/iPad15%2C3_summary_2025-06-17T205025.json>iPadOS 26.0</a>,Not Supported,Not Supported,⚠️ <a style='color: #3B82F6; text-decoration: underline; text-decoration-style: dotted;' href=https://huggingface.co/datasets/argmaxinc/whisperkit-evals-dataset/blob/main/benchmark_data/2025-06-13T034257_8c0acbd/iPad16%2C3_summary_2025-06-16T220810.json>iPadOS 18.4.1</a>,Not Supported,Not Supported,Not Supported,Not Supported,Not Supported,Not Supported,Not Supported,Not Supported,Not Supported
|
16 |
+
openai_whisper-large-v3-v20240930_turbo_632MB,openai_whisper-large-v3-v20240930_turbo_632MB,✅ macOS 15.5,✅ macOS 15.5,Not Supported,Not Supported,✅ iPadOS 18.4,✅ iPadOS 18.5,✅ iPadOS 26.0,✅ iPadOS 18.4,✅ iPadOS 18.4,✅ iPadOS 18.4.1,Not Supported,Not Supported,✅ iOS 18.1,✅ iOS 18.5,✅ iOS 18.5,✅ iOS 18.5,⚠️ <a style='color: #3B82F6; text-decoration: underline; text-decoration-style: dotted;' href=https://huggingface.co/datasets/argmaxinc/whisperkit-evals-dataset/blob/main/benchmark_data/2025-06-13T034257_8c0acbd/iPhone16%2C2_summary_2025-06-16T135523.json>iOS 18.5</a>,✅ iOS 18.4.1,✅ iOS 18.5
|
17 |
openai_whisper-large-v3_947MB,openai_whisper-large-v3_947MB,✅ macOS 15.5,✅ macOS 15.5,Not Supported,✅ iPadOS 18.4,✅ iPadOS 18.4,✅ iPadOS 18.5,⚠️ <a style='color: #3B82F6; text-decoration: underline; text-decoration-style: dotted;' href=https://huggingface.co/datasets/argmaxinc/whisperkit-evals-dataset/blob/main/benchmark_data/2025-06-13T034257_8c0acbd/iPad15%2C3_summary_2025-06-17T205025.json>iPadOS 26.0</a>,✅ iPadOS 18.4,✅ iPadOS 18.4,✅ iPadOS 18.4.1,Not Supported,Not Supported,✅ iOS 18.1,✅ iOS 18.5,✅ iOS 18.5,✅ iOS 18.5,✅ iOS 18.5,✅ iOS 18.4.1,✅ iOS 18.5
|
18 |
+
openai_whisper-large-v3_turbo,openai_whisper-large-v3_turbo,✅ macOS 15.5,✅ macOS 15.5,Not Supported,Not Supported,Not Supported,⚠️ <a style='color: #3B82F6; text-decoration: underline; text-decoration-style: dotted;' href=https://huggingface.co/datasets/argmaxinc/whisperkit-evals-dataset/blob/main/benchmark_data/2025-06-13T034257_8c0acbd/iPad14%2C8_summary_2025-06-16T192343.json>iPadOS 18.5</a>,⚠️ <a style='color: #3B82F6; text-decoration: underline; text-decoration-style: dotted;' href=https://huggingface.co/datasets/argmaxinc/whisperkit-evals-dataset/blob/main/benchmark_data/2025-06-13T034257_8c0acbd/iPad15%2C3_summary_2025-06-17T205025.json>iPadOS 26.0</a>,Not Supported,Not Supported,⚠️ <a style='color: #3B82F6; text-decoration: underline; text-decoration-style: dotted;' href=https://huggingface.co/datasets/argmaxinc/whisperkit-evals-dataset/blob/main/benchmark_data/2025-06-13T034257_8c0acbd/iPad16%2C3_summary_2025-06-16T220810.json>iPadOS 18.4.1</a>,Not Supported,Not Supported,Not Supported,Not Supported,Not Supported,Not Supported,Not Supported,Not Supported,Not Supported
|
19 |
+
openai_whisper-large-v3_turbo_954MB,openai_whisper-large-v3_turbo_954MB,✅ macOS 15.5,✅ macOS 15.5,Not Supported,Not Supported,✅ iPadOS 18.4,✅ iPadOS 18.5,✅ iPadOS 26.0,✅ iPadOS 18.4,✅ iPadOS 18.4,✅ iPadOS 18.4.1,Not Supported,Not Supported,✅ iOS 18.1,✅ iOS 18.5,✅ iOS 18.5,✅ iOS 18.5,✅ iOS 18.5,✅ iOS 18.4.1,✅ iOS 18.5
|
20 |
openai_whisper-small,openai_whisper-small,✅ macOS 15.5,✅ macOS 15.5,✅ iPadOS 18.4.1,✅ iPadOS 18.4,✅ iPadOS 18.4,✅ iPadOS 18.5,✅ iPadOS 26.0,✅ iPadOS 18.4,✅ iPadOS 18.4,✅ iPadOS 18.4.1,Not Supported,✅ iOS 18.4.1,✅ iOS 18.1,✅ iOS 18.5,✅ iOS 18.5,✅ iOS 18.5,✅ iOS 18.5,✅ iOS 18.4.1,✅ iOS 18.5
|
21 |
openai_whisper-small.en,openai_whisper-small.en,✅ macOS 15.5,✅ macOS 15.5,✅ iPadOS 18.4.1,✅ iPadOS 18.4,✅ iPadOS 18.4,✅ iPadOS 18.5,✅ iPadOS 26.0,✅ iPadOS 18.4,✅ iPadOS 18.4,✅ iPadOS 18.4.1,Not Supported,✅ iOS 18.4.1,✅ iOS 18.1,✅ iOS 18.5,✅ iOS 18.5,✅ iOS 18.5,✅ iOS 18.5,✅ iOS 18.4.1,✅ iOS 18.5
|
22 |
openai_whisper-tiny,openai_whisper-tiny,✅ macOS 15.5,✅ macOS 15.5,✅ iPadOS 18.4.1,✅ iPadOS 18.4,✅ iPadOS 18.4,✅ iPadOS 18.5,✅ iPadOS 26.0,✅ iPadOS 18.4,✅ iPadOS 18.4,✅ iPadOS 18.4.1,✅ iOS 26.0,✅ iOS 18.4.1,✅ iOS 18.1,✅ iOS 18.5,✅ iOS 18.5,✅ iOS 18.5,✅ iOS 18.5,✅ iOS 18.4.1,✅ iOS 18.5
|
dashboard_data/support_data_a9b92c4.csv
CHANGED
@@ -1,21 +1,21 @@
|
|
1 |
,Model,"Apple M2 Pro (Mac14,12)","Apple M2 Ultra (Mac14,14)","Apple M2 (Mac14,2)","Apple M3 Max (Mac15,10)","Apple M3 Pro (Mac15,6)","Apple M3 Max (Mac15,9)","Apple M4 (Mac16,10)","Apple M4 (Mac16,3)","Apple M1 (MacBookAir10,1)","iPad Air (5th generation) (iPad13,16)","iPad Air 11-inch (M2) (iPad14,8)","iPad mini (A17 Pro) (iPad16,1)","iPad Pro 11-inch (M4) (iPad16,3)","iPhone 11 (iPhone12,1)","iPhone 12 mini (iPhone13,1)","iPhone 12 (iPhone13,2)","iPhone 12 Pro Max (iPhone13,4)","iPhone 13 Pro (iPhone14,2)","iPhone 13 (iPhone14,5)","iPhone 14 (iPhone14,7)","iPhone 15 Pro (iPhone16,1)","iPhone 15 Pro Max (iPhone16,2)","iPhone 16 Pro (iPhone17,1)","iPhone 16 (iPhone17,3)","iPhone 16 Plus (iPhone17,4)"
|
2 |
-
distil-whisper_distil-large-v3,distil-whisper_distil-large-v3,✅ macOS 15.0.1,✅ macOS 15.0.1,✅ macOS 15.1,✅ macOS 15.2,✅ macOS 15.1,✅ macOS 15.1,✅ macOS 15.1,✅ macOS 15.0,⚠️ <a style='color: #3B82F6; text-decoration: underline; text-decoration-style: dotted;' href=https://huggingface.co/datasets/argmaxinc/whisperkit-evals-dataset/blob/main/benchmark_data/2024-10-29T190053_a9b92c4/MacBookAir10%2C1_summary_2024-10-30T012535.json>macOS 15.1</a>,Not Supported,✅ iPadOS 17.6.1
|
3 |
distil-whisper_distil-large-v3_594MB,distil-whisper_distil-large-v3_594MB,✅ macOS 15.0.1,✅ macOS 15.0.1,✅ macOS 15.1,✅ macOS 15.2,✅ macOS 15.1,✅ macOS 15.1,✅ macOS 15.1,✅ macOS 15.0,✅ macOS 15.1,Not Supported,✅ iPadOS 17.6.1,✅ iPadOS 18.0.1,✅ iPadOS 18.1,Not Supported,Not Supported,Not Supported,Not Supported,✅ iOS 18.1,✅ iOS 17.3,✅ iOS 17.3,✅ iOS 18.1,✅ iOS 18.2,✅ iOS 18.0,✅ iOS 18.0.1,✅ iOS 18.0.1
|
4 |
-
distil-whisper_distil-large-v3_turbo,distil-whisper_distil-large-v3_turbo,✅ macOS 15.0.1,✅ macOS 15.0.1,✅ macOS 15.1,✅ macOS 15.2,✅ macOS 15.1,✅ macOS 15.1,✅ macOS 15.1,✅ macOS 15.0,Not Supported,Not Supported,⚠️ <a style='color: #3B82F6; text-decoration: underline; text-decoration-style: dotted;' href=https://huggingface.co/datasets/argmaxinc/whisperkit-evals-dataset/blob/main/benchmark_data/2024-10-29T190053_a9b92c4/iPad14%2C8_summary_2024-10-30T073931.json>iPadOS 17.6.1</a
|
5 |
distil-whisper_distil-large-v3_turbo_600MB,distil-whisper_distil-large-v3_turbo_600MB,✅ macOS 15.0.1,✅ macOS 15.0.1,✅ macOS 15.1,✅ macOS 15.2,✅ macOS 15.1,✅ macOS 15.1,✅ macOS 15.1,✅ macOS 15.0,Not Supported,Not Supported,✅ iPadOS 17.6.1,✅ iPadOS 18.0.1,✅ iPadOS 18.1,Not Supported,Not Supported,Not Supported,Not Supported,✅ iOS 18.1,✅ iOS 17.3,✅ iOS 17.3,✅ iOS 18.1,✅ iOS 18.2,✅ iOS 18.0,✅ iOS 18.0.1,✅ iOS 18.0.1
|
6 |
openai_whisper-base,openai_whisper-base,✅ macOS 15.0.1,✅ macOS 15.0.1,✅ macOS 15.1,✅ macOS 15.2,✅ macOS 15.1,✅ macOS 15.1,✅ macOS 15.1,✅ macOS 15.0,✅ macOS 15.1,✅ iPadOS 18.1,✅ iPadOS 17.6.1,✅ iPadOS 18.0.1,✅ iPadOS 18.1,✅ iOS 17.6.1,✅ iOS 17.7,✅ iOS 17.2.1,✅ iOS 18.1,✅ iOS 18.1,✅ iOS 17.3,✅ iOS 17.3,✅ iOS 18.1,✅ iOS 18.2,✅ iOS 18.0,✅ iOS 18.0.1,✅ iOS 18.0.1
|
7 |
openai_whisper-base.en,openai_whisper-base.en,✅ macOS 15.0.1,✅ macOS 15.0.1,✅ macOS 15.1,✅ macOS 15.2,✅ macOS 15.1,✅ macOS 15.1,✅ macOS 15.1,✅ macOS 15.0,✅ macOS 15.1,✅ iPadOS 18.1,✅ iPadOS 17.6.1,✅ iPadOS 18.0.1,✅ iPadOS 18.1,✅ iOS 17.6.1,✅ iOS 17.7,✅ iOS 17.2.1,✅ iOS 18.1,✅ iOS 18.1,✅ iOS 17.3,✅ iOS 17.3,✅ iOS 18.1,✅ iOS 18.2,✅ iOS 18.0,✅ iOS 18.0.1,✅ iOS 18.0.1
|
8 |
-
openai_whisper-large-v2,openai_whisper-large-v2,✅ macOS 15.0.1,✅ macOS 15.0.1,✅ macOS 15.1,✅ macOS 15.2,✅ macOS 15.1,✅ macOS 15.1,✅ macOS 15.1,✅ macOS 15.0,⚠️ <a style='color: #3B82F6; text-decoration: underline; text-decoration-style: dotted;' href=https://huggingface.co/datasets/argmaxinc/whisperkit-evals-dataset/blob/main/benchmark_data/2024-10-29T190053_a9b92c4/MacBookAir10%2C1_summary_2024-10-30T012535.json>macOS 15.1</a>,Not Supported,⚠️ <a style='color: #3B82F6; text-decoration: underline; text-decoration-style: dotted;' href=https://huggingface.co/datasets/argmaxinc/whisperkit-evals-dataset/blob/main/benchmark_data/2024-10-29T190053_a9b92c4/iPad14%2C8_summary_2024-10-30T073931.json>iPadOS 17.6.1</a
|
9 |
openai_whisper-large-v2_949MB,openai_whisper-large-v2_949MB,✅ macOS 15.0.1,✅ macOS 15.0.1,✅ macOS 15.1,✅ macOS 15.2,✅ macOS 15.1,✅ macOS 15.1,✅ macOS 15.1,✅ macOS 15.0,✅ macOS 15.1,Not Supported,✅ iPadOS 17.6.1,✅ iPadOS 18.0.1,✅ iPadOS 18.1,Not Supported,Not Supported,Not Supported,Not Supported,✅ iOS 18.1,⚠️ <a style='color: #3B82F6; text-decoration: underline; text-decoration-style: dotted;' href=https://huggingface.co/datasets/argmaxinc/whisperkit-evals-dataset/blob/main/benchmark_data/2024-10-29T190053_a9b92c4/iPhone14%2C5_summary_2024-10-30T073931.json>iOS 17.3</a>,✅ iOS 17.3,✅ iOS 18.1,✅ iOS 18.2,✅ iOS 18.0,✅ iOS 18.0.1,✅ iOS 18.0.1
|
10 |
-
openai_whisper-large-v2_turbo,openai_whisper-large-v2_turbo,✅ macOS 15.0.1,✅ macOS 15.0.1,✅ macOS 15.1,✅ macOS 15.2,✅ macOS 15.1,✅ macOS 15.1,✅ macOS 15.1,✅ macOS 15.0,Not Supported,Not Supported,⚠️ <a style='color: #3B82F6; text-decoration: underline; text-decoration-style: dotted;' href=https://huggingface.co/datasets/argmaxinc/whisperkit-evals-dataset/blob/main/benchmark_data/2024-10-29T190053_a9b92c4/iPad14%2C8_summary_2024-10-30T073931.json>iPadOS 17.6.1</a
|
11 |
openai_whisper-large-v2_turbo_955MB,openai_whisper-large-v2_turbo_955MB,✅ macOS 15.0.1,✅ macOS 15.0.1,✅ macOS 15.1,✅ macOS 15.2,✅ macOS 15.1,✅ macOS 15.1,✅ macOS 15.1,✅ macOS 15.0,Not Supported,Not Supported,✅ iPadOS 17.6.1,✅ iPadOS 18.0.1,✅ iPadOS 18.1,Not Supported,Not Supported,Not Supported,Not Supported,✅ iOS 18.1,⚠️ <a style='color: #3B82F6; text-decoration: underline; text-decoration-style: dotted;' href=https://huggingface.co/datasets/argmaxinc/whisperkit-evals-dataset/blob/main/benchmark_data/2024-10-29T190053_a9b92c4/iPhone14%2C5_summary_2024-10-30T073931.json>iOS 17.3</a>,✅ iOS 17.3,✅ iOS 18.1,✅ iOS 18.2,✅ iOS 18.0,✅ iOS 18.0.1,✅ iOS 18.0.1
|
12 |
-
openai_whisper-large-v3,openai_whisper-large-v3,✅ macOS 15.0.1,✅ macOS 15.0.1,✅ macOS 15.1,✅ macOS 15.2,✅ macOS 15.1,✅ macOS 15.1,✅ macOS 15.1,✅ macOS 15.0,⚠️ <a style='color: #3B82F6; text-decoration: underline; text-decoration-style: dotted;' href=https://huggingface.co/datasets/argmaxinc/whisperkit-evals-dataset/blob/main/benchmark_data/2024-10-29T190053_a9b92c4/MacBookAir10%2C1_summary_2024-10-30T012535.json>macOS 15.1</a>,Not Supported,✅ iPadOS 17.6.1
|
13 |
-
openai_whisper-large-v3-v20240930,openai_whisper-large-v3-v20240930,✅ macOS 15.0.1,✅ macOS 15.0.1,✅ macOS 15.1,✅ macOS 15.2,✅ macOS 15.1,✅ macOS 15.1,✅ macOS 15.1,✅ macOS 15.0,⚠️ <a style='color: #3B82F6; text-decoration: underline; text-decoration-style: dotted;' href=https://huggingface.co/datasets/argmaxinc/whisperkit-evals-dataset/blob/main/benchmark_data/2024-10-29T190053_a9b92c4/MacBookAir10%2C1_summary_2024-10-30T012535.json>macOS 15.1</a>,Not Supported,⚠️ <a style='color: #3B82F6; text-decoration: underline; text-decoration-style: dotted;' href=https://huggingface.co/datasets/argmaxinc/whisperkit-evals-dataset/blob/main/benchmark_data/2024-10-29T190053_a9b92c4/iPad14%2C8_summary_2024-10-30T073931.json>iPadOS 17.6.1</a
|
14 |
openai_whisper-large-v3-v20240930_626MB,openai_whisper-large-v3-v20240930_626MB,✅ macOS 15.0.1,✅ macOS 15.0.1,✅ macOS 15.1,✅ macOS 15.2,✅ macOS 15.1,✅ macOS 15.1,✅ macOS 15.1,✅ macOS 15.0,✅ macOS 15.1,Not Supported,✅ iPadOS 17.6.1,✅ iPadOS 18.0.1,✅ iPadOS 18.1,Not Supported,Not Supported,Not Supported,Not Supported,✅ iOS 18.1,✅ iOS 17.3,✅ iOS 17.3,✅ iOS 18.1,✅ iOS 18.2,✅ iOS 18.0,✅ iOS 18.0.1,✅ iOS 18.0.1
|
15 |
-
openai_whisper-large-v3-v20240930_turbo,openai_whisper-large-v3-v20240930_turbo,✅ macOS 15.0.1,✅ macOS 15.0.1,✅ macOS 15.1,✅ macOS 15.2,✅ macOS 15.1,✅ macOS 15.1,✅ macOS 15.1,✅ macOS 15.0,Not Supported,Not Supported,✅ iPadOS 17.6.1,⚠️ <a style='color: #3B82F6; text-decoration: underline; text-decoration-style: dotted;' href=https://huggingface.co/datasets/argmaxinc/whisperkit-evals-dataset/blob/main/benchmark_data/2024-10-29T190053_a9b92c4/iPad16%
|
16 |
openai_whisper-large-v3-v20240930_turbo_632MB,openai_whisper-large-v3-v20240930_turbo_632MB,✅ macOS 15.0.1,✅ macOS 15.0.1,✅ macOS 15.1,✅ macOS 15.2,✅ macOS 15.1,✅ macOS 15.1,✅ macOS 15.1,✅ macOS 15.0,Not Supported,Not Supported,✅ iPadOS 17.6.1,✅ iPadOS 18.0.1,✅ iPadOS 18.1,Not Supported,Not Supported,Not Supported,Not Supported,✅ iOS 18.1,⚠️ <a style='color: #3B82F6; text-decoration: underline; text-decoration-style: dotted;' href=https://huggingface.co/datasets/argmaxinc/whisperkit-evals-dataset/blob/main/benchmark_data/2024-10-29T190053_a9b92c4/iPhone14%2C5_summary_2024-10-30T073931.json>iOS 17.3</a>,⚠️ <a style='color: #3B82F6; text-decoration: underline; text-decoration-style: dotted;' href=https://huggingface.co/datasets/argmaxinc/whisperkit-evals-dataset/blob/main/benchmark_data/2024-10-29T190053_a9b92c4/iPhone14%2C7_summary_2024-10-30T073931.json>iOS 17.3</a>,✅ iOS 18.1,✅ iOS 18.2,✅ iOS 18.0,✅ iOS 18.0.1,⚠️ <a style='color: #3B82F6; text-decoration: underline; text-decoration-style: dotted;' href=https://huggingface.co/datasets/argmaxinc/whisperkit-evals-dataset/blob/main/benchmark_data/2024-10-29T190053_a9b92c4/iPhone17%2C4_summary_2024-10-30T132649.json>iOS 18.0.1</a>
|
17 |
openai_whisper-large-v3_947MB,openai_whisper-large-v3_947MB,✅ macOS 15.0.1,✅ macOS 15.0.1,✅ macOS 15.1,✅ macOS 15.2,✅ macOS 15.1,✅ macOS 15.1,✅ macOS 15.1,✅ macOS 15.0,✅ macOS 15.1,Not Supported,✅ iPadOS 17.6.1,✅ iPadOS 18.0.1,✅ iPadOS 18.1,Not Supported,Not Supported,Not Supported,Not Supported,✅ iOS 18.1,⚠️ <a style='color: #3B82F6; text-decoration: underline; text-decoration-style: dotted;' href=https://huggingface.co/datasets/argmaxinc/whisperkit-evals-dataset/blob/main/benchmark_data/2024-10-29T190053_a9b92c4/iPhone14%2C5_summary_2024-10-30T073931.json>iOS 17.3</a>,✅ iOS 17.3,✅ iOS 18.1,✅ iOS 18.2,✅ iOS 18.0,✅ iOS 18.0.1,✅ iOS 18.0.1
|
18 |
-
openai_whisper-large-v3_turbo,openai_whisper-large-v3_turbo,✅ macOS 15.0.1,✅ macOS 15.0.1,✅ macOS 15.1,✅ macOS 15.2,✅ macOS 15.1,✅ macOS 15.1,✅ macOS 15.1,✅ macOS 15.0,Not Supported,Not Supported,⚠️ <a style='color: #3B82F6; text-decoration: underline; text-decoration-style: dotted;' href=https://huggingface.co/datasets/argmaxinc/whisperkit-evals-dataset/blob/main/benchmark_data/2024-10-29T190053_a9b92c4/iPad14%2C8_summary_2024-10-30T073931.json>iPadOS 17.6.1</a
|
19 |
openai_whisper-large-v3_turbo_954MB,openai_whisper-large-v3_turbo_954MB,✅ macOS 15.0.1,✅ macOS 15.0.1,✅ macOS 15.1,✅ macOS 15.2,✅ macOS 15.1,✅ macOS 15.1,✅ macOS 15.1,✅ macOS 15.0,Not Supported,Not Supported,✅ iPadOS 17.6.1,✅ iPadOS 18.0.1,✅ iPadOS 18.1,Not Supported,Not Supported,Not Supported,Not Supported,✅ iOS 18.1,⚠️ <a style='color: #3B82F6; text-decoration: underline; text-decoration-style: dotted;' href=https://huggingface.co/datasets/argmaxinc/whisperkit-evals-dataset/blob/main/benchmark_data/2024-10-29T190053_a9b92c4/iPhone14%2C5_summary_2024-10-30T073931.json>iOS 17.3</a>,✅ iOS 17.3,✅ iOS 18.1,✅ iOS 18.2,✅ iOS 18.0,✅ iOS 18.0.1,⚠️ <a style='color: #3B82F6; text-decoration: underline; text-decoration-style: dotted;' href=https://huggingface.co/datasets/argmaxinc/whisperkit-evals-dataset/blob/main/benchmark_data/2024-10-29T190053_a9b92c4/iPhone17%2C4_summary_2024-10-30T132649.json>iOS 18.0.1</a>
|
20 |
openai_whisper-small,openai_whisper-small,✅ macOS 15.0.1,✅ macOS 15.0.1,✅ macOS 15.1,✅ macOS 15.2,✅ macOS 15.1,✅ macOS 15.1,✅ macOS 15.1,✅ macOS 15.0,✅ macOS 15.1,✅ iPadOS 18.1,✅ iPadOS 17.6.1,✅ iPadOS 18.0.1,✅ iPadOS 18.1,Not Supported,⚠️ <a style='color: #3B82F6; text-decoration: underline; text-decoration-style: dotted;' href=https://huggingface.co/datasets/argmaxinc/whisperkit-evals-dataset/blob/main/benchmark_data/2024-10-29T190053_a9b92c4/iPhone13%2C1_summary_2024-10-30T022739.json>iOS 17.7</a>,⚠️ <a style='color: #3B82F6; text-decoration: underline; text-decoration-style: dotted;' href=https://huggingface.co/datasets/argmaxinc/whisperkit-evals-dataset/blob/main/benchmark_data/2024-10-29T190053_a9b92c4/iPhone13%2C2_summary_2024-10-30T152729.json>iOS 17.2.1</a>,✅ iOS 18.1,✅ iOS 18.1,✅ iOS 17.3,✅ iOS 17.3,✅ iOS 18.1,✅ iOS 18.2,✅ iOS 18.0,✅ iOS 18.0.1,✅ iOS 18.0.1
|
21 |
openai_whisper-small.en,openai_whisper-small.en,✅ macOS 15.0.1,✅ macOS 15.0.1,✅ macOS 15.1,✅ macOS 15.2,✅ macOS 15.1,✅ macOS 15.1,✅ macOS 15.1,✅ macOS 15.0,✅ macOS 15.1,✅ iPadOS 18.1,✅ iPadOS 17.6.1,✅ iPadOS 18.0.1,✅ iPadOS 18.1,Not Supported,⚠️ <a style='color: #3B82F6; text-decoration: underline; text-decoration-style: dotted;' href=https://huggingface.co/datasets/argmaxinc/whisperkit-evals-dataset/blob/main/benchmark_data/2024-10-29T190053_a9b92c4/iPhone13%2C1_summary_2024-10-30T022739.json>iOS 17.7</a>,⚠️ <a style='color: #3B82F6; text-decoration: underline; text-decoration-style: dotted;' href=https://huggingface.co/datasets/argmaxinc/whisperkit-evals-dataset/blob/main/benchmark_data/2024-10-29T190053_a9b92c4/iPhone13%2C2_summary_2024-10-30T152729.json>iOS 17.2.1</a>,✅ iOS 18.1,✅ iOS 18.1,✅ iOS 17.3,✅ iOS 17.3,✅ iOS 18.1,✅ iOS 18.2,✅ iOS 18.0,✅ iOS 18.0.1,✅ iOS 18.0.1
|
|
|
1 |
,Model,"Apple M2 Pro (Mac14,12)","Apple M2 Ultra (Mac14,14)","Apple M2 (Mac14,2)","Apple M3 Max (Mac15,10)","Apple M3 Pro (Mac15,6)","Apple M3 Max (Mac15,9)","Apple M4 (Mac16,10)","Apple M4 (Mac16,3)","Apple M1 (MacBookAir10,1)","iPad Air (5th generation) (iPad13,16)","iPad Air 11-inch (M2) (iPad14,8)","iPad mini (A17 Pro) (iPad16,1)","iPad Pro 11-inch (M4) (iPad16,3)","iPhone 11 (iPhone12,1)","iPhone 12 mini (iPhone13,1)","iPhone 12 (iPhone13,2)","iPhone 12 Pro Max (iPhone13,4)","iPhone 13 Pro (iPhone14,2)","iPhone 13 (iPhone14,5)","iPhone 14 (iPhone14,7)","iPhone 15 Pro (iPhone16,1)","iPhone 15 Pro Max (iPhone16,2)","iPhone 16 Pro (iPhone17,1)","iPhone 16 (iPhone17,3)","iPhone 16 Plus (iPhone17,4)"
|
2 |
+
distil-whisper_distil-large-v3,distil-whisper_distil-large-v3,✅ macOS 15.0.1,✅ macOS 15.0.1,✅ macOS 15.1,✅ macOS 15.2,✅ macOS 15.1,✅ macOS 15.1,✅ macOS 15.1,✅ macOS 15.0,⚠️ <a style='color: #3B82F6; text-decoration: underline; text-decoration-style: dotted;' href=https://huggingface.co/datasets/argmaxinc/whisperkit-evals-dataset/blob/main/benchmark_data/2024-10-29T190053_a9b92c4/MacBookAir10%2C1_summary_2024-10-30T012535.json>macOS 15.1</a>,Not Supported,✅ iPadOS 17.6.1,Not Supported,✅ iPadOS 18.1,Not Supported,Not Supported,Not Supported,Not Supported,Not Supported,Not Supported,Not Supported,Not Supported,Not Supported,Not Supported,Not Supported,Not Supported
|
3 |
distil-whisper_distil-large-v3_594MB,distil-whisper_distil-large-v3_594MB,✅ macOS 15.0.1,✅ macOS 15.0.1,✅ macOS 15.1,✅ macOS 15.2,✅ macOS 15.1,✅ macOS 15.1,✅ macOS 15.1,✅ macOS 15.0,✅ macOS 15.1,Not Supported,✅ iPadOS 17.6.1,✅ iPadOS 18.0.1,✅ iPadOS 18.1,Not Supported,Not Supported,Not Supported,Not Supported,✅ iOS 18.1,✅ iOS 17.3,✅ iOS 17.3,✅ iOS 18.1,✅ iOS 18.2,✅ iOS 18.0,✅ iOS 18.0.1,✅ iOS 18.0.1
|
4 |
+
distil-whisper_distil-large-v3_turbo,distil-whisper_distil-large-v3_turbo,✅ macOS 15.0.1,✅ macOS 15.0.1,✅ macOS 15.1,✅ macOS 15.2,✅ macOS 15.1,✅ macOS 15.1,✅ macOS 15.1,✅ macOS 15.0,Not Supported,Not Supported,⚠️ <a style='color: #3B82F6; text-decoration: underline; text-decoration-style: dotted;' href=https://huggingface.co/datasets/argmaxinc/whisperkit-evals-dataset/blob/main/benchmark_data/2024-10-29T190053_a9b92c4/iPad14%2C8_summary_2024-10-30T073931.json>iPadOS 17.6.1</a>,Not Supported,⚠️ <a style='color: #3B82F6; text-decoration: underline; text-decoration-style: dotted;' href=https://huggingface.co/datasets/argmaxinc/whisperkit-evals-dataset/blob/main/benchmark_data/2024-10-29T190053_a9b92c4/iPad16%2C3_summary_2024-10-30T073931.json>iPadOS 18.1</a>,Not Supported,Not Supported,Not Supported,Not Supported,Not Supported,Not Supported,Not Supported,Not Supported,Not Supported,Not Supported,Not Supported,Not Supported
|
5 |
distil-whisper_distil-large-v3_turbo_600MB,distil-whisper_distil-large-v3_turbo_600MB,✅ macOS 15.0.1,✅ macOS 15.0.1,✅ macOS 15.1,✅ macOS 15.2,✅ macOS 15.1,✅ macOS 15.1,✅ macOS 15.1,✅ macOS 15.0,Not Supported,Not Supported,✅ iPadOS 17.6.1,✅ iPadOS 18.0.1,✅ iPadOS 18.1,Not Supported,Not Supported,Not Supported,Not Supported,✅ iOS 18.1,✅ iOS 17.3,✅ iOS 17.3,✅ iOS 18.1,✅ iOS 18.2,✅ iOS 18.0,✅ iOS 18.0.1,✅ iOS 18.0.1
|
6 |
openai_whisper-base,openai_whisper-base,✅ macOS 15.0.1,✅ macOS 15.0.1,✅ macOS 15.1,✅ macOS 15.2,✅ macOS 15.1,✅ macOS 15.1,✅ macOS 15.1,✅ macOS 15.0,✅ macOS 15.1,✅ iPadOS 18.1,✅ iPadOS 17.6.1,✅ iPadOS 18.0.1,✅ iPadOS 18.1,✅ iOS 17.6.1,✅ iOS 17.7,✅ iOS 17.2.1,✅ iOS 18.1,✅ iOS 18.1,✅ iOS 17.3,✅ iOS 17.3,✅ iOS 18.1,✅ iOS 18.2,✅ iOS 18.0,✅ iOS 18.0.1,✅ iOS 18.0.1
|
7 |
openai_whisper-base.en,openai_whisper-base.en,✅ macOS 15.0.1,✅ macOS 15.0.1,✅ macOS 15.1,✅ macOS 15.2,✅ macOS 15.1,✅ macOS 15.1,✅ macOS 15.1,✅ macOS 15.0,✅ macOS 15.1,✅ iPadOS 18.1,✅ iPadOS 17.6.1,✅ iPadOS 18.0.1,✅ iPadOS 18.1,✅ iOS 17.6.1,✅ iOS 17.7,✅ iOS 17.2.1,✅ iOS 18.1,✅ iOS 18.1,✅ iOS 17.3,✅ iOS 17.3,✅ iOS 18.1,✅ iOS 18.2,✅ iOS 18.0,✅ iOS 18.0.1,✅ iOS 18.0.1
|
8 |
+
openai_whisper-large-v2,openai_whisper-large-v2,✅ macOS 15.0.1,✅ macOS 15.0.1,✅ macOS 15.1,✅ macOS 15.2,✅ macOS 15.1,✅ macOS 15.1,✅ macOS 15.1,✅ macOS 15.0,⚠️ <a style='color: #3B82F6; text-decoration: underline; text-decoration-style: dotted;' href=https://huggingface.co/datasets/argmaxinc/whisperkit-evals-dataset/blob/main/benchmark_data/2024-10-29T190053_a9b92c4/MacBookAir10%2C1_summary_2024-10-30T012535.json>macOS 15.1</a>,Not Supported,⚠️ <a style='color: #3B82F6; text-decoration: underline; text-decoration-style: dotted;' href=https://huggingface.co/datasets/argmaxinc/whisperkit-evals-dataset/blob/main/benchmark_data/2024-10-29T190053_a9b92c4/iPad14%2C8_summary_2024-10-30T073931.json>iPadOS 17.6.1</a>,Not Supported,✅ iPadOS 18.1,Not Supported,Not Supported,Not Supported,Not Supported,Not Supported,Not Supported,Not Supported,Not Supported,Not Supported,Not Supported,Not Supported,Not Supported
|
9 |
openai_whisper-large-v2_949MB,openai_whisper-large-v2_949MB,✅ macOS 15.0.1,✅ macOS 15.0.1,✅ macOS 15.1,✅ macOS 15.2,✅ macOS 15.1,✅ macOS 15.1,✅ macOS 15.1,✅ macOS 15.0,✅ macOS 15.1,Not Supported,✅ iPadOS 17.6.1,✅ iPadOS 18.0.1,✅ iPadOS 18.1,Not Supported,Not Supported,Not Supported,Not Supported,✅ iOS 18.1,⚠️ <a style='color: #3B82F6; text-decoration: underline; text-decoration-style: dotted;' href=https://huggingface.co/datasets/argmaxinc/whisperkit-evals-dataset/blob/main/benchmark_data/2024-10-29T190053_a9b92c4/iPhone14%2C5_summary_2024-10-30T073931.json>iOS 17.3</a>,✅ iOS 17.3,✅ iOS 18.1,✅ iOS 18.2,✅ iOS 18.0,✅ iOS 18.0.1,✅ iOS 18.0.1
|
10 |
+
openai_whisper-large-v2_turbo,openai_whisper-large-v2_turbo,✅ macOS 15.0.1,✅ macOS 15.0.1,✅ macOS 15.1,✅ macOS 15.2,✅ macOS 15.1,✅ macOS 15.1,✅ macOS 15.1,✅ macOS 15.0,Not Supported,Not Supported,⚠️ <a style='color: #3B82F6; text-decoration: underline; text-decoration-style: dotted;' href=https://huggingface.co/datasets/argmaxinc/whisperkit-evals-dataset/blob/main/benchmark_data/2024-10-29T190053_a9b92c4/iPad14%2C8_summary_2024-10-30T073931.json>iPadOS 17.6.1</a>,Not Supported,⚠️ <a style='color: #3B82F6; text-decoration: underline; text-decoration-style: dotted;' href=https://huggingface.co/datasets/argmaxinc/whisperkit-evals-dataset/blob/main/benchmark_data/2024-10-29T190053_a9b92c4/iPad16%2C3_summary_2024-10-30T073931.json>iPadOS 18.1</a>,Not Supported,Not Supported,Not Supported,Not Supported,Not Supported,Not Supported,Not Supported,Not Supported,Not Supported,Not Supported,Not Supported,Not Supported
|
11 |
openai_whisper-large-v2_turbo_955MB,openai_whisper-large-v2_turbo_955MB,✅ macOS 15.0.1,✅ macOS 15.0.1,✅ macOS 15.1,✅ macOS 15.2,✅ macOS 15.1,✅ macOS 15.1,✅ macOS 15.1,✅ macOS 15.0,Not Supported,Not Supported,✅ iPadOS 17.6.1,✅ iPadOS 18.0.1,✅ iPadOS 18.1,Not Supported,Not Supported,Not Supported,Not Supported,✅ iOS 18.1,⚠️ <a style='color: #3B82F6; text-decoration: underline; text-decoration-style: dotted;' href=https://huggingface.co/datasets/argmaxinc/whisperkit-evals-dataset/blob/main/benchmark_data/2024-10-29T190053_a9b92c4/iPhone14%2C5_summary_2024-10-30T073931.json>iOS 17.3</a>,✅ iOS 17.3,✅ iOS 18.1,✅ iOS 18.2,✅ iOS 18.0,✅ iOS 18.0.1,✅ iOS 18.0.1
|
12 |
+
openai_whisper-large-v3,openai_whisper-large-v3,✅ macOS 15.0.1,✅ macOS 15.0.1,✅ macOS 15.1,✅ macOS 15.2,✅ macOS 15.1,✅ macOS 15.1,✅ macOS 15.1,✅ macOS 15.0,⚠️ <a style='color: #3B82F6; text-decoration: underline; text-decoration-style: dotted;' href=https://huggingface.co/datasets/argmaxinc/whisperkit-evals-dataset/blob/main/benchmark_data/2024-10-29T190053_a9b92c4/MacBookAir10%2C1_summary_2024-10-30T012535.json>macOS 15.1</a>,Not Supported,✅ iPadOS 17.6.1,Not Supported,✅ iPadOS 18.1,Not Supported,Not Supported,Not Supported,Not Supported,Not Supported,Not Supported,Not Supported,Not Supported,Not Supported,Not Supported,Not Supported,Not Supported
|
13 |
+
openai_whisper-large-v3-v20240930,openai_whisper-large-v3-v20240930,✅ macOS 15.0.1,✅ macOS 15.0.1,✅ macOS 15.1,✅ macOS 15.2,✅ macOS 15.1,✅ macOS 15.1,✅ macOS 15.1,✅ macOS 15.0,⚠️ <a style='color: #3B82F6; text-decoration: underline; text-decoration-style: dotted;' href=https://huggingface.co/datasets/argmaxinc/whisperkit-evals-dataset/blob/main/benchmark_data/2024-10-29T190053_a9b92c4/MacBookAir10%2C1_summary_2024-10-30T012535.json>macOS 15.1</a>,Not Supported,⚠️ <a style='color: #3B82F6; text-decoration: underline; text-decoration-style: dotted;' href=https://huggingface.co/datasets/argmaxinc/whisperkit-evals-dataset/blob/main/benchmark_data/2024-10-29T190053_a9b92c4/iPad14%2C8_summary_2024-10-30T073931.json>iPadOS 17.6.1</a>,Not Supported,⚠️ <a style='color: #3B82F6; text-decoration: underline; text-decoration-style: dotted;' href=https://huggingface.co/datasets/argmaxinc/whisperkit-evals-dataset/blob/main/benchmark_data/2024-10-29T190053_a9b92c4/iPad16%2C3_summary_2024-10-30T073931.json>iPadOS 18.1</a>,Not Supported,Not Supported,Not Supported,Not Supported,Not Supported,Not Supported,Not Supported,Not Supported,Not Supported,Not Supported,Not Supported,Not Supported
|
14 |
openai_whisper-large-v3-v20240930_626MB,openai_whisper-large-v3-v20240930_626MB,✅ macOS 15.0.1,✅ macOS 15.0.1,✅ macOS 15.1,✅ macOS 15.2,✅ macOS 15.1,✅ macOS 15.1,✅ macOS 15.1,✅ macOS 15.0,✅ macOS 15.1,Not Supported,✅ iPadOS 17.6.1,✅ iPadOS 18.0.1,✅ iPadOS 18.1,Not Supported,Not Supported,Not Supported,Not Supported,✅ iOS 18.1,✅ iOS 17.3,✅ iOS 17.3,✅ iOS 18.1,✅ iOS 18.2,✅ iOS 18.0,✅ iOS 18.0.1,✅ iOS 18.0.1
|
15 |
+
openai_whisper-large-v3-v20240930_turbo,openai_whisper-large-v3-v20240930_turbo,✅ macOS 15.0.1,✅ macOS 15.0.1,✅ macOS 15.1,✅ macOS 15.2,✅ macOS 15.1,✅ macOS 15.1,✅ macOS 15.1,✅ macOS 15.0,Not Supported,Not Supported,✅ iPadOS 17.6.1,Not Supported,⚠️ <a style='color: #3B82F6; text-decoration: underline; text-decoration-style: dotted;' href=https://huggingface.co/datasets/argmaxinc/whisperkit-evals-dataset/blob/main/benchmark_data/2024-10-29T190053_a9b92c4/iPad16%2C3_summary_2024-10-30T073931.json>iPadOS 18.1</a>,Not Supported,Not Supported,Not Supported,Not Supported,Not Supported,Not Supported,Not Supported,Not Supported,Not Supported,Not Supported,Not Supported,Not Supported
|
16 |
openai_whisper-large-v3-v20240930_turbo_632MB,openai_whisper-large-v3-v20240930_turbo_632MB,✅ macOS 15.0.1,✅ macOS 15.0.1,✅ macOS 15.1,✅ macOS 15.2,✅ macOS 15.1,✅ macOS 15.1,✅ macOS 15.1,✅ macOS 15.0,Not Supported,Not Supported,✅ iPadOS 17.6.1,✅ iPadOS 18.0.1,✅ iPadOS 18.1,Not Supported,Not Supported,Not Supported,Not Supported,✅ iOS 18.1,⚠️ <a style='color: #3B82F6; text-decoration: underline; text-decoration-style: dotted;' href=https://huggingface.co/datasets/argmaxinc/whisperkit-evals-dataset/blob/main/benchmark_data/2024-10-29T190053_a9b92c4/iPhone14%2C5_summary_2024-10-30T073931.json>iOS 17.3</a>,⚠️ <a style='color: #3B82F6; text-decoration: underline; text-decoration-style: dotted;' href=https://huggingface.co/datasets/argmaxinc/whisperkit-evals-dataset/blob/main/benchmark_data/2024-10-29T190053_a9b92c4/iPhone14%2C7_summary_2024-10-30T073931.json>iOS 17.3</a>,✅ iOS 18.1,✅ iOS 18.2,✅ iOS 18.0,✅ iOS 18.0.1,⚠️ <a style='color: #3B82F6; text-decoration: underline; text-decoration-style: dotted;' href=https://huggingface.co/datasets/argmaxinc/whisperkit-evals-dataset/blob/main/benchmark_data/2024-10-29T190053_a9b92c4/iPhone17%2C4_summary_2024-10-30T132649.json>iOS 18.0.1</a>
|
17 |
openai_whisper-large-v3_947MB,openai_whisper-large-v3_947MB,✅ macOS 15.0.1,✅ macOS 15.0.1,✅ macOS 15.1,✅ macOS 15.2,✅ macOS 15.1,✅ macOS 15.1,✅ macOS 15.1,✅ macOS 15.0,✅ macOS 15.1,Not Supported,✅ iPadOS 17.6.1,✅ iPadOS 18.0.1,✅ iPadOS 18.1,Not Supported,Not Supported,Not Supported,Not Supported,✅ iOS 18.1,⚠️ <a style='color: #3B82F6; text-decoration: underline; text-decoration-style: dotted;' href=https://huggingface.co/datasets/argmaxinc/whisperkit-evals-dataset/blob/main/benchmark_data/2024-10-29T190053_a9b92c4/iPhone14%2C5_summary_2024-10-30T073931.json>iOS 17.3</a>,✅ iOS 17.3,✅ iOS 18.1,✅ iOS 18.2,✅ iOS 18.0,✅ iOS 18.0.1,✅ iOS 18.0.1
|
18 |
+
openai_whisper-large-v3_turbo,openai_whisper-large-v3_turbo,✅ macOS 15.0.1,✅ macOS 15.0.1,✅ macOS 15.1,✅ macOS 15.2,✅ macOS 15.1,✅ macOS 15.1,✅ macOS 15.1,✅ macOS 15.0,Not Supported,Not Supported,⚠️ <a style='color: #3B82F6; text-decoration: underline; text-decoration-style: dotted;' href=https://huggingface.co/datasets/argmaxinc/whisperkit-evals-dataset/blob/main/benchmark_data/2024-10-29T190053_a9b92c4/iPad14%2C8_summary_2024-10-30T073931.json>iPadOS 17.6.1</a>,Not Supported,⚠️ <a style='color: #3B82F6; text-decoration: underline; text-decoration-style: dotted;' href=https://huggingface.co/datasets/argmaxinc/whisperkit-evals-dataset/blob/main/benchmark_data/2024-10-29T190053_a9b92c4/iPad16%2C3_summary_2024-10-30T073931.json>iPadOS 18.1</a>,Not Supported,Not Supported,Not Supported,Not Supported,Not Supported,Not Supported,Not Supported,Not Supported,Not Supported,Not Supported,Not Supported,Not Supported
|
19 |
openai_whisper-large-v3_turbo_954MB,openai_whisper-large-v3_turbo_954MB,✅ macOS 15.0.1,✅ macOS 15.0.1,✅ macOS 15.1,✅ macOS 15.2,✅ macOS 15.1,✅ macOS 15.1,✅ macOS 15.1,✅ macOS 15.0,Not Supported,Not Supported,✅ iPadOS 17.6.1,✅ iPadOS 18.0.1,✅ iPadOS 18.1,Not Supported,Not Supported,Not Supported,Not Supported,✅ iOS 18.1,⚠️ <a style='color: #3B82F6; text-decoration: underline; text-decoration-style: dotted;' href=https://huggingface.co/datasets/argmaxinc/whisperkit-evals-dataset/blob/main/benchmark_data/2024-10-29T190053_a9b92c4/iPhone14%2C5_summary_2024-10-30T073931.json>iOS 17.3</a>,✅ iOS 17.3,✅ iOS 18.1,✅ iOS 18.2,✅ iOS 18.0,✅ iOS 18.0.1,⚠️ <a style='color: #3B82F6; text-decoration: underline; text-decoration-style: dotted;' href=https://huggingface.co/datasets/argmaxinc/whisperkit-evals-dataset/blob/main/benchmark_data/2024-10-29T190053_a9b92c4/iPhone17%2C4_summary_2024-10-30T132649.json>iOS 18.0.1</a>
|
20 |
openai_whisper-small,openai_whisper-small,✅ macOS 15.0.1,✅ macOS 15.0.1,✅ macOS 15.1,✅ macOS 15.2,✅ macOS 15.1,✅ macOS 15.1,✅ macOS 15.1,✅ macOS 15.0,✅ macOS 15.1,✅ iPadOS 18.1,✅ iPadOS 17.6.1,✅ iPadOS 18.0.1,✅ iPadOS 18.1,Not Supported,⚠️ <a style='color: #3B82F6; text-decoration: underline; text-decoration-style: dotted;' href=https://huggingface.co/datasets/argmaxinc/whisperkit-evals-dataset/blob/main/benchmark_data/2024-10-29T190053_a9b92c4/iPhone13%2C1_summary_2024-10-30T022739.json>iOS 17.7</a>,⚠️ <a style='color: #3B82F6; text-decoration: underline; text-decoration-style: dotted;' href=https://huggingface.co/datasets/argmaxinc/whisperkit-evals-dataset/blob/main/benchmark_data/2024-10-29T190053_a9b92c4/iPhone13%2C2_summary_2024-10-30T152729.json>iOS 17.2.1</a>,✅ iOS 18.1,✅ iOS 18.1,✅ iOS 17.3,✅ iOS 17.3,✅ iOS 18.1,✅ iOS 18.2,✅ iOS 18.0,✅ iOS 18.0.1,✅ iOS 18.0.1
|
21 |
openai_whisper-small.en,openai_whisper-small.en,✅ macOS 15.0.1,✅ macOS 15.0.1,✅ macOS 15.1,✅ macOS 15.2,✅ macOS 15.1,✅ macOS 15.1,✅ macOS 15.1,✅ macOS 15.0,✅ macOS 15.1,✅ iPadOS 18.1,✅ iPadOS 17.6.1,✅ iPadOS 18.0.1,✅ iPadOS 18.1,Not Supported,⚠️ <a style='color: #3B82F6; text-decoration: underline; text-decoration-style: dotted;' href=https://huggingface.co/datasets/argmaxinc/whisperkit-evals-dataset/blob/main/benchmark_data/2024-10-29T190053_a9b92c4/iPhone13%2C1_summary_2024-10-30T022739.json>iOS 17.7</a>,⚠️ <a style='color: #3B82F6; text-decoration: underline; text-decoration-style: dotted;' href=https://huggingface.co/datasets/argmaxinc/whisperkit-evals-dataset/blob/main/benchmark_data/2024-10-29T190053_a9b92c4/iPhone13%2C2_summary_2024-10-30T152729.json>iOS 17.2.1</a>,✅ iOS 18.1,✅ iOS 18.1,✅ iOS 17.3,✅ iOS 17.3,✅ iOS 18.1,✅ iOS 18.2,✅ iOS 18.0,✅ iOS 18.0.1,✅ iOS 18.0.1
|
dashboard_data/test_coverage_112a023.json
ADDED
@@ -0,0 +1,239 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
1 |
+
{
|
2 |
+
"commit_hash": "112a023",
|
3 |
+
"total_devices": 137,
|
4 |
+
"tested_devices": 49,
|
5 |
+
"skipped_devices": 88,
|
6 |
+
"coverage_percentage": 35.76642335766424,
|
7 |
+
"tested_device_list": [
|
8 |
+
"iPhone12,3",
|
9 |
+
"Mac15,10",
|
10 |
+
"iPad14,9",
|
11 |
+
"iPhone12,1",
|
12 |
+
"Mac14,15",
|
13 |
+
"iPhone14,6",
|
14 |
+
"Mac15,13",
|
15 |
+
"Mac14,6",
|
16 |
+
"iPhone14,3",
|
17 |
+
"Mac14,13",
|
18 |
+
"Mac14,5",
|
19 |
+
"iPhone14,8",
|
20 |
+
"iPhone14,5",
|
21 |
+
"iPhone14,2",
|
22 |
+
"iPad14,6",
|
23 |
+
"Mac14,12",
|
24 |
+
"Mac16,9",
|
25 |
+
"Mac14,8",
|
26 |
+
"Mac15,12",
|
27 |
+
"Mac14,2",
|
28 |
+
"iPad14,10",
|
29 |
+
"iPhone14,7",
|
30 |
+
"Mac14,10",
|
31 |
+
"iPad16,6",
|
32 |
+
"iPad16,3",
|
33 |
+
"iPad16,5",
|
34 |
+
"Mac15,5",
|
35 |
+
"iPhone14,4",
|
36 |
+
"Mac14,14",
|
37 |
+
"Mac14,7",
|
38 |
+
"Mac15,11",
|
39 |
+
"iPad14,3",
|
40 |
+
"iPad14,5",
|
41 |
+
"Mac14,9",
|
42 |
+
"Mac15,6",
|
43 |
+
"iPad16,4",
|
44 |
+
"Mac15,4",
|
45 |
+
"Mac15,8",
|
46 |
+
"Mac16,8",
|
47 |
+
"Mac14,4",
|
48 |
+
"Mac15,9",
|
49 |
+
"Mac15,3",
|
50 |
+
"iPad14,4",
|
51 |
+
"Mac14,3",
|
52 |
+
"iPhone12,8",
|
53 |
+
"iPad14,11",
|
54 |
+
"Mac15,7",
|
55 |
+
"iPhone12,5",
|
56 |
+
"iPad14,8"
|
57 |
+
],
|
58 |
+
"skipped_device_list": [
|
59 |
+
"iPad15,5",
|
60 |
+
"iPad13,2",
|
61 |
+
"iPad8,6",
|
62 |
+
"iPad8,12",
|
63 |
+
"iPad8,9",
|
64 |
+
"iPad15,7",
|
65 |
+
"iPad15,3",
|
66 |
+
"iPad13,8",
|
67 |
+
"Mac16,6",
|
68 |
+
"iPhone11,5",
|
69 |
+
"iPad13,19",
|
70 |
+
"iPad8,2",
|
71 |
+
"iPhone16,1",
|
72 |
+
"iPhone12,2",
|
73 |
+
"iPad13,7",
|
74 |
+
"iPad8,3",
|
75 |
+
"iPhone13,1",
|
76 |
+
"iPad16,2",
|
77 |
+
"Macmini9,1",
|
78 |
+
"MacBookPro18,2",
|
79 |
+
"iPhone11,8",
|
80 |
+
"MacBookPro17,1",
|
81 |
+
"Mac16,10",
|
82 |
+
"iPhone15,5",
|
83 |
+
"iPhone17,4",
|
84 |
+
"Mac13,1",
|
85 |
+
"MacBookAir10,1",
|
86 |
+
"Mac13,2",
|
87 |
+
"iPad13,10",
|
88 |
+
"iPad8,11",
|
89 |
+
"Mac16,13",
|
90 |
+
"iPad13,1",
|
91 |
+
"iPad8,10",
|
92 |
+
"iPad13,5",
|
93 |
+
"iPad14,2",
|
94 |
+
"iPad13,9",
|
95 |
+
"iPhone15,2",
|
96 |
+
"iPad11,3",
|
97 |
+
"iPhone13,2",
|
98 |
+
"iPhone17,5",
|
99 |
+
"MacBookPro18,1",
|
100 |
+
"iMac21,2",
|
101 |
+
"MacBookPro18,4",
|
102 |
+
"iPad13,6",
|
103 |
+
"iPhone11,4",
|
104 |
+
"iPad8,1",
|
105 |
+
"iPhone17,2",
|
106 |
+
"iPhone11,6",
|
107 |
+
"iPad12,1",
|
108 |
+
"iMac21,1",
|
109 |
+
"MacBookPro18,3",
|
110 |
+
"iPhone11,3",
|
111 |
+
"iPad8,4",
|
112 |
+
"iPad11,4",
|
113 |
+
"iPad13,18",
|
114 |
+
"Mac16,3",
|
115 |
+
"iPhone12,4",
|
116 |
+
"iPhone13,3",
|
117 |
+
"Mac16,5",
|
118 |
+
"iPhone17,3",
|
119 |
+
"iPad8,7",
|
120 |
+
"iPad13,4",
|
121 |
+
"iPad15,8",
|
122 |
+
"iPad11,1",
|
123 |
+
"iPad11,2",
|
124 |
+
"iPhone13,4",
|
125 |
+
"iPad14,1",
|
126 |
+
"iPad13,17",
|
127 |
+
"iPad16,1",
|
128 |
+
"iPhone16,2",
|
129 |
+
"iPad15,4",
|
130 |
+
"iPhone11,2",
|
131 |
+
"iPhone15,4",
|
132 |
+
"iPhone17,1",
|
133 |
+
"iPad13,11",
|
134 |
+
"iPad8,5",
|
135 |
+
"Mac16,1",
|
136 |
+
"Mac16,2",
|
137 |
+
"iPad11,7",
|
138 |
+
"iPad11,6",
|
139 |
+
"Mac16,7",
|
140 |
+
"iPad13,16",
|
141 |
+
"iPhone15,3",
|
142 |
+
"iPad8,8",
|
143 |
+
"Mac16,12",
|
144 |
+
"iPad15,6",
|
145 |
+
"Mac16,11",
|
146 |
+
"iPad12,2"
|
147 |
+
],
|
148 |
+
"tested_os_versions": [
|
149 |
+
"macOS_15.1.1",
|
150 |
+
"iPadOS_18.1",
|
151 |
+
"iPadOS_17.6.1",
|
152 |
+
"macOS_15.0.1",
|
153 |
+
"macOS_15.2.0",
|
154 |
+
"iOS_17.6.1",
|
155 |
+
"iOS_17.7.1",
|
156 |
+
"macOS_15.2"
|
157 |
+
],
|
158 |
+
"has_target_os_coverage": false,
|
159 |
+
"covered_target_versions": [
|
160 |
+
"macOS 15",
|
161 |
+
"iOS 17",
|
162 |
+
"iOS 18"
|
163 |
+
],
|
164 |
+
"missing_target_versions": [
|
165 |
+
"macOS 14",
|
166 |
+
"macOS 26",
|
167 |
+
"iOS 26"
|
168 |
+
],
|
169 |
+
"has_target_chip_coverage": false,
|
170 |
+
"platform_chip_coverage": {
|
171 |
+
"iPad": {
|
172 |
+
"total_chips": 8,
|
173 |
+
"tested_chips": 2,
|
174 |
+
"coverage_percentage": 25.0,
|
175 |
+
"covered_chips": [
|
176 |
+
"M2",
|
177 |
+
"M4"
|
178 |
+
],
|
179 |
+
"missing_chips": [
|
180 |
+
"A14",
|
181 |
+
"A15",
|
182 |
+
"A16",
|
183 |
+
"A17 Pro",
|
184 |
+
"M1",
|
185 |
+
"M3"
|
186 |
+
]
|
187 |
+
},
|
188 |
+
"iPhone": {
|
189 |
+
"total_chips": 6,
|
190 |
+
"tested_chips": 2,
|
191 |
+
"coverage_percentage": 33.33333333333333,
|
192 |
+
"covered_chips": [
|
193 |
+
"A13",
|
194 |
+
"A15"
|
195 |
+
],
|
196 |
+
"missing_chips": [
|
197 |
+
"A14",
|
198 |
+
"A16",
|
199 |
+
"A17 Pro",
|
200 |
+
"A18",
|
201 |
+
"A18 Pro"
|
202 |
+
]
|
203 |
+
},
|
204 |
+
"Mac": {
|
205 |
+
"total_chips": 4,
|
206 |
+
"tested_chips": 2,
|
207 |
+
"coverage_percentage": 50.0,
|
208 |
+
"covered_chips": [
|
209 |
+
"M2",
|
210 |
+
"M3"
|
211 |
+
],
|
212 |
+
"missing_chips": [
|
213 |
+
"M1",
|
214 |
+
"M4"
|
215 |
+
]
|
216 |
+
}
|
217 |
+
},
|
218 |
+
"missing_target_chips": {
|
219 |
+
"iPad": [
|
220 |
+
"A14",
|
221 |
+
"A15",
|
222 |
+
"A16",
|
223 |
+
"A17 Pro",
|
224 |
+
"M1",
|
225 |
+
"M3"
|
226 |
+
],
|
227 |
+
"iPhone": [
|
228 |
+
"A14",
|
229 |
+
"A16",
|
230 |
+
"A17 Pro",
|
231 |
+
"A18",
|
232 |
+
"A18 Pro"
|
233 |
+
],
|
234 |
+
"Mac": [
|
235 |
+
"M1",
|
236 |
+
"M4"
|
237 |
+
]
|
238 |
+
}
|
239 |
+
}
|
dashboard_data/test_coverage_11a1fab.json
ADDED
@@ -0,0 +1,233 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
1 |
+
{
|
2 |
+
"commit_hash": "11a1fab",
|
3 |
+
"total_devices": 137,
|
4 |
+
"tested_devices": 22,
|
5 |
+
"skipped_devices": 115,
|
6 |
+
"coverage_percentage": 16.05839416058394,
|
7 |
+
"tested_device_list": [
|
8 |
+
"iPad15,5",
|
9 |
+
"iPad13,2",
|
10 |
+
"Mac16,5",
|
11 |
+
"Mac16,7",
|
12 |
+
"Mac16,13",
|
13 |
+
"iPad15,8",
|
14 |
+
"iPad13,1",
|
15 |
+
"iPad15,7",
|
16 |
+
"iPad15,3",
|
17 |
+
"iPad16,2",
|
18 |
+
"Mac16,6",
|
19 |
+
"Mac16,1",
|
20 |
+
"iPad13,19",
|
21 |
+
"Mac16,10",
|
22 |
+
"Mac16,12",
|
23 |
+
"iPad13,18",
|
24 |
+
"Mac16,2",
|
25 |
+
"iPad15,6",
|
26 |
+
"iPad16,1",
|
27 |
+
"Mac16,3",
|
28 |
+
"Mac16,11",
|
29 |
+
"iPad15,4"
|
30 |
+
],
|
31 |
+
"skipped_device_list": [
|
32 |
+
"Mac15,10",
|
33 |
+
"iPad8,6",
|
34 |
+
"iPad8,12",
|
35 |
+
"iPad8,9",
|
36 |
+
"Mac14,13",
|
37 |
+
"Mac14,5",
|
38 |
+
"iPhone14,5",
|
39 |
+
"Mac15,12",
|
40 |
+
"iPad13,8",
|
41 |
+
"Mac14,10",
|
42 |
+
"iPhone11,5",
|
43 |
+
"iPad8,2",
|
44 |
+
"iPhone16,1",
|
45 |
+
"Mac14,9",
|
46 |
+
"iPhone12,2",
|
47 |
+
"iPad13,7",
|
48 |
+
"iPad16,4",
|
49 |
+
"iPad8,3",
|
50 |
+
"iPhone13,1",
|
51 |
+
"Macmini9,1",
|
52 |
+
"Mac15,9",
|
53 |
+
"MacBookPro18,2",
|
54 |
+
"Mac14,3",
|
55 |
+
"iPhone11,8",
|
56 |
+
"iPhone12,8",
|
57 |
+
"MacBookPro17,1",
|
58 |
+
"Mac15,7",
|
59 |
+
"iPhone15,5",
|
60 |
+
"iPhone17,4",
|
61 |
+
"Mac13,1",
|
62 |
+
"MacBookAir10,1",
|
63 |
+
"Mac13,2",
|
64 |
+
"iPad13,10",
|
65 |
+
"iPad8,11",
|
66 |
+
"Mac14,6",
|
67 |
+
"iPhone14,3",
|
68 |
+
"iPhone14,2",
|
69 |
+
"Mac16,9",
|
70 |
+
"iPad8,10",
|
71 |
+
"Mac14,2",
|
72 |
+
"iPad13,5",
|
73 |
+
"iPad14,2",
|
74 |
+
"iPad13,9",
|
75 |
+
"iPhone15,2",
|
76 |
+
"iPad16,3",
|
77 |
+
"iPad16,5",
|
78 |
+
"iPad11,3",
|
79 |
+
"iPhone13,2",
|
80 |
+
"iPhone17,5",
|
81 |
+
"MacBookPro18,1",
|
82 |
+
"iPad14,3",
|
83 |
+
"iPad14,5",
|
84 |
+
"iMac21,2",
|
85 |
+
"MacBookPro18,4",
|
86 |
+
"iPad13,6",
|
87 |
+
"iPhone11,4",
|
88 |
+
"Mac15,4",
|
89 |
+
"iPad8,1",
|
90 |
+
"iPhone17,2",
|
91 |
+
"Mac15,8",
|
92 |
+
"iPhone11,6",
|
93 |
+
"iPad12,1",
|
94 |
+
"iPad14,8",
|
95 |
+
"iPhone12,3",
|
96 |
+
"iMac21,1",
|
97 |
+
"iPhone12,1",
|
98 |
+
"Mac14,15",
|
99 |
+
"iPhone14,6",
|
100 |
+
"MacBookPro18,3",
|
101 |
+
"Mac15,13",
|
102 |
+
"iPad14,6",
|
103 |
+
"iPhone14,8",
|
104 |
+
"Mac14,8",
|
105 |
+
"Mac14,12",
|
106 |
+
"iPhone11,3",
|
107 |
+
"iPhone14,7",
|
108 |
+
"iPad8,4",
|
109 |
+
"iPad11,4",
|
110 |
+
"iPad16,6",
|
111 |
+
"Mac15,5",
|
112 |
+
"iPhone14,4",
|
113 |
+
"iPhone12,4",
|
114 |
+
"iPhone13,3",
|
115 |
+
"Mac15,11",
|
116 |
+
"iPhone17,3",
|
117 |
+
"iPad8,7",
|
118 |
+
"iPad13,4",
|
119 |
+
"Mac15,6",
|
120 |
+
"iPad11,1",
|
121 |
+
"iPad11,2",
|
122 |
+
"Mac14,4",
|
123 |
+
"iPad14,4",
|
124 |
+
"iPhone13,4",
|
125 |
+
"iPad14,1",
|
126 |
+
"iPad13,17",
|
127 |
+
"iPhone12,5",
|
128 |
+
"iPhone16,2",
|
129 |
+
"iPhone11,2",
|
130 |
+
"iPad14,9",
|
131 |
+
"iPad14,10",
|
132 |
+
"iPhone15,4",
|
133 |
+
"iPhone17,1",
|
134 |
+
"iPad13,11",
|
135 |
+
"iPad8,5",
|
136 |
+
"Mac14,14",
|
137 |
+
"Mac14,7",
|
138 |
+
"iPad11,7",
|
139 |
+
"iPad11,6",
|
140 |
+
"Mac16,8",
|
141 |
+
"iPad13,16",
|
142 |
+
"Mac15,3",
|
143 |
+
"iPhone15,3",
|
144 |
+
"iPad8,8",
|
145 |
+
"iPad14,11",
|
146 |
+
"iPad12,2"
|
147 |
+
],
|
148 |
+
"tested_os_versions": [
|
149 |
+
"macOS_15.4",
|
150 |
+
"iPadOS_18.3.2",
|
151 |
+
"macOS_15.4.0",
|
152 |
+
"iPadOS_18.4"
|
153 |
+
],
|
154 |
+
"has_target_os_coverage": false,
|
155 |
+
"covered_target_versions": [
|
156 |
+
"macOS 15",
|
157 |
+
"iOS 18"
|
158 |
+
],
|
159 |
+
"missing_target_versions": [
|
160 |
+
"macOS 14",
|
161 |
+
"macOS 26",
|
162 |
+
"iOS 17",
|
163 |
+
"iOS 26"
|
164 |
+
],
|
165 |
+
"has_target_chip_coverage": false,
|
166 |
+
"platform_chip_coverage": {
|
167 |
+
"iPad": {
|
168 |
+
"total_chips": 8,
|
169 |
+
"tested_chips": 4,
|
170 |
+
"coverage_percentage": 50.0,
|
171 |
+
"covered_chips": [
|
172 |
+
"A14",
|
173 |
+
"A16",
|
174 |
+
"A17 Pro",
|
175 |
+
"M3"
|
176 |
+
],
|
177 |
+
"missing_chips": [
|
178 |
+
"A15",
|
179 |
+
"M1",
|
180 |
+
"M2",
|
181 |
+
"M4"
|
182 |
+
]
|
183 |
+
},
|
184 |
+
"iPhone": {
|
185 |
+
"total_chips": 6,
|
186 |
+
"tested_chips": 0,
|
187 |
+
"coverage_percentage": 0.0,
|
188 |
+
"covered_chips": [],
|
189 |
+
"missing_chips": [
|
190 |
+
"A14",
|
191 |
+
"A15",
|
192 |
+
"A16",
|
193 |
+
"A17 Pro",
|
194 |
+
"A18",
|
195 |
+
"A18 Pro"
|
196 |
+
]
|
197 |
+
},
|
198 |
+
"Mac": {
|
199 |
+
"total_chips": 4,
|
200 |
+
"tested_chips": 1,
|
201 |
+
"coverage_percentage": 25.0,
|
202 |
+
"covered_chips": [
|
203 |
+
"M4"
|
204 |
+
],
|
205 |
+
"missing_chips": [
|
206 |
+
"M1",
|
207 |
+
"M2",
|
208 |
+
"M3"
|
209 |
+
]
|
210 |
+
}
|
211 |
+
},
|
212 |
+
"missing_target_chips": {
|
213 |
+
"iPad": [
|
214 |
+
"A15",
|
215 |
+
"M1",
|
216 |
+
"M2",
|
217 |
+
"M4"
|
218 |
+
],
|
219 |
+
"iPhone": [
|
220 |
+
"A14",
|
221 |
+
"A15",
|
222 |
+
"A16",
|
223 |
+
"A17 Pro",
|
224 |
+
"A18",
|
225 |
+
"A18 Pro"
|
226 |
+
],
|
227 |
+
"Mac": [
|
228 |
+
"M1",
|
229 |
+
"M2",
|
230 |
+
"M3"
|
231 |
+
]
|
232 |
+
}
|
233 |
+
}
|
dashboard_data/test_coverage_8c0acbd.json
ADDED
@@ -0,0 +1,234 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
1 |
+
{
|
2 |
+
"commit_hash": "8c0acbd",
|
3 |
+
"total_devices": 137,
|
4 |
+
"tested_devices": 82,
|
5 |
+
"skipped_devices": 55,
|
6 |
+
"coverage_percentage": 59.854014598540154,
|
7 |
+
"tested_device_list": [
|
8 |
+
"iPhone12,3",
|
9 |
+
"Mac15,10",
|
10 |
+
"iPad15,5",
|
11 |
+
"iPhone12,1",
|
12 |
+
"Mac14,15",
|
13 |
+
"iPhone14,6",
|
14 |
+
"Mac15,13",
|
15 |
+
"Mac14,13",
|
16 |
+
"iPad14,6",
|
17 |
+
"Mac14,5",
|
18 |
+
"iPhone14,8",
|
19 |
+
"iPhone14,5",
|
20 |
+
"Mac14,12",
|
21 |
+
"Mac14,8",
|
22 |
+
"Mac15,12",
|
23 |
+
"iPad15,7",
|
24 |
+
"iPad15,3",
|
25 |
+
"iPad13,8",
|
26 |
+
"iPhone14,7",
|
27 |
+
"Mac14,10",
|
28 |
+
"iPad16,6",
|
29 |
+
"Mac15,5",
|
30 |
+
"iPhone14,4",
|
31 |
+
"iPhone13,3",
|
32 |
+
"Mac15,11",
|
33 |
+
"Mac14,9",
|
34 |
+
"iPhone16,1",
|
35 |
+
"iPad13,7",
|
36 |
+
"iPhone17,3",
|
37 |
+
"iPad13,4",
|
38 |
+
"Mac15,6",
|
39 |
+
"iPad16,4",
|
40 |
+
"iPad15,8",
|
41 |
+
"iPhone13,1",
|
42 |
+
"Mac14,4",
|
43 |
+
"iPad16,2",
|
44 |
+
"Mac15,9",
|
45 |
+
"iPad14,1",
|
46 |
+
"iPhone13,4",
|
47 |
+
"Mac14,3",
|
48 |
+
"iPad14,4",
|
49 |
+
"iPhone12,8",
|
50 |
+
"Mac15,7",
|
51 |
+
"iPhone15,5",
|
52 |
+
"iPad13,17",
|
53 |
+
"iPhone12,5",
|
54 |
+
"iPad16,1",
|
55 |
+
"iPhone16,2",
|
56 |
+
"iPad15,4",
|
57 |
+
"iPhone17,4",
|
58 |
+
"iPad14,9",
|
59 |
+
"iPad13,10",
|
60 |
+
"Mac14,6",
|
61 |
+
"iPhone14,3",
|
62 |
+
"iPhone14,2",
|
63 |
+
"Mac16,9",
|
64 |
+
"Mac14,2",
|
65 |
+
"iPad13,5",
|
66 |
+
"iPad14,2",
|
67 |
+
"iPad14,10",
|
68 |
+
"iPhone15,4",
|
69 |
+
"iPad13,9",
|
70 |
+
"iPad13,11",
|
71 |
+
"iPhone15,2",
|
72 |
+
"iPad16,3",
|
73 |
+
"iPad16,5",
|
74 |
+
"iPhone13,2",
|
75 |
+
"Mac14,14",
|
76 |
+
"iPhone17,5",
|
77 |
+
"Mac14,7",
|
78 |
+
"iPad14,3",
|
79 |
+
"iPad14,5",
|
80 |
+
"iPad13,6",
|
81 |
+
"Mac15,4",
|
82 |
+
"Mac15,8",
|
83 |
+
"iPad13,16",
|
84 |
+
"Mac16,8",
|
85 |
+
"Mac15,3",
|
86 |
+
"iPhone15,3",
|
87 |
+
"iPad14,11",
|
88 |
+
"iPad15,6",
|
89 |
+
"iPad14,8"
|
90 |
+
],
|
91 |
+
"skipped_device_list": [
|
92 |
+
"Mac13,1",
|
93 |
+
"iMac21,1",
|
94 |
+
"iPad13,2",
|
95 |
+
"iPad8,6",
|
96 |
+
"MacBookAir10,1",
|
97 |
+
"Mac13,2",
|
98 |
+
"iPad8,12",
|
99 |
+
"iPad8,11",
|
100 |
+
"MacBookPro18,3",
|
101 |
+
"iPad8,9",
|
102 |
+
"Mac16,13",
|
103 |
+
"iPad13,1",
|
104 |
+
"iPhone11,3",
|
105 |
+
"iPad8,10",
|
106 |
+
"iPhone17,1",
|
107 |
+
"Mac16,6",
|
108 |
+
"iPad8,5",
|
109 |
+
"iPhone11,5",
|
110 |
+
"iPad8,4",
|
111 |
+
"iPad11,4",
|
112 |
+
"iPad11,3",
|
113 |
+
"iPad13,19",
|
114 |
+
"Mac16,1",
|
115 |
+
"Mac16,2",
|
116 |
+
"iPad13,18",
|
117 |
+
"iPad8,2",
|
118 |
+
"Mac16,3",
|
119 |
+
"iPhone12,4",
|
120 |
+
"MacBookPro18,1",
|
121 |
+
"iPad11,7",
|
122 |
+
"iMac21,2",
|
123 |
+
"iPhone12,2",
|
124 |
+
"MacBookPro18,4",
|
125 |
+
"Mac16,5",
|
126 |
+
"iPad11,6",
|
127 |
+
"iPad12,2",
|
128 |
+
"iPad8,7",
|
129 |
+
"iPhone11,4",
|
130 |
+
"Mac16,7",
|
131 |
+
"iPad8,3",
|
132 |
+
"iPad8,1",
|
133 |
+
"iPhone17,2",
|
134 |
+
"iPhone11,6",
|
135 |
+
"iPad11,1",
|
136 |
+
"iPad11,2",
|
137 |
+
"Macmini9,1",
|
138 |
+
"iPad12,1",
|
139 |
+
"MacBookPro18,2",
|
140 |
+
"iPhone11,8",
|
141 |
+
"MacBookPro17,1",
|
142 |
+
"iPad8,8",
|
143 |
+
"Mac16,10",
|
144 |
+
"Mac16,12",
|
145 |
+
"Mac16,11",
|
146 |
+
"iPhone11,2"
|
147 |
+
],
|
148 |
+
"tested_os_versions": [
|
149 |
+
"macOS_15.5.0",
|
150 |
+
"iPadOS_18.4.1",
|
151 |
+
"iOS_18.4.1",
|
152 |
+
"iOS_19.0",
|
153 |
+
"iOS_18.1",
|
154 |
+
"iOS_26.0",
|
155 |
+
"macOS_15.5",
|
156 |
+
"iPadOS_26.0",
|
157 |
+
"iPadOS_18.5",
|
158 |
+
"iOS_18.5",
|
159 |
+
"iPadOS_18.4",
|
160 |
+
"iPadOS_19.0"
|
161 |
+
],
|
162 |
+
"has_target_os_coverage": false,
|
163 |
+
"covered_target_versions": [
|
164 |
+
"macOS 15",
|
165 |
+
"iOS 18",
|
166 |
+
"iOS 26"
|
167 |
+
],
|
168 |
+
"missing_target_versions": [
|
169 |
+
"macOS 14",
|
170 |
+
"macOS 26",
|
171 |
+
"iOS 17"
|
172 |
+
],
|
173 |
+
"has_target_chip_coverage": false,
|
174 |
+
"platform_chip_coverage": {
|
175 |
+
"iPad": {
|
176 |
+
"total_chips": 8,
|
177 |
+
"tested_chips": 7,
|
178 |
+
"coverage_percentage": 87.5,
|
179 |
+
"covered_chips": [
|
180 |
+
"A15",
|
181 |
+
"A16",
|
182 |
+
"A17 Pro",
|
183 |
+
"M1",
|
184 |
+
"M2",
|
185 |
+
"M3",
|
186 |
+
"M4"
|
187 |
+
],
|
188 |
+
"missing_chips": [
|
189 |
+
"A14"
|
190 |
+
]
|
191 |
+
},
|
192 |
+
"iPhone": {
|
193 |
+
"total_chips": 6,
|
194 |
+
"tested_chips": 6,
|
195 |
+
"coverage_percentage": 100.0,
|
196 |
+
"covered_chips": [
|
197 |
+
"A13",
|
198 |
+
"A14",
|
199 |
+
"A15",
|
200 |
+
"A16",
|
201 |
+
"A17 Pro",
|
202 |
+
"A18"
|
203 |
+
],
|
204 |
+
"missing_chips": [
|
205 |
+
"A18 Pro"
|
206 |
+
]
|
207 |
+
},
|
208 |
+
"Mac": {
|
209 |
+
"total_chips": 4,
|
210 |
+
"tested_chips": 2,
|
211 |
+
"coverage_percentage": 50.0,
|
212 |
+
"covered_chips": [
|
213 |
+
"M2",
|
214 |
+
"M3"
|
215 |
+
],
|
216 |
+
"missing_chips": [
|
217 |
+
"M1",
|
218 |
+
"M4"
|
219 |
+
]
|
220 |
+
}
|
221 |
+
},
|
222 |
+
"missing_target_chips": {
|
223 |
+
"iPad": [
|
224 |
+
"A14"
|
225 |
+
],
|
226 |
+
"iPhone": [
|
227 |
+
"A18 Pro"
|
228 |
+
],
|
229 |
+
"Mac": [
|
230 |
+
"M1",
|
231 |
+
"M4"
|
232 |
+
]
|
233 |
+
}
|
234 |
+
}
|
dashboard_data/test_coverage_a9b92c4.json
ADDED
@@ -0,0 +1,239 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
1 |
+
{
|
2 |
+
"commit_hash": "a9b92c4",
|
3 |
+
"total_devices": 137,
|
4 |
+
"tested_devices": 93,
|
5 |
+
"skipped_devices": 44,
|
6 |
+
"coverage_percentage": 67.88321167883211,
|
7 |
+
"tested_device_list": [
|
8 |
+
"iPhone12,3",
|
9 |
+
"Mac15,10",
|
10 |
+
"iMac21,1",
|
11 |
+
"iPhone12,1",
|
12 |
+
"Mac14,15",
|
13 |
+
"iPhone14,6",
|
14 |
+
"MacBookPro18,3",
|
15 |
+
"Mac15,13",
|
16 |
+
"Mac14,13",
|
17 |
+
"iPad14,6",
|
18 |
+
"Mac14,5",
|
19 |
+
"iPhone14,8",
|
20 |
+
"iPhone14,5",
|
21 |
+
"Mac14,12",
|
22 |
+
"Mac14,8",
|
23 |
+
"Mac15,12",
|
24 |
+
"iPad13,8",
|
25 |
+
"iPhone14,7",
|
26 |
+
"Mac16,6",
|
27 |
+
"Mac14,10",
|
28 |
+
"iPad16,6",
|
29 |
+
"Mac15,5",
|
30 |
+
"iPhone14,4",
|
31 |
+
"Mac16,3",
|
32 |
+
"iPhone13,3",
|
33 |
+
"Mac15,11",
|
34 |
+
"iPhone16,1",
|
35 |
+
"Mac14,9",
|
36 |
+
"Mac16,5",
|
37 |
+
"iPad13,7",
|
38 |
+
"iPhone17,3",
|
39 |
+
"iPad13,4",
|
40 |
+
"Mac15,6",
|
41 |
+
"iPad16,4",
|
42 |
+
"iPhone13,1",
|
43 |
+
"Mac14,4",
|
44 |
+
"iPad16,2",
|
45 |
+
"Macmini9,1",
|
46 |
+
"Mac15,9",
|
47 |
+
"iPhone13,4",
|
48 |
+
"iPad14,4",
|
49 |
+
"MacBookPro18,2",
|
50 |
+
"Mac14,3",
|
51 |
+
"iPhone12,8",
|
52 |
+
"MacBookPro17,1",
|
53 |
+
"Mac16,10",
|
54 |
+
"Mac15,7",
|
55 |
+
"iPhone12,5",
|
56 |
+
"iPad16,1",
|
57 |
+
"iPhone16,2",
|
58 |
+
"iPad13,17",
|
59 |
+
"iPhone17,4",
|
60 |
+
"Mac13,1",
|
61 |
+
"MacBookAir10,1",
|
62 |
+
"iPad14,9",
|
63 |
+
"Mac13,2",
|
64 |
+
"iPad13,10",
|
65 |
+
"Mac14,6",
|
66 |
+
"iPhone14,3",
|
67 |
+
"iPhone14,2",
|
68 |
+
"Mac16,13",
|
69 |
+
"Mac16,9",
|
70 |
+
"Mac14,2",
|
71 |
+
"iPad13,5",
|
72 |
+
"iPad14,10",
|
73 |
+
"iPhone17,1",
|
74 |
+
"iPad13,9",
|
75 |
+
"iPad13,11",
|
76 |
+
"iPad16,3",
|
77 |
+
"iPad16,5",
|
78 |
+
"iPhone13,2",
|
79 |
+
"Mac16,1",
|
80 |
+
"Mac16,2",
|
81 |
+
"Mac14,14",
|
82 |
+
"MacBookPro18,1",
|
83 |
+
"Mac14,7",
|
84 |
+
"iPhone17,5",
|
85 |
+
"iPad14,3",
|
86 |
+
"iPad14,5",
|
87 |
+
"iMac21,2",
|
88 |
+
"MacBookPro18,4",
|
89 |
+
"iPad13,6",
|
90 |
+
"Mac16,7",
|
91 |
+
"Mac15,4",
|
92 |
+
"iPhone17,2",
|
93 |
+
"Mac15,8",
|
94 |
+
"iPad13,16",
|
95 |
+
"Mac16,8",
|
96 |
+
"Mac15,3",
|
97 |
+
"Mac16,12",
|
98 |
+
"iPad14,11",
|
99 |
+
"Mac16,11",
|
100 |
+
"iPad14,8"
|
101 |
+
],
|
102 |
+
"skipped_device_list": [
|
103 |
+
"iPad15,5",
|
104 |
+
"iPad13,2",
|
105 |
+
"iPad8,6",
|
106 |
+
"iPad15,6",
|
107 |
+
"iPad8,12",
|
108 |
+
"iPad8,11",
|
109 |
+
"iPad8,9",
|
110 |
+
"iPad13,1",
|
111 |
+
"iPhone11,3",
|
112 |
+
"iPad8,10",
|
113 |
+
"iPad15,7",
|
114 |
+
"iPad15,3",
|
115 |
+
"iPad14,2",
|
116 |
+
"iPhone15,4",
|
117 |
+
"iPhone15,2",
|
118 |
+
"iPad8,5",
|
119 |
+
"iPhone11,5",
|
120 |
+
"iPad8,4",
|
121 |
+
"iPad11,4",
|
122 |
+
"iPad11,3",
|
123 |
+
"iPad13,19",
|
124 |
+
"iPad13,18",
|
125 |
+
"iPad8,2",
|
126 |
+
"iPhone12,4",
|
127 |
+
"iPad11,7",
|
128 |
+
"iPhone12,2",
|
129 |
+
"iPad11,6",
|
130 |
+
"iPad12,2",
|
131 |
+
"iPad8,7",
|
132 |
+
"iPhone11,4",
|
133 |
+
"iPad8,3",
|
134 |
+
"iPad8,1",
|
135 |
+
"iPad15,8",
|
136 |
+
"iPhone11,6",
|
137 |
+
"iPad11,1",
|
138 |
+
"iPad11,2",
|
139 |
+
"iPad12,1",
|
140 |
+
"iPad14,1",
|
141 |
+
"iPhone11,8",
|
142 |
+
"iPhone15,3",
|
143 |
+
"iPad8,8",
|
144 |
+
"iPhone15,5",
|
145 |
+
"iPad15,4",
|
146 |
+
"iPhone11,2"
|
147 |
+
],
|
148 |
+
"tested_os_versions": [
|
149 |
+
"macOS_15.0.0",
|
150 |
+
"macOS_15.1.0",
|
151 |
+
"iPadOS_18.1",
|
152 |
+
"iOS_18.1",
|
153 |
+
"iPadOS_17.6.1",
|
154 |
+
"macOS_15.0.1",
|
155 |
+
"macOS_15.2.0",
|
156 |
+
"iOS_17.3",
|
157 |
+
"iOS_18.0",
|
158 |
+
"iPadOS_18.0.1",
|
159 |
+
"macOS_15.2",
|
160 |
+
"macOS_15.1",
|
161 |
+
"iOS_17.2.1",
|
162 |
+
"iOS_17.7",
|
163 |
+
"iOS_17.6.1",
|
164 |
+
"iOS_18.2",
|
165 |
+
"iOS_18.0.1",
|
166 |
+
"macOS_15.0"
|
167 |
+
],
|
168 |
+
"has_target_os_coverage": false,
|
169 |
+
"covered_target_versions": [
|
170 |
+
"macOS 15",
|
171 |
+
"iOS 17",
|
172 |
+
"iOS 18"
|
173 |
+
],
|
174 |
+
"missing_target_versions": [
|
175 |
+
"macOS 14",
|
176 |
+
"macOS 26",
|
177 |
+
"iOS 26"
|
178 |
+
],
|
179 |
+
"has_target_chip_coverage": false,
|
180 |
+
"platform_chip_coverage": {
|
181 |
+
"iPad": {
|
182 |
+
"total_chips": 8,
|
183 |
+
"tested_chips": 4,
|
184 |
+
"coverage_percentage": 50.0,
|
185 |
+
"covered_chips": [
|
186 |
+
"A17 Pro",
|
187 |
+
"M1",
|
188 |
+
"M2",
|
189 |
+
"M4"
|
190 |
+
],
|
191 |
+
"missing_chips": [
|
192 |
+
"A14",
|
193 |
+
"A15",
|
194 |
+
"A16",
|
195 |
+
"M3"
|
196 |
+
]
|
197 |
+
},
|
198 |
+
"iPhone": {
|
199 |
+
"total_chips": 6,
|
200 |
+
"tested_chips": 6,
|
201 |
+
"coverage_percentage": 100.0,
|
202 |
+
"covered_chips": [
|
203 |
+
"A13",
|
204 |
+
"A14",
|
205 |
+
"A15",
|
206 |
+
"A17 Pro",
|
207 |
+
"A18",
|
208 |
+
"A18 Pro"
|
209 |
+
],
|
210 |
+
"missing_chips": [
|
211 |
+
"A16"
|
212 |
+
]
|
213 |
+
},
|
214 |
+
"Mac": {
|
215 |
+
"total_chips": 4,
|
216 |
+
"tested_chips": 4,
|
217 |
+
"coverage_percentage": 100.0,
|
218 |
+
"covered_chips": [
|
219 |
+
"M1",
|
220 |
+
"M2",
|
221 |
+
"M3",
|
222 |
+
"M4"
|
223 |
+
],
|
224 |
+
"missing_chips": []
|
225 |
+
}
|
226 |
+
},
|
227 |
+
"missing_target_chips": {
|
228 |
+
"iPad": [
|
229 |
+
"A14",
|
230 |
+
"A15",
|
231 |
+
"A16",
|
232 |
+
"M3"
|
233 |
+
],
|
234 |
+
"iPhone": [
|
235 |
+
"A16"
|
236 |
+
],
|
237 |
+
"Mac": []
|
238 |
+
}
|
239 |
+
}
|
dashboard_data/test_coverage_ca49596.json
ADDED
@@ -0,0 +1,237 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
1 |
+
{
|
2 |
+
"commit_hash": "ca49596",
|
3 |
+
"total_devices": 137,
|
4 |
+
"tested_devices": 63,
|
5 |
+
"skipped_devices": 74,
|
6 |
+
"coverage_percentage": 45.98540145985402,
|
7 |
+
"tested_device_list": [
|
8 |
+
"iPhone12,3",
|
9 |
+
"Mac15,10",
|
10 |
+
"iPad15,5",
|
11 |
+
"iPad14,9",
|
12 |
+
"iPad15,6",
|
13 |
+
"iPhone12,1",
|
14 |
+
"Mac14,15",
|
15 |
+
"iPhone14,6",
|
16 |
+
"Mac15,13",
|
17 |
+
"Mac14,6",
|
18 |
+
"iPhone14,3",
|
19 |
+
"Mac14,13",
|
20 |
+
"Mac14,5",
|
21 |
+
"iPhone14,2",
|
22 |
+
"iPhone14,8",
|
23 |
+
"iPhone14,5",
|
24 |
+
"Mac16,13",
|
25 |
+
"Mac14,12",
|
26 |
+
"Mac16,9",
|
27 |
+
"Mac14,8",
|
28 |
+
"Mac15,12",
|
29 |
+
"Mac14,2",
|
30 |
+
"iPad15,3",
|
31 |
+
"iPad14,10",
|
32 |
+
"iPhone14,7",
|
33 |
+
"Mac16,6",
|
34 |
+
"Mac14,10",
|
35 |
+
"iPad16,6",
|
36 |
+
"iPad16,3",
|
37 |
+
"iPad16,5",
|
38 |
+
"Mac16,1",
|
39 |
+
"Mac15,5",
|
40 |
+
"Mac16,2",
|
41 |
+
"iPhone14,4",
|
42 |
+
"Mac14,14",
|
43 |
+
"Mac16,3",
|
44 |
+
"Mac14,7",
|
45 |
+
"Mac15,11",
|
46 |
+
"iPad14,3",
|
47 |
+
"iPad14,5",
|
48 |
+
"Mac14,9",
|
49 |
+
"Mac16,5",
|
50 |
+
"Mac15,6",
|
51 |
+
"iPad16,4",
|
52 |
+
"Mac16,7",
|
53 |
+
"Mac15,4",
|
54 |
+
"Mac15,8",
|
55 |
+
"Mac16,8",
|
56 |
+
"Mac14,4",
|
57 |
+
"iPad14,6",
|
58 |
+
"Mac15,9",
|
59 |
+
"Mac15,3",
|
60 |
+
"iPad14,4",
|
61 |
+
"Mac14,3",
|
62 |
+
"iPhone12,8",
|
63 |
+
"Mac16,10",
|
64 |
+
"Mac15,7",
|
65 |
+
"Mac16,12",
|
66 |
+
"iPad14,11",
|
67 |
+
"iPhone12,5",
|
68 |
+
"Mac16,11",
|
69 |
+
"iPad14,8",
|
70 |
+
"iPad15,4"
|
71 |
+
],
|
72 |
+
"skipped_device_list": [
|
73 |
+
"Mac13,1",
|
74 |
+
"iMac21,1",
|
75 |
+
"iPad13,2",
|
76 |
+
"iPad8,6",
|
77 |
+
"MacBookAir10,1",
|
78 |
+
"Mac13,2",
|
79 |
+
"iPad8,12",
|
80 |
+
"iPad13,10",
|
81 |
+
"iPad8,11",
|
82 |
+
"iPad8,9",
|
83 |
+
"MacBookPro18,3",
|
84 |
+
"iPad13,1",
|
85 |
+
"iPhone11,3",
|
86 |
+
"iPad8,10",
|
87 |
+
"iPad15,7",
|
88 |
+
"iPad13,5",
|
89 |
+
"iPad13,8",
|
90 |
+
"iPad14,2",
|
91 |
+
"iPhone15,4",
|
92 |
+
"iPad13,9",
|
93 |
+
"iPhone17,1",
|
94 |
+
"iPhone11,2",
|
95 |
+
"iPhone15,2",
|
96 |
+
"iPad13,11",
|
97 |
+
"iPhone11,5",
|
98 |
+
"iPad8,4",
|
99 |
+
"iPad11,4",
|
100 |
+
"iPad8,5",
|
101 |
+
"iPad11,3",
|
102 |
+
"iPad13,19",
|
103 |
+
"iPhone13,2",
|
104 |
+
"iPad13,18",
|
105 |
+
"iPad8,2",
|
106 |
+
"iPhone12,4",
|
107 |
+
"iPhone17,5",
|
108 |
+
"MacBookPro18,1",
|
109 |
+
"iPhone13,3",
|
110 |
+
"iPad11,7",
|
111 |
+
"iPhone16,1",
|
112 |
+
"iMac21,2",
|
113 |
+
"iPhone12,2",
|
114 |
+
"MacBookPro18,4",
|
115 |
+
"iPad13,7",
|
116 |
+
"iPhone17,3",
|
117 |
+
"iPad11,6",
|
118 |
+
"iPad8,7",
|
119 |
+
"iPad13,6",
|
120 |
+
"iPad13,4",
|
121 |
+
"iPhone11,4",
|
122 |
+
"iPad12,2",
|
123 |
+
"iPad8,3",
|
124 |
+
"iPad8,1",
|
125 |
+
"iPad13,17",
|
126 |
+
"iPhone17,2",
|
127 |
+
"iPad15,8",
|
128 |
+
"iPad13,16",
|
129 |
+
"iPhone13,1",
|
130 |
+
"iPhone11,6",
|
131 |
+
"iPad16,2",
|
132 |
+
"iPad11,1",
|
133 |
+
"Macmini9,1",
|
134 |
+
"iPad11,2",
|
135 |
+
"iPhone13,4",
|
136 |
+
"iPad12,1",
|
137 |
+
"iPad14,1",
|
138 |
+
"MacBookPro18,2",
|
139 |
+
"iPhone11,8",
|
140 |
+
"MacBookPro17,1",
|
141 |
+
"iPhone15,3",
|
142 |
+
"iPad8,8",
|
143 |
+
"iPhone15,5",
|
144 |
+
"iPad16,1",
|
145 |
+
"iPhone16,2",
|
146 |
+
"iPhone17,4"
|
147 |
+
],
|
148 |
+
"tested_os_versions": [
|
149 |
+
"macOS_15.3",
|
150 |
+
"iOS_18.1",
|
151 |
+
"iPadOS_18.3.2",
|
152 |
+
"macOS_15.4",
|
153 |
+
"iOS_17.6.1",
|
154 |
+
"iPadOS_18.4",
|
155 |
+
"macOS_15.4.0",
|
156 |
+
"macOS_15.3.0"
|
157 |
+
],
|
158 |
+
"has_target_os_coverage": false,
|
159 |
+
"covered_target_versions": [
|
160 |
+
"macOS 15",
|
161 |
+
"iOS 17",
|
162 |
+
"iOS 18"
|
163 |
+
],
|
164 |
+
"missing_target_versions": [
|
165 |
+
"macOS 14",
|
166 |
+
"macOS 26",
|
167 |
+
"iOS 26"
|
168 |
+
],
|
169 |
+
"has_target_chip_coverage": false,
|
170 |
+
"platform_chip_coverage": {
|
171 |
+
"iPad": {
|
172 |
+
"total_chips": 8,
|
173 |
+
"tested_chips": 3,
|
174 |
+
"coverage_percentage": 37.5,
|
175 |
+
"covered_chips": [
|
176 |
+
"M2",
|
177 |
+
"M3",
|
178 |
+
"M4"
|
179 |
+
],
|
180 |
+
"missing_chips": [
|
181 |
+
"A14",
|
182 |
+
"A15",
|
183 |
+
"A16",
|
184 |
+
"A17 Pro",
|
185 |
+
"M1"
|
186 |
+
]
|
187 |
+
},
|
188 |
+
"iPhone": {
|
189 |
+
"total_chips": 6,
|
190 |
+
"tested_chips": 2,
|
191 |
+
"coverage_percentage": 33.33333333333333,
|
192 |
+
"covered_chips": [
|
193 |
+
"A13",
|
194 |
+
"A15"
|
195 |
+
],
|
196 |
+
"missing_chips": [
|
197 |
+
"A14",
|
198 |
+
"A16",
|
199 |
+
"A17 Pro",
|
200 |
+
"A18",
|
201 |
+
"A18 Pro"
|
202 |
+
]
|
203 |
+
},
|
204 |
+
"Mac": {
|
205 |
+
"total_chips": 4,
|
206 |
+
"tested_chips": 3,
|
207 |
+
"coverage_percentage": 75.0,
|
208 |
+
"covered_chips": [
|
209 |
+
"M2",
|
210 |
+
"M3",
|
211 |
+
"M4"
|
212 |
+
],
|
213 |
+
"missing_chips": [
|
214 |
+
"M1"
|
215 |
+
]
|
216 |
+
}
|
217 |
+
},
|
218 |
+
"missing_target_chips": {
|
219 |
+
"iPad": [
|
220 |
+
"A14",
|
221 |
+
"A15",
|
222 |
+
"A16",
|
223 |
+
"A17 Pro",
|
224 |
+
"M1"
|
225 |
+
],
|
226 |
+
"iPhone": [
|
227 |
+
"A14",
|
228 |
+
"A16",
|
229 |
+
"A17 Pro",
|
230 |
+
"A18",
|
231 |
+
"A18 Pro"
|
232 |
+
],
|
233 |
+
"Mac": [
|
234 |
+
"M1"
|
235 |
+
]
|
236 |
+
}
|
237 |
+
}
|
dashboard_data/version.json
CHANGED
@@ -1 +1 @@
|
|
1 |
-
{"last_modified": "2025-06-17T19:55:16+00:00", "sha": "c677ebea4ee6bd556ca70de12bff099044cf8950", "releases": ["a9b92c4", "112a023", "ca49596", "11a1fab", "8c0acbd"], "versions": ["0.9.1", "0.10.1", "0.11.0", "0.12.0", "0.13.0"]}
|
|
|
1 |
+
{"last_modified": "2025-06-17T19:55:16+00:00", "sha": "c677ebea4ee6bd556ca70de12bff099044cf8950", "releases": ["a9b92c4", "112a023", "ca49596", "11a1fab", "8c0acbd"], "versions": ["0.9.1", "0.10.1", "0.11.0", "0.12.0", "0.13.0"]}
|
main.py
CHANGED
@@ -28,6 +28,7 @@ from constants import (
|
|
28 |
)
|
29 |
from utils import (
|
30 |
add_datasets_to_performance_columns,
|
|
|
31 |
create_initial_performance_column_dict,
|
32 |
css,
|
33 |
fields,
|
@@ -56,8 +57,11 @@ PERFORMANCE_DATA = read_json_line_by_line("dashboard_data/performance_data.json"
|
|
56 |
with open("dashboard_data/version.json", "r") as file:
|
57 |
VERSION_DATA = json.load(file)
|
58 |
|
|
|
|
|
|
|
59 |
SHA_TO_VERSION = {
|
60 |
-
VERSION_DATA["releases"][i]: VERSION_DATA["versions"][i]
|
61 |
for i in range(len(VERSION_DATA["versions"]))
|
62 |
}
|
63 |
|
@@ -66,7 +70,9 @@ benchmark_df = pd.json_normalize(PERFORMANCE_DATA)
|
|
66 |
releases = VERSION_DATA["releases"]
|
67 |
|
68 |
# Process timestamp data
|
69 |
-
benchmark_df["timestamp"] = pd.to_datetime(benchmark_df["timestamp"]).dt.tz_localize(
|
|
|
|
|
70 |
|
71 |
# Use average_wer directly from performance data
|
72 |
benchmark_df["english_wer"] = benchmark_df["average_wer"]
|
@@ -106,12 +112,17 @@ performance_df = sorted_performance_df[
|
|
106 |
"speed",
|
107 |
"tokens_per_second",
|
108 |
"timestamp",
|
109 |
-
"commit_hash"
|
110 |
]
|
111 |
+ dataset_speed_columns
|
112 |
+ dataset_toks_columns
|
113 |
].copy()
|
114 |
|
|
|
|
|
|
|
|
|
|
|
115 |
# Rename columns for clarity
|
116 |
performance_df = performance_df.rename(
|
117 |
lambda x: COL_NAMES[x] if x in COL_NAMES else x, axis="columns"
|
@@ -136,12 +147,16 @@ for col in dataset_toks_columns:
|
|
136 |
|
137 |
# Process model names for display
|
138 |
performance_df["model_raw"] = performance_df["Model"].copy()
|
139 |
-
performance_df["Model"] = performance_df["Model"].apply(
|
|
|
|
|
140 |
|
141 |
# Extract unique devices and OS versions
|
142 |
initial_release_df = benchmark_df[benchmark_df["commit_hash"] == releases[-1]]
|
143 |
PERFORMANCE_DEVICES = initial_release_df["device"].unique().tolist()
|
144 |
-
PERFORMANCE_OS =
|
|
|
|
|
145 |
PERFORMANCE_OS.sort()
|
146 |
|
147 |
# Create initial column dictionaries and update with dataset information
|
@@ -163,16 +178,18 @@ PERFORMANCE_ALWAYS_HERE_COLS = performance_column_info["ALWAYS_HERE_COLS"]
|
|
163 |
PERFORMANCE_TOGGLE_COLS = performance_column_info["TOGGLE_COLS"]
|
164 |
PERFORMANCE_SELECTED_COLS = performance_column_info["SELECTED_COLS"]
|
165 |
|
|
|
166 |
def get_release_devices(release):
|
167 |
"""
|
168 |
Get the list of devices for a specific release.
|
169 |
-
|
170 |
:param release: Selected release hash
|
171 |
:return: List of devices available in the release
|
172 |
"""
|
173 |
release_df = benchmark_df[benchmark_df["commit_hash"] == release]
|
174 |
return release_df["device"].unique().tolist()
|
175 |
|
|
|
176 |
def performance_filter(
|
177 |
df,
|
178 |
columns,
|
@@ -280,43 +297,41 @@ def performance_filter(
|
|
280 |
def update_performance_filters(release):
|
281 |
"""
|
282 |
Updates the performance filters (devices and OS) based on the selected release.
|
283 |
-
|
284 |
:param release: Selected release hash
|
285 |
:return: Tuple containing updated device and OS choices
|
286 |
"""
|
287 |
# Filter benchmark data for the selected release
|
288 |
release_df = benchmark_df[benchmark_df["commit_hash"] == release]
|
289 |
-
|
290 |
# Get unique devices and OS versions for this release
|
291 |
release_devices = release_df["device"].unique().tolist()
|
292 |
release_os = release_df["os"].apply(get_os_name_and_version).unique().tolist()
|
293 |
release_os.sort()
|
294 |
-
|
295 |
return (
|
296 |
gr.update(choices=release_devices, value=release_devices),
|
297 |
-
gr.update(choices=release_os, value=release_os)
|
298 |
)
|
299 |
|
300 |
|
301 |
def update_support_table(release):
|
302 |
"""
|
303 |
Updates the support table and its column configuration for a given release.
|
304 |
-
|
305 |
:param release: Selected release hash
|
306 |
:return: Tuple containing (updated DataFrame, updated column choices, updated column values)
|
307 |
"""
|
308 |
# Load new support data
|
309 |
support_data = pd.read_csv(f"dashboard_data/support_data_{release[:7]}.csv")
|
310 |
support_data.set_index(support_data.columns[0], inplace=True)
|
311 |
-
|
312 |
# Process model names
|
313 |
-
support_data["Model"] = support_data["Model"].apply(
|
314 |
-
lambda x: x.replace("_", "/")
|
315 |
-
)
|
316 |
support_data["Model"] = support_data["Model"].apply(
|
317 |
lambda x: make_model_name_clickable_link(x)
|
318 |
)
|
319 |
-
|
320 |
# Sort by model name length
|
321 |
support_data = (
|
322 |
support_data.assign(model_len=support_data["Model"].str.len())
|
@@ -326,14 +341,14 @@ def update_support_table(release):
|
|
326 |
)
|
327 |
.drop(columns=["model_len"])
|
328 |
)
|
329 |
-
|
330 |
# Get new columns (excluding 'Model')
|
331 |
new_columns = support_data.columns.tolist()[1:]
|
332 |
-
|
333 |
return (
|
334 |
gr.update(value=support_data, datatype=["html" for _ in support_data.columns]),
|
335 |
gr.update(choices=new_columns, value=new_columns),
|
336 |
-
gr.update(value=support_data)
|
337 |
)
|
338 |
|
339 |
|
@@ -350,6 +365,7 @@ font = [
|
|
350 |
"sans-serif",
|
351 |
]
|
352 |
|
|
|
353 |
# Macos 14, 15, 26
|
354 |
# ios 17, 18, 26
|
355 |
|
@@ -360,7 +376,9 @@ with gr.Blocks(css=css, theme=gr.themes.Base(font=font)) as demo:
|
|
360 |
gr.HTML(BANNER_TEXT, elem_classes="markdown-text")
|
361 |
gr.Markdown("### Release")
|
362 |
release_dropdown = gr.Dropdown(
|
363 |
-
choices=[
|
|
|
|
|
364 |
label="Select Release",
|
365 |
value=releases[-1] if releases else None,
|
366 |
elem_id="release-dropdown",
|
@@ -534,7 +552,9 @@ with gr.Blocks(css=css, theme=gr.themes.Base(font=font)) as demo:
|
|
534 |
with gr.Row():
|
535 |
gr.Markdown(PERFORMANCE_TEXT, elem_classes="markdown-text")
|
536 |
with gr.Row():
|
537 |
-
initial_df = performance_df[
|
|
|
|
|
538 |
leaderboard_df = gr.components.Dataframe(
|
539 |
value=initial_df[
|
540 |
PERFORMANCE_ALWAYS_HERE_COLS + performance_shown_columns.value
|
@@ -611,11 +631,11 @@ with gr.Blocks(css=css, theme=gr.themes.Base(font=font)) as demo:
|
|
611 |
fn=update_performance_filters,
|
612 |
inputs=[release_dropdown],
|
613 |
outputs=[performance_shown_devices, performance_shown_os],
|
614 |
-
queue=False
|
615 |
).then(
|
616 |
fn=performance_filter,
|
617 |
inputs=performance_filter_inputs,
|
618 |
-
outputs=filter_output
|
619 |
)
|
620 |
|
621 |
# Timeline Tab
|
@@ -880,8 +900,31 @@ with gr.Blocks(css=css, theme=gr.themes.Base(font=font)) as demo:
|
|
880 |
|
881 |
# Device Support Tab
|
882 |
with gr.TabItem("Device Support", elem_id="device_support", id=6):
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
883 |
# Load device support data from CSV
|
884 |
-
support_data = pd.read_csv(
|
|
|
|
|
885 |
support_data.set_index(support_data.columns[0], inplace=True)
|
886 |
support_data["Model"] = support_data["Model"].apply(
|
887 |
lambda x: x.replace("_", "/")
|
@@ -916,7 +959,9 @@ with gr.Blocks(css=css, theme=gr.themes.Base(font=font)) as demo:
|
|
916 |
with gr.Row():
|
917 |
with gr.Column(scale=9):
|
918 |
support_shown_columns = gr.CheckboxGroup(
|
919 |
-
choices=support_data.columns.tolist()[
|
|
|
|
|
920 |
value=support_data.columns.tolist()[1:],
|
921 |
label="Toggle Columns",
|
922 |
elem_id="support-column-select",
|
@@ -962,7 +1007,7 @@ with gr.Blocks(css=css, theme=gr.themes.Base(font=font)) as demo:
|
|
962 |
def filter_support_data(df, columns, model_query, exclude_models):
|
963 |
"""
|
964 |
Filters the device support data based on specified criteria.
|
965 |
-
|
966 |
:param df: The DataFrame to be filtered
|
967 |
:param columns: Columns to include in the output
|
968 |
:param model_query: Query string to filter models
|
@@ -983,7 +1028,9 @@ with gr.Blocks(css=css, theme=gr.themes.Base(font=font)) as demo:
|
|
983 |
|
984 |
# Exclude specified models
|
985 |
if exclude_models:
|
986 |
-
exclude_list = [
|
|
|
|
|
987 |
filtered_df = filtered_df[
|
988 |
~filtered_df["Model"].str.contains(
|
989 |
"|".join(exclude_list), case=False, regex=True
|
@@ -991,7 +1038,9 @@ with gr.Blocks(css=css, theme=gr.themes.Base(font=font)) as demo:
|
|
991 |
]
|
992 |
|
993 |
# Select columns
|
994 |
-
selected_columns = ["Model"] + [
|
|
|
|
|
995 |
filtered_df = filtered_df[selected_columns]
|
996 |
|
997 |
return filtered_df
|
@@ -999,12 +1048,14 @@ with gr.Blocks(css=css, theme=gr.themes.Base(font=font)) as demo:
|
|
999 |
def select_all_support_columns(release):
|
1000 |
"""
|
1001 |
Returns all current columns from the support shown columns.
|
1002 |
-
|
1003 |
:param release: Selected release hash
|
1004 |
:return: List of all available choices
|
1005 |
"""
|
1006 |
# Load new support data for the current release
|
1007 |
-
support_data = pd.read_csv(
|
|
|
|
|
1008 |
support_data.set_index(support_data.columns[0], inplace=True)
|
1009 |
# Return all columns except 'Model'
|
1010 |
return [col for col in support_data.columns if col != "Model"]
|
@@ -1028,23 +1079,265 @@ with gr.Blocks(css=css, theme=gr.themes.Base(font=font)) as demo:
|
|
1028 |
release_dropdown.change(
|
1029 |
update_support_table,
|
1030 |
inputs=[release_dropdown],
|
1031 |
-
outputs=[
|
|
|
|
|
|
|
|
|
1032 |
).then(
|
1033 |
filter_support_data,
|
1034 |
-
inputs=[
|
1035 |
-
|
|
|
|
|
|
|
|
|
|
|
1036 |
)
|
1037 |
|
1038 |
# Also connect the filter inputs to update the table
|
1039 |
-
for input_elem in [
|
|
|
|
|
|
|
|
|
1040 |
input_elem.change(
|
1041 |
filter_support_data,
|
1042 |
-
inputs=[
|
1043 |
-
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
1044 |
)
|
1045 |
|
1046 |
# Methodology Tab
|
1047 |
-
with gr.TabItem("Methodology", elem_id="methodology", id=
|
1048 |
gr.Markdown(METHODOLOGY_TEXT, elem_id="methodology-text")
|
1049 |
|
1050 |
# Citation section
|
@@ -1058,4 +1351,4 @@ with gr.Blocks(css=css, theme=gr.themes.Base(font=font)) as demo:
|
|
1058 |
)
|
1059 |
|
1060 |
# Launch the Gradio interface
|
1061 |
-
demo.launch(debug=True)
|
|
|
28 |
)
|
29 |
from utils import (
|
30 |
add_datasets_to_performance_columns,
|
31 |
+
calculate_quality_parity,
|
32 |
create_initial_performance_column_dict,
|
33 |
css,
|
34 |
fields,
|
|
|
57 |
with open("dashboard_data/version.json", "r") as file:
|
58 |
VERSION_DATA = json.load(file)
|
59 |
|
60 |
+
# Load quality data (ground truth WER)
|
61 |
+
QUALITY_DATA = read_json_line_by_line("dashboard_data/quality_data.json")
|
62 |
+
|
63 |
SHA_TO_VERSION = {
|
64 |
+
VERSION_DATA["releases"][i]: VERSION_DATA["versions"][i]
|
65 |
for i in range(len(VERSION_DATA["versions"]))
|
66 |
}
|
67 |
|
|
|
70 |
releases = VERSION_DATA["releases"]
|
71 |
|
72 |
# Process timestamp data
|
73 |
+
benchmark_df["timestamp"] = pd.to_datetime(benchmark_df["timestamp"]).dt.tz_localize(
|
74 |
+
None
|
75 |
+
)
|
76 |
|
77 |
# Use average_wer directly from performance data
|
78 |
benchmark_df["english_wer"] = benchmark_df["average_wer"]
|
|
|
112 |
"speed",
|
113 |
"tokens_per_second",
|
114 |
"timestamp",
|
115 |
+
"commit_hash",
|
116 |
]
|
117 |
+ dataset_speed_columns
|
118 |
+ dataset_toks_columns
|
119 |
].copy()
|
120 |
|
121 |
+
# Calculate parity (difference between measured WER and ground truth WER)
|
122 |
+
performance_df["parity"] = performance_df.apply(
|
123 |
+
lambda row: calculate_quality_parity(QUALITY_DATA, row), axis=1
|
124 |
+
)
|
125 |
+
|
126 |
# Rename columns for clarity
|
127 |
performance_df = performance_df.rename(
|
128 |
lambda x: COL_NAMES[x] if x in COL_NAMES else x, axis="columns"
|
|
|
147 |
|
148 |
# Process model names for display
|
149 |
performance_df["model_raw"] = performance_df["Model"].copy()
|
150 |
+
performance_df["Model"] = performance_df["Model"].apply(
|
151 |
+
lambda x: make_model_name_clickable_link(x)
|
152 |
+
)
|
153 |
|
154 |
# Extract unique devices and OS versions
|
155 |
initial_release_df = benchmark_df[benchmark_df["commit_hash"] == releases[-1]]
|
156 |
PERFORMANCE_DEVICES = initial_release_df["device"].unique().tolist()
|
157 |
+
PERFORMANCE_OS = (
|
158 |
+
initial_release_df["os"].apply(get_os_name_and_version).unique().tolist()
|
159 |
+
)
|
160 |
PERFORMANCE_OS.sort()
|
161 |
|
162 |
# Create initial column dictionaries and update with dataset information
|
|
|
178 |
PERFORMANCE_TOGGLE_COLS = performance_column_info["TOGGLE_COLS"]
|
179 |
PERFORMANCE_SELECTED_COLS = performance_column_info["SELECTED_COLS"]
|
180 |
|
181 |
+
|
182 |
def get_release_devices(release):
|
183 |
"""
|
184 |
Get the list of devices for a specific release.
|
185 |
+
|
186 |
:param release: Selected release hash
|
187 |
:return: List of devices available in the release
|
188 |
"""
|
189 |
release_df = benchmark_df[benchmark_df["commit_hash"] == release]
|
190 |
return release_df["device"].unique().tolist()
|
191 |
|
192 |
+
|
193 |
def performance_filter(
|
194 |
df,
|
195 |
columns,
|
|
|
297 |
def update_performance_filters(release):
|
298 |
"""
|
299 |
Updates the performance filters (devices and OS) based on the selected release.
|
300 |
+
|
301 |
:param release: Selected release hash
|
302 |
:return: Tuple containing updated device and OS choices
|
303 |
"""
|
304 |
# Filter benchmark data for the selected release
|
305 |
release_df = benchmark_df[benchmark_df["commit_hash"] == release]
|
306 |
+
|
307 |
# Get unique devices and OS versions for this release
|
308 |
release_devices = release_df["device"].unique().tolist()
|
309 |
release_os = release_df["os"].apply(get_os_name_and_version).unique().tolist()
|
310 |
release_os.sort()
|
311 |
+
|
312 |
return (
|
313 |
gr.update(choices=release_devices, value=release_devices),
|
314 |
+
gr.update(choices=release_os, value=release_os),
|
315 |
)
|
316 |
|
317 |
|
318 |
def update_support_table(release):
|
319 |
"""
|
320 |
Updates the support table and its column configuration for a given release.
|
321 |
+
|
322 |
:param release: Selected release hash
|
323 |
:return: Tuple containing (updated DataFrame, updated column choices, updated column values)
|
324 |
"""
|
325 |
# Load new support data
|
326 |
support_data = pd.read_csv(f"dashboard_data/support_data_{release[:7]}.csv")
|
327 |
support_data.set_index(support_data.columns[0], inplace=True)
|
328 |
+
|
329 |
# Process model names
|
330 |
+
support_data["Model"] = support_data["Model"].apply(lambda x: x.replace("_", "/"))
|
|
|
|
|
331 |
support_data["Model"] = support_data["Model"].apply(
|
332 |
lambda x: make_model_name_clickable_link(x)
|
333 |
)
|
334 |
+
|
335 |
# Sort by model name length
|
336 |
support_data = (
|
337 |
support_data.assign(model_len=support_data["Model"].str.len())
|
|
|
341 |
)
|
342 |
.drop(columns=["model_len"])
|
343 |
)
|
344 |
+
|
345 |
# Get new columns (excluding 'Model')
|
346 |
new_columns = support_data.columns.tolist()[1:]
|
347 |
+
|
348 |
return (
|
349 |
gr.update(value=support_data, datatype=["html" for _ in support_data.columns]),
|
350 |
gr.update(choices=new_columns, value=new_columns),
|
351 |
+
gr.update(value=support_data),
|
352 |
)
|
353 |
|
354 |
|
|
|
365 |
"sans-serif",
|
366 |
]
|
367 |
|
368 |
+
|
369 |
# Macos 14, 15, 26
|
370 |
# ios 17, 18, 26
|
371 |
|
|
|
376 |
gr.HTML(BANNER_TEXT, elem_classes="markdown-text")
|
377 |
gr.Markdown("### Release")
|
378 |
release_dropdown = gr.Dropdown(
|
379 |
+
choices=[
|
380 |
+
(f"{release} v{SHA_TO_VERSION[release]}", release) for release in releases
|
381 |
+
],
|
382 |
label="Select Release",
|
383 |
value=releases[-1] if releases else None,
|
384 |
elem_id="release-dropdown",
|
|
|
552 |
with gr.Row():
|
553 |
gr.Markdown(PERFORMANCE_TEXT, elem_classes="markdown-text")
|
554 |
with gr.Row():
|
555 |
+
initial_df = performance_df[
|
556 |
+
performance_df["commit_hash"] == releases[-1]
|
557 |
+
]
|
558 |
leaderboard_df = gr.components.Dataframe(
|
559 |
value=initial_df[
|
560 |
PERFORMANCE_ALWAYS_HERE_COLS + performance_shown_columns.value
|
|
|
631 |
fn=update_performance_filters,
|
632 |
inputs=[release_dropdown],
|
633 |
outputs=[performance_shown_devices, performance_shown_os],
|
634 |
+
queue=False,
|
635 |
).then(
|
636 |
fn=performance_filter,
|
637 |
inputs=performance_filter_inputs,
|
638 |
+
outputs=filter_output,
|
639 |
)
|
640 |
|
641 |
# Timeline Tab
|
|
|
900 |
|
901 |
# Device Support Tab
|
902 |
with gr.TabItem("Device Support", elem_id="device_support", id=6):
|
903 |
+
# Add clear description of what Device Support means
|
904 |
+
gr.Markdown(
|
905 |
+
"""
|
906 |
+
## Device Support
|
907 |
+
|
908 |
+
This tab shows **test results for SKUs that we actually attempted to test**. It tells you whether tests passed, failed, or couldn't be completed for the devices we tried to run tests on.
|
909 |
+
|
910 |
+
### What You'll See Here:
|
911 |
+
- **✅ Supported**: Tests passed successfully on this device
|
912 |
+
- **⚠️ Failed**: Tests were attempted but failed (click link for details)
|
913 |
+
- **? Not Tested**: We attempted to test but couldn't get results
|
914 |
+
- **Not Supported**: Hardware incompatible (per [WhisperKit config](https://huggingface.co/argmaxinc/whisperkit-coreml/blob/main/config.json))
|
915 |
+
|
916 |
+
### Please Note:
|
917 |
+
**This tab only shows devices we attempted to test** - it doesn't show the full universe of available devices.
|
918 |
+
|
919 |
+
**📝 For comprehensive coverage analysis**, see the **Test Coverage** tab which shows ALL available SKUs.
|
920 |
+
""",
|
921 |
+
elem_classes="markdown-text"
|
922 |
+
)
|
923 |
+
|
924 |
# Load device support data from CSV
|
925 |
+
support_data = pd.read_csv(
|
926 |
+
f"dashboard_data/support_data_{releases[-1][:7]}.csv"
|
927 |
+
)
|
928 |
support_data.set_index(support_data.columns[0], inplace=True)
|
929 |
support_data["Model"] = support_data["Model"].apply(
|
930 |
lambda x: x.replace("_", "/")
|
|
|
959 |
with gr.Row():
|
960 |
with gr.Column(scale=9):
|
961 |
support_shown_columns = gr.CheckboxGroup(
|
962 |
+
choices=support_data.columns.tolist()[
|
963 |
+
1:
|
964 |
+
], # Exclude 'Model' column
|
965 |
value=support_data.columns.tolist()[1:],
|
966 |
label="Toggle Columns",
|
967 |
elem_id="support-column-select",
|
|
|
1007 |
def filter_support_data(df, columns, model_query, exclude_models):
|
1008 |
"""
|
1009 |
Filters the device support data based on specified criteria.
|
1010 |
+
|
1011 |
:param df: The DataFrame to be filtered
|
1012 |
:param columns: Columns to include in the output
|
1013 |
:param model_query: Query string to filter models
|
|
|
1028 |
|
1029 |
# Exclude specified models
|
1030 |
if exclude_models:
|
1031 |
+
exclude_list = [
|
1032 |
+
re.escape(m.strip()) for m in exclude_models.split(";")
|
1033 |
+
]
|
1034 |
filtered_df = filtered_df[
|
1035 |
~filtered_df["Model"].str.contains(
|
1036 |
"|".join(exclude_list), case=False, regex=True
|
|
|
1038 |
]
|
1039 |
|
1040 |
# Select columns
|
1041 |
+
selected_columns = ["Model"] + [
|
1042 |
+
col for col in columns if col in df.columns
|
1043 |
+
]
|
1044 |
filtered_df = filtered_df[selected_columns]
|
1045 |
|
1046 |
return filtered_df
|
|
|
1048 |
def select_all_support_columns(release):
|
1049 |
"""
|
1050 |
Returns all current columns from the support shown columns.
|
1051 |
+
|
1052 |
:param release: Selected release hash
|
1053 |
:return: List of all available choices
|
1054 |
"""
|
1055 |
# Load new support data for the current release
|
1056 |
+
support_data = pd.read_csv(
|
1057 |
+
f"dashboard_data/support_data_{release[:7]}.csv"
|
1058 |
+
)
|
1059 |
support_data.set_index(support_data.columns[0], inplace=True)
|
1060 |
# Return all columns except 'Model'
|
1061 |
return [col for col in support_data.columns if col != "Model"]
|
|
|
1079 |
release_dropdown.change(
|
1080 |
update_support_table,
|
1081 |
inputs=[release_dropdown],
|
1082 |
+
outputs=[
|
1083 |
+
device_support_table,
|
1084 |
+
support_shown_columns,
|
1085 |
+
hidden_support_df,
|
1086 |
+
],
|
1087 |
).then(
|
1088 |
filter_support_data,
|
1089 |
+
inputs=[
|
1090 |
+
hidden_support_df,
|
1091 |
+
support_shown_columns,
|
1092 |
+
filter_support_models,
|
1093 |
+
exclude_support_models,
|
1094 |
+
],
|
1095 |
+
outputs=device_support_table,
|
1096 |
)
|
1097 |
|
1098 |
# Also connect the filter inputs to update the table
|
1099 |
+
for input_elem in [
|
1100 |
+
filter_support_models,
|
1101 |
+
exclude_support_models,
|
1102 |
+
support_shown_columns,
|
1103 |
+
]:
|
1104 |
input_elem.change(
|
1105 |
filter_support_data,
|
1106 |
+
inputs=[
|
1107 |
+
hidden_support_df,
|
1108 |
+
support_shown_columns,
|
1109 |
+
filter_support_models,
|
1110 |
+
exclude_support_models,
|
1111 |
+
],
|
1112 |
+
outputs=device_support_table,
|
1113 |
+
)
|
1114 |
+
|
1115 |
+
# Test Coverage Tab
|
1116 |
+
with gr.TabItem("Test Coverage", elem_id="test_coverage", id=7):
|
1117 |
+
# Add clear description of what Test Coverage means
|
1118 |
+
gr.Markdown(
|
1119 |
+
"""
|
1120 |
+
## Test Coverage
|
1121 |
+
|
1122 |
+
This tab shows **ALL available SKUs** and our testing coverage across the entire device ecosystem. Uses chip-based expansion where testing one device covers all devices with the same chip.
|
1123 |
+
""",
|
1124 |
+
elem_classes="markdown-text"
|
1125 |
+
)
|
1126 |
+
|
1127 |
+
def load_coverage_data(release):
|
1128 |
+
"""Load test coverage data for a specific release."""
|
1129 |
+
try:
|
1130 |
+
with open(f"dashboard_data/test_coverage_{release}.json", "r") as f:
|
1131 |
+
return json.load(f)
|
1132 |
+
except FileNotFoundError:
|
1133 |
+
return {
|
1134 |
+
"commit_hash": release,
|
1135 |
+
"total_devices": 0,
|
1136 |
+
"tested_devices": 0,
|
1137 |
+
"skipped_devices": 0,
|
1138 |
+
"coverage_percentage": 0.0,
|
1139 |
+
"tested_device_list": [],
|
1140 |
+
"skipped_device_list": [],
|
1141 |
+
"tested_os_versions": [],
|
1142 |
+
"has_target_os_coverage": False,
|
1143 |
+
"covered_target_versions": [],
|
1144 |
+
"missing_target_versions": [],
|
1145 |
+
}
|
1146 |
+
|
1147 |
+
def format_coverage_devices(device_list):
|
1148 |
+
"""Convert device list to DataFrame format."""
|
1149 |
+
if not device_list:
|
1150 |
+
return pd.DataFrame(columns=["Device"])
|
1151 |
+
|
1152 |
+
df = pd.DataFrame({"Device": device_list})
|
1153 |
+
return df.sort_values(["Device"])
|
1154 |
+
|
1155 |
+
def update_coverage_data(release):
|
1156 |
+
"""Update coverage data when release changes."""
|
1157 |
+
coverage_data = load_coverage_data(release)
|
1158 |
+
|
1159 |
+
# Format tested and skipped devices
|
1160 |
+
tested_df = format_coverage_devices(coverage_data["tested_device_list"])
|
1161 |
+
skipped_df = format_coverage_devices(
|
1162 |
+
coverage_data["skipped_device_list"]
|
1163 |
+
)
|
1164 |
+
|
1165 |
+
# Check target OS coverage
|
1166 |
+
target_os_status = ""
|
1167 |
+
covered_versions = coverage_data.get("covered_target_versions", [])
|
1168 |
+
missing_versions = coverage_data.get("missing_target_versions", [])
|
1169 |
+
|
1170 |
+
if covered_versions or missing_versions:
|
1171 |
+
target_os_status = "\n- **Target OS Coverage**:\n"
|
1172 |
+
if covered_versions:
|
1173 |
+
unique_versions = sorted(set(covered_versions))
|
1174 |
+
target_os_status += f" - ✅ **Tested**: {', '.join(unique_versions)}\n"
|
1175 |
+
if missing_versions:
|
1176 |
+
target_os_status += f" - ❌ **Missing**: {', '.join(missing_versions)}"
|
1177 |
+
|
1178 |
+
# Create coverage summary
|
1179 |
+
coverage_summary = f"""## Test Coverage Summary for Release {release} (v{SHA_TO_VERSION.get(release, 'Unknown')})
|
1180 |
+
|
1181 |
+
- **Total Devices**: {coverage_data['total_devices']}
|
1182 |
+
- **Tested Devices**: {coverage_data['tested_devices']}
|
1183 |
+
- **Skipped Devices**: {coverage_data['skipped_devices']}
|
1184 |
+
- **Coverage Percentage**: {coverage_data['coverage_percentage']:.1f}%
|
1185 |
+
{target_os_status}"""
|
1186 |
+
|
1187 |
+
return (
|
1188 |
+
gr.update(value=coverage_summary),
|
1189 |
+
gr.update(value=tested_df),
|
1190 |
+
gr.update(value=skipped_df),
|
1191 |
+
tested_df,
|
1192 |
+
skipped_df,
|
1193 |
+
)
|
1194 |
+
|
1195 |
+
def filter_coverage_devices(df, device_query, exclude_devices):
|
1196 |
+
"""Filter coverage devices based on device queries."""
|
1197 |
+
if df is None or df.empty:
|
1198 |
+
return df
|
1199 |
+
|
1200 |
+
filtered_df = df.copy()
|
1201 |
+
|
1202 |
+
# Filter devices based on query
|
1203 |
+
if device_query:
|
1204 |
+
filtered_df = filtered_df[
|
1205 |
+
filtered_df["Device"].str.contains(
|
1206 |
+
"|".join(q.strip() for q in device_query.split(";")),
|
1207 |
+
case=False,
|
1208 |
+
regex=True,
|
1209 |
+
)
|
1210 |
+
]
|
1211 |
+
|
1212 |
+
# Exclude specified devices
|
1213 |
+
if exclude_devices:
|
1214 |
+
exclude_list = [
|
1215 |
+
re.escape(d.strip()) for d in exclude_devices.split(";")
|
1216 |
+
]
|
1217 |
+
filtered_df = filtered_df[
|
1218 |
+
~filtered_df["Device"].str.contains(
|
1219 |
+
"|".join(exclude_list), case=False, regex=True
|
1220 |
+
)
|
1221 |
+
]
|
1222 |
+
|
1223 |
+
return filtered_df
|
1224 |
+
|
1225 |
+
# Load initial coverage data
|
1226 |
+
initial_coverage = load_coverage_data(releases[-1])
|
1227 |
+
initial_tested_df = format_coverage_devices(
|
1228 |
+
initial_coverage["tested_device_list"]
|
1229 |
+
)
|
1230 |
+
initial_skipped_df = format_coverage_devices(
|
1231 |
+
initial_coverage["skipped_device_list"]
|
1232 |
+
)
|
1233 |
+
|
1234 |
+
# Generate initial target OS status
|
1235 |
+
initial_target_os_status = ""
|
1236 |
+
covered_versions = initial_coverage.get("covered_target_versions", [])
|
1237 |
+
missing_versions = initial_coverage.get("missing_target_versions", [])
|
1238 |
+
|
1239 |
+
if covered_versions or missing_versions:
|
1240 |
+
initial_target_os_status = "\n- **Target OS Coverage**:\n"
|
1241 |
+
if covered_versions:
|
1242 |
+
unique_versions = sorted(set(covered_versions))
|
1243 |
+
initial_target_os_status += f" - ✅ **Tested**: {', '.join(unique_versions)}\n"
|
1244 |
+
if missing_versions:
|
1245 |
+
initial_target_os_status += f" - ❌ **Missing**: {', '.join(missing_versions)}"
|
1246 |
+
|
1247 |
+
# Create initial coverage summary content
|
1248 |
+
initial_summary_content = f"""## Test Coverage Summary for Release {releases[-1]} (v{SHA_TO_VERSION.get(releases[-1], 'Unknown')})
|
1249 |
+
|
1250 |
+
- **Total Devices**: {initial_coverage['total_devices']}
|
1251 |
+
- **Tested Devices**: {initial_coverage['tested_devices']}
|
1252 |
+
- **Skipped Devices**: {initial_coverage['skipped_devices']}
|
1253 |
+
- **Coverage Percentage**: {initial_coverage['coverage_percentage']:.1f}%
|
1254 |
+
{initial_target_os_status}"""
|
1255 |
+
|
1256 |
+
# Coverage summary
|
1257 |
+
coverage_summary_text = gr.Markdown(
|
1258 |
+
value=initial_summary_content,
|
1259 |
+
elem_classes="markdown-text"
|
1260 |
+
)
|
1261 |
+
|
1262 |
+
with gr.Row():
|
1263 |
+
with gr.Column(scale=1):
|
1264 |
+
with gr.Row():
|
1265 |
+
with gr.Column(scale=6):
|
1266 |
+
filter_coverage_devices_input = gr.Textbox(
|
1267 |
+
placeholder="🔍 Filter Device (separate multiple queries with ';')",
|
1268 |
+
label="Filter Devices",
|
1269 |
+
)
|
1270 |
+
with gr.Column(scale=4):
|
1271 |
+
exclude_coverage_devices_input = gr.Textbox(
|
1272 |
+
placeholder="🔍 Exclude Device",
|
1273 |
+
label="Exclude Device",
|
1274 |
+
)
|
1275 |
+
|
1276 |
+
# Create tabs for tested vs skipped devices
|
1277 |
+
with gr.Tabs():
|
1278 |
+
with gr.TabItem("Tested Devices", id=0):
|
1279 |
+
tested_devices_table = gr.Dataframe(
|
1280 |
+
value=initial_tested_df,
|
1281 |
+
headers=["Device"],
|
1282 |
+
datatype=["str"],
|
1283 |
+
elem_id="tested-devices-table",
|
1284 |
+
elem_classes="large-table",
|
1285 |
+
interactive=False,
|
1286 |
+
)
|
1287 |
+
|
1288 |
+
with gr.TabItem("Skipped Devices", id=1):
|
1289 |
+
skipped_devices_table = gr.Dataframe(
|
1290 |
+
value=initial_skipped_df,
|
1291 |
+
headers=["Device"],
|
1292 |
+
datatype=["str"],
|
1293 |
+
elem_id="skipped-devices-table",
|
1294 |
+
elem_classes="large-table",
|
1295 |
+
interactive=False,
|
1296 |
+
)
|
1297 |
+
|
1298 |
+
# Hidden dataframes for filtering
|
1299 |
+
hidden_tested_df = gr.Dataframe(value=initial_tested_df, visible=False)
|
1300 |
+
hidden_skipped_df = gr.Dataframe(value=initial_skipped_df, visible=False)
|
1301 |
+
|
1302 |
+
# Connect release dropdown to coverage data update
|
1303 |
+
release_dropdown.change(
|
1304 |
+
update_coverage_data,
|
1305 |
+
inputs=[release_dropdown],
|
1306 |
+
outputs=[
|
1307 |
+
coverage_summary_text,
|
1308 |
+
tested_devices_table,
|
1309 |
+
skipped_devices_table,
|
1310 |
+
hidden_tested_df,
|
1311 |
+
hidden_skipped_df,
|
1312 |
+
],
|
1313 |
+
queue=False,
|
1314 |
+
)
|
1315 |
+
|
1316 |
+
# Connect filter inputs to update both tables
|
1317 |
+
for input_elem in [
|
1318 |
+
filter_coverage_devices_input,
|
1319 |
+
exclude_coverage_devices_input,
|
1320 |
+
]:
|
1321 |
+
input_elem.change(
|
1322 |
+
lambda tested_df, skipped_df, device_query, exclude_devices: (
|
1323 |
+
filter_coverage_devices(
|
1324 |
+
tested_df, device_query, exclude_devices
|
1325 |
+
),
|
1326 |
+
filter_coverage_devices(
|
1327 |
+
skipped_df, device_query, exclude_devices
|
1328 |
+
),
|
1329 |
+
),
|
1330 |
+
inputs=[
|
1331 |
+
hidden_tested_df,
|
1332 |
+
hidden_skipped_df,
|
1333 |
+
filter_coverage_devices_input,
|
1334 |
+
exclude_coverage_devices_input,
|
1335 |
+
],
|
1336 |
+
outputs=[tested_devices_table, skipped_devices_table],
|
1337 |
)
|
1338 |
|
1339 |
# Methodology Tab
|
1340 |
+
with gr.TabItem("Methodology", elem_id="methodology", id=8):
|
1341 |
gr.Markdown(METHODOLOGY_TEXT, elem_id="methodology-text")
|
1342 |
|
1343 |
# Citation section
|
|
|
1351 |
)
|
1352 |
|
1353 |
# Launch the Gradio interface
|
1354 |
+
demo.launch(debug=True, share=True)
|
performance_generate.py
CHANGED
@@ -10,10 +10,12 @@ from statistics import mean
|
|
10 |
|
11 |
import pandas as pd
|
12 |
import requests
|
|
|
|
|
13 |
|
14 |
from constants import BASE_WHISPERKIT_BENCHMARK_URL
|
15 |
from text_normalizer import text_normalizer
|
16 |
-
from utils import compute_average_wer, download_dataset
|
17 |
|
18 |
|
19 |
def fetch_evaluation_data(url):
|
@@ -97,7 +99,7 @@ def process_benchmark_file(file_path, dataset_dfs, results, releases):
|
|
97 |
|
98 |
if len(test_results) == 0:
|
99 |
return
|
100 |
-
|
101 |
commit_hash_timestamp = file_path.split("/")[-2]
|
102 |
commit_timestamp, commit_hash = commit_hash_timestamp.split("_")
|
103 |
|
@@ -182,7 +184,7 @@ def process_summary_file(file_path, results, releases):
|
|
182 |
"""
|
183 |
with open(file_path, "r") as file:
|
184 |
summary_data = json.load(file)
|
185 |
-
|
186 |
if summary_data["commitHash"] not in releases:
|
187 |
return
|
188 |
|
@@ -192,13 +194,15 @@ def process_summary_file(file_path, results, releases):
|
|
192 |
commit_timestamp = summary_data["commitTimestamp"]
|
193 |
test_file_name = file_path.split("/")[-1]
|
194 |
test_timestamp = test_file_name.split("_")[-1].replace(".json", "")
|
195 |
-
|
196 |
key = (device, os, commit_hash)
|
197 |
if key in results:
|
198 |
existing_commit_timestamp = results[key]["commitTimestamp"]
|
199 |
existing_test_timestamp = results[key]["testTimestamp"]
|
200 |
|
201 |
-
existing_commit_dt = datetime.strptime(
|
|
|
|
|
202 |
new_commit_dt = datetime.strptime(commit_timestamp, "%Y-%m-%dT%H%M%S")
|
203 |
existing_test_dt = datetime.strptime(existing_test_timestamp, "%Y-%m-%dT%H%M%S")
|
204 |
new_test_dt = datetime.strptime(test_timestamp, "%Y-%m-%dT%H%M%S")
|
@@ -325,7 +329,7 @@ def calculate_and_save_support_results(
|
|
325 |
results_by_commit[commit_hash] = {
|
326 |
"data": {},
|
327 |
"devices": set(),
|
328 |
-
"timestamp": data["commitTimestamp"]
|
329 |
}
|
330 |
results_by_commit[commit_hash]["data"][key] = data
|
331 |
results_by_commit[commit_hash]["devices"].add(device)
|
@@ -334,7 +338,7 @@ def calculate_and_save_support_results(
|
|
334 |
for commit_hash, commit_data in results_by_commit.items():
|
335 |
commit_devices = sorted(commit_data["devices"])
|
336 |
df = pd.DataFrame(index=all_models, columns=["Model"] + commit_devices)
|
337 |
-
|
338 |
for model in all_models:
|
339 |
row = {"Model": model}
|
340 |
for device in commit_devices:
|
@@ -375,24 +379,27 @@ def calculate_and_save_support_results(
|
|
375 |
|
376 |
# Mark unsupported combinations for this commit
|
377 |
commit_not_supported = [
|
378 |
-
(model, device, os)
|
379 |
-
for model, device, os in not_supported
|
380 |
-
if any(
|
|
|
|
|
|
|
|
|
381 |
]
|
382 |
remove_unsupported_cells(df, commit_not_supported)
|
383 |
|
384 |
# Format column headers
|
385 |
cols = df.columns.tolist()
|
386 |
cols = ["Model"] + [
|
387 |
-
f"""{get_device_name(col).replace("_", " ")} ({col})"""
|
|
|
|
|
388 |
]
|
389 |
df.columns = cols
|
390 |
|
391 |
# Save to commit-specific file
|
392 |
-
output_path = support_output_path.replace(
|
393 |
-
".csv",
|
394 |
-
f"_{commit_hash[:7]}.csv"
|
395 |
-
)
|
396 |
df.to_csv(output_path, index=True)
|
397 |
|
398 |
|
@@ -426,6 +433,462 @@ def remove_unsupported_cells(df, not_supported):
|
|
426 |
df.at[model, device] = "Not Supported"
|
427 |
|
428 |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
429 |
def main():
|
430 |
"""
|
431 |
Main function to orchestrate the performance data generation process.
|
@@ -435,6 +898,7 @@ def main():
|
|
435 |
2. Fetches evaluation data for various datasets.
|
436 |
3. Processes benchmark files and summary files.
|
437 |
4. Calculates and saves performance and support results.
|
|
|
438 |
"""
|
439 |
source_xcresult_repo = "argmaxinc/whisperkit-evals-dataset"
|
440 |
source_xcresult_subfolder = "benchmark_data/"
|
@@ -498,8 +962,10 @@ def main():
|
|
498 |
elif "summary" in filename:
|
499 |
process_summary_file(file_path, support_results, releases)
|
500 |
else:
|
501 |
-
process_benchmark_file(
|
502 |
-
|
|
|
|
|
503 |
not_supported = calculate_and_save_performance_results(
|
504 |
performance_results, "dashboard_data/performance_data.json"
|
505 |
)
|
@@ -507,6 +973,9 @@ def main():
|
|
507 |
support_results, not_supported, "dashboard_data/support_data.csv"
|
508 |
)
|
509 |
|
|
|
|
|
|
|
510 |
|
511 |
if __name__ == "__main__":
|
512 |
main()
|
|
|
10 |
|
11 |
import pandas as pd
|
12 |
import requests
|
13 |
+
from dotenv import load_dotenv
|
14 |
+
from huggingface_hub import login
|
15 |
|
16 |
from constants import BASE_WHISPERKIT_BENCHMARK_URL
|
17 |
from text_normalizer import text_normalizer
|
18 |
+
from utils import compute_average_wer, download_dataset, download_json_from_github
|
19 |
|
20 |
|
21 |
def fetch_evaluation_data(url):
|
|
|
99 |
|
100 |
if len(test_results) == 0:
|
101 |
return
|
102 |
+
|
103 |
commit_hash_timestamp = file_path.split("/")[-2]
|
104 |
commit_timestamp, commit_hash = commit_hash_timestamp.split("_")
|
105 |
|
|
|
184 |
"""
|
185 |
with open(file_path, "r") as file:
|
186 |
summary_data = json.load(file)
|
187 |
+
|
188 |
if summary_data["commitHash"] not in releases:
|
189 |
return
|
190 |
|
|
|
194 |
commit_timestamp = summary_data["commitTimestamp"]
|
195 |
test_file_name = file_path.split("/")[-1]
|
196 |
test_timestamp = test_file_name.split("_")[-1].replace(".json", "")
|
197 |
+
|
198 |
key = (device, os, commit_hash)
|
199 |
if key in results:
|
200 |
existing_commit_timestamp = results[key]["commitTimestamp"]
|
201 |
existing_test_timestamp = results[key]["testTimestamp"]
|
202 |
|
203 |
+
existing_commit_dt = datetime.strptime(
|
204 |
+
existing_commit_timestamp, "%Y-%m-%dT%H%M%S"
|
205 |
+
)
|
206 |
new_commit_dt = datetime.strptime(commit_timestamp, "%Y-%m-%dT%H%M%S")
|
207 |
existing_test_dt = datetime.strptime(existing_test_timestamp, "%Y-%m-%dT%H%M%S")
|
208 |
new_test_dt = datetime.strptime(test_timestamp, "%Y-%m-%dT%H%M%S")
|
|
|
329 |
results_by_commit[commit_hash] = {
|
330 |
"data": {},
|
331 |
"devices": set(),
|
332 |
+
"timestamp": data["commitTimestamp"],
|
333 |
}
|
334 |
results_by_commit[commit_hash]["data"][key] = data
|
335 |
results_by_commit[commit_hash]["devices"].add(device)
|
|
|
338 |
for commit_hash, commit_data in results_by_commit.items():
|
339 |
commit_devices = sorted(commit_data["devices"])
|
340 |
df = pd.DataFrame(index=all_models, columns=["Model"] + commit_devices)
|
341 |
+
|
342 |
for model in all_models:
|
343 |
row = {"Model": model}
|
344 |
for device in commit_devices:
|
|
|
379 |
|
380 |
# Mark unsupported combinations for this commit
|
381 |
commit_not_supported = [
|
382 |
+
(model, device, os)
|
383 |
+
for model, device, os in not_supported
|
384 |
+
if any(
|
385 |
+
key[2] == commit_hash
|
386 |
+
for key in support_results
|
387 |
+
if key not in ["modelsTested", "devices"] and model == key[0]
|
388 |
+
)
|
389 |
]
|
390 |
remove_unsupported_cells(df, commit_not_supported)
|
391 |
|
392 |
# Format column headers
|
393 |
cols = df.columns.tolist()
|
394 |
cols = ["Model"] + [
|
395 |
+
f"""{get_device_name(col).replace("_", " ")} ({col})"""
|
396 |
+
for col in cols
|
397 |
+
if col != "Model"
|
398 |
]
|
399 |
df.columns = cols
|
400 |
|
401 |
# Save to commit-specific file
|
402 |
+
output_path = support_output_path.replace(".csv", f"_{commit_hash[:7]}.csv")
|
|
|
|
|
|
|
403 |
df.to_csv(output_path, index=True)
|
404 |
|
405 |
|
|
|
433 |
df.at[model, device] = "Not Supported"
|
434 |
|
435 |
|
436 |
+
def download_device_json_safe(file_path):
|
437 |
+
"""
|
438 |
+
Safely downloads a device JSON file from GitHub, returning None if it doesn't exist.
|
439 |
+
|
440 |
+
:param file_path: Path to the JSON file within the repository
|
441 |
+
:returns: The JSON data as a dictionary, or None if the file doesn't exist
|
442 |
+
"""
|
443 |
+
try:
|
444 |
+
return download_json_from_github(file_path=file_path)
|
445 |
+
except SystemExit:
|
446 |
+
# File doesn't exist or other error occurred
|
447 |
+
return None
|
448 |
+
|
449 |
+
|
450 |
+
def load_device_json_local(file_path):
|
451 |
+
"""
|
452 |
+
Safely loads a local device JSON file, returning None if it doesn't exist.
|
453 |
+
|
454 |
+
:param file_path: Local path to the JSON file
|
455 |
+
:returns: The JSON data as a dictionary, or None if the file doesn't exist
|
456 |
+
"""
|
457 |
+
try:
|
458 |
+
with open(file_path, "r") as f:
|
459 |
+
return json.load(f)
|
460 |
+
except (FileNotFoundError, json.JSONDecodeError):
|
461 |
+
return None
|
462 |
+
|
463 |
+
|
464 |
+
def build_chip_mapping():
|
465 |
+
"""
|
466 |
+
Builds a mapping from device SKUs to their chip types.
|
467 |
+
|
468 |
+
:returns: Dictionary where keys are device SKUs and values are chip types
|
469 |
+
"""
|
470 |
+
sku_to_chip = {}
|
471 |
+
|
472 |
+
# Load iPad devices
|
473 |
+
ipad_data = load_device_json_local("dashboard_data/iPad.json")
|
474 |
+
if ipad_data and "total_menu" in ipad_data:
|
475 |
+
for device_info in ipad_data["total_menu"].values():
|
476 |
+
if "sku" in device_info and "chip" in device_info:
|
477 |
+
# iPad has sku as an array
|
478 |
+
skus = device_info["sku"] if isinstance(device_info["sku"], list) else [device_info["sku"]]
|
479 |
+
for sku in skus:
|
480 |
+
sku_to_chip[sku] = device_info["chip"]
|
481 |
+
|
482 |
+
# Load iPhone devices
|
483 |
+
iphone_data = load_device_json_local("dashboard_data/iPhone.json")
|
484 |
+
if iphone_data and "total_menu" in iphone_data:
|
485 |
+
for device_info in iphone_data["total_menu"].values():
|
486 |
+
if "sku" in device_info and "chip" in device_info:
|
487 |
+
# iPhone has sku as a single string
|
488 |
+
sku_to_chip[device_info["sku"]] = device_info["chip"]
|
489 |
+
|
490 |
+
# Load Mac devices
|
491 |
+
mac_data = load_device_json_local("dashboard_data/Mac.json")
|
492 |
+
if mac_data and "total_menu" in mac_data:
|
493 |
+
for device_info in mac_data["total_menu"].values():
|
494 |
+
if "sku" in device_info and "chip" in device_info:
|
495 |
+
# Mac has sku as a single string
|
496 |
+
sku_to_chip[device_info["sku"]] = device_info["chip"]
|
497 |
+
|
498 |
+
return sku_to_chip
|
499 |
+
|
500 |
+
|
501 |
+
def get_platform_from_sku(sku):
|
502 |
+
"""
|
503 |
+
Determines the platform (iPad, iPhone, Mac) from a device SKU.
|
504 |
+
|
505 |
+
:param sku: Device SKU string
|
506 |
+
:returns: Platform string ('iPad', 'iPhone', 'Mac') or 'Unknown'
|
507 |
+
"""
|
508 |
+
if sku.startswith("iPad"):
|
509 |
+
return "iPad"
|
510 |
+
elif sku.startswith("iPhone"):
|
511 |
+
return "iPhone"
|
512 |
+
elif sku.startswith("Mac") or sku.startswith("iMac") or sku.startswith("MacBook"):
|
513 |
+
return "Mac"
|
514 |
+
else:
|
515 |
+
return "Unknown"
|
516 |
+
|
517 |
+
|
518 |
+
def normalize_chip_name(chip):
|
519 |
+
"""
|
520 |
+
Normalizes chip names for consistent grouping.
|
521 |
+
|
522 |
+
:param chip: Raw chip name from device JSON
|
523 |
+
:returns: Normalized chip name
|
524 |
+
"""
|
525 |
+
# Handle variations like "A18 Pro" -> "A18", "M4 Pro" -> "M4", etc.
|
526 |
+
# But keep distinct generations separate
|
527 |
+
chip = chip.strip()
|
528 |
+
|
529 |
+
# For A-series chips, keep Pro variants separate as they have different capabilities
|
530 |
+
if chip.startswith("A") and "Pro" in chip:
|
531 |
+
return chip # Keep A17 Pro separate from A17
|
532 |
+
|
533 |
+
# For M-series chips, group Pro/Max/Ultra variants together as they're same generation
|
534 |
+
if chip.startswith("M"):
|
535 |
+
# Extract just the M number (M1, M2, M3, M4)
|
536 |
+
parts = chip.split()
|
537 |
+
if len(parts) > 0:
|
538 |
+
return parts[0] # Return just "M1", "M2", etc.
|
539 |
+
|
540 |
+
return chip
|
541 |
+
|
542 |
+
|
543 |
+
def build_sku_group_mapping():
|
544 |
+
"""
|
545 |
+
Builds a mapping from individual SKUs to all SKUs that share the same chip on the same platform.
|
546 |
+
This implements chip-based coverage where testing one device with a specific chip
|
547 |
+
provides coverage for all devices with that chip on the same platform.
|
548 |
+
|
549 |
+
:returns: Dictionary where keys are individual SKUs and values are sets of all SKUs in that chip group
|
550 |
+
"""
|
551 |
+
sku_to_chip = build_chip_mapping()
|
552 |
+
sku_to_group = {}
|
553 |
+
|
554 |
+
# Group SKUs by platform and normalized chip
|
555 |
+
platform_chip_groups = {}
|
556 |
+
|
557 |
+
for sku, chip in sku_to_chip.items():
|
558 |
+
platform = get_platform_from_sku(sku)
|
559 |
+
normalized_chip = normalize_chip_name(chip)
|
560 |
+
|
561 |
+
key = (platform, normalized_chip)
|
562 |
+
if key not in platform_chip_groups:
|
563 |
+
platform_chip_groups[key] = set()
|
564 |
+
platform_chip_groups[key].add(sku)
|
565 |
+
|
566 |
+
# Create reverse mapping: each SKU maps to all SKUs in its chip group
|
567 |
+
for sku, chip in sku_to_chip.items():
|
568 |
+
platform = get_platform_from_sku(sku)
|
569 |
+
normalized_chip = normalize_chip_name(chip)
|
570 |
+
key = (platform, normalized_chip)
|
571 |
+
sku_to_group[sku] = platform_chip_groups[key]
|
572 |
+
|
573 |
+
return sku_to_group
|
574 |
+
|
575 |
+
|
576 |
+
def expand_tested_devices(tested_devices, sku_mapping):
|
577 |
+
"""
|
578 |
+
Expands tested devices to include all SKUs in the same group.
|
579 |
+
|
580 |
+
:param tested_devices: Set of device SKUs that were actually tested
|
581 |
+
:param sku_mapping: Dictionary mapping individual SKUs to their complete groups
|
582 |
+
:returns: Expanded set of devices including all SKUs in the same groups
|
583 |
+
"""
|
584 |
+
expanded_devices = set(tested_devices)
|
585 |
+
|
586 |
+
for device in tested_devices:
|
587 |
+
if device in sku_mapping:
|
588 |
+
# Add all SKUs from the same group
|
589 |
+
expanded_devices.update(sku_mapping[device])
|
590 |
+
|
591 |
+
return expanded_devices
|
592 |
+
|
593 |
+
|
594 |
+
def get_test_iphones():
|
595 |
+
"""
|
596 |
+
Gets iPhone SKU identifiers from the local iPhone.json file.
|
597 |
+
"""
|
598 |
+
iphone_data = load_device_json_local("dashboard_data/iPhone.json")
|
599 |
+
if iphone_data and "total_menu" in iphone_data:
|
600 |
+
return set([device_info["sku"] for device_info in iphone_data["total_menu"].values() if "sku" in device_info])
|
601 |
+
return set()
|
602 |
+
|
603 |
+
|
604 |
+
def get_test_macs():
|
605 |
+
"""
|
606 |
+
Gets Mac SKU identifiers from the local Mac.json file.
|
607 |
+
"""
|
608 |
+
mac_data = load_device_json_local("dashboard_data/Mac.json")
|
609 |
+
if mac_data and "total_menu" in mac_data:
|
610 |
+
return set([device_info["sku"] for device_info in mac_data["total_menu"].values() if "sku" in device_info])
|
611 |
+
return set()
|
612 |
+
|
613 |
+
|
614 |
+
def get_all_supported_devices():
|
615 |
+
"""
|
616 |
+
Gets all supported device identifiers from the config file.
|
617 |
+
Returns a set of device identifiers.
|
618 |
+
"""
|
619 |
+
with open("dashboard_data/config.json", "r") as f:
|
620 |
+
config = json.load(f)
|
621 |
+
|
622 |
+
devices = set()
|
623 |
+
for device_group in config["device_support"]:
|
624 |
+
identifiers = device_group["identifiers"]
|
625 |
+
devices.update(identifiers)
|
626 |
+
|
627 |
+
return devices
|
628 |
+
|
629 |
+
|
630 |
+
def get_tested_devices_for_commit(performance_results, support_results, commit_hash):
|
631 |
+
"""
|
632 |
+
Gets all device identifiers that were actually tested for a specific commit,
|
633 |
+
including all SKUs in the same chip groups as tested devices.
|
634 |
+
Uses chip-based coverage logic where testing one device with a specific chip
|
635 |
+
provides coverage for all devices with that chip on the same platform.
|
636 |
+
Returns a set of device identifiers.
|
637 |
+
"""
|
638 |
+
tested_devices = set()
|
639 |
+
|
640 |
+
# From performance results (benchmark files)
|
641 |
+
for key, result in performance_results.items():
|
642 |
+
if len(key) >= 4 and result.get("commit_hash") == commit_hash:
|
643 |
+
model, device, _, _ = key
|
644 |
+
tested_devices.add(device)
|
645 |
+
|
646 |
+
# From support results (summary files)
|
647 |
+
for key, result in support_results.items():
|
648 |
+
if key in ["modelsTested", "devices"]:
|
649 |
+
continue
|
650 |
+
if len(key) >= 3 and result.get("commitHash") == commit_hash:
|
651 |
+
device, _, _ = key
|
652 |
+
tested_devices.add(device)
|
653 |
+
|
654 |
+
# Expand to include all SKUs in the same chip groups for all platforms
|
655 |
+
sku_mapping = build_sku_group_mapping()
|
656 |
+
expanded_devices = expand_tested_devices(tested_devices, sku_mapping)
|
657 |
+
|
658 |
+
return expanded_devices
|
659 |
+
|
660 |
+
|
661 |
+
def get_tested_os_versions_for_commit(
|
662 |
+
performance_results, support_results, commit_hash
|
663 |
+
):
|
664 |
+
"""
|
665 |
+
Gets all OS versions that were actually tested for a specific commit.
|
666 |
+
Returns a set of OS version strings like 'iOS_17.2', 'macOS_14.5', etc.
|
667 |
+
"""
|
668 |
+
tested_os_versions = set()
|
669 |
+
|
670 |
+
# From performance results (benchmark files)
|
671 |
+
for key, result in performance_results.items():
|
672 |
+
if len(key) >= 4 and result.get("commit_hash") == commit_hash:
|
673 |
+
model, device, os_info, _ = key
|
674 |
+
tested_os_versions.add(os_info)
|
675 |
+
|
676 |
+
# From support results (summary files)
|
677 |
+
for key, result in support_results.items():
|
678 |
+
if key in ["modelsTested", "devices"]:
|
679 |
+
continue
|
680 |
+
if len(key) >= 3 and result.get("commitHash") == commit_hash:
|
681 |
+
device, os, _ = key
|
682 |
+
# Convert format like "iOS 17.2" to "iOS_17.2" for consistency
|
683 |
+
os_normalized = os.replace(" ", "_")
|
684 |
+
tested_os_versions.add(os_normalized)
|
685 |
+
|
686 |
+
return tested_os_versions
|
687 |
+
|
688 |
+
|
689 |
+
def check_target_os_coverage(tested_os_versions):
|
690 |
+
"""
|
691 |
+
Check if the tested OS versions include ALL of the target OS versions:
|
692 |
+
- macOS 14, 15, 26
|
693 |
+
- iOS 17, 18, 26 (noting that iOS and iPadOS are the same under the hood)
|
694 |
+
|
695 |
+
Returns (is_fully_covered: bool, covered_versions: list, missing_versions: list)
|
696 |
+
"""
|
697 |
+
target_macos_versions = {14, 15, 26}
|
698 |
+
target_ios_versions = {17, 18, 26}
|
699 |
+
|
700 |
+
covered_macos = set()
|
701 |
+
covered_ios = set()
|
702 |
+
|
703 |
+
for os_version in tested_os_versions:
|
704 |
+
# Parse OS version string like "iOS_17.2" or "macOS_14.5"
|
705 |
+
if "_" in os_version:
|
706 |
+
os_type, version_str = os_version.split("_", 1)
|
707 |
+
try:
|
708 |
+
# Extract major version number
|
709 |
+
major_version = int(version_str.split(".")[0])
|
710 |
+
|
711 |
+
if os_type == "macOS" and major_version in target_macos_versions:
|
712 |
+
covered_macos.add(major_version)
|
713 |
+
elif (
|
714 |
+
os_type in ["iOS", "iPadOS"]
|
715 |
+
and major_version in target_ios_versions
|
716 |
+
):
|
717 |
+
covered_ios.add(major_version)
|
718 |
+
except (ValueError, IndexError):
|
719 |
+
# Skip if we can't parse the version
|
720 |
+
continue
|
721 |
+
|
722 |
+
# Check what's missing
|
723 |
+
missing_macos = target_macos_versions - covered_macos
|
724 |
+
missing_ios = target_ios_versions - covered_ios
|
725 |
+
|
726 |
+
# Format covered and missing versions
|
727 |
+
covered_versions = []
|
728 |
+
covered_versions.extend([f"macOS {v}" for v in sorted(covered_macos)])
|
729 |
+
covered_versions.extend([f"iOS {v}" for v in sorted(covered_ios)])
|
730 |
+
|
731 |
+
missing_versions = []
|
732 |
+
missing_versions.extend([f"macOS {v}" for v in sorted(missing_macos)])
|
733 |
+
missing_versions.extend([f"iOS {v}" for v in sorted(missing_ios)])
|
734 |
+
|
735 |
+
# Only fully covered if no missing versions
|
736 |
+
is_fully_covered = len(missing_versions) == 0
|
737 |
+
|
738 |
+
return is_fully_covered, covered_versions, missing_versions
|
739 |
+
|
740 |
+
|
741 |
+
def check_chip_coverage(tested_devices):
|
742 |
+
"""
|
743 |
+
Check if the tested devices provide complete chip coverage for each platform.
|
744 |
+
|
745 |
+
Target coverage:
|
746 |
+
- iPad: A14, A15, A16, A17 Pro, M1, M2, M3, M4
|
747 |
+
- iPhone: A14, A15, A16, A17 Pro, A18, A18 Pro
|
748 |
+
- Mac: M1, M2, M3, M4
|
749 |
+
|
750 |
+
:param tested_devices: Set of device SKUs that were tested
|
751 |
+
:returns: (is_fully_covered: bool, platform_coverage: dict, missing_chips: dict)
|
752 |
+
"""
|
753 |
+
# Define target chips for each platform
|
754 |
+
target_chips = {
|
755 |
+
"iPad": {"A14", "A15", "A16", "A17 Pro", "M1", "M2", "M3", "M4"},
|
756 |
+
"iPhone": {"A14", "A15", "A16", "A17 Pro", "A18", "A18 Pro"},
|
757 |
+
"Mac": {"M1", "M2", "M3", "M4"}
|
758 |
+
}
|
759 |
+
|
760 |
+
# Build mapping from SKUs to chips
|
761 |
+
sku_to_chip = build_chip_mapping()
|
762 |
+
|
763 |
+
# Track which chips were tested for each platform
|
764 |
+
tested_chips = {
|
765 |
+
"iPad": set(),
|
766 |
+
"iPhone": set(),
|
767 |
+
"Mac": set()
|
768 |
+
}
|
769 |
+
|
770 |
+
for device_sku in tested_devices:
|
771 |
+
if device_sku in sku_to_chip:
|
772 |
+
platform = get_platform_from_sku(device_sku)
|
773 |
+
chip = normalize_chip_name(sku_to_chip[device_sku])
|
774 |
+
|
775 |
+
if platform in tested_chips:
|
776 |
+
tested_chips[platform].add(chip)
|
777 |
+
|
778 |
+
# Calculate coverage for each platform
|
779 |
+
platform_coverage = {}
|
780 |
+
missing_chips = {}
|
781 |
+
|
782 |
+
for platform, target_set in target_chips.items():
|
783 |
+
covered_set = tested_chips[platform]
|
784 |
+
missing_set = target_set - covered_set
|
785 |
+
|
786 |
+
platform_coverage[platform] = {
|
787 |
+
"total_chips": len(target_set),
|
788 |
+
"tested_chips": len(covered_set),
|
789 |
+
"coverage_percentage": (len(covered_set) / len(target_set)) * 100 if target_set else 0,
|
790 |
+
"covered_chips": sorted(list(covered_set)),
|
791 |
+
"missing_chips": sorted(list(missing_set))
|
792 |
+
}
|
793 |
+
|
794 |
+
missing_chips[platform] = sorted(list(missing_set))
|
795 |
+
|
796 |
+
# Overall coverage is complete if all platforms have full coverage
|
797 |
+
is_fully_covered = all(
|
798 |
+
len(missing_chips[platform]) == 0
|
799 |
+
for platform in target_chips.keys()
|
800 |
+
)
|
801 |
+
|
802 |
+
return is_fully_covered, platform_coverage, missing_chips
|
803 |
+
|
804 |
+
|
805 |
+
def generate_test_coverage_report(
|
806 |
+
performance_results, support_results, output_dir="dashboard_data"
|
807 |
+
):
|
808 |
+
"""
|
809 |
+
Generates test coverage reports for each commit, showing which devices
|
810 |
+
were tested vs skipped.
|
811 |
+
"""
|
812 |
+
# Get all possible devices from config
|
813 |
+
all_devices = get_all_supported_devices()
|
814 |
+
|
815 |
+
# Get all unique commit hashes from results
|
816 |
+
commit_hashes = set()
|
817 |
+
|
818 |
+
# Collect from performance results
|
819 |
+
for key, result in performance_results.items():
|
820 |
+
if len(key) >= 4 and result.get("commit_hash"):
|
821 |
+
commit_hashes.add(result["commit_hash"])
|
822 |
+
|
823 |
+
# Collect from support results
|
824 |
+
for key, result in support_results.items():
|
825 |
+
if key in ["modelsTested", "devices"]:
|
826 |
+
continue
|
827 |
+
if len(key) >= 3 and result.get("commitHash"):
|
828 |
+
commit_hashes.add(result["commitHash"])
|
829 |
+
|
830 |
+
print(f"Found {len(commit_hashes)} commit hashes to analyze")
|
831 |
+
|
832 |
+
# Generate coverage report for each commit
|
833 |
+
for commit_hash in commit_hashes:
|
834 |
+
tested_devices = get_tested_devices_for_commit(
|
835 |
+
performance_results, support_results, commit_hash
|
836 |
+
)
|
837 |
+
|
838 |
+
tested_os_versions = get_tested_os_versions_for_commit(
|
839 |
+
performance_results, support_results, commit_hash
|
840 |
+
)
|
841 |
+
|
842 |
+
# Check target OS coverage
|
843 |
+
os_fully_covered, covered_versions, missing_versions = check_target_os_coverage(
|
844 |
+
tested_os_versions
|
845 |
+
)
|
846 |
+
|
847 |
+
# Check chip coverage for all platforms
|
848 |
+
chip_fully_covered, platform_coverage, missing_chips = check_chip_coverage(
|
849 |
+
tested_devices
|
850 |
+
)
|
851 |
+
|
852 |
+
skipped_devices = all_devices - tested_devices
|
853 |
+
|
854 |
+
# Convert sets to lists for JSON serialization
|
855 |
+
tested_devices_list = list(tested_devices)
|
856 |
+
skipped_devices_list = list(skipped_devices)
|
857 |
+
tested_os_versions_list = list(tested_os_versions)
|
858 |
+
|
859 |
+
coverage_report = {
|
860 |
+
"commit_hash": commit_hash,
|
861 |
+
"total_devices": len(all_devices),
|
862 |
+
"tested_devices": len(tested_devices),
|
863 |
+
"skipped_devices": len(skipped_devices),
|
864 |
+
"coverage_percentage": (len(tested_devices) / len(all_devices)) * 100,
|
865 |
+
"tested_device_list": tested_devices_list,
|
866 |
+
"skipped_device_list": skipped_devices_list,
|
867 |
+
"tested_os_versions": tested_os_versions_list,
|
868 |
+
"has_target_os_coverage": os_fully_covered,
|
869 |
+
"covered_target_versions": covered_versions,
|
870 |
+
"missing_target_versions": missing_versions,
|
871 |
+
"has_target_chip_coverage": chip_fully_covered,
|
872 |
+
"platform_chip_coverage": platform_coverage,
|
873 |
+
"missing_target_chips": missing_chips,
|
874 |
+
}
|
875 |
+
|
876 |
+
# Save report for this commit
|
877 |
+
output_file = os.path.join(output_dir, f"test_coverage_{commit_hash}.json")
|
878 |
+
with open(output_file, "w") as f:
|
879 |
+
json.dump(coverage_report, f, indent=2)
|
880 |
+
|
881 |
+
os_coverage_info = f"OS coverage: {'✅ Complete' if os_fully_covered else '❌ Incomplete'}"
|
882 |
+
chip_coverage_info = f"Chip coverage: {'✅ Complete' if chip_fully_covered else '❌ Incomplete'}"
|
883 |
+
|
884 |
+
print(
|
885 |
+
f"Generated coverage report for commit {commit_hash}: "
|
886 |
+
f"{len(tested_devices)}/{len(all_devices)} devices tested "
|
887 |
+
f"({coverage_report['coverage_percentage']:.1f}%) "
|
888 |
+
f"({os_coverage_info}, {chip_coverage_info})"
|
889 |
+
)
|
890 |
+
|
891 |
+
|
892 |
def main():
|
893 |
"""
|
894 |
Main function to orchestrate the performance data generation process.
|
|
|
898 |
2. Fetches evaluation data for various datasets.
|
899 |
3. Processes benchmark files and summary files.
|
900 |
4. Calculates and saves performance and support results.
|
901 |
+
5. Generates test coverage reports for each commit.
|
902 |
"""
|
903 |
source_xcresult_repo = "argmaxinc/whisperkit-evals-dataset"
|
904 |
source_xcresult_subfolder = "benchmark_data/"
|
|
|
962 |
elif "summary" in filename:
|
963 |
process_summary_file(file_path, support_results, releases)
|
964 |
else:
|
965 |
+
process_benchmark_file(
|
966 |
+
file_path, dataset_dfs, performance_results, releases
|
967 |
+
)
|
968 |
+
|
969 |
not_supported = calculate_and_save_performance_results(
|
970 |
performance_results, "dashboard_data/performance_data.json"
|
971 |
)
|
|
|
973 |
support_results, not_supported, "dashboard_data/support_data.csv"
|
974 |
)
|
975 |
|
976 |
+
# Generate test coverage reports
|
977 |
+
generate_test_coverage_report(performance_results, support_results)
|
978 |
+
|
979 |
|
980 |
if __name__ == "__main__":
|
981 |
main()
|
quality_generate.py
DELETED
@@ -1,186 +0,0 @@
|
|
1 |
-
import json
|
2 |
-
import os
|
3 |
-
import shutil
|
4 |
-
import sys
|
5 |
-
from collections import defaultdict
|
6 |
-
from statistics import mean
|
7 |
-
|
8 |
-
import pandas as pd
|
9 |
-
import requests
|
10 |
-
|
11 |
-
from text_normalizer import text_normalizer
|
12 |
-
from utils import compute_average_wer, download_dataset
|
13 |
-
|
14 |
-
|
15 |
-
def fetch_evaluation_data(url):
|
16 |
-
"""
|
17 |
-
Fetches evaluation data from the given URL.
|
18 |
-
:param url: The URL to fetch the evaluation data from.
|
19 |
-
:returns: The evaluation data as a dictionary.
|
20 |
-
:rauses: sys.exit if the request fails
|
21 |
-
"""
|
22 |
-
response = requests.get(url)
|
23 |
-
if response.status_code == 200:
|
24 |
-
return json.loads(response.text)
|
25 |
-
else:
|
26 |
-
sys.exit(f"Failed to fetch WhisperKit evals: {response.text}")
|
27 |
-
|
28 |
-
|
29 |
-
def get_device_name(device):
|
30 |
-
"""
|
31 |
-
Gets the device name from the device map if it exists.
|
32 |
-
:param device: String representing the device name.
|
33 |
-
:returns: The device name from the device map if it exists, otherwise the input device name.
|
34 |
-
"""
|
35 |
-
with open("dashboard_data/device_map.json", "r") as f:
|
36 |
-
device_map = json.load(f)
|
37 |
-
return device_map.get(device, device).replace(" ", "_")
|
38 |
-
|
39 |
-
|
40 |
-
def process_quality_file(file_path, dataset_dfs, quality_results):
|
41 |
-
"""
|
42 |
-
Processes a single quality file and updates the quality_results dictionary.
|
43 |
-
|
44 |
-
:param file_path: Path to the quality JSON file.
|
45 |
-
:param dataset_dfs: Dictionary of DataFrames containing dataset information.
|
46 |
-
:param quality_results: Dictionary to store the processed quality results.
|
47 |
-
|
48 |
-
This function reads a quality JSON file, extracts relevant information,
|
49 |
-
and updates the quality_results dictionary with various metrics including WER
|
50 |
-
and Quality of Inference (QoI) for different datasets.
|
51 |
-
"""
|
52 |
-
with open(file_path, "r") as file:
|
53 |
-
test_results = json.load(file)
|
54 |
-
|
55 |
-
if len(test_results) == 0:
|
56 |
-
return
|
57 |
-
|
58 |
-
metadata = test_results["metadata"]
|
59 |
-
test_results = test_results["results"]
|
60 |
-
model = file_path.split("/")[-3].replace("_", "/")
|
61 |
-
device = metadata["inference_context"]["device_spec"]["product_name"]
|
62 |
-
device = get_device_name(device)
|
63 |
-
timestamp = file_path.split("/")[-1].split(".")[0]
|
64 |
-
key = model
|
65 |
-
dataset_name = metadata["dataset_name"]
|
66 |
-
|
67 |
-
for test_result in test_results:
|
68 |
-
audio_file_name = test_result["file"]
|
69 |
-
|
70 |
-
dataset_key = "Earnings-22" if "earnings22" in dataset_name else "LibriSpeech"
|
71 |
-
dataset_df = dataset_dfs[dataset_key]
|
72 |
-
|
73 |
-
wer_entry = {
|
74 |
-
"prediction": text_normalizer(test_result["prediction"]),
|
75 |
-
"reference": text_normalizer(test_result["reference"]),
|
76 |
-
}
|
77 |
-
quality_results[key]["timestamp"] = timestamp
|
78 |
-
quality_results[key]["dataset_wer"][dataset_name].append(wer_entry)
|
79 |
-
|
80 |
-
audio = audio_file_name.split(".")[0]
|
81 |
-
dataset_row = dataset_df.loc[dataset_df["file"].str.contains(audio)].iloc[0]
|
82 |
-
reference_wer = dataset_row["wer"]
|
83 |
-
prediction_wer = test_result["wer"]
|
84 |
-
|
85 |
-
quality_results[key]["qoi"].append(1 if prediction_wer <= reference_wer else 0)
|
86 |
-
|
87 |
-
|
88 |
-
def calculate_and_save_quality_results(quality_results, quality_output_path):
|
89 |
-
"""
|
90 |
-
Calculates final quality metrics and saves them to a JSON file.
|
91 |
-
|
92 |
-
:param quality_results: Dictionary containing raw quality data.
|
93 |
-
:param quality_output_path: Path to save the processed quality results.
|
94 |
-
|
95 |
-
This function processes the raw quality data, calculates average metrics,
|
96 |
-
and writes the final results to a JSON file, with each entry representing
|
97 |
-
a unique model's quality metrics across different datasets, including
|
98 |
-
Word Error Rate (WER) and Quality of Inference (QoI).
|
99 |
-
"""
|
100 |
-
with open(quality_output_path, "w") as quality_file:
|
101 |
-
for key, data in quality_results.items():
|
102 |
-
model = key
|
103 |
-
|
104 |
-
dataset_wers = {
|
105 |
-
dataset: compute_average_wer(wer)
|
106 |
-
for dataset, wer in data["dataset_wer"].items()
|
107 |
-
}
|
108 |
-
average_wer = (
|
109 |
-
sum(dataset_wers.values()) / len(dataset_wers)
|
110 |
-
if len(dataset_wers) != 0
|
111 |
-
else 0
|
112 |
-
)
|
113 |
-
|
114 |
-
quality_entry = {
|
115 |
-
"model": model.replace("_", "/"),
|
116 |
-
"timestamp": data["timestamp"],
|
117 |
-
"average_wer": round(average_wer, 2),
|
118 |
-
"dataset_wer": dataset_wers,
|
119 |
-
"qoi": round(mean(data["qoi"]), 2),
|
120 |
-
}
|
121 |
-
|
122 |
-
json.dump(quality_entry, quality_file)
|
123 |
-
quality_file.write("\n")
|
124 |
-
|
125 |
-
|
126 |
-
def main():
|
127 |
-
"""
|
128 |
-
Main function to orchestrate the quality data generation process.
|
129 |
-
|
130 |
-
This function performs the following steps:
|
131 |
-
1. Downloads quality data if requested.
|
132 |
-
2. Fetches evaluation data for various datasets.
|
133 |
-
3. Processes quality files for specific datasets.
|
134 |
-
4. Calculates and saves quality results, including WER and QoI metrics.
|
135 |
-
"""
|
136 |
-
if len(sys.argv) > 1 and sys.argv[1] == "download":
|
137 |
-
try:
|
138 |
-
shutil.rmtree("english")
|
139 |
-
except:
|
140 |
-
print("Nothing to remove.")
|
141 |
-
download_dataset("argmaxinc/whisperkit-evals", "english", "WhisperKit")
|
142 |
-
|
143 |
-
datasets = {
|
144 |
-
"Earnings-22": "https://huggingface.co/datasets/argmaxinc/whisperkit-evals/resolve/main/WhisperOpenAIAPI/openai_whisper-large-v2/earnings22/2024-03-04_13%3A39%3A42_GMT-0800.json",
|
145 |
-
"LibriSpeech": "https://huggingface.co/datasets/argmaxinc/whisperkit-evals/resolve/main/WhisperOpenAIAPI/openai_whisper-large-v2/librispeech/2024-02-28_18%3A45%3A02_GMT-0800.json?download=true",
|
146 |
-
"earnings22-10mins": "https://huggingface.co/datasets/argmaxinc/whisperkit-evals/resolve/main/WhisperOpenAIAPI/openai_whisper-large-v2/earnings22/2024-03-04_13%3A39%3A42_GMT-0800.json",
|
147 |
-
"librispeech-10mins": "https://huggingface.co/datasets/argmaxinc/whisperkit-evals/resolve/main/WhisperOpenAIAPI/openai_whisper-large-v2/librispeech/2024-02-28_18%3A45%3A02_GMT-0800.json?download=true",
|
148 |
-
"earnings22-12hours": "https://huggingface.co/datasets/argmaxinc/whisperkit-evals/resolve/main/WhisperOpenAIAPI/openai_whisper-large-v2/earnings22/2024-03-04_13%3A39%3A42_GMT-0800.json",
|
149 |
-
"librispeech": "https://huggingface.co/datasets/argmaxinc/whisperkit-evals/resolve/main/WhisperOpenAIAPI/openai_whisper-large-v2/librispeech/2024-02-28_18%3A45%3A02_GMT-0800.json?download=true",
|
150 |
-
}
|
151 |
-
|
152 |
-
dataset_dfs = {}
|
153 |
-
for dataset_name, url in datasets.items():
|
154 |
-
evals = fetch_evaluation_data(url)
|
155 |
-
dataset_dfs[dataset_name] = pd.json_normalize(evals["results"])
|
156 |
-
|
157 |
-
source_quality_directory = "argmaxinc/english/WhisperKit/"
|
158 |
-
|
159 |
-
quality_results = defaultdict(
|
160 |
-
lambda: {
|
161 |
-
"average_wer": [],
|
162 |
-
"dataset_wer": defaultdict(list),
|
163 |
-
"qoi": [],
|
164 |
-
"timestamp": None,
|
165 |
-
}
|
166 |
-
)
|
167 |
-
|
168 |
-
for subdir, _, files in os.walk(source_quality_directory):
|
169 |
-
dataset = subdir.split("/")[-1]
|
170 |
-
if dataset not in ["earnings22-12hours", "librispeech"]:
|
171 |
-
continue
|
172 |
-
|
173 |
-
for filename in files:
|
174 |
-
if not filename.endswith(".json"):
|
175 |
-
continue
|
176 |
-
|
177 |
-
file_path = os.path.join(subdir, filename)
|
178 |
-
process_quality_file(file_path, dataset_dfs, quality_results)
|
179 |
-
|
180 |
-
calculate_and_save_quality_results(
|
181 |
-
quality_results, "dashboard_data/quality_data.json"
|
182 |
-
)
|
183 |
-
|
184 |
-
|
185 |
-
if __name__ == "__main__":
|
186 |
-
main()
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
utils.py
CHANGED
@@ -2,6 +2,7 @@ import colorsys
|
|
2 |
import json
|
3 |
import os
|
4 |
import random
|
|
|
5 |
from concurrent.futures import ThreadPoolExecutor
|
6 |
from dataclasses import dataclass, make_dataclass
|
7 |
from datetime import datetime
|
@@ -12,6 +13,7 @@ import evaluate
|
|
12 |
import numpy as np
|
13 |
import pandas as pd
|
14 |
import plotly.graph_objects as go
|
|
|
15 |
from huggingface_hub import hf_hub_download, list_repo_files
|
16 |
from pydub import AudioSegment
|
17 |
|
@@ -365,14 +367,11 @@ def plot_metric(
|
|
365 |
with open("dashboard_data/version.json", "r") as f:
|
366 |
version = json.load(f)
|
367 |
releases = set(version["releases"])
|
368 |
-
|
369 |
df = df[df["commit_hash"].isin(releases)]
|
370 |
|
371 |
grouped = df.groupby(["model", "device", "os"])
|
372 |
-
sorted_groups = [
|
373 |
-
group.sort_values("commit_timestamp")
|
374 |
-
for _, group in grouped
|
375 |
-
]
|
376 |
|
377 |
if filter_input:
|
378 |
filters = [f.strip().lower() for f in filter_input.split(";")]
|
@@ -504,6 +503,29 @@ def calculate_parity(m2_ultra_wer, row):
|
|
504 |
return None
|
505 |
|
506 |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
507 |
def create_initial_performance_column_dict():
|
508 |
"""
|
509 |
Creates the initial column dictionary for the performance table.
|
@@ -511,7 +533,7 @@ def create_initial_performance_column_dict():
|
|
511 |
:return: A list of column dictionaries
|
512 |
|
513 |
This function defines the basic structure of the performance table,
|
514 |
-
including columns for model, device, OS, average WER, QoI, speed,
|
515 |
"""
|
516 |
return [
|
517 |
[
|
@@ -529,6 +551,7 @@ def create_initial_performance_column_dict():
|
|
529 |
["qoi", ColumnContent, ColumnContent("QoI", "html", False)],
|
530 |
["speed", ColumnContent, ColumnContent("Speed", "html", False)],
|
531 |
["toks", ColumnContent, ColumnContent("Tok / s", "html", False)],
|
|
|
532 |
]
|
533 |
|
534 |
|
@@ -780,6 +803,46 @@ def generate_random_colors(base_colors, num_colors, min_distance=30):
|
|
780 |
return generated_colors
|
781 |
|
782 |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
783 |
@dataclass
|
784 |
class Task:
|
785 |
"""
|
|
|
2 |
import json
|
3 |
import os
|
4 |
import random
|
5 |
+
import sys
|
6 |
from concurrent.futures import ThreadPoolExecutor
|
7 |
from dataclasses import dataclass, make_dataclass
|
8 |
from datetime import datetime
|
|
|
13 |
import numpy as np
|
14 |
import pandas as pd
|
15 |
import plotly.graph_objects as go
|
16 |
+
import requests
|
17 |
from huggingface_hub import hf_hub_download, list_repo_files
|
18 |
from pydub import AudioSegment
|
19 |
|
|
|
367 |
with open("dashboard_data/version.json", "r") as f:
|
368 |
version = json.load(f)
|
369 |
releases = set(version["releases"])
|
370 |
+
|
371 |
df = df[df["commit_hash"].isin(releases)]
|
372 |
|
373 |
grouped = df.groupby(["model", "device", "os"])
|
374 |
+
sorted_groups = [group.sort_values("commit_timestamp") for _, group in grouped]
|
|
|
|
|
|
|
375 |
|
376 |
if filter_input:
|
377 |
filters = [f.strip().lower() for f in filter_input.split(";")]
|
|
|
503 |
return None
|
504 |
|
505 |
|
506 |
+
def calculate_quality_parity(quality_data, performance_row):
|
507 |
+
"""
|
508 |
+
Calculates the parity between measured WER and ground truth WER from quality data.
|
509 |
+
|
510 |
+
:param quality_data: List of dictionaries containing quality evaluation data
|
511 |
+
:param performance_row: Current performance row being processed
|
512 |
+
:return: WER difference (measured - ground truth) or None if not found
|
513 |
+
|
514 |
+
This function finds the corresponding ground truth WER for a model and computes
|
515 |
+
the difference between measured and ground truth WER values.
|
516 |
+
"""
|
517 |
+
model_name = performance_row.get("model", "")
|
518 |
+
measured_wer = performance_row.get("english_wer", 0)
|
519 |
+
|
520 |
+
# Find matching model in quality data
|
521 |
+
for quality_entry in quality_data:
|
522 |
+
if quality_entry.get("model", "") == model_name:
|
523 |
+
ground_truth_wer = quality_entry.get("average_wer", 0)
|
524 |
+
return round(measured_wer - ground_truth_wer, 2)
|
525 |
+
|
526 |
+
return None
|
527 |
+
|
528 |
+
|
529 |
def create_initial_performance_column_dict():
|
530 |
"""
|
531 |
Creates the initial column dictionary for the performance table.
|
|
|
533 |
:return: A list of column dictionaries
|
534 |
|
535 |
This function defines the basic structure of the performance table,
|
536 |
+
including columns for model, device, OS, average WER, QoI, speed, tokens per second, and parity.
|
537 |
"""
|
538 |
return [
|
539 |
[
|
|
|
551 |
["qoi", ColumnContent, ColumnContent("QoI", "html", False)],
|
552 |
["speed", ColumnContent, ColumnContent("Speed", "html", False)],
|
553 |
["toks", ColumnContent, ColumnContent("Tok / s", "html", False)],
|
554 |
+
["parity", ColumnContent, ColumnContent("Parity", "number", False)],
|
555 |
]
|
556 |
|
557 |
|
|
|
803 |
return generated_colors
|
804 |
|
805 |
|
806 |
+
def download_json_from_github(
|
807 |
+
url=None,
|
808 |
+
repo_owner="argmaxinc",
|
809 |
+
repo_name="device-knowledge-base",
|
810 |
+
branch="main",
|
811 |
+
file_path=None,
|
812 |
+
):
|
813 |
+
"""
|
814 |
+
Downloads a JSON file from a GitHub repository.
|
815 |
+
|
816 |
+
:param url: Full URL to the JSON file, or None if constructing from other params
|
817 |
+
:param repo_owner: GitHub repository owner (default: "argmaxinc")
|
818 |
+
:param repo_name: GitHub repository name (default: "WhisperKit")
|
819 |
+
:param branch: Git branch name (default: "main")
|
820 |
+
:param file_path: Path to the JSON file within the repository
|
821 |
+
:returns: The JSON data as a dictionary
|
822 |
+
:raises: sys.exit if the request fails or JSON parsing fails
|
823 |
+
"""
|
824 |
+
|
825 |
+
# If full URL is provided, use it directly
|
826 |
+
if url:
|
827 |
+
target_url = url
|
828 |
+
elif file_path:
|
829 |
+
# Construct GitHub raw URL
|
830 |
+
target_url = f"https://raw.githubusercontent.com/{repo_owner}/{repo_name}/{branch}/{file_path}"
|
831 |
+
else:
|
832 |
+
sys.exit("Either 'url' or 'file_path' must be provided")
|
833 |
+
|
834 |
+
try:
|
835 |
+
response = requests.get(target_url)
|
836 |
+
if response.status_code == 200:
|
837 |
+
return json.loads(response.text)
|
838 |
+
else:
|
839 |
+
sys.exit(f"Failed to fetch JSON from GitHub: {response.text}")
|
840 |
+
except json.JSONDecodeError as e:
|
841 |
+
sys.exit(f"Failed to parse JSON from {target_url}: {e}")
|
842 |
+
except requests.exceptions.RequestException as e:
|
843 |
+
sys.exit(f"Network error fetching {target_url}: {e}")
|
844 |
+
|
845 |
+
|
846 |
@dataclass
|
847 |
class Task:
|
848 |
"""
|