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

Commit e3fa6eb

Browse files
author
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 b27a35f commit e3fa6eb

File tree

1 file changed

+56
-0
lines changed

1 file changed

+56
-0
lines changed
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,56 @@
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+
(tc_code, tc_name, inp, init_input_sz) = utils.get_convolution_example(size_type="input", inp_sz_list=[8,2,28,28,8,1,1])
16+
17+
NB_HYPERPARAMS, INIT_INPUT_SZ = utils.NB_HYPERPARAMS, utils.INIT_INPUT_SZ
18+
19+
def createY(x):
20+
y = utils.evalTime(x)
21+
return y
22+
23+
def getRandom():
24+
opt_v = np.zeros(NB_HYPERPARAMS).astype(int)
25+
for i in range(opt_v.shape[0]):
26+
opt_v[i] = np.random.randint(utils.cat_sz[i])
27+
return opt_v
28+
29+
def makeDataset():
30+
from tqdm import tqdm
31+
sz = 500
32+
datasetX, datasetY = [], []
33+
for _ in tqdm(range(sz)):
34+
opt = getRandom()
35+
yi = createY(opt)
36+
datasetX.append(opt)
37+
datasetY.append(yi)
38+
#with Pool(sz) as p:
39+
# datasetY = p.starmap(createY, datasetX)
40+
return np.array(datasetX), np.array(datasetY)
41+
42+
def learn():
43+
#from sklearn.linear_model import LinearRegression
44+
from sklearn.ensemble import GradientBoostingRegressor
45+
from sklearn.model_selection import train_test_split
46+
datasetX, datasetY = makeDataset()
47+
print(min(datasetY))
48+
Xtrain, Xtest, Ytrain, Ytest = train_test_split(datasetX, datasetY, test_size=0.2, random_state = 42)
49+
model1 = GradientBoostingRegressor(n_estimators=1000)
50+
model1.fit(Xtrain, Ytrain)
51+
pred0 = model1.predict(Xtrain)
52+
pred1 = model1.predict(Xtest)
53+
print(np.corrcoef(pred0, Ytrain)[0, 1]**2)
54+
print(np.corrcoef(pred1, Ytest)[0,1]**2)
55+
56+
#learn()

0 commit comments

Comments
 (0)