import%20marimo%0A%0A__generated_with%20%3D%20%220.25.0%22%0Aapp%20%3D%20marimo.App()%0A%0A%0A%40app.cell%0Adef%20_()%3A%0A%20%20%20%20import%20marimo%20as%20mo%0A%0A%20%20%20%20return%20(mo%2C)%0A%0A%0A%40app.cell(hide_code%3DTrue)%0Adef%20_(mo)%3A%0A%20%20%20%20METADATA%20%3D%20%7B%0A%20%20%20%20%20%20%20%20%22id%22%3A%20%22chronos%22%2C%0A%20%20%20%20%20%20%20%20%22name%22%3A%20%22Chronos%20Forecasting%22%2C%0A%20%20%20%20%20%20%20%20%22types%22%3A%20%5B%22trained_model%22%5D%2C%0A%20%20%20%20%20%20%20%20%22families%22%3A%20%5B%22probabilistic%22%2C%20%22sequential%22%2C%20%22attention%22%2C%20%22generative%22%5D%2C%0A%20%20%20%20%20%20%20%20%22tasks%22%3A%20%5B%22forecasting%22%5D%2C%0A%20%20%20%20%20%20%20%20%22data%22%3A%20%5B%22time_series%22%2C%20%22sequences%22%5D%2C%0A%20%20%20%20%20%20%20%20%22learning%22%3A%20%5B%22self_supervised%22%5D%2C%0A%20%20%20%20%20%20%20%20%22capacity%22%3A%20%22parametric%22%2C%0A%20%20%20%20%20%20%20%20%22mechanisms%22%3A%20%5B%22pretraining%22%2C%20%22quantization%22%2C%20%22embeddings%22%2C%20%22attention%22%5D%2C%0A%20%20%20%20%20%20%20%20%22properties%22%3A%20%5B%22probabilistic_output%22%2C%20%22pretrained_ecosystem%22%2C%20%22zero_shot%22%2C%20%22generative%22%5D%2C%0A%20%20%20%20%20%20%20%20%22constraints%22%3A%20%5B%22high_compute%22%2C%20%22high_memory%22%2C%20%22requires_scaling%22%2C%20%22slow_inference%22%5D%2C%0A%20%20%20%20%20%20%20%20%22difficulty%22%3A%20%22advanced%22%2C%0A%20%20%20%20%20%20%20%20%22status%22%3A%20%22documented%22%2C%0A%20%20%20%20%20%20%20%20%22explainability%22%3A%20%22low%22%2C%0A%20%20%20%20%20%20%20%20%22training_cost%22%3A%20%22high%22%2C%0A%20%20%20%20%20%20%20%20%22inference_cost%22%3A%20%22high%22%2C%0A%20%20%20%20%20%20%20%20%22data_appetite%22%3A%20%22high%22%2C%0A%20%20%20%20%7D%0A%0A%20%20%20%20mo.md(f%22%23%20%7BMETADATA%5B'name'%5D%7D%22)%0A%20%20%20%20return%0A%0A%0A%40app.cell(hide_code%3DTrue)%0Adef%20_(mo)%3A%0A%20%20%20%20mo.md(r%22%22%22%0A%20%20%20%20%23%23%20In%20one%20sentence%0A%0A%20%20%20%20Chronos%20is%20a%20family%20of%20pretrained%20time-series%20models%20that%20transfers%20patterns%20learned%20across%20many%20datasets%20into%20probabilistic%20forecasts%20for%20new%20series.%0A%0A%20%20%20%20%23%23%20Mental%20model%0A%0A%20%20%20%20Chronos%20asks%20whether%20a%20time%20series%20can%20be%20handled%20like%20a%20sequence%20in%20a%20language%20model.%20The%20original%20model%20scales%20and%20quantizes%20numerical%20values%20into%20tokens%2C%20trains%20a%20sequence%20model%20with%20cross-entropy%2C%20then%20samples%20future%20token%20paths%20and%20maps%20them%20back%20to%20values.%0A%0A%20%20%20%20The%20name%20now%20covers%20several%20related%20designs%3A%0A%0A%20%20%20%20-%20**Original%20Chronos%3A**%20tokenized%20values%20and%20sampled%20future%20trajectories.%0A%20%20%20%20-%20**Chronos-Bolt%3A**%20patches%20the%20context%20and%20directly%20predicts%20multiple%20quantiles%20across%20the%20horizon.%0A%20%20%20%20-%20**Chronos-2%3A**%20extends%20zero-shot%20forecasting%20to%20univariate%2C%20multivariate%2C%20and%20covariate-informed%20tasks.%0A%0A%20%20%20%20The%20shared%20bet%20is%20pretraining%3A%20patterns%20learned%20from%20many%20series%20can%20become%20a%20useful%20prior%20for%20a%20series%20the%20model%20has%20not%20seen%20before.%0A%20%20%20%20%22%22%22)%0A%20%20%20%20return%0A%0A%0A%40app.cell(hide_code%3DTrue)%0Adef%20_(mo)%3A%0A%20%20%20%20mo.md(r%22%22%22%0A%20%20%20%20%23%23%20Input%20and%20output%0A%0A%20%20%20%20-%20**Input%3A**%20one%20or%20more%20historical%20time%20series%3B%20newer%20Chronos%20variants%20may%20also%20accept%20related%20series%20and%20covariates.%0A%20%20%20%20-%20**Output%3A**%20samples%2C%20quantiles%2C%20or%20point%20summaries%20over%20a%20requested%20future%20horizon.%0A%20%20%20%20-%20**Learns%3A**%20a%20reusable%20representation%20and%20forecasting%20distribution%20during%20large-scale%20pretraining.%0A%0A%20%20%20%20%23%23%20Original%20Chronos%20transformation%0A%0A%20%20%20%20Given%20a%20context%20%24x_%7B1%3AC%7D%24%2C%20the%20original%20pipeline%20first%20scales%20it.%20A%20scalar%20quantizer%20maps%20each%20normalized%20value%20into%20one%20of%20%24B%24%20bins%3A%0A%0A%20%20%20%20%24%24q_t%3D%5Coperatorname%7Bbucket%7D(x_t%2Fs)%2C%20%5Cqquad%20q_t%5Cin%5C%7B1%2C%5Cldots%2CB%5C%7D.%24%24%0A%0A%20%20%20%20A%20language-model%20architecture%20estimates%20the%20next-token%20distribution.%20Sampling%20repeatedly%20produces%20possible%20futures%20rather%20than%20one%20deterministic%20line.%0A%0A%20%20%20%20%23%23%20When%20to%20use%20it%0A%0A%20%20%20%20-%20You%20need%20a%20strong%20zero-shot%20candidate%20quickly.%0A%20%20%20%20-%20You%20have%20many%20heterogeneous%20series%20but%20limited%20training%20time%20per%20series.%0A%20%20%20%20-%20Probabilistic%20forecasts%20are%20useful%20for%20planning.%0A%20%20%20%20-%20You%20want%20one%20pretrained%20interface%20across%20several%20forecasting%20tasks.%0A%0A%20%20%20%20%23%23%20When%20to%20avoid%20it%0A%0A%20%20%20%20-%20A%20seasonal%20baseline%20already%20meets%20the%20operational%20need.%0A%20%20%20%20-%20The%20domain%20is%20far%20from%20the%20pretraining%20distribution.%0A%20%20%20%20-%20Tight%20latency%2C%20memory%2C%20or%20offline%20constraints%20dominate.%0A%20%20%20%20-%20You%20need%20transparent%20causal%20explanations%20rather%20than%20predictive%20transfer.%0A%20%20%20%20%22%22%22)%0A%20%20%20%20return%0A%0A%0A%40app.cell(hide_code%3DTrue)%0Adef%20_(mo)%3A%0A%20%20%20%20mo.md(r%22%22%22%0A%20%20%20%20---%0A%0A%20%20%20%20%23%23%20Notebook%20%E2%80%94%20from%20values%20to%20tokens%0A%0A%20%20%20%20The%20following%20experiment%20illustrates%20the%20original%20Chronos%20representation.%20It%20is%20deliberately%20small%20and%20does%20not%20download%20model%20weights.%0A%20%20%20%20%22%22%22)%0A%20%20%20%20return%0A%0A%0A%40app.cell%0Adef%20_()%3A%0A%20%20%20%20import%20numpy%20as%20np%0A%20%20%20%20import%20matplotlib.pyplot%20as%20plt%0A%0A%20%20%20%20rng%20%3D%20np.random.default_rng(12)%0A%20%20%20%20t%20%3D%20np.arange(160)%0A%20%20%20%20series%20%3D%200.015%20*%20t%20%2B%20np.sin(2%20*%20np.pi%20*%20t%20%2F%2024)%20%2B%20rng.normal(0%2C%200.18%2C%20len(t))%0A%20%20%20%20context%20%3D%20series%5B%3A128%5D%0A%20%20%20%20future%20%3D%20series%5B128%3A%5D%0A%20%20%20%20return%20context%2C%20future%2C%20np%2C%20plt%2C%20t%0A%0A%0A%40app.cell%0Adef%20_(context%2C%20np%2C%20plt)%3A%0A%20%20%20%20scale%20%3D%20np.mean(np.abs(context))%20%2B%201e-8%0A%20%20%20%20normalized%20%3D%20context%20%2F%20scale%0A%20%20%20%20bin_edges%20%3D%20np.linspace(-2.5%2C%202.5%2C%2033)%0A%20%20%20%20tokens%20%3D%20np.clip(np.digitize(normalized%2C%20bin_edges)%20-%201%2C%200%2C%20len(bin_edges)%20-%202)%0A%20%20%20%20bin_centers%20%3D%20(bin_edges%5B%3A-1%5D%20%2B%20bin_edges%5B1%3A%5D)%20%2F%202%0A%20%20%20%20reconstructed%20%3D%20bin_centers%5Btokens%5D%20*%20scale%0A%0A%20%20%20%20fig_tokens%2C%20axes%20%3D%20plt.subplots(2%2C%201%2C%20figsize%3D(11%2C%206)%2C%20sharex%3DTrue)%0A%20%20%20%20axes%5B0%5D.plot(context%2C%20color%3D%22%2317201c%22%2C%20label%3D%22context%22)%0A%20%20%20%20axes%5B0%5D.step(np.arange(len(context))%2C%20reconstructed%2C%20color%3D%22%237f62b3%22%2C%20label%3D%22token%20reconstruction%22)%0A%20%20%20%20axes%5B0%5D.legend(frameon%3DFalse)%0A%20%20%20%20axes%5B0%5D.set_ylabel(%22value%22)%0A%20%20%20%20axes%5B1%5D.plot(tokens%2C%20color%3D%22%23d17700%22)%0A%20%20%20%20axes%5B1%5D.set(xlabel%3D%22time%22%2C%20ylabel%3D%22token%20id%22%2C%20title%3D%22Scaled%20values%20become%20a%20discrete%20sequence%22)%0A%20%20%20%20fig_tokens.tight_layout()%0A%20%20%20%20return%0A%0A%0A%40app.cell(hide_code%3DTrue)%0Adef%20_(mo)%3A%0A%20%20%20%20mo.md(r%22%22%22%0A%20%20%20%20Quantization%20loses%20some%20numerical%20precision%2C%20but%20it%20converts%20different%20scales%20into%20a%20shared%20symbolic%20task.%20The%20pretrained%20model%20learns%20which%20token%20continuations%20are%20plausible%20across%20its%20training%20corpus.%0A%0A%20%20%20%20The%20next%20plot%20illustrates%20why%20a%20probabilistic%20output%20matters.%20These%20paths%20come%20from%20a%20transparent%20residual-bootstrap%20baseline%E2%80%94not%20Chronos%20weights%E2%80%94but%20they%20have%20the%20same%20interpretation%3A%20each%20path%20is%20one%20plausible%20future%2C%20and%20their%20spread%20expresses%20uncertainty.%0A%20%20%20%20%22%22%22)%0A%20%20%20%20return%0A%0A%0A%40app.cell%0Adef%20_(context%2C%20future%2C%20np%2C%20plt%2C%20t)%3A%0A%20%20%20%20horizon%20%3D%20len(future)%0A%20%20%20%20seasonal_lag%20%3D%2024%0A%20%20%20%20base%20%3D%20np.resize(context%5B-seasonal_lag%3A%5D%2C%20horizon)%0A%20%20%20%20residuals%20%3D%20context%5Bseasonal_lag%3A%5D%20-%20context%5B%3A-seasonal_lag%5D%0A%20%20%20%20rng_paths%20%3D%20np.random.default_rng(21)%0A%20%20%20%20paths%20%3D%20base%20%2B%20rng_paths.choice(residuals%2C%20size%3D(200%2C%20horizon)%2C%20replace%3DTrue)%0A%20%20%20%20lower%2C%20median%2C%20upper%20%3D%20np.quantile(paths%2C%20%5B0.1%2C%200.5%2C%200.9%5D%2C%20axis%3D0)%0A%20%20%20%20future_t%20%3D%20t%5Blen(context)%3A%5D%0A%0A%20%20%20%20fig_paths%2C%20axis%20%3D%20plt.subplots(figsize%3D(11%2C%204.5))%0A%20%20%20%20axis.plot(t%5B%3A%20len(context)%5D%2C%20context%2C%20color%3D%22%2317201c%22%2C%20label%3D%22history%22)%0A%20%20%20%20axis.plot(future_t%2C%20future%2C%20color%3D%22%234f8a65%22%2C%20label%3D%22observed%20future%22)%0A%20%20%20%20axis.plot(future_t%2C%20median%2C%20color%3D%22%237f62b3%22%2C%20label%3D%22median%20forecast%22)%0A%20%20%20%20axis.fill_between(future_t%2C%20lower%2C%20upper%2C%20color%3D%22%23b9a7d6%22%2C%20alpha%3D0.45%2C%20label%3D%2210%E2%80%9390%25%20interval%22)%0A%20%20%20%20axis.axvline(len(context)%20-%201%2C%20color%3D%22%2366706a%22%2C%20linestyle%3D%22--%22)%0A%20%20%20%20axis.set(xlabel%3D%22time%22%2C%20ylabel%3D%22value%22%2C%20title%3D%22A%20forecast%20distribution%20contains%20many%20possible%20futures%22)%0A%20%20%20%20axis.legend(frameon%3DFalse%2C%20ncol%3D2)%0A%20%20%20%20fig_paths.tight_layout()%0A%20%20%20%20return%0A%0A%0A%40app.cell(hide_code%3DTrue)%0Adef%20_(mo)%3A%0A%20%20%20%20mo.md(r%22%22%22%0A%20%20%20%20%23%23%20Minimal%20current%20API%20shape%0A%0A%20%20%20%20The%20official%20package%20exposes%20pretrained%20pipelines.%20For%20the%20current%20Chronos-2%20family%2C%20the%20workflow%20is%20conceptually%3A%0A%0A%20%20%20%20%60%60%60python%0A%20%20%20%20from%20chronos%20import%20Chronos2Pipeline%0A%0A%20%20%20%20pipeline%20%3D%20Chronos2Pipeline.from_pretrained(%0A%20%20%20%20%20%20%20%20%22amazon%2Fchronos-2%22%2C%0A%20%20%20%20%20%20%20%20device_map%3D%22cuda%22%2C%0A%20%20%20%20)%0A%20%20%20%20forecast%20%3D%20pipeline.predict_df(%0A%20%20%20%20%20%20%20%20context_df%2C%0A%20%20%20%20%20%20%20%20prediction_length%3D24%2C%0A%20%20%20%20%20%20%20%20quantile_levels%3D%5B0.1%2C%200.5%2C%200.9%5D%2C%0A%20%20%20%20)%0A%20%20%20%20%60%60%60%0A%0A%20%20%20%20Pin%20the%20package%20and%20model%20revision%20in%20a%20reproducible%20experiment%3B%20the%20Chronos%20family%20evolves%20faster%20than%20a%20traditional%20fixed%20architecture.%0A%0A%20%20%20%20---%0A%0A%20%20%20%20%23%23%20Evaluation%20and%20diagnosis%0A%0A%20%20%20%20Compare%20zero-shot%20Chronos%20against%20seasonal-naive%2C%20linear%2C%20tree%2C%20and%20trained%20neural%20baselines%20on%20identical%20rolling%20windows.%20Use%20MASE%20or%20another%20scale-aware%20error%20across%20series%2C%20and%20weighted%20quantile%20loss%20or%20interval%20coverage%20for%20probabilistic%20output.%0A%0A%20%20%20%20Track%20latency%20and%20memory%20alongside%20accuracy.%20A%20foundation%20model%20may%20save%20training%20work%20while%20increasing%20inference%20cost.%20Test%20subgroups%20and%20unusual%20regimes%20separately%20because%20pretraining%20does%20not%20eliminate%20domain%20shift.%0A%0A%20%20%20%20%23%23%20Related%20models%0A%0A%20%20%20%20-%20**ModernTCN%3A**%20a%20domain-trained%20pure%20convolutional%20architecture.%0A%20%20%20%20-%20**Temporal%20Convolutional%20Network%3A**%20a%20simpler%20architecture%20for%20causal%20receptive%20fields.%0A%0A%20%20%20%20%23%23%20Primary%20sources%0A%0A%20%20%20%20-%20%5BChronos%20paper%5D(https%3A%2F%2Farxiv.org%2Fabs%2F2403.07815)%0A%20%20%20%20-%20%5BOfficial%20Chronos%20forecasting%20repository%5D(https%3A%2F%2Fgithub.com%2Famazon-science%2Fchronos-forecasting)%0A%0A%20%20%20%20%23%23%20Practical%20takeaway%0A%0A%20%20%20%20Use%20Chronos%20as%20a%20strong%20pretrained%20candidate%2C%20not%20as%20permission%20to%20skip%20baselines%2C%20chronological%20backtesting%2C%20or%20domain-shift%20checks.%0A%20%20%20%20%22%22%22)%0A%20%20%20%20return%0A%0A%0Aif%20__name__%20%3D%3D%20%22__main__%22%3A%0A%20%20%20%20app.run()%0A
e0e319f1d75ba936800fe981a2511f25