Skip to content

Commit 55740a6

Browse files
authored
Automlx | Logging errors in error.csv when all forecast values are NaN. (#932)
2 parents 4f189ef + 3d7f8de commit 55740a6

File tree

6 files changed

+27
-7
lines changed

6 files changed

+27
-7
lines changed

ads/opctl/operator/lowcode/forecast/model/arima.py

Lines changed: 6 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -126,8 +126,12 @@ def _train_model(self, i, s_id, df, model_kwargs):
126126

127127
logger.debug("===========Done===========")
128128
except Exception as e:
129-
self.errors_dict[s_id] = {"model_name": self.spec.model, "error": str(e)}
130-
logger.debug(f"Encountered Error: {e}. Skipping.")
129+
self.errors_dict[s_id] = {
130+
"model_name": self.spec.model,
131+
"error": str(e),
132+
"error_trace": traceback.format_exc()}
133+
logger.warn(f"Encountered Error: {e}. Skipping.")
134+
logger.warn(traceback.format_exc())
131135

132136
def _build_model(self) -> pd.DataFrame:
133137
full_data_dict = self.datasets.get_data_by_series()

ads/opctl/operator/lowcode/forecast/model/automlx.py

Lines changed: 6 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -149,6 +149,9 @@ def _build_model(self) -> pd.DataFrame:
149149
if f"{target}_ci_lower" not in summary_frame:
150150
summary_frame[f"{target}_ci_lower"] = np.NAN
151151

152+
if summary_frame[target].isna().all():
153+
raise ValueError("The forecasts are completely NaN")
154+
152155
self.forecast_output.populate_series_output(
153156
series_id=s_id,
154157
fit_val=fitted_values,
@@ -167,8 +170,10 @@ def _build_model(self) -> pd.DataFrame:
167170
self.errors_dict[s_id] = {
168171
"model_name": self.spec.model,
169172
"error": str(e),
173+
"error_trace": traceback.format_exc()
170174
}
171-
logger.debug(f"Encountered Error: {e}. Skipping.")
175+
logger.warn(f"Encountered Error: {e}. Skipping.")
176+
logger.warn(traceback.format_exc())
172177

173178
logger.debug("===========Forecast Generated===========")
174179

ads/opctl/operator/lowcode/forecast/model/autots.py

Lines changed: 3 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -208,8 +208,10 @@ def _build_model(self) -> pd.DataFrame:
208208
self.errors_dict[s_id] = {
209209
"model_name": self.spec.model,
210210
"error": str(e),
211+
"error_trace": traceback.format_exc()
211212
}
212-
logger.debug(f"Encountered Error: {e}. Skipping.")
213+
logger.warn(f"Encountered Error: {e}. Skipping.")
214+
logger.warn(traceback.format_exc())
213215

214216
logger.debug("===========Done===========")
215217

ads/opctl/operator/lowcode/forecast/model/ml_forecast.py

Lines changed: 3 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -164,8 +164,10 @@ def _train_model(self, data_train, data_test, model_kwargs):
164164
self.errors_dict[self.spec.model] = {
165165
"model_name": self.spec.model,
166166
"error": str(e),
167+
"error_trace": traceback.format_exc()
167168
}
168-
logger.debug(f"Encountered Error: {e}. Skipping.")
169+
logger.warn(f"Encountered Error: {e}. Skipping.")
170+
logger.warn(traceback.format_exc())
169171
raise e
170172

171173
def _build_model(self) -> pd.DataFrame:

ads/opctl/operator/lowcode/forecast/model/neuralprophet.py

Lines changed: 6 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -217,7 +217,12 @@ def _train_model(self, i, s_id, df, model_kwargs):
217217

218218
logger.debug("===========Done===========")
219219
except Exception as e:
220-
self.errors_dict[s_id] = {"model_name": self.spec.model, "error": str(e)}
220+
self.errors_dict[s_id] = {
221+
"model_name": self.spec.model,
222+
"error": str(e),
223+
"error_trace": traceback.format_exc()
224+
}
225+
logger.warn(traceback.format_exc())
221226
raise e
222227

223228
def _build_model(self) -> pd.DataFrame:

ads/opctl/operator/lowcode/forecast/model/prophet.py

Lines changed: 3 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -130,8 +130,10 @@ def _train_model(self, i, series_id, df, model_kwargs):
130130
self.errors_dict[series_id] = {
131131
"model_name": self.spec.model,
132132
"error": str(e),
133+
"error_trace": traceback.format_exc()
133134
}
134-
logger.debug(f"Encountered Error: {e}. Skipping.")
135+
logger.warn(f"Encountered Error: {e}. Skipping.")
136+
logger.warn(traceback.format_exc())
135137

136138
def _build_model(self) -> pd.DataFrame:
137139
full_data_dict = self.datasets.get_data_by_series()

0 commit comments

Comments
 (0)