pablog86 commited on
Commit
17a1aef
·
verified ·
1 Parent(s): 10fc93e

training run 20260419_211104

Browse files
README.md ADDED
@@ -0,0 +1,145 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ ---
2
+ license: apache-2.0
3
+ tags:
4
+ - time-series-forecasting
5
+ - f1
6
+ - chronos
7
+ - fine-tuned
8
+ language:
9
+ - en
10
+ ---
11
+
12
+ # F1 Lap-Time Forecasting — Chronos Fine-tune
13
+
14
+ One-step-ahead lap time forecasting for Formula 1 races, fine-tuned from [autogluon/chronos-bolt-base](https://huggingface.co/autogluon/chronos-bolt-base).
15
+
16
+ | | |
17
+ |---|---|
18
+ | **Run ID** | `20260419_211104` |
19
+ | **Base model** | `autogluon/chronos-bolt-base` |
20
+ | **Task** | Next-lap time regression (ms) within a stint |
21
+ | **Repository** | `pablog86/oaa2` |
22
+
23
+ ---
24
+
25
+ ## Dataset
26
+
27
+ Sourced from the consolidated `f1-race-data/latest.parquet` Parquet produced by the Airflow ingestion DAG (SPEC-008/SPEC-009).
28
+
29
+ | | |
30
+ |---|---|
31
+ | **Train / val seasons** | [2022, 2023] |
32
+ | **Test seasons** | [2024] |
33
+ | **Session types** | RACE |
34
+ | **Object ETag** | `a6b0d597d06b934476b5e77a928c9659` |
35
+ | **Last modified** | 2026-04-19T04:22:53+00:00 |
36
+
37
+ ---
38
+
39
+ ## Features
40
+
41
+ The model receives a sliding context window of pit-corrected lap times (`lap_time_ex_pit_ms`) within the current stint, plus the covariates listed below.
42
+
43
+ | Feature | Type |
44
+ |---|---|
45
+ | `lap_time_ex_pit_ms` (context window) | Target signal — sliding window of pit-stop-corrected lap times within the current stint |
46
+ | `circuit_id` | Static |
47
+ | `constructor_id` | Static |
48
+ | `grid_position` | Static |
49
+ | `circuit_season_max_laps` | Static |
50
+ | `lap`, `lap_position`, `lap_in_race_pct` | Dynamic observed |
51
+ | `lap_in_stint`, `is_pit_out_lap`, `is_pit_in_lap` | Dynamic observed |
52
+ | `cumulative_pit_count`, `laps_since_last_pit` | Dynamic observed |
53
+ | `elapsed_race_time_ms` | Dynamic observed |
54
+ | `lag_1/2/3_lap_time_ex_pit_ms` | Historical |
55
+ | `rolling_mean_3/5_lap_time_ex_pit_ms` | Historical |
56
+ | `rolling_std_3_lap_time_ex_pit_ms` | Historical |
57
+ | `delta_vs_prev_lap_ex_pit_ms` | Historical |
58
+ | `delta_vs_rolling_mean_3_ex_pit_ms` | Historical |
59
+
60
+ ---
61
+
62
+ ## Training Configuration
63
+
64
+ | Hyperparameter | Value |
65
+ |---|---|
66
+ | `model_id` | `autogluon/chronos-bolt-base` |
67
+ | `learning_rate` | `0.0001` |
68
+ | `batch_size` | `32` |
69
+ | `max_epochs` | `15` |
70
+ | `patience` | `3` |
71
+ | `weight_decay` | `0.0001` |
72
+ | `gradient_clip_val` | `1.0` |
73
+ | `context_length` | `20` |
74
+ | `prediction_length` | `1` |
75
+ | `loss_function` | `huber` |
76
+ | `random_seed` | `42` |
77
+ | **Early stopping at epoch** | 8 / 15 |
78
+
79
+ ---
80
+
81
+ ## Evaluation Results
82
+
83
+ ### Validation
84
+
85
+ | Metric | Value |
86
+ |---|---|
87
+ | MAE (ms) | 8377.9 |
88
+ | RMSE (ms) | 80676.4 |
89
+ | MAPE (%) | 8.07 |
90
+ | Within ±500 ms (%) | 55.7 |
91
+ | Within ±1000 ms (%) | 70.7 |
92
+ | Samples | 8873 |
93
+
94
+ ### Test
95
+
96
+ | Metric | Value |
97
+ |---|---|
98
+ | MAE (ms) | 4619.8 |
99
+ | RMSE (ms) | 55007.5 |
100
+ | MAPE (%) | 4.54 |
101
+ | Within ±500 ms (%) | 60.3 |
102
+ | Within ±1000 ms (%) | 75.6 |
103
+ | Samples | 25241 |
104
+
105
+ ### Test — by season
106
+
107
+ | Segment | mae (ms) | mape (%) | pct_within_500ms | n_samples |
108
+ | --- | --- | --- | --- | --- |
109
+ | 2024 | 4619.8 | 4.5 | 60.3 | 25241 |
110
+
111
+ ### Test — by stint length
112
+
113
+ | Segment | mae (ms) | mape (%) | pct_within_500ms | n_samples |
114
+ | --- | --- | --- | --- | --- |
115
+ | long (>30) | 4393.4 | 4.5 | 62.0 | 9235 |
116
+ | medium (15–30) | 3189.5 | 3.3 | 61.8 | 12629 |
117
+ | short (<15) | 10587.5 | 9.2 | 50.3 | 3377 |
118
+
119
+ ---
120
+
121
+ ## Baseline Comparison (test set)
122
+
123
+ | Metric | **Model** | `last_lap` | `rolling_mean_3` | `rolling_mean_5` |
124
+ | --- | --- | --- | --- | --- |
125
+ | MAE (ms) | **4619.8** | 5167.4 | 3152.9 | 2975.1 |
126
+ | MAPE (%) | **4.5** | 5.6 | 3.5 | 3.4 |
127
+ | Within ±500 ms (%) | **60.3** | 58.7 | 62.4 | 59.5 |
128
+
129
+ ---
130
+
131
+ ## Run History
132
+
133
+ | run_id | model | val MAE (ms) | test MAE (ms) | test MAPE (%) | within ±500 ms (%) |
134
+ |---|---|---|---|---|---|
135
+ | `20260419_211104` | `chronos-bolt-base` | 8377.9 | 4619.8 | 4.54 | 60.3 |
136
+
137
+ ---
138
+
139
+ ## Reproducibility
140
+
141
+ | Artifact | Path in this repo |
142
+ |---|---|
143
+ | Dataset manifest | [`dataset_manifest/20260419_211104.json`](dataset_manifest/20260419_211104.json) |
144
+ | Run metadata (metrics + config) | [`runs/20260419_211104.json`](runs/20260419_211104.json) |
145
+ | TensorBoard logs | [`tensorboard/20260419_211104/`](tensorboard/20260419_211104/) |
config.json ADDED
@@ -0,0 +1,50 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ {
2
+ "architectures": [
3
+ "ChronosBoltModelForForecasting"
4
+ ],
5
+ "chronos_config": {
6
+ "context_length": 2048,
7
+ "input_patch_size": 16,
8
+ "input_patch_stride": 16,
9
+ "prediction_length": 64,
10
+ "quantiles": [
11
+ 0.1,
12
+ 0.2,
13
+ 0.3,
14
+ 0.4,
15
+ 0.5,
16
+ 0.6,
17
+ 0.7,
18
+ 0.8,
19
+ 0.9
20
+ ],
21
+ "use_reg_token": true
22
+ },
23
+ "chronos_pipeline_class": "ChronosBoltPipeline",
24
+ "classifier_dropout": 0.0,
25
+ "d_ff": 3072,
26
+ "d_kv": 64,
27
+ "d_model": 768,
28
+ "decoder_start_token_id": 0,
29
+ "dense_act_fn": "relu",
30
+ "dropout_rate": 0.1,
31
+ "dtype": "float32",
32
+ "eos_token_id": 1,
33
+ "feed_forward_proj": "relu",
34
+ "initializer_factor": 0.05,
35
+ "is_encoder_decoder": true,
36
+ "is_gated_act": false,
37
+ "layer_norm_epsilon": 1e-06,
38
+ "model_type": "t5",
39
+ "n_positions": 512,
40
+ "num_decoder_layers": 12,
41
+ "num_heads": 12,
42
+ "num_layers": 12,
43
+ "pad_token_id": 0,
44
+ "reg_token_id": 1,
45
+ "relative_attention_max_distance": 128,
46
+ "relative_attention_num_buckets": 32,
47
+ "transformers_version": "4.57.6",
48
+ "use_cache": true,
49
+ "vocab_size": 2
50
+ }
dataset_manifest/20260419_211104.json ADDED
@@ -0,0 +1,22 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ {
2
+ "minio_bucket": "f1-race-data",
3
+ "minio_object_key": "latest.parquet",
4
+ "minio_path": "s3://f1-race-data/latest.parquet",
5
+ "seasons_train_val": [
6
+ 2022,
7
+ 2023
8
+ ],
9
+ "seasons_test": [
10
+ 2024
11
+ ],
12
+ "session_types": [
13
+ "RACE"
14
+ ],
15
+ "object_etag": "a6b0d597d06b934476b5e77a928c9659",
16
+ "object_last_modified": "2026-04-19T04:22:53+00:00",
17
+ "object_size_bytes": 7005155,
18
+ "dag_version": "116",
19
+ "train_val_row_count": 47915,
20
+ "test_row_count": 26574,
21
+ "manifest_timestamp": "2026-04-19T21:11:03.337994+00:00"
22
+ }
model.safetensors ADDED
@@ -0,0 +1,3 @@
 
 
 
 
1
+ version https://git-lfs.github.com/spec/v1
2
+ oid sha256:e16a277b59f94043269c6ae825882ad3126da52a299ec2971f3e03101414eb12
3
+ size 821203576
run_history.json ADDED
@@ -0,0 +1,12 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ [
2
+ {
3
+ "run_id": "20260419_211104",
4
+ "model_id": "autogluon/chronos-bolt-base",
5
+ "seasons_train_val": null,
6
+ "best_val_mae_ms": 8377.91088572777,
7
+ "test_mae_ms": 4619.756877760885,
8
+ "test_mape_pct": 4.5357997427631656,
9
+ "test_pct_within_500ms": 60.318529376807575,
10
+ "test_n_samples": 25241
11
+ }
12
+ ]
runs/20260419_211104.json ADDED
@@ -0,0 +1,191 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ {
2
+ "run_id": "20260419_211104",
3
+ "model_id": "autogluon/chronos-bolt-base",
4
+ "hf_repo_id": "pablog86/oaa2",
5
+ "config": {
6
+ "model_id": "autogluon/chronos-bolt-base",
7
+ "learning_rate": 0.0001,
8
+ "batch_size": 32,
9
+ "max_epochs": 15,
10
+ "patience": 3,
11
+ "weight_decay": 0.0001,
12
+ "gradient_clip_val": 1.0,
13
+ "context_length": 20,
14
+ "prediction_length": 1,
15
+ "min_series_length": 3,
16
+ "loss_function": "huber",
17
+ "random_seed": 42,
18
+ "val_fraction": 0.2,
19
+ "stint_bucket_edges": [
20
+ 0.0,
21
+ 15.0,
22
+ 30.0,
23
+ Infinity
24
+ ],
25
+ "stint_bucket_labels": [
26
+ "short (<15)",
27
+ "medium (15\u201330)",
28
+ "long (>30)"
29
+ ],
30
+ "artifacts_dir": "./artifacts/run"
31
+ },
32
+ "split_summary": {
33
+ "train_races": [
34
+ 1074,
35
+ 1075,
36
+ 1076,
37
+ 1077,
38
+ 1078,
39
+ 1079,
40
+ 1080,
41
+ 1081,
42
+ 1082,
43
+ 1083,
44
+ 1084,
45
+ 1085,
46
+ 1086,
47
+ 1087,
48
+ 1088,
49
+ 1089,
50
+ 1091,
51
+ 1092,
52
+ 1093,
53
+ 1094,
54
+ 1095,
55
+ 1096,
56
+ 1098,
57
+ 1099,
58
+ 1100,
59
+ 1101,
60
+ 1102,
61
+ 1104,
62
+ 1105,
63
+ 1106,
64
+ 1107,
65
+ 1108,
66
+ 1109,
67
+ 1110,
68
+ 1111
69
+ ],
70
+ "val_races": [
71
+ 1112,
72
+ 1113,
73
+ 1114,
74
+ 1115,
75
+ 1116,
76
+ 1117,
77
+ 1118,
78
+ 1119,
79
+ 1120
80
+ ],
81
+ "test_races": [
82
+ 1121,
83
+ 1122,
84
+ 1123,
85
+ 1124,
86
+ 1125,
87
+ 1126,
88
+ 1127,
89
+ 1128,
90
+ 1129,
91
+ 1130,
92
+ 1131,
93
+ 1132,
94
+ 1133,
95
+ 1134,
96
+ 1135,
97
+ 1136,
98
+ 1137,
99
+ 1138,
100
+ 1139,
101
+ 1140,
102
+ 1141,
103
+ 1142,
104
+ 1143,
105
+ 1144
106
+ ],
107
+ "train_date_range": [
108
+ "2022-03-20",
109
+ "2023-08-27"
110
+ ],
111
+ "val_date_range": [
112
+ "2023-09-03",
113
+ "2023-11-26"
114
+ ],
115
+ "test_date_range": [
116
+ "2024-03-02",
117
+ "2024-12-08"
118
+ ]
119
+ },
120
+ "best_val_mae_ms": 8377.91088572777,
121
+ "val_metrics": {
122
+ "mae_ms": 8377.91097201482,
123
+ "rmse_ms": 80676.38751813748,
124
+ "mape_pct": 8.0746229800375,
125
+ "pct_within_500ms": 55.730868928209176,
126
+ "pct_within_1000ms": 70.65254141778429,
127
+ "n_samples": 8873
128
+ },
129
+ "test_metrics": {
130
+ "mae_ms": 4619.756877760885,
131
+ "rmse_ms": 55007.53395385143,
132
+ "mape_pct": 4.5357997427631656,
133
+ "pct_within_500ms": 60.318529376807575,
134
+ "pct_within_1000ms": 75.59129986926033,
135
+ "n_samples": 25241
136
+ },
137
+ "val_baselines": {
138
+ "last_lap": {
139
+ "mae_ms": 9513.301985495185,
140
+ "rmse_ms": 85694.68989127,
141
+ "mape_pct": 11.013232820927179,
142
+ "pct_within_500ms": 59.27951492093687,
143
+ "pct_within_1000ms": 75.18725478540007,
144
+ "n_samples": 8411
145
+ },
146
+ "rolling_mean_3": {
147
+ "mae_ms": 5180.492095441774,
148
+ "rmse_ms": 31498.00307390256,
149
+ "mape_pct": 5.897325470761387,
150
+ "pct_within_500ms": 63.454522581456786,
151
+ "pct_within_1000ms": 77.56950559818844,
152
+ "n_samples": 7949
153
+ },
154
+ "rolling_mean_5": {
155
+ "mae_ms": 4462.596186139178,
156
+ "rmse_ms": 21031.02257149081,
157
+ "mape_pct": 5.128412276394326,
158
+ "pct_within_500ms": 61.1925430482425,
159
+ "pct_within_1000ms": 75.76490678810302,
160
+ "n_samples": 7027
161
+ }
162
+ },
163
+ "test_baselines": {
164
+ "last_lap": {
165
+ "mae_ms": 5167.409274109777,
166
+ "rmse_ms": 57692.30673076948,
167
+ "mape_pct": 5.607423986559191,
168
+ "pct_within_500ms": 58.72356338554867,
169
+ "pct_within_1000ms": 74.30922009390451,
170
+ "n_samples": 24067
171
+ },
172
+ "rolling_mean_3": {
173
+ "mae_ms": 3152.8973485344864,
174
+ "rmse_ms": 21137.80836085181,
175
+ "mape_pct": 3.5109489781296426,
176
+ "pct_within_500ms": 62.42956362206789,
177
+ "pct_within_1000ms": 76.8313458262351,
178
+ "n_samples": 22893
179
+ },
180
+ "rolling_mean_5": {
181
+ "mae_ms": 2975.0715633816517,
182
+ "rmse_ms": 14143.307150618728,
183
+ "mape_pct": 3.399727694312402,
184
+ "pct_within_500ms": 59.499951357135906,
185
+ "pct_within_1000ms": 75.04134643447806,
186
+ "n_samples": 20558
187
+ }
188
+ },
189
+ "tensorboard_path": "tensorboard/20260419_211104/",
190
+ "dataset_manifest_path": "dataset_manifest/20260419_211104.json"
191
+ }
tensorboard/20260419_211104/events.out.tfevents.1776633070.DESKTOP-5Q8M7R4.5824.0 ADDED
@@ -0,0 +1,3 @@
 
 
 
 
1
+ version https://git-lfs.github.com/spec/v1
2
+ oid sha256:8ce1fd79a74971c175abf7df1f35e4769673caf8a352e103b6d2cf6732edfe2a
3
+ size 1856