1
1
import pandas as pd
2
2
import asyncio
3
3
import aiobotocore
4
- from botocore import UNSIGNED
5
- from botocore .config import Config
6
4
import json
5
+ import time
7
6
8
7
from abc import ABC , abstractmethod
9
8
@@ -17,6 +16,7 @@ def __init__(self,
17
16
aws_region ):
18
17
self ._lambda_function_name = lambda_function_name
19
18
self ._aws_region = aws_region
19
+ self ._response_time_lambda = None
20
20
self .aws_lambda_detailed_metrics = pd .DataFrame (columns = ['learner' , 'i_rep' , 'i_fold' ,
21
21
'RequestId' , 'Duration' , 'Billed Duration' ,
22
22
'Memory Size' , 'Max Memory Used' , 'Init Duration' ,
@@ -43,6 +43,7 @@ def aws_lambda_metrics(self):
43
43
metrics ['Memory Size (MB; last request)' ] = df ['Memory Size' ].iloc [- 1 ]
44
44
metrics ['Max Memory Used (MB)' ] = df ['Max Memory Used' ].max ()
45
45
metrics ['Avg Max Memory Used (MB)' ] = df ['Max Memory Used' ].mean ()
46
+ metrics ['Response Time' ] = self ._response_time_lambda
46
47
return metrics
47
48
48
49
@abstractmethod
@@ -85,7 +86,10 @@ def fit_aws_lambda(self, n_lambdas_cv='n_folds * n_rep', seed=None, keep_scores=
85
86
86
87
def invoke_lambdas (self , payloads , smpls , params_names , n_obs , n_rep , n_jobs_cv ):
87
88
loop = asyncio .get_event_loop ()
89
+ start_time = time .time ()
88
90
results = loop .run_until_complete (self .__invoke_aws_lambdas (payloads ))
91
+ end_time = time .time ()
92
+ self ._response_time_lambda = end_time - start_time
89
93
preds , requests = _extract_preds (results , smpls , params_names ,
90
94
n_obs , n_rep , n_jobs_cv )
91
95
df_lambda_metrics = _extract_lambda_metrics (results )
0 commit comments