euler314 commited on
Commit
9cbb93f
·
verified ·
1 Parent(s): 806d8b8

Improve model card and publish dated expanded benchmark progress

Browse files
README.md CHANGED
@@ -9,6 +9,10 @@ tags:
9
 
10
  # Trackformer 1.2
11
 
 
 
 
 
12
  Trackformer 1.2 is a **research-only Western Pacific tropical-cyclone forecast model**. It evolves a sea-level-pressure (MSLP) field and a moving storm-centred pressure core every six hours through +120 h. A track and central-pressure estimate are extracted from the evolving core, not independently drawn on top of a pressure image. The prior [Trackformer 1.1 release](https://github.com/yu314-coder/typhoon-predict/releases/tag/trackformer-1.1) remains available and unchanged.
13
 
14
  **Not an operational warning system.** Do not use these forecasts for evacuation, aviation, maritime, or other safety-critical decisions. The public 1.2 name identifies one selected development checkpoint; a genuinely untouched storm-level holdout has not yet established generalization.
@@ -35,6 +39,21 @@ The two models use different input pipelines. A direct chart is therefore a *for
35
 
36
  The implementation is in [`models/trackformer_1_2_field/`](models/trackformer_1_2_field/); its [`manifest.json`](models/trackformer_1_2_field/manifest.json) records exact grids, normalization, architecture and SHA-256 provenance. Internally the selected checkpoint came from experiment version `1.2.73`, epoch 4. The public model is **Trackformer 1.2**; that internal identifier is retained only for reproducibility.
37
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
38
  ## 270-case comparison: direction, route shape and position
39
 
40
  This comparison uses **270 forecast cases from 90 storms**, with the same issue rows, observed routes and 20 six-hour leads through +120 h. The number 270 counts forecast cases. The 1.2 prediction for each case is a **mean of 50 causal input-perturbation members**; 1.1 uses its archived causal route pipeline.
@@ -65,7 +84,21 @@ The 1.2 mean has better aggregate direction, shape and position scores on this p
65
 
66
  ### Expanded daily-issue benchmark: 270 distinct typhoons
67
 
68
- A new **1,473-case / 270-storm** benchmark is in progress; it is not the completed 270-case result above. Each storm contributes at most one forecast per UTC day, through +120 h. Daily errors are averaged within each storm, then the 270 storm scores receive equal weight. Selection was frozen before new inference, without filtering on forecast quality. See the [protocol](docs/daily_storm_benchmark.md) and [frozen cohort](evaluation/release_data/daily_storm_cohort.json). Results are pending; no improvement is claimed from the partial run.
 
 
 
 
 
 
 
 
 
 
 
 
 
 
69
 
70
  ## Fung-wong pressure forecast — MP4
71
 
@@ -101,6 +134,18 @@ This recent example is **one deterministic forecast**, separate from the benchma
101
 
102
  The inference-only `weights.pt` is hosted in the release/Hugging Face model folder, **not committed to GitHub source**. The manifest records its SHA-256 and the original training-checkpoint SHA-256. The three source modules are copied unchanged from the verified training implementation. Use **`models/trackformer_1_2_field/predict.py`** as the inference entry point. The withdrawn route/scalar candidate and its incompatible example have been removed from the current source tree.
103
 
 
 
 
 
 
 
 
 
 
 
 
 
104
  Only issue-time and earlier analyses are permitted. The prediction wrapper rejects future-dated history and unexpected input keys, but cannot certify an externally built packet's data provenance. The operator must verify source timestamps and training-only normalization. The included wrapper runs one unperturbed forecast; it does not reproduce the saved 50-member mean automatically.
105
 
106
  ## Repository guide
 
9
 
10
  # Trackformer 1.2
11
 
12
+ **[Download 1.2: weights + code](https://github.com/yu314-coder/typhoon-predict/releases/download/trackformer-1.2/trackformer_1_2_field_20260929.tar.gz)** · **[Read the illustrated paper](paper/trackformer.pdf)** · **[Watch Fung-wong](https://yu314-coder.github.io/typhoon-predict/trackformer_1_2_fung_wong.mp4)** · **[Hugging Face model](https://huggingface.co/euler314/typhoon-predict)**
13
+
14
+ Release status: **research prerelease**, not operational certification. The package contains the released 1.2 weights, inference code, input contract, saved evaluation data and illustrated paper. The original 1.1 release remains separate.
15
+
16
  Trackformer 1.2 is a **research-only Western Pacific tropical-cyclone forecast model**. It evolves a sea-level-pressure (MSLP) field and a moving storm-centred pressure core every six hours through +120 h. A track and central-pressure estimate are extracted from the evolving core, not independently drawn on top of a pressure image. The prior [Trackformer 1.1 release](https://github.com/yu314-coder/typhoon-predict/releases/tag/trackformer-1.1) remains available and unchanged.
17
 
18
  **Not an operational warning system.** Do not use these forecasts for evacuation, aviation, maritime, or other safety-critical decisions. The public 1.2 name identifies one selected development checkpoint; a genuinely untouched storm-level holdout has not yet established generalization.
 
39
 
40
  The implementation is in [`models/trackformer_1_2_field/`](models/trackformer_1_2_field/); its [`manifest.json`](models/trackformer_1_2_field/manifest.json) records exact grids, normalization, architecture and SHA-256 provenance. Internally the selected checkpoint came from experiment version `1.2.73`, epoch 4. The public model is **Trackformer 1.2**; that internal identifier is retained only for reproducibility.
41
 
42
+ ### Architecture at a glance
43
+
44
+ | Component | Released configuration |
45
+ | --- | --- |
46
+ | Trainable parameters | 21,452,595 |
47
+ | Input history | Nine analyses, −48 to 0 h; basin tensor 9 × 8 × 25 × 33 |
48
+ | Basin evolution network | Widths 72 / 144 / 288 / 432; residual depths 2 / 2 / 4 / 4 |
49
+ | Core evolution network | Widths 64 / 128 / 256 / 384; moving 65 × 65 pressure grid, 20-km spacing |
50
+ | Environmental attention | 134 pooled tokens; width 64; four heads; two Transformer blocks; 825 basin queries |
51
+ | Recurrent memory | 32 channels for each of basin and core |
52
+ | Geographic readout | Pressure-associated centre within 300 km; central pressure sampled at that centre |
53
+ | Five-day forecast | 20 autoregressive six-hour transitions; future observations excluded |
54
+
55
+ Grid spacing describes the representation, not independently demonstrated effective resolution. A mean of member centres is not necessarily the minimum of the displayed mean pressure field.
56
+
57
  ## 270-case comparison: direction, route shape and position
58
 
59
  This comparison uses **270 forecast cases from 90 storms**, with the same issue rows, observed routes and 20 six-hour leads through +120 h. The number 270 counts forecast cases. The 1.2 prediction for each case is a **mean of 50 causal input-perturbation members**; 1.1 uses its archived causal route pipeline.
 
84
 
85
  ### Expanded daily-issue benchmark: 270 distinct typhoons
86
 
87
+ A **1,473-case / 270-storm** benchmark is in progress; it is separate from the completed 270-case comparison above. Each storm contributes at most one forecast per UTC day, through +120 h. Daily errors are averaged within each storm, then storm scores receive equal weight. Selection was frozen before inference without filtering on forecast quality. See the [protocol](docs/daily_storm_benchmark.md) and [frozen cohort](evaluation/release_data/daily_storm_cohort.json).
88
+
89
+ **Dated snapshot — 2026-09-29T06:09:06.508182+00:00 (UTC), not a live counter:** 808/1,473 daily forecasts saved; **159/270 storms fully completed**. The 1.2 forecasts use 50 causal input-perturbation members. [Machine-readable snapshot](evaluation/daily_storm_progress_20260929.json).
90
+
91
+ | Preliminary equal-storm metric | 1.1 | 1.2 · mean of 50 |
92
+ | --- | ---: | ---: |
93
+ | Mean track error, +6 to +120 h ↓ | 843.9 km | 487.1 km |
94
+ | Track error at +120 h ↓ | 1733.3 km | 1068.8 km |
95
+ | Six-hour direction error ↓ | 51.81° | 35.33° |
96
+ | Centred route-shape similarity ↑ | 0.7497 | 0.8842 |
97
+ | Geographic path similarity ↑ | 0.5310 | 0.6611 |
98
+
99
+ **Incomplete development evidence:** only the 159 fully completed storms enter this table. Execution order is not random, and the remaining storms can change the result. These are not the final 270-storm scores or an untouched-test claim. Do not compare this subset directly with the differently sampled 270-case table above.
100
+
101
+ 1.2-only pressure diagnostics: central-pressure MAE **12.62 hPa** over 40 storms with valid pressure labels; basin MSLP MAE **2.70 hPa** over 159 storms. There is no matched 1.1 pressure result in this run, and basin-wide error does not establish core-pressure-map accuracy.
102
 
103
  ## Fung-wong pressure forecast — MP4
104
 
 
134
 
135
  The inference-only `weights.pt` is hosted in the release/Hugging Face model folder, **not committed to GitHub source**. The manifest records its SHA-256 and the original training-checkpoint SHA-256. The three source modules are copied unchanged from the verified training implementation. Use **`models/trackformer_1_2_field/predict.py`** as the inference entry point. The withdrawn route/scalar candidate and its incompatible example have been removed from the current source tree.
136
 
137
+ ### Run one forecast
138
+
139
+ Download and extract the complete package above, or obtain the source and place the [Hugging Face weights](https://huggingface.co/euler314/typhoon-predict/resolve/main/models/trackformer_1_2_field/weights.pt) at `models/trackformer_1_2_field/weights.pt`. In an environment with PyTorch and NumPy, prepare a normalized **causal issue packet** using the [input schema](models/trackformer_1_2_field/README.md), then run from the package root:
140
+
141
+ ```bash
142
+ python models/trackformer_1_2_field/predict.py causal_issue_packet.npz forecast.npz --device mps
143
+ ```
144
+
145
+ Use `--device cuda` for a compatible NVIDIA setup or `--device cpu` for CPU inference. `causal_issue_packet.npz` is a user-prepared input, not a bundled example or automatic live-data download. Output includes latitude/longitude track, central pressure and basin/regional MSLP arrays in hPa through +120 h. **This command produces one clean forecast, not the benchmark's 50-member mean.**
146
+
147
+ Released weight SHA-256: `db49f36e85a3766defc4c172746897a1f783705d1ce8e6f9dfb8e87ae1d902cb`.
148
+
149
  Only issue-time and earlier analyses are permitted. The prediction wrapper rejects future-dated history and unexpected input keys, but cannot certify an externally built packet's data provenance. The operator must verify source timestamps and training-only normalization. The included wrapper runs one unperturbed forecast; it does not reproduce the saved 50-member mean automatically.
150
 
151
  ## Repository guide
RELEASE_NOTES_TRACKFORMER_1_2.md CHANGED
@@ -1,5 +1,7 @@
1
  # Trackformer 1.2 — research candidate
2
 
 
 
3
  This release packages a verified moving-pressure-core model as **Trackformer 1.2**. It supersedes the withdrawn, unrelated route/scalar 1.2 candidate. Use `models/trackformer_1_2_field/predict.py`; the incompatible root-level candidate and example are no longer in the current source tree. Trackformer 1.1 remains available as a separate release.
4
 
5
  The attached archive includes inference-only weights, exact source modules, an input wrapper, a data-contract/provenance manifest, detailed documentation, **270-case direction/route-shape benchmark bars**, paired route examples and recent **Surigae pressure maps with labelled isobars**. The training checkpoint was internally labelled version `1.2.73`, epoch 4; its SHA-256 is `f194a23d3f91ea76ad776dfad942fabd669eeae8b3fd665815463095367e9ee0`. The exported inference weights SHA-256 is `db49f36e85a3766defc4c172746897a1f783705d1ce8e6f9dfb8e87ae1d902cb`.
@@ -15,3 +17,7 @@ The upgraded **illustrated technical paper** includes the detailed model archite
15
  The Surigae illustration is a single forecast issued 2026-09-27 12 UTC, with 4 hPa isobars at +6/+24/+36 h. It is separate from the 50-member historical benchmark. Reproduction data and metric definitions are included. The model weights are unchanged in this documentation revision.
16
 
17
  This is not an operational warning service. Do not use for safety-critical decisions. A genuinely untouched storm-level holdout is still required before generalization claims.
 
 
 
 
 
1
  # Trackformer 1.2 — research candidate
2
 
3
+ **[Download weights + code](https://github.com/yu314-coder/typhoon-predict/releases/download/trackformer-1.2/trackformer_1_2_field_20260929.tar.gz)** · **[Download the illustrated PDF](https://github.com/yu314-coder/typhoon-predict/releases/download/trackformer-1.2/trackformer.pdf)** · **[Hugging Face model card](https://huggingface.co/euler314/typhoon-predict)**
4
+
5
  This release packages a verified moving-pressure-core model as **Trackformer 1.2**. It supersedes the withdrawn, unrelated route/scalar 1.2 candidate. Use `models/trackformer_1_2_field/predict.py`; the incompatible root-level candidate and example are no longer in the current source tree. Trackformer 1.1 remains available as a separate release.
6
 
7
  The attached archive includes inference-only weights, exact source modules, an input wrapper, a data-contract/provenance manifest, detailed documentation, **270-case direction/route-shape benchmark bars**, paired route examples and recent **Surigae pressure maps with labelled isobars**. The training checkpoint was internally labelled version `1.2.73`, epoch 4; its SHA-256 is `f194a23d3f91ea76ad776dfad942fabd669eeae8b3fd665815463095367e9ee0`. The exported inference weights SHA-256 is `db49f36e85a3766defc4c172746897a1f783705d1ce8e6f9dfb8e87ae1d902cb`.
 
17
  The Surigae illustration is a single forecast issued 2026-09-27 12 UTC, with 4 hPa isobars at +6/+24/+36 h. It is separate from the 50-member historical benchmark. Reproduction data and metric definitions are included. The model weights are unchanged in this documentation revision.
18
 
19
  This is not an operational warning service. Do not use for safety-critical decisions. A genuinely untouched storm-level holdout is still required before generalization claims.
20
+
21
+ ## Expanded benchmark progress (dated snapshot)
22
+
23
+ At 2026-09-29T06:09:06.508182+00:00, 808/1,473 daily forecasts and 159/270 storms were complete. This is an incomplete development snapshot, not final validation. The README includes separate preliminary direction, shape and position metrics and pressure-label coverage. The machine-readable snapshot is `evaluation/daily_storm_progress_20260929.json`. Model weights and published paper are unchanged in this documentation update.
evaluation/daily_storm_progress_20260929.json ADDED
@@ -0,0 +1,81 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ {
2
+ "status": "running_partial",
3
+ "updated_utc": "2026-09-29T06:09:06.508182+00:00",
4
+ "cohort_sha256": "965184f1e5ab3fcb52e304f39b38583a14f753870aa2295f2d01942a441dcfd6",
5
+ "target_storm_count": 270,
6
+ "target_daily_cases": 1473,
7
+ "completed_daily_cases": 808,
8
+ "completed_storms": 159,
9
+ "aggregation": "Mean across 20 leads within each daily issue; mean of daily scores within each storm; equal-weight mean of storm scores",
10
+ "evaluation_label": "Broader development benchmark. Excludes 1.2 fitting/validation years; not certified untouched for all historical model versions.",
11
+ "aggregate_equal_storm": {
12
+ "1.1": {
13
+ "mean_track_error_km": 843.8621114511382,
14
+ "track_error_120h_km": 1733.2726378192087,
15
+ "direction_error_deg": 51.80990739742571,
16
+ "shape_similarity": 0.7497360046168909,
17
+ "frechet_distance_km": 1747.8702008094688,
18
+ "path_similarity": 0.5310399910204798,
19
+ "track_error_by_lead_km": [
20
+ 70.07905921221005,
21
+ 141.47157741053823,
22
+ 213.71663132065547,
23
+ 288.0827303125307,
24
+ 366.6206773075269,
25
+ 443.71663052326375,
26
+ 522.0229150940693,
27
+ 600.2095479405816,
28
+ 680.9489001185718,
29
+ 765.3511050266936,
30
+ 851.273415712845,
31
+ 937.8791152207183,
32
+ 1029.786198881821,
33
+ 1123.316585567243,
34
+ 1219.8504751458606,
35
+ 1317.1924939609435,
36
+ 1420.7865879143453,
37
+ 1523.7928891051765,
38
+ 1627.8720554279569,
39
+ 1733.2726378192087
40
+ ]
41
+ },
42
+ "1.2": {
43
+ "mean_track_error_km": 487.07502229168585,
44
+ "track_error_120h_km": 1068.7845200065838,
45
+ "direction_error_deg": 35.32516513287079,
46
+ "shape_similarity": 0.8841944328847995,
47
+ "frechet_distance_km": 1081.361206304057,
48
+ "path_similarity": 0.6610640343692109,
49
+ "track_error_by_lead_km": [
50
+ 49.320702362800006,
51
+ 91.93377381158523,
52
+ 128.56644864243074,
53
+ 163.48005333561366,
54
+ 198.97070599127827,
55
+ 237.04318919785257,
56
+ 276.97202860768,
57
+ 318.34651333401285,
58
+ 363.26530711018916,
59
+ 411.3252930097807,
60
+ 464.2790038446656,
61
+ 519.9047678712388,
62
+ 578.6886955998453,
63
+ 640.53742606808,
64
+ 706.620202015708,
65
+ 772.7616953132481,
66
+ 843.2899944159193,
67
+ 915.1638893217782,
68
+ 992.2462359734283,
69
+ 1068.7845200065842
70
+ ]
71
+ }
72
+ },
73
+ "pressure_equal_storm": {
74
+ "v12_pressure_mae_hpa": 12.620734815892849,
75
+ "v12_pressure_mae_hpa_valid_storms": 40,
76
+ "v12_basin_area_weighted_mslp_mae_hpa": 2.696000601689426,
77
+ "v12_basin_area_weighted_mslp_mae_hpa_valid_storms": 159
78
+ },
79
+ "pressure_note": "1.2-only diagnostics; no matched 1.1 central-pressure comparison is claimed. Basin fields are on a fixed common grid.",
80
+ "snapshot_note": "Dated partial development snapshot, not live status or final results. Only fully completed storms enter aggregates; execution order is not random."
81
+ }