Summary
Upgrading from google-meridian==1.4.0 to google-meridian==1.6.0 with the official dependency stack from pyproject.toml (tfp-nightly==0.26.0.dev20260130) causes complete MCMC non-convergence and nonsensical goodness-of-fit metrics, while the same training data, config, and priors work on 1.4.0.
Environment
- Platform: linux aarch64 (Docker on Apple Silicon)
- Python: 3.11
google-meridian: 1.6.0
tensorflow: 2.20.0
tfp-nightly: 0.26.0.dev20260130 (as required by pyproject.toml)
numpy: 2.3.5 (< 2.4)
Working baseline (1.4.0):
google-meridian: 1.4.0
tensorflow: 2.20.0
tensorflow-probability: 0.25.0 (stable; declared in v1.4.0 pyproject.toml)
Reproduction
National/geo MMM, kpi_type=non_revenue, no revenue_per_kpi, ROI priors via PriorDistribution(roi_m=LogNormal(...)), holdout_id mask, MCMC: 8 chains / 2000 adapt / 1000 burnin / 2000 keep.
Install official 1.6.0 stack:
pip install 'numpy<2.4' 'google-meridian==1.6.0'
pip freeze | grep -iE 'meridian|tensorflow|tfp'
Train model, then:
from meridian.analysis import analyzer
from meridian.analysis.review import reviewer
analysis = analyzer.Analyzer(mmm)
print(analysis.predictive_accuracy(use_kpi=True).to_dataframe())
health = reviewer.ModelReviewer(mmm).run()
print(health.overall_status, health.health_score, health.summary_message)
Actual results (1.6.0 + official tfp-nightly)
Predictive accuracy (ALL geo model):
| metric |
geo_granularity |
evaluation_set |
value |
| R_Squared |
national |
All Data |
-68817.18 |
| MAPE |
national |
All Data |
62.83 |
| wMAPE |
national |
All Data |
64.02 |
Health check:
overall_status: FAIL
health_score: 0.0
max_r_hat for roi_m: 338660163584.00
- Message: "Failed: Model did not converge. Other checks were skipped."
Expected results (1.4.0 + tensorflow-probability 0.25.0)
Same data and config on 1.4.0:
| metric |
geo_granularity |
evaluation_set |
value |
| R_Squared |
national |
All Data |
0.908 |
| MAPE |
national |
All Data |
0.051 |
| wMAPE |
national |
All Data |
0.053 |
Notes
tfp-nightly is an explicit dependency in 1.5.3+ pyproject.toml, not an accidental resolver artifact.
- 1.5.3 also declares the same
tfp-nightly pin; we have not fully validated whether 1.5.3 official stack reproduces the issue.
- Replacing
tfp-nightly with tensorflow-probability==0.25.0 after installing 1.6.0 is a possible workaround but violates declared dependencies and may break if 1.6.0 calls 0.26-only APIs.
Summary
Upgrading from
google-meridian==1.4.0togoogle-meridian==1.6.0with the official dependency stack from pyproject.toml (tfp-nightly==0.26.0.dev20260130) causes complete MCMC non-convergence and nonsensical goodness-of-fit metrics, while the same training data, config, and priors work on 1.4.0.Environment
google-meridian: 1.6.0tensorflow: 2.20.0tfp-nightly: 0.26.0.dev20260130 (as required by pyproject.toml)numpy: 2.3.5 (< 2.4)Working baseline (1.4.0):
google-meridian: 1.4.0tensorflow: 2.20.0tensorflow-probability: 0.25.0 (stable; declared in v1.4.0 pyproject.toml)Reproduction
National/geo MMM,
kpi_type=non_revenue, norevenue_per_kpi, ROI priors viaPriorDistribution(roi_m=LogNormal(...)), holdout_id mask, MCMC: 8 chains / 2000 adapt / 1000 burnin / 2000 keep.Install official 1.6.0 stack:
Train model, then:
Actual results (1.6.0 + official tfp-nightly)
Predictive accuracy (ALL geo model):
Health check:
overall_status: FAILhealth_score: 0.0max_r_hatforroi_m: 338660163584.00Expected results (1.4.0 + tensorflow-probability 0.25.0)
Same data and config on 1.4.0:
Notes
tfp-nightlyis an explicit dependency in 1.5.3+ pyproject.toml, not an accidental resolver artifact.tfp-nightlypin; we have not fully validated whether 1.5.3 official stack reproduces the issue.tfp-nightlywithtensorflow-probability==0.25.0after installing 1.6.0 is a possible workaround but violates declared dependencies and may break if 1.6.0 calls 0.26-only APIs.