godofecht / godofecht/flow-scikit
Performance blocker: make every canonical estimator operation beat sklearn/Python
@godofecht is already working on this.
Since Aug 22, 2026.
- Dominant language
- Python
- Stars
- 2
- Forks
- 0
- Avg merge
- 4h 33m
- Merged PRs (30d)
- 9
Description
Goal
The canonical flow-scikit benchmark should have zero supported estimator operations materially slower than sklearn/Python on the same machine and numerical backend.
Current canonical-v2 evidence has moved beyond the older SVC.predict ~0.67x claim. #481 records current KernelSVC prediction as faster than sklearn on both Iris and Digits and explicitly identifies the older architecture-map inference claim as stale. Do not treat SVC prediction as the first blocker unless a fresh local operation-level run reproduces a loss.
The current concrete losses are tracked by focused children, including LinearSVC fit (#479), KernelSVC fit (#480), DecisionTree Digits (#482), RandomForest Digits fit (#483), GaussianNB Digits predict (#484), KMeans Digits fit (#485), Lasso fit (#486), and KernelRidge fit/predict (#487/#488). Artifact/provenance drift is tracked in #493.
Required work
- Re-run the canonical suite with current
main, pinned BLAS thread counts and the five-repeat measurement protocol. - Classify every loss by substrate: Python/control overhead, allocation/copy, scalar loop, BLAS/LAPACK dispatch, algorithmic mismatch, cache/layout, or measurement noise.
- Fix losses one operation at a time, preserving sklearn-equivalent semantics and existing parity tolerances.
- Add scaled workloads for every canonical row so wins are not artifacts of fixed interpreter/import overhead.
- Track fit/predict/transform/predict_proba separately; no estimator-level average may hide a slow operation.
- Add peak RSS/allocation evidence for representative fits and inference paths.
Current priority
Use operation-level evidence, not stale estimator-level summaries. Before optimizing a row, confirm the current local result and provenance. When a previously losing operation becomes a win, update generated architecture/performance artifacts through #493 instead of carrying the obsolete classification forward.
For KernelSVC specifically, keep fit and predict separate: #480 owns training efficiency; #481 owns prediction-only scaled verification and stale-artifact cleanup.
Exit criteria
- zero canonical supported rows below 0.95x Python after noise filtering;
- target state: every row >= 1.05x Flow win;
- ties must have a filed optimization hypothesis rather than being silently counted as wins;
- machine-readable report lists wins/ties/losses by operation and workload size;
- benchmark documentation explains why Flow wins each class rather than only publishing ratios.
Parent programme: flooooooooooow/flow#727.
Validation and benchmark qualification are local-only. Do not add, enable, trigger, inspect, wait for, or rely on GitHub Actions or other hosted CI/workflows.
Contributor guide
No contributing guide indexed for this repository
First steps
- Read the whole issue, then the project's contributing guide.
- Comment on the issue to say you are picking it up — it saves two people doing the same work.
- Fork the repository and make your change on a branch.
- Open a pull request that references the issue number.
Assessment
This issue has not been assessed yet.