MMPF 1.0 RC1
Two modes. Same number. Different route.
MMPF picks a factorization route before it knows how long that route will take, then has to justify the pick afterwards. Performance mode takes the lowest predicted cost. Assurance mode takes the lowest certifiable upper bound, and is usually slower on purpose.
Performance takes the route with the lowest machine-adjusted predicted cost.
Four real rows from results_v1/mode_comparison.csv. Across all 30 cases the two modes pick different routes 24 times, and the assurance bound held in 28 — the two that breached it are both shown here rather than left out.
Status
- Version
1.0.0rc1— a release candidate, not a stable 1.0- Licence
- Apache-2.0
- Python
3.11+- Modes
- performance, assurance, batch
- Ledgers
- 4, replaying under official MMLC Runtime 1.0.0
- Series
- the fourth 3M project, after MMR-Bench, MMLC and MLF
902 transactions across four MMLF ledgers PASS under the official MMLC Runtime, verified on and again in CI on Python 3.11, 3.12 and 3.13.
What it measures
Thirty cases, five routes, one machine profile. Every figure below is measured rather than modelled.
| Measure | Performance | Assurance |
|---|---|---|
| Total benchmark cost | 99.995 ms | 188.089 ms |
| Median regret | 1.000 | 1.435 |
| p90 regret | 1.288 | 3.854 |
| CVaR90 regret | 2.092 | 5.300 |
| Max regret | 4.210 | 6.745 |
Assurance costs roughly 1.9× more in total and carries higher regret at every quantile. That is not a defect being reported reluctantly — it is what buying a bound costs, and the bound is the product.
Assurance selected-cost coverage: 93.333%. In 2 of the 30 cases the measured cost exceeded the bound the mode had declared.
Batch mode
For a large candidate registry and a large batch, individual GCD is replaced by a shared remainder tree. The engine is chosen by calibration, and on this machine the calibration agreed with the measurement.
| Measure | Value |
|---|---|
| Batch size | 128 |
| Candidate bound | 10,000 |
| Calibrated engine | remainder_tree |
| Measured best engine | remainder_tree |
| Individual GCD | 1.666 ms |
| Remainder tree | 0.663 ms |
| Speed-up | 2.513× |
| Calibration matched measurement | yes |
Run it
python -m pip install -e .
mmpf calibrate --output machine/my_machine.jsonFactor a number under each mode, and verify the certificate that comes back.
mmpf factor 1000036000099 \
--mode performance \
--machine-profile machine/current_machine.json \
--output performance-cert.json
mmpf factor 1000036000099 \
--mode assurance \
--machine-profile machine/current_machine.json \
--output assurance-cert.json
mmpf verify performance-cert.jsonOn the sample integer both modes agree — 1000036000099 is 1000003 × 1000033, and both pick tree_1000_rho. Agreement is not the normal case: across the benchmark the two modes diverge 24 times in 30.
Where it sits in 3M
MMPF is the first of the set that has to make a decision rather than record one. The other three give it the vocabulary to justify the decision afterwards.