Context
The push-to-clickhouse workflow runs every Saturday and writes one row per evaluated model into ClickHouse (spyre.generative_model_spyre_support and spyre.embedding_model_spyre_support). Each week we want to compare the current snapshot against the previous one — separately for generative and embedding models — to answer: did coverage change, did the verified-on-Spyre count change, and if so why?
This issue tracks the analysis points to cover in that comparison.
1. Coverage — model count changes
| Point |
How to detect |
What to look at |
| Total models covered |
COUNT(*) GROUP BY snapshot_date |
Did the top-K input list grow/shrink? (new families trending on the Hub, or a top_k change) |
| Net change by type |
Same query, per table |
Is growth/loss evenly distributed, or concentrated in one mode? |
| New models (appeared this week) |
model_name IN current EXCEPT previous |
Are they genuinely new Hub uploads, or were they previously filtered out (e.g. newly under the 60 B param limit)? Check parameters_number and family. |
| Dropped models (disappeared) |
model_name IN previous EXCEPT current |
Did they exceed the param ceiling, become MoE, or get deleted from the Hub? |
| Curated vs top-K composition shift |
curated = true count delta |
Did the curated list change (a new hand-maintained entry or a removal)? |
2. verified_on_spyre count changes
| Point |
How to detect |
What to look at |
Absolute count of verified_on_spyre = true |
COUNT(*) WHERE verified_on_spyre = true |
Primary health signal. |
| Pass rate |
verified / total (exclude pre-filter terminal rows) |
Normalises away model count growth — a rising count with a falling rate is a warning sign. |
| Models that regressed (PASS → FAIL) |
verified_on_spyre = true in week N−1, false in week N |
Highest-priority item: something broke a previously working model. |
| Models that recovered (FAIL → PASS) |
verified_on_spyre = false in week N−1, true in week N |
Confirms a fix landed. |
verified_on_cpu without verified_on_spyre |
verified_on_cpu = true AND verified_on_spyre = false |
Models that load correctly on CPU but fail on Spyre specifically — isolates Spyre-specific regressions from model breakage. |
3. Failure analysis — failure_category
The full set of categories, grouped by stage:
Pre-filter (deterministic — a change here means the input list changed, not the runtime)
| Category |
Meaning |
not-implemented-adapter |
No adapter for the model's config_class |
model_too_large |
Exceeds 60 B parameter ceiling |
moe |
Mixture-of-Experts, not supported |
Worker / runtime
| Category |
Meaning |
cpu_load_failed |
Model could not be loaded on CPU |
cpu_generate_failed |
CPU load OK, but generation/embed inference failed |
quantized_model |
Quantized checkpoint not supported |
unsupported_checkpoint |
Checkpoint format not supported |
verification_failed |
Loaded and ran, but outputs differ from reference |
test_execution_exception |
Unexpected exception in test logic |
Infrastructure (do not reflect model support — tracked separately)
| Category |
Meaning |
hardware_exception |
Spyre accelerator unreachable |
worker_crashed |
Child process exited with no results |
worker_timeout |
Child exceeded per-batch time limit |
Comparison points to cover:
- Distribution shift:
COUNT(*) GROUP BY failure_category week-over-week.
- Pre-filter vs runtime split: a change in deterministic categories means the input list changed; a change in runtime categories is actionable.
- Infrastructure noise: if
hardware_exception + worker_crashed + worker_timeout is non-zero, the run's verified_on_spyre count is understated and those models should be re-evaluated before drawing conclusions.
4. Error message analysis — error field
| Point |
How to approach |
| New error patterns |
Cluster error values by substring / regex on the non-null rows of newly failing models. |
| Recurring errors in stable failures |
A model failing week after week with the exact same error is a known open issue — track count rather than investigate again. |
| Error shared across multiple models |
Same error substring across ≥N models is likely a single root cause (e.g. a missing kernel, an unsupported op in a whole architecture family). |
family / architecture clustering |
Join error with family and architecture — errors within one family point to adapter-level issues; errors spanning families point to Spyre-level or framework-level issues. |
5. Adapter coverage changes — adapter_name / config_class
| Point |
What to look at |
| New adapters active this week |
adapter_name values present in week N but not N−1, combined with added_date from the git log |
| Config classes newly covered |
config_class values that went from not-implemented-adapter to having a real adapter_name |
| Config classes that lost coverage |
config_class values that went from a valid adapter to not-implemented-adapter (rare but possible on a refactor) |
6. Size / family dimension
| Point |
What to look at |
| Param size of newly failing models |
Were regressions in large models (close to the 60 B ceiling) or small ones? Check parameters_number. |
| Family-level pass-rate trend |
Group verified_on_spyre by family — a whole family dropping is an adapter regression; a scattered drop is more likely infrastructure. |
| Architecture breakdown |
architecture column gives a finer grain than family for generative models. |
Context
The
push-to-clickhouseworkflow runs every Saturday and writes one row per evaluated model into ClickHouse (spyre.generative_model_spyre_supportandspyre.embedding_model_spyre_support). Each week we want to compare the current snapshot against the previous one — separately for generative and embedding models — to answer: did coverage change, did the verified-on-Spyre count change, and if so why?This issue tracks the analysis points to cover in that comparison.
1. Coverage — model count changes
COUNT(*) GROUP BY snapshot_datetop_kchange)model_name IN current EXCEPT previousparameters_numberandfamily.model_name IN previous EXCEPT currentcurated = truecount delta2.
verified_on_spyrecount changesverified_on_spyre = trueCOUNT(*) WHERE verified_on_spyre = trueverified / total(exclude pre-filter terminal rows)verified_on_spyre = truein week N−1,falsein week Nverified_on_spyre = falsein week N−1,truein week Nverified_on_cpuwithoutverified_on_spyreverified_on_cpu = true AND verified_on_spyre = false3. Failure analysis —
failure_categoryThe full set of categories, grouped by stage:
Pre-filter (deterministic — a change here means the input list changed, not the runtime)
not-implemented-adapterconfig_classmodel_too_largemoeWorker / runtime
cpu_load_failedcpu_generate_failedquantized_modelunsupported_checkpointverification_failedtest_execution_exceptionInfrastructure (do not reflect model support — tracked separately)
hardware_exceptionworker_crashedworker_timeoutComparison points to cover:
COUNT(*) GROUP BY failure_categoryweek-over-week.hardware_exception + worker_crashed + worker_timeoutis non-zero, the run'sverified_on_spyrecount is understated and those models should be re-evaluated before drawing conclusions.4. Error message analysis —
errorfielderrorvalues by substring / regex on the non-null rows of newly failing models.erroris a known open issue — track count rather than investigate again.errorsubstring across ≥N models is likely a single root cause (e.g. a missing kernel, an unsupported op in a whole architecture family).family/architectureclusteringerrorwithfamilyandarchitecture— errors within one family point to adapter-level issues; errors spanning families point to Spyre-level or framework-level issues.5. Adapter coverage changes —
adapter_name/config_classadapter_namevalues present in week N but not N−1, combined withadded_datefrom the git logconfig_classvalues that went fromnot-implemented-adapterto having a realadapter_nameconfig_classvalues that went from a valid adapter tonot-implemented-adapter(rare but possible on a refactor)6. Size / family dimension
parameters_number.verified_on_spyrebyfamily— a whole family dropping is an adapter regression; a scattered drop is more likely infrastructure.architecturecolumn gives a finer grain thanfamilyfor generative models.