Skip to content

Commit a86b693

Browse files
committed
fix(xgboost): Remove xgboost dependency to reduce image sizes
xgboost and its dependency nvidia each contribute to half the size of the image. This commit: - removes xgboost, and its dependency nvidia from the project - changes to model training code which uses xgboost to detect if xgboost is present and skip execution - Image sizes before change quay.io/sustainable_computing_io/kepler_model_server v0.7.11-2 dce5c5495a67 18 minutes ago 1.21GB quay.io/sustainable_computing_io/kepler_model_server_base v0.7.11-2 c59e2a1a5f43 27 minutes ago 1.19GB - Image sizes after change quay.io/sustainable_computing_io/kepler_model_server v0.7.11-2 1521f5b2612d 2 hours ago 688MB quay.io/sustainable_computing_io/kepler_model_server_base v0.7.11-2 5ae7b07a679b 2 hours ago 686MB Signed-off-by: Vimal Kumar <[email protected]>
1 parent 98c829a commit a86b693

File tree

3 files changed

+13
-4
lines changed

3 files changed

+13
-4
lines changed

pyproject.toml

Lines changed: 0 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -40,7 +40,6 @@ dependencies = [
4040
"scipy==1.14.1",
4141
"seaborn==0.13.2",
4242
"Werkzeug==3.0.4",
43-
"xgboost==2.1.1",
4443
"boto3==1.34.155",
4544
"pymarkdownlnt==0.9.22",
4645
"yamllint==1.35.1",

src/kepler_model/estimate/model/model.py

Lines changed: 8 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,11 +1,15 @@
11
import json
22
import logging
3+
import importlib.util as import_util
34

45
import pandas as pd
56

67
from kepler_model.estimate.model.curvefit_model import CurveFitModelEstimator
78
from kepler_model.estimate.model.scikit_model import ScikitModelEstimator
8-
from kepler_model.estimate.model.xgboost_model import XgboostModelEstimator
9+
10+
if import_util.find_spec("xgboost"):
11+
from kepler_model.estimate.model.xgboost_model import XgboostModelEstimator
12+
913
from kepler_model.util.config import download_path
1014
from kepler_model.util.loader import get_download_output_path, load_metadata
1115
from kepler_model.util.prom_types import valid_container_query
@@ -17,11 +21,13 @@
1721
# model wrapper
1822
MODELCLASS = {
1923
"scikit": ScikitModelEstimator,
20-
"xgboost": XgboostModelEstimator,
2124
"curvefit": CurveFitModelEstimator,
2225
# 'keras': KerasModelEstimator,
2326
}
2427

28+
if import_util.find_spec("xgboost"):
29+
MODELCLASS["xgboost"] = XgboostModelEstimator
30+
2531

2632
def default_predicted_col_func(energy_component):
2733
return f"default_{energy_component}_power"

src/kepler_model/util/train_types.py

Lines changed: 5 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -10,6 +10,7 @@
1010

1111
import enum
1212
import random
13+
import importlib.util as import_util
1314

1415
SYSTEM_FEATURES = ["node_info", "cpu_scaling_frequency_hertz"]
1516

@@ -45,8 +46,11 @@
4546
"KNeighborsRegressorTrainer",
4647
"LinearRegressionTrainer",
4748
"SVRRegressorTrainer",
48-
"XgboostFitTrainer",
4949
]
50+
51+
if import_util.find_spec("xgboost"):
52+
no_weight_trainers.append("XgboostFitTrainer")
53+
5054
weight_support_trainers = ["SGDRegressorTrainer", "LogarithmicRegressionTrainer", "LogisticRegressionTrainer", "ExponentialRegressionTrainer"]
5155
default_trainer_names = no_weight_trainers + weight_support_trainers
5256
default_trainers = ",".join(default_trainer_names)

0 commit comments

Comments
 (0)