Repository navigation
Releases: databricks-industry-solutions/many-model-forecasting
Release list
v0.1.7
What's Changed
New Features & Enhancements
-
Hierarchical Reconciliation (#182): Make forecasts mathematically coherent across hierarchy levels (e.g. store → region → country → total). MMF runs the full forecasting pipeline once per hierarchy level in parallel; reconciliation post-processes the independent outputs into a single coherent forecast set.
- New API —
run_reconciliation_multilevel()inmmf_sa/reconciliation.py. Consumes onebest_modelstable and oneevaluation_outputtable per level, plus a user-provided membership (adjacency-list) table, and writes areconciliation_outputDelta table with columnsunique_id,ds,y_base,y_reconciled,hierarchy_level,reconciliation_method, andreconciliation_timestamp. - Reconciliation methods —
BottomUp,TopDown,MiddleOut,MinTrace(sub-methods:mint_shrink,mint_cov,wls_var,wls_struct), andERM. Sparse reconcilers and sparse S-matrix construction are used for large hierarchies; Polars + Arrow power the in-memory reconciliation layer. - New optional dependency — install with
pip install "mmf_sa[hierarchical] @ …"to pull inhierarchicalforecast==1.5.1,polars>=0.20.0, andscipy>=1.10.0. - MMF Agent Skill 6 — new slash command
/hierarchical-reconciliation(6-hierarchical-reconciliation.md) with a reproducibility notebook template (mmf_reconciliation_notebook_template.ipynb). - Synthetic hierarchical data —
synthetic_data_generation_hierarchical.ipynbfor testing the multi-level workflow end-to-end. - Documentation — expanded README and
mmf_sa/README.mdwith workflow diagrams, method comparison table, and install/usage examples. - Tests — 440+ unit tests in
tests/unit/test_reconciliation.py.
- New API —
-
FreshRetailNet Serverless MMF example (#193): End-to-end example running MMF on the public FreshRetailNet dataset using Databricks Serverless GPU, with optional Genie natural-language consumption.
examples/fresh_retail_net/01_fresh_retail_net_data_prep.ipynb— data prep on standard Serverless.examples/fresh_retail_net/02_fresh_retail_net_mmf_forecast.ipynb— MMF foundation models on A10 Serverless GPU (all MMF models enabled by default).examples/fresh_retail_net/03_build_product_location_dims.ipynb— illustrative product/location dimension tables for NL queries.examples/fresh_retail_net/04_genie_views_setup.ipynb— flattens MMF array columns into Genie-friendly views.
Bug Fixes & Improvements
- Fix Skill 5 best-model selection across multi-job
run_ids (#194): MMF launches one job per model class (local, global ML, global DL, foundation), each writing its ownrun_id. Skill 5 previously pinned selection to a single global latestrun_id, silently excluding all models except the last job to finish (the classic "foundation won 100%" artifact). Selection now picks the latestrun_idper model so all models compete head-to-head. Tie-breaking switched fromRANK()toROW_NUMBER()for exactly one winner per series; on metric ties, cheaper compute tiers win (local → global ML → global DL → foundation). Updated Skill 4 to remove the incorrect "shared run_id" instruction. Applied to Skill 5 Steps 3/3a and the post-process reproducibility notebook template.
Dependency Updates
- Bumped
pyspark3.3.2 → 3.4.4 in test dependencies (#187). - Bumped
langsmith0.8.0 → 0.8.18 inskills/.test(#192).
Upgrade Notes
- Hierarchical reconciliation is opt-in. Install the new extra and run
run_reconciliation_multilevel(or Skill 6) only when your use case has a meaningful hierarchy:pip install "mmf_sa[hierarchical] @ git+https://github.com/databricks-industry-solutions/many-model-forecasting.git@v0.1.7" - Multi-level workflow: run Skills 1–5 once per hierarchy level (in parallel), then Skill 6 to reconcile. Each level needs its own
best_modelsandevaluation_outputtables plus a membership adjacency table. - Skill 5 users on v0.1.6: if you ran multiple model-class jobs and saw one model dominate 100% of series in
best_models, re-run Skill 5 after upgrading — the per-modelrun_idfix restores fair cross-model competition. - No breaking changes to
run_forecast. Existing local, global, and foundation workflows are unchanged.
Full Changelog: v0.1.6...v0.1.7
v0.1.6
What's Changed
New Features & Enhancements
- MLForecast (LightGBM) global models (#177): Added a new global modeling framework built on Nixtla MLForecast with gradient-boosted trees (LightGBM). Two new models are now selectable via
active_models:MLForecastLGBM— a LightGBM regressor with fixed hyperparameters, lag/rolling/date features, and support for static and dynamic external regressors.MLForecastAutoLGBM— an automatically tuned variant usingAutoMLForecast+ Optuna hyperparameter search.- New pipeline
mmf_sa/models/mlforecast/MLForecastPipeline.pyintegrates training, backtesting, evaluation, and scoring through the standard MMFrun_forecastinterface, including MLflow logging consistent with the other global models. - Model definitions added to
mmf_sa/models/models_conf.yaml, with framework-level defaults wired into the daily/weekly/monthly/hourlyforecasting_conf_*.yamlfiles.
- New runnable MLForecast example notebooks (#177): Added end-to-end
*_mlexamples across all frequencies and execution modes:examples/daily/global_daily_ml.ipynb,examples/weekly/global_weekly_ml.ipynb,examples/monthly/global_monthly_ml.ipynb,examples/hourly/global_hourly_ml.ipynb- External-regressor examples:
examples/daily/global_external_regressors_daily_ml.ipynb - Serverless example:
examples/serverless/global_serverless_ml.ipynb - M5 scale example:
examples/m5/global_daily_ml_m5.py
- Consistent example naming (#177): Existing deep-learning global examples were renamed with a
_dlsuffix (e.g.global_daily.ipynb→global_daily_dl.ipynb) to clearly distinguish them from the new MLForecast_mlexamples. Update any hard-coded notebook paths accordingly. - MMF Agent skill support for MLForecast (#177): Added
mmf_global_ml_notebook_template.ipynband updated the skill docs (SKILL.md, provisioning and execution guides) so the MMF Agent can run LightGBM-based global models. - README & models docs updates (#177): Documented MLForecast in the "What's New" section, expanded
mmf_sa/models/README.md, and added the new dependency group.
Bug Fixes & Improvements
- Fix serverless foundation-model timestamp issue (#179): Resolved a timestamp handling bug affecting foundation models running on serverless GPU compute.
Dependency Updates
- Added MLForecast stack to the
globalextra:mlforecast==1.0.31,lightgbm==4.6.0,optuna==3.6.1(#177). - Bumped
pyspark3.3.0 → 3.3.2 (#178). - Bumped
mlflowfloor to>=3.12.0inskills/.test(#180). - Bumped
python-dotenvto>=1.2.2inskills/.testto address a symlink vulnerability (#181). skills/.testsecurity bumps:cryptography46.0.7 → 48.0.1 (#191),starlette1.0.1 → 1.3.1 (#190) and 0.50.0 → 1.0.1 (#184),aiohttp3.14.0 → 3.14.1 (#189) and 3.13.5 → 3.14.0 (#183),pyarrow22.0.0 → 23.0.1 (#185).
Upgrade Notes
- No breaking API changes to
run_forecast. MLForecast models are opt-in viaactive_models(MLForecastLGBM,MLForecastAutoLGBM). - Install the updated
globalextra to pull in MLForecast, LightGBM, and Optuna:pip install "mmf_sa[global] @ git+https://github.com/databricks-industry-solutions/many-model-forecasting.git@v0.1.6" - Use Databricks Runtime 18.0 for ML or later for global (including MLForecast) and foundation models.
- Example notebooks for deep-learning global models were renamed with a
_dlsuffix; update any saved references.
Full Changelog: v0.1.5...v0.1.6
v0.1.5
What's Changed
New Features & Enhancements
- Foundation Model support on Serverless GPU compute (#175): Added a new
serverless=Trueflag torun_forecastthat routes Chronos and TimesFM inference through a driver-only single-GPU predict path instead of Spark Pandas UDFs. This is required on Databricks serverless GPU compute, where Spark Connect Python workers are CPU-only. Local and global models are unaffected — they already run driver-side. Moirai is not supported on serverless because it has no driver-only single-GPU predict path; an explicitModelErroris raised in that case.- New
Forecaster.backtest_global_modelparameterserverless_predictdispatchesmodel.backtestwithspark=Noneso the model's driver-only predict path is used. ChronosForecaster.predictnow branches between_predict_distributed(existing Pandas UDF path) and_predict_single(new driver-only batchedChronosPipeline.predict).- Timestamp arrays produced by the driver-only path are coerced from
datetime64[ns]todatetime64[us]beforecreateDataFrameto satisfy Spark Connect Arrow's microsecond-precision requirement. - Trade-off: the serverless path runs sequentially on a single GPU; there is no multi-GPU data parallelism across Spark workers.
- New
- New runnable serverless example (#175): Added
examples/serverless/foundation_serverless.ipynbdemonstrating end-to-end foundation-model forecasting on serverless GPU. - README updates (#175): Documented the
serverlessflag for foundation models and the new example notebook in the "What's New" and "Foundation models" sections.
Dependency Updates
- Bumped
idna3.11 -> 3.15 in/skills/.test(#176) - Bumped
langsmith0.7.31 -> 0.8.0 in/skills/.test(#174) - Bumped
urllib32.6.3 -> 2.7.0 in/skills/.test(#173) - Bumped
langchain-core1.2.31 -> 1.3.3 in/skills/.test(#172) - Bumped
gitpython3.1.47 -> 3.1.50 in/skills/.test(#171) - Bumped
mako1.3.11 -> 1.3.12 in/skills/.test(#170)
Upgrade Notes
- No breaking changes.
serverlessdefaults toFalse; existing classic-cluster workflows are unchanged. - To run foundation models on serverless GPU compute, pass
serverless=Truetorun_forecastand use a Chronos or TimesFM model. Moirai still requires a classic GPU cluster.
Full Changelog: v0.1.4...v0.1.5
v0.1.4
What's Changed
New Features & Enhancements
- Demo video walkthroughs in skills README (#168): Restructured the skills README demo section and wired in Genie Code demo recordings.
- Skills improvements for generic agent compatibility (#162, #160): Made MMF skills more robust for generic agents (Claude Code + Genie Code).
- Synthetic data generation updated to Spark (#166): Scales synthetic data generation for large workloads.
- New synthetic data notebook (#155): Added a standalone synthetic data generation notebook.
- Skills updates for external regressors (#151): Improved external-regressor guidance and robustness in MMF skills.
- Expanded MMF documentation: Forecast problem brief carried across skills, STOP gates for parameter confirmation, covariate handling guidance, clearer user validation and notebook import steps.
- Example notebook updates (#167): Added explanation of partitioning.
- README updates (#164).
Bug Fixes & Improvements
- Fix O(n^2)
calculate_metricsin foundation model pipelines (#159): Significant speedup for metric calculation. - Minor fix on data quality checks.
- Pinned TimesFM commit version for reproducibility.
Dependency Updates
- Bumped
gitpython3.1.46 -> 3.1.47 (#163) - Bumped
litellm1.83.0 -> 1.83.7 (#161) and 1.81.7 -> 1.83.0 (#147) - Bumped
langchain-openai1.1.7 -> 1.1.14 (#158) - Bumped
mako1.3.10 -> 1.3.11 (#157) - Bumped
langsmith0.6.8 -> 0.7.31 (#156) - Bumped
pytest9.0.2 -> 9.0.3 (#154) - Bumped
pillow12.1.1 -> 12.2.0 (#153) - Bumped
langchain-core1.2.22 -> 1.2.28 (#150) - Bumped
cryptography46.0.6 -> 46.0.7 (#149) - Bumped
aiohttp3.13.3 -> 3.13.4 (#146)
Full Changelog: v0.1.3...v0.1.4
v0.1.3
What's Changed
New Features
- MMF Agent Skill Kit (PR #138, #137, #129): Added a comprehensive AI-assisted skills framework for Many-Model Forecasting. Includes step-by-step skill documents for data prep, series profiling, resource provisioning, forecast execution, and post-processing — enabling LLM agents (e.g., Claude Code, Cursor) to guide users through the full MMF workflow.
- MMF Skills Demo (PR #136): Added an SVG animation demo and getting started section to the skills README, making it easier for new users to see the agent-assisted workflow in action.
- Skills Test Infrastructure (PR #129): Introduced CI test infrastructure for validating MMF skill documents and notebook templates.
Bug Fixes & Improvements
- Disabled autologging for NeuralForecast models (PR #128): Prevents MLflow autologging conflicts during NeuralForecast training.
- Disabled TensorBoard logging (PR #128): Removes unnecessary TensorBoard overhead from the forecasting pipeline.
- Fixed missing TimesFM xreg extra for covariate forecasting (PR #128): Ensures covariate support works correctly with TimesFM models.
- Added detailed backtesting documentation (PR #127): Expanded the documentation on how backtesting works in the MMF framework.
Dependency Updates
- Bumped
pyasn10.6.2 → 0.6.3 (PR #135) - Bumped
flask3.1.2 → 3.1.3 (PR #134) - Bumped
pillow12.1.0 → 12.1.1 (PR #133) - Bumped
langchain-core1.2.8 → 1.2.11 (PR #132) - Bumped
cryptography46.0.4 → 46.0.5 (PR #131) - Bumped
werkzeug3.1.5 → 3.1.6 (PR #130)
Full Changelog: v0.1.2...v0.1.3
v0.1.2
What's Changed
New Features
- Frontend Dash app for forecast exploration (PR #125): Added a Databricks Dash application that provides an interactive UI for exploring forecast results, including catalog/schema/table browsing, time series visualization, and metric comparison.
Bug Fixes & Improvements (PR #126)
- Fixed miscellaneous bugs across the forecasting pipeline
- Improved error handling and model abstraction layer
- Minor fixes in Chronos, Moirai, NeuralForecast, and TimesFM pipelines
- Updated quick start guide and README documentation
Full Changelog: v0.1.1...v0.1.2
v0.1.1
Many Model Forecasting v0.1.1
Release Date: February 20, 2026
Full Changelog: v0.1.0...v0.1.1
Highlights
This patch release adds covariate support for Chronos-2 foundation models, fixes multi-GPU distributed inference for TimesFM, and pins the TimesFM dependency to a stable commit for reproducible builds.
New Features
- Chronos-2 covariate support — Chronos-2 models (
amazon/chronos-2,autogluon/chronos-2-small,autogluon/chronos-2-synth) now support past and future covariates via the native list-of-dicts input format. This brings Chronos-2 to feature parity with TimesFM 2.5 for covariate forecasting. (PR #123)
Bug Fixes
- TimesFM multi-GPU distributed inference — Fixed issues preventing TimesFM covariate forecasting from running correctly across multiple GPUs. (PRs #119, #120, #121)
Depend Changes
- Pinned TimesFM to a specific commit (
2dcc66f) — Thetimesfmdependency is now pinned to a known-good commit hash in bothpyproject.tomlandrequirements-foundation.txt, ensuring reproducible installations and avoiding breakage from upstream changes. (PR #122)
Documentation
- Updated README and models README to reflect Chronos-2 covariate support (✅ in the compatibility table).
- Updated example notebook for external regressors with Chronos-2 guidance.
Files Changed (13 files, +731 / −104)
| Area | Files |
|---|---|
| Models | ChronosPipeline.py, TimesFMPipeline.py |
| Dependencies | pyproject.toml, requirements-foundation.txt |
| Documentation | README.md, mmf_sa/models/README.md |
| Examples | foundation_external_regressors_daily.ipynb, global_serverless.ipynb |
| CI/CD | 4 GitHub Actions workflow files |
| Misc | RUNME.py |
Contributors
Thanks to all contributors for this release!
- @ryuta-yoshimatsu — Chronos-2 covariate support, TimesFM multi-GPU fixes, dependency pinning
- @lbruand-db — TimesFM dependency pinning (PR #121)
Upgrade
Update your clone or install:
git pull origin main
pip install -e ".[foundation]"
v0.1.0
v0.1.0 Release Notes
New Models
- Chronos-2: Added
Chronos2,Chronos2Small, andChronos2Synthmodels from chronos-forecasting v2.2.2. - TimesFM 2.5: Added
TimesFM_2_5_200musing the latest TimesFM API (from_pretrained+ForecastConfig).
Deprecated / Removed Models
- ChronosT5 models removed:
ChronosT5Tiny,ChronosT5Mini,ChronosT5Small,ChronosT5Base,ChronosT5Large. - TimesFM 1.0 & 2.0 removed:
TimesFM_1_0_200mandTimesFM_2_0_500m. - Moirai models temporarily disabled due to uni2ts requiring
torch<2.5, which is incompatible with the latest Databricks Runtimes.
Runtime Changes
- Foundation models now require Databricks Runtime 18.0 for ML or later (previously 15.4LTS for ML).
Dependency Updates
chronos-forecastingupgraded from1.4.1to2.2.2.timesfmnow installed from source (git+https://github.com/google-research/timesfm.git).- Removed
uni2ts(Moirai) from foundation requirements. - Removed
constraints.txt; addedutilsforecast==0.2.15. - Removed pinned
mlflowfromrequirements.txt(moved topyproject.toml). - Reorganized
pyproject.tomlwith optional dependency groups:[local],[global],[foundation].
Other Changes
- Removed
RUNME.py. - Updated all foundation example notebooks and YAML configs to reflect new model names.
- Streamlined
README.mdchangelog entries.
v0.0.0
Initial release of Many Model Forecasting.