-
Notifications
You must be signed in to change notification settings - Fork 486
Closed
Labels
Description
Discussde #66
This is the APIs I'm going to refactor and add.
API | input | process | output |
---|---|---|---|
CreateStudy | StudyConfig | Save Study conf to DB CreateStudyID |
StudyID error |
GetSuggestions | StudyID SuggestionAlgorithmName RequestNum |
Create Trials from Suggesiton | []TrialID error |
RunTrials | StudyID []TrialID Worker |
Request to run Trial to worker Set Trial status running |
error |
StopTrials | StudyID []TrialID IsComplete |
Stop Trial worker Set Trial Status Complete |
[]TrialID error |
ShouldStopTrial | StudyID EarlyStopAlgorithm |
Get ShuoulStop Trials | []TrialID error |
SetSuggestionParameter | StudyID SuggestionAlgorithmName AlgorithmParam |
Set Parameters | error |
SetEarlyStoppingParameter | StudyID EarlyStoppingAlgorithmName EarlyStoppingParam |
Set Parameters | error |
GetMetrics | []TrialID | Get Metrics of Trials | []Metrics error |
SaveStudy | StudyID | Save StudyInfo to ModelDB | error |
SaveModels | StudyID []TrialID []Metrics |
Save Trial and Metrics Info to ModelDB | error |
Typical usage is like below.
studyId, _ := grpc.CreateStudy(studyConfig)
grpc.SetSuggestionParameter(studyId, "random", suggestParam)
grpc.SetEarlyStoppingParameter(studyId, "medianstopping", earlystopParam)
grpc.SaveStudy(studyId)
for IsStudyComleted() {
trials, _ := grpc.GetSuggesitons(studyId, "random", 10)
grpc.RunTrials(studyId, trials)
for {
metrics, workerState, _ := grpc.GetMetrics(studyId, trials)
if AllWorkerCompleted(workerState) {
grpc.CompleteTrial(studyId, trials, true)
grpc.SaveModels(studyId, trials, metrics)
break
}
shouldStops := grpc.ShouldStopTrial(studyId, trials)
grpc.CompleteTrial(studyId, shouldStops, false)
deleteShuldStopsFromTrialList(trials, shouldStops)
}
}
WDYT? @ddysher @gaocegege @libbyandhelen