Skip to content

Add reproducible Delicious GPU benchmarks with the paper evaluation protocol - #38

Draft
dev-rinchin wants to merge 9 commits into
masterfrom
feature/local-gpu-benchmark
Draft

dev-rinchin wants to merge 9 commits into
masterfrom
feature/local-gpu-benchmark

Conversation

@dev-rinchin

@dev-rinchin dev-rinchin commented Oct 30, 2026 •

Copy link
Copy Markdown
Contributor

The default local GPU benchmark uses the real Delicious dataset and the evaluation protocol from the SketchBoost paper, replacing synthetic data in the required PR check.

Workload and reporting

  • Pinned original archive and normalized array checksums; first official train/test split (12920/3185), five shuffled training folds (10336 train / 2584 validation), all 500 features and 983 labels. No generated or resampled targets.
  • Unrounded selected paper parameters, lr=0.015, up to 20000 iterations, es=500, depth=12, 256 bins and use_hess=False. Hyperparameter search is not repeated.
  • Full-output baseline plus topk/rand/proj with sketch_outputs=5. FilterSketch is explicitly additional library coverage outside the paper. Five methods × five folds execute sequentially on exactly one physical GPU.
  • Synchronized fit/predict timing after a 32-iteration warmup, a separate full memory fit, CPU RSS, test log loss and actual executed/retained tree counts per fold. Summary statistics use five-fold means and sample standard deviations (ddof=1), following the paper's aggregation code. Reports include GPU characteristics and maximum fit GPU allocation across folds.
  • Explicit dataset preparation, an offline archive option, and per-fold resume. Comparisons reject mismatched workloads, datasets, environments and harness versions. The default worker timeout is 72 hours, accommodating expensive full-output fits.
  • AGENTS.md defines the required local workflow. Legacy synthetic profiles remain explicitly selectable. Reports/data stay ignored locally; publication uses PR comment tables, without result branches or artifact uploads.

Validation

  • 332 tests passed on one NVIDIA A100 80 GB GPU, including GPU library tests and dataset-integrity/fold-isolation/resume/reporting tests.
  • GitHub CPU checks passed on Python 3.13 and 3.14 for final head d7be28b27614.
  • All 25 method/fold cases passed on each of two library revisions in a real-data diagnostic capped at four iterations and two warmup iterations: base da8df750a760 and candidate 4d2d89f67364. Both timing and separate memory fits passed; actual dataset checksums matched for all paired cases. Positive resume verification skipped completed cases. These diagnostic results are not a performance benchmark at convergence.
  • After the subsequent report-only sample-standard-deviation correction and timeout/documentation update, the final harness was rerun on both base and final head with forced early stopping (zero learning rate, es=2, limit=16): timing and memory runs each executed three iterations and retained one tree. Reporting tests verify the sample deviation formula; saved diagnostic reports also render with the corrected statistics without altering their original recorded hashes.
  • Wheel and source distributions build and contain no cached data or generated results.

Draft: the full five-fold comparison at the paper's 20000-iteration limit has not been run. The unsketched baseline is expensive: a separate 32-iteration pilot fit took approximately 114 seconds on an A100. Comparing two versions across all folds with separate full memory fits can take days. No full-protocol quality or performance result is claimed.

Define twelve deterministic workloads, including output scaling from 32 to 10000, multiple sketch strategies, validation memory and deep histograms. Measure synchronized wall time, private-pool peak live allocations, RSS and holdout quality in isolated workers.

Store versioned raw evidence and reject incompatible result comparisons. Document a pinned environment and require local GPU reports in AGENTS.md.
Keep a fresh process per case and library version while avoiding duplicate import-time Numba compilation. Preserve intermediate timing evidence if the memory phase fails.
Record and display one-device execution, physical/CUDA-visible VRAM, GPU UUID, PCI bus, SM count, memory bus, power limit, maximum SM clock and driver versions. Show target dimension and sketch width per case, distinguishing projections from sampling with replacement. Add GPU-count and report regressions.
Avoid mismatched device identity when CUDA and nvidia-smi ordinal ordering differ. Reject selectors resolving to multiple cards or MIG instances.
Select suite manifests explicitly while preserving the original k=8 workload. Fingerprint the selected suite and verify that the k=5 variant changes only sketch width and benchmark identity.
Select the frozen k=5 profile by default in the loader and CLI, update repository instructions and documentation, and retain the explicit k=8 profile for historical comparisons.
@dev-rinchin
dev-rinchin marked this pull request as draft November 2, 2026 08:51
@dev-rinchin dev-rinchin changed the title Add reproducible local GPU benchmarks with k=5 by default Add reproducible Delicious GPU benchmarks with the paper evaluation protocol Nov 2, 2026
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant