fix(onpair): pin OnPair dictionary-training seed for determinism#8756
Conversation
OnPair's default config left `seed: None`, meaning the dictionary trainer seeded its RNG from OS entropy. This made the trained dictionary and, therefore, the compressed file sizes nondeterministic run-to-run, adding noise to file-size benchmark comparisons. Set `seed: Some(42)` on `DEFAULT_DICT12_CONFIG` (spread over `onpair::DEFAULT_CONFIG`) so training is reproducible. This is the only OnPair `Config` constructed in the repo, so it covers production, benches, and tests. No onpair release is needed: published 0.0.4 already exposes the public `seed` field. `42` matches onpair's own determinism test convention.
Polar Signals Profiling ResultsLatest Run
Powered by Polar Signals Cloud |
Benchmarks: PolarSignals ProfilingVortex (geomean): 1.089x ➖ How to read Verdict and Engines
datafusion / vortex-file-compressed (1.089x ➖, 0↑ 3↓)
No file size changes detected. |
Benchmarks: FineWeb NVMeVerdict: No clear signal (low confidence) How to read Verdict and Engines
datafusion / vortex-file-compressed (0.990x ➖, 0↑ 0↓)
datafusion / vortex-compact (0.978x ➖, 1↑ 0↓)
datafusion / parquet (0.972x ➖, 0↑ 0↓)
duckdb / vortex-file-compressed (0.986x ➖, 0↑ 0↓)
duckdb / vortex-compact (0.993x ➖, 0↑ 0↓)
duckdb / parquet (0.981x ➖, 0↑ 0↓)
File Size Changes (1 files changed, -0.0% overall, 0↑ 1↓)
Totals:
|
Benchmarks: TPC-H SF=1 on NVMEVerdict: No clear signal (low confidence) How to read Verdict and Engines
datafusion / vortex-file-compressed (1.053x ➖, 0↑ 1↓)
datafusion / vortex-compact (1.050x ➖, 0↑ 0↓)
datafusion / parquet (1.054x ➖, 0↑ 3↓)
datafusion / arrow (1.036x ➖, 0↑ 2↓)
duckdb / vortex-file-compressed (1.055x ➖, 0↑ 0↓)
duckdb / vortex-compact (1.048x ➖, 0↑ 1↓)
duckdb / parquet (1.036x ➖, 0↑ 3↓)
duckdb / duckdb (1.030x ➖, 0↑ 0↓)
File Size Changes (9 files changed, +0.2% overall, 5↑ 4↓)
Totals:
|
Benchmarks: TPC-DS SF=1 on NVMEVerdict: No clear signal (low confidence) How to read Verdict and Engines
datafusion / vortex-file-compressed (0.975x ➖, 2↑ 0↓)
datafusion / vortex-compact (0.960x ➖, 1↑ 0↓)
datafusion / parquet (0.982x ➖, 5↑ 0↓)
duckdb / vortex-file-compressed (0.996x ➖, 1↑ 1↓)
duckdb / vortex-compact (1.003x ➖, 1↑ 5↓)
duckdb / parquet (0.994x ➖, 0↑ 1↓)
duckdb / duckdb (0.979x ➖, 4↑ 1↓)
File Size Changes (7 files changed, +0.0% overall, 2↑ 5↓)
Totals:
|
Benchmarks: FineWeb S3Verdict: No clear signal (environment too noisy confidence) How to read Verdict and Engines
datafusion / vortex-file-compressed (1.025x ➖, 0↑ 0↓)
datafusion / vortex-compact (0.926x ➖, 1↑ 1↓)
datafusion / parquet (1.167x ➖, 0↑ 5↓)
duckdb / vortex-file-compressed (1.049x ➖, 0↑ 1↓)
duckdb / vortex-compact (0.973x ➖, 1↑ 0↓)
duckdb / parquet (1.018x ➖, 0↑ 0↓)
|
Benchmarks: Statistical and Population GeneticsVerdict: No clear signal (low confidence) How to read Verdict and Engines
duckdb / vortex-file-compressed (0.994x ➖, 0↑ 0↓)
duckdb / vortex-compact (0.986x ➖, 0↑ 0↓)
duckdb / parquet (0.997x ➖, 0↑ 0↓)
File Size Changes (1 files changed, +0.0% overall, 1↑ 0↓)
Totals:
|
Benchmarks: Clickbench Sorted on NVMEVerdict: No clear signal (low confidence) How to read Verdict and Engines
datafusion / vortex-file-compressed (0.999x ➖, 2↑ 2↓)
datafusion / parquet (1.012x ➖, 0↑ 0↓)
duckdb / vortex-file-compressed (1.030x ➖, 0↑ 1↓)
duckdb / parquet (1.008x ➖, 0↑ 0↓)
duckdb / duckdb (0.991x ➖, 0↑ 0↓)
File Size Changes (201 files changed, -0.0% overall, 72↑ 129↓)
Totals:
|
Benchmarks: TPC-H SF=10 on NVMEVerdict: No clear signal (low confidence) How to read Verdict and Engines
datafusion / vortex-file-compressed (0.932x ➖, 4↑ 0↓)
datafusion / vortex-compact (0.944x ➖, 1↑ 0↓)
datafusion / parquet (0.987x ➖, 0↑ 0↓)
datafusion / arrow (1.005x ➖, 0↑ 0↓)
duckdb / vortex-file-compressed (1.005x ➖, 0↑ 0↓)
duckdb / vortex-compact (1.000x ➖, 0↑ 0↓)
duckdb / parquet (1.002x ➖, 0↑ 0↓)
duckdb / duckdb (0.993x ➖, 0↑ 0↓)
File Size Changes (27 files changed, +0.0% overall, 16↑ 11↓)
Totals:
|
Benchmarks: Random AccessVortex (geomean): 1.071x ➖ How to read Verdict and Engines
unknown / unknown (1.043x ➖, 0↑ 8↓)
|
Benchmarks: Clickbench on NVMEVerdict: No clear signal (low confidence) How to read Verdict and Engines
datafusion / vortex-file-compressed (1.018x ➖, 0↑ 3↓)
datafusion / parquet (1.012x ➖, 0↑ 1↓)
duckdb / vortex-file-compressed (1.039x ➖, 0↑ 4↓)
duckdb / parquet (1.025x ➖, 0↑ 0↓)
duckdb / duckdb (1.039x ➖, 0↑ 1↓)
File Size Changes (101 files changed, -0.1% overall, 7↑ 94↓)
Totals:
|
Benchmarks: TPC-H SF=1 on S3Verdict: No clear signal (environment too noisy confidence) How to read Verdict and Engines
datafusion / vortex-file-compressed (1.015x ➖, 0↑ 0↓)
datafusion / vortex-compact (1.039x ➖, 1↑ 4↓)
datafusion / parquet (1.102x ➖, 1↑ 7↓)
duckdb / vortex-file-compressed (1.010x ➖, 0↑ 0↓)
duckdb / vortex-compact (1.077x ➖, 0↑ 2↓)
duckdb / parquet (1.031x ➖, 0↑ 0↓)
|
Benchmarks: Appian on NVMEVerdict: No clear signal (low confidence) How to read Verdict and Engines
datafusion / vortex-file-compressed (1.045x ➖, 0↑ 1↓)
datafusion / parquet (1.014x ➖, 0↑ 0↓)
duckdb / vortex-file-compressed (0.991x ➖, 0↑ 0↓)
duckdb / parquet (1.009x ➖, 0↑ 0↓)
duckdb / duckdb (1.007x ➖, 0↑ 0↓)
File Size Changes (4 files changed, -0.0% overall, 1↑ 3↓)
Totals:
|
Benchmarks: TPC-H SF=10 on S3Verdict: No clear signal (environment too noisy confidence) How to read Verdict and Engines
datafusion / vortex-file-compressed (1.005x ➖, 0↑ 0↓)
datafusion / vortex-compact (0.867x ➖, 1↑ 0↓)
datafusion / parquet (0.967x ➖, 1↑ 0↓)
duckdb / vortex-file-compressed (0.969x ➖, 0↑ 0↓)
duckdb / vortex-compact (1.028x ➖, 0↑ 0↓)
duckdb / parquet (0.932x ➖, 0↑ 0↓)
|
Benchmarks: CompressionVortex (geomean): 0.999x ➖ How to read Verdict and Engines
unknown / unknown (0.986x ➖, 1↑ 0↓)
|
Requested by Connor Tsui · Slack thread
Pins OnPair's dictionary-training seed to
42so compression is deterministic run-to-run.OnPair's default config left
seed: None, which seeds the dictionary trainer's RNG from OS entropy — so the trained dictionary, and therefore compressed file sizes, varied between runs. That noise showed up in the file-size benchmark comments (e.g. #8753). This setsDEFAULT_DICT12_CONFIG(the only OnPairConfigin the repo) toseed: Some(42), making the production path, benches, and tests reproducible. Publishedonpair0.0.4 already exposes theseedfield, so no upstream release or version bump is needed.