Skip to content
This repository was archived by the owner on Apr 28, 2023. It is now read-only.

Commit d1a1da6

Browse files
Jules PondardJules Pondard
Jules Pondard
authored and
Jules Pondard
committed
Implement a gradient boosting execution time predictor
Generates a set of random options and tries to predict the execution time.
1 parent 63e8ddc commit d1a1da6

File tree

1 file changed

+57
-0
lines changed

1 file changed

+57
-0
lines changed
Lines changed: 57 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,57 @@
1+
import time
2+
import torch
3+
import tensor_comprehensions as tc
4+
#import sklearn
5+
#from sklearn.linear_model import LinearRegression
6+
#from sklearn.ensemble import GradientBoostingRegressor
7+
import numpy as np
8+
#from sklearn.model_selection import train_test_split
9+
#from tensor_comprehensions.mapping_options import Options
10+
from multiprocessing import Pool
11+
from itertools import repeat
12+
import utils
13+
#from tqdm import tqdm
14+
15+
exptuner_config = utils.ExpTunerConfig()
16+
exptuner_config.set_convolution_tc()
17+
18+
NB_HYPERPARAMS = utils.NB_HYPERPARAMS
19+
20+
def createY(x):
21+
y = utils.evalTime(x, exptuner_config)
22+
return y
23+
24+
def getRandom():
25+
opt_v = np.zeros(NB_HYPERPARAMS).astype(int)
26+
for i in range(opt_v.shape[0]):
27+
opt_v[i] = np.random.randint(exptuner_config.cat_sz[i])
28+
return opt_v
29+
30+
def makeDataset():
31+
from tqdm import tqdm
32+
sz = 500
33+
datasetX, datasetY = [], []
34+
for _ in tqdm(range(sz)):
35+
opt = getRandom()
36+
yi = createY(opt)
37+
datasetX.append(opt)
38+
datasetY.append(yi)
39+
#with Pool(sz) as p:
40+
# datasetY = p.starmap(createY, datasetX)
41+
return np.array(datasetX), np.array(datasetY)
42+
43+
def learn():
44+
#from sklearn.linear_model import LinearRegression
45+
from sklearn.ensemble import GradientBoostingRegressor
46+
from sklearn.model_selection import train_test_split
47+
datasetX, datasetY = makeDataset()
48+
print(min(datasetY))
49+
Xtrain, Xtest, Ytrain, Ytest = train_test_split(datasetX, datasetY, test_size=0.2, random_state = 42)
50+
model1 = GradientBoostingRegressor(n_estimators=1000)
51+
model1.fit(Xtrain, Ytrain)
52+
pred0 = model1.predict(Xtrain)
53+
pred1 = model1.predict(Xtest)
54+
print(np.corrcoef(pred0, Ytrain)[0, 1]**2)
55+
print(np.corrcoef(pred1, Ytest)[0,1]**2)
56+
57+
#learn()

0 commit comments

Comments
 (0)