Gil Stetler commited on
Commit
218f038
·
1 Parent(s): 0262268
Files changed (1) hide show
  1. train_autogluon.py +13 -13
train_autogluon.py CHANGED
@@ -7,35 +7,35 @@ def train_bolt_small(
7
  start="2015-01-01",
8
  interval="1d",
9
  prediction_length=30,
10
- time_limit=900, # seconds (15 min). Adjust if needed.
11
  ):
12
  """
13
- Trains Chronos-Bolt-Small on CPU via AutoGluon with strict CPU-friendly limits.
14
- Uses business-day ('B') frequency to handle weekends/holidays.
15
  """
16
  print(f"[AutoFT] Lade {ticker} ...")
17
  close = fetch_close_series(ticker, start=start, interval=interval)
18
  rv = realized_vol(close)
19
 
20
- # Make a tidy dataframe
21
- df = rv_to_autogluon_df(rv) # columns: item_id, timestamp, target
22
 
23
- # Create a TimeSeriesDataFrame with explicit frequency
24
  tsdf = TimeSeriesDataFrame.from_data_frame(
25
  df,
26
  id_column="item_id",
27
  timestamp_column="timestamp",
28
- target_column="target",
29
- freq="B", # <- set business-day freq
30
  )
31
- # Ensure regular frequency (fills gaps with NaNs)
32
  tsdf = tsdf.convert_frequency("B")
33
 
34
  predictor = TimeSeriesPredictor(
35
  path="/mnt/data/AutogluonChronosBoltSmall",
36
  prediction_length=prediction_length,
37
  eval_metric="WQL",
38
- freq="B", # <- set freq on predictor too
39
  verbosity=2,
40
  )
41
 
@@ -47,13 +47,13 @@ def train_bolt_small(
47
  "Chronos": {
48
  "model_path": "autogluon/chronos-bolt-small",
49
  "fine_tune": True,
50
- "fine_tune_steps": 200, # keep small for CPU
51
  "fine_tune_lr": 1e-4,
52
- "context_length": 128, # keep small for CPU
53
  "quantile_levels": [0.1, 0.5, 0.9],
54
  }
55
  },
56
- time_limit=time_limit, # hard cap so HF Space won’t time out
57
  )
58
 
59
  print("✅ Training abgeschlossen. Modellpfad:", predictor.path)
 
7
  start="2015-01-01",
8
  interval="1d",
9
  prediction_length=30,
10
+ time_limit=900, # Sekunden (15 Min). Bei Bedarf anpassen.
11
  ):
12
  """
13
+ Trainiert Chronos-Bolt-Small auf CPU via AutoGluon mit CPU-freundlichen Limits.
14
+ Explizite Business-Day-Frequenz ('B') verhindert Frequency-Fehler.
15
  """
16
  print(f"[AutoFT] Lade {ticker} ...")
17
  close = fetch_close_series(ticker, start=start, interval=interval)
18
  rv = realized_vol(close)
19
 
20
+ # tidy DataFrame: columns = item_id, timestamp, target
21
+ df = rv_to_autogluon_df(rv)
22
 
23
+ # TimeSeriesDataFrame mit expliziter Frequenz erzeugen
24
  tsdf = TimeSeriesDataFrame.from_data_frame(
25
  df,
26
  id_column="item_id",
27
  timestamp_column="timestamp",
28
+ # KEIN target_column-Argument in AG 1.4.0 – 'target' wird implizit erkannt
29
+ freq="B",
30
  )
31
+ # auf reguläres Business-Day-Gitter bringen (Lücken = NaN)
32
  tsdf = tsdf.convert_frequency("B")
33
 
34
  predictor = TimeSeriesPredictor(
35
  path="/mnt/data/AutogluonChronosBoltSmall",
36
  prediction_length=prediction_length,
37
  eval_metric="WQL",
38
+ freq="B",
39
  verbosity=2,
40
  )
41
 
 
47
  "Chronos": {
48
  "model_path": "autogluon/chronos-bolt-small",
49
  "fine_tune": True,
50
+ "fine_tune_steps": 200, # klein halten für CPU
51
  "fine_tune_lr": 1e-4,
52
+ "context_length": 128, # klein halten für CPU
53
  "quantile_levels": [0.1, 0.5, 0.9],
54
  }
55
  },
56
+ time_limit=time_limit, # harter Cap, damit HF nicht timeoutet
57
  )
58
 
59
  print("✅ Training abgeschlossen. Modellpfad:", predictor.path)