diff --git a/cmd/manager/main.go b/cmd/manager/main.go index fe7d388f091..7754876024a 100644 --- a/cmd/manager/main.go +++ b/cmd/manager/main.go @@ -79,6 +79,11 @@ func (s *server) GetTrials(ctx context.Context, in *api_pb.GetTrialsRequest) (*a return &api_pb.GetTrialsReply{Trials: tl}, err } +func (s *server) GetTrial(ctx context.Context, in *api_pb.GetTrialRequest) (*api_pb.GetTrialReply, error) { + t, err := dbIf.GetTrial(in.TrialId) + return &api_pb.GetTrialReply{Trial: t}, err +} + func (s *server) GetSuggestions(ctx context.Context, in *api_pb.GetSuggestionsRequest) (*api_pb.GetSuggestionsReply, error) { if in.SuggestionAlgorithm == "" { return &api_pb.GetSuggestionsReply{Trials: []*api_pb.Trial{}}, errors.New("No suggest algorithm specified") diff --git a/pkg/api/api.pb.go b/pkg/api/api.pb.go index cbf55bdee78..118750edb43 100644 --- a/pkg/api/api.pb.go +++ b/pkg/api/api.pb.go @@ -32,6 +32,8 @@ It has these top-level messages: CreateTrialReply GetTrialsRequest GetTrialsReply + GetTrialRequest + GetTrialReply RegisterWorkerRequest RegisterWorkerReply StopWorkersRequest @@ -413,7 +415,7 @@ func (m *MetricsLog) GetValues() []*MetricsValueTime { } // * -// Parameter for Suggestion service. Key value format. +// Parameter for Suggestion service. Key-value format. type SuggestionParameter struct { Name string `protobuf:"bytes,1,opt,name=name" json:"name,omitempty"` Value string `protobuf:"bytes,2,opt,name=value" json:"value,omitempty"` @@ -439,7 +441,7 @@ func (m *SuggestionParameter) GetValue() string { } // * -// Parameter for EarlyStopping service. Key value format. +// Parameter for EarlyStopping service. Key-value format. type EarlyStoppingParameter struct { Name string `protobuf:"bytes,1,opt,name=name" json:"name,omitempty"` Value string `protobuf:"bytes,2,opt,name=value" json:"value,omitempty"` @@ -465,7 +467,7 @@ func (m *EarlyStoppingParameter) GetValue() string { } // * -// Tag for each resources. +// Tag for each resource. type Tag struct { Name string `protobuf:"bytes,1,opt,name=name" json:"name,omitempty"` Value string `protobuf:"bytes,2,opt,name=value" json:"value,omitempty"` @@ -534,7 +536,7 @@ func (m *StudyOverview) GetDescription() string { // * // A set of Hyperparameter. -// In a study, multiple trials are evaluated by worker. +// In a study, multiple trials are evaluated by workers. // Suggestion service will generate next trials. type Trial struct { TrialId string `protobuf:"bytes,1,opt,name=trial_id,json=trialId" json:"trial_id,omitempty"` @@ -765,7 +767,7 @@ func (m *StudyConfig_ParameterConfigs) GetConfigs() []*ParameterConfig { // * // Create a Study from Study Config. -// Generate a unique ID and store the Study to DB. +// Generate an unique ID and store the Study to DB. type CreateStudyRequest struct { StudyConfig *StudyConfig `protobuf:"bytes,1,opt,name=study_config,json=studyConfig" json:"study_config,omitempty"` } @@ -866,7 +868,7 @@ func (m *GetStudyListReply) GetStudyOverviews() []*StudyOverview { // * // Create a Trial from Trial Config. -// Generate a unique ID and store the Trial to DB. +// Generate an unique ID and store the Trial to DB. type CreateTrialRequest struct { Trial *Trial `protobuf:"bytes,1,opt,name=trial" json:"trial,omitempty"` } @@ -937,9 +939,45 @@ func (m *GetTrialsReply) GetTrials() []*Trial { return nil } +// * +// Get a trial configuration from DB by trial ID +type GetTrialRequest struct { + TrialId string `protobuf:"bytes,1,opt,name=trial_id,json=trialId" json:"trial_id,omitempty"` +} + +func (m *GetTrialRequest) Reset() { *m = GetTrialRequest{} } +func (m *GetTrialRequest) String() string { return proto.CompactTextString(m) } +func (*GetTrialRequest) ProtoMessage() {} +func (*GetTrialRequest) Descriptor() ([]byte, []int) { return fileDescriptor0, []int{24} } + +func (m *GetTrialRequest) GetTrialId() string { + if m != nil { + return m.TrialId + } + return "" +} + +// * +// Return a trial configuration by specified trial ID +type GetTrialReply struct { + Trial *Trial `protobuf:"bytes,1,opt,name=trial" json:"trial,omitempty"` +} + +func (m *GetTrialReply) Reset() { *m = GetTrialReply{} } +func (m *GetTrialReply) String() string { return proto.CompactTextString(m) } +func (*GetTrialReply) ProtoMessage() {} +func (*GetTrialReply) Descriptor() ([]byte, []int) { return fileDescriptor0, []int{25} } + +func (m *GetTrialReply) GetTrial() *Trial { + if m != nil { + return m.Trial + } + return nil +} + // * // Create a Worker from Worker Config. -// Generate a unique ID and store the Worker to DB. +// Generate an unique ID and store the Worker to DB. type RegisterWorkerRequest struct { Worker *Worker `protobuf:"bytes,1,opt,name=worker" json:"worker,omitempty"` } @@ -947,7 +985,7 @@ type RegisterWorkerRequest struct { func (m *RegisterWorkerRequest) Reset() { *m = RegisterWorkerRequest{} } func (m *RegisterWorkerRequest) String() string { return proto.CompactTextString(m) } func (*RegisterWorkerRequest) ProtoMessage() {} -func (*RegisterWorkerRequest) Descriptor() ([]byte, []int) { return fileDescriptor0, []int{24} } +func (*RegisterWorkerRequest) Descriptor() ([]byte, []int) { return fileDescriptor0, []int{26} } func (m *RegisterWorkerRequest) GetWorker() *Worker { if m != nil { @@ -965,7 +1003,7 @@ type RegisterWorkerReply struct { func (m *RegisterWorkerReply) Reset() { *m = RegisterWorkerReply{} } func (m *RegisterWorkerReply) String() string { return proto.CompactTextString(m) } func (*RegisterWorkerReply) ProtoMessage() {} -func (*RegisterWorkerReply) Descriptor() ([]byte, []int) { return fileDescriptor0, []int{25} } +func (*RegisterWorkerReply) Descriptor() ([]byte, []int) { return fileDescriptor0, []int{27} } func (m *RegisterWorkerReply) GetWorkerId() string { if m != nil { @@ -983,7 +1021,7 @@ type StopWorkersRequest struct { func (m *StopWorkersRequest) Reset() { *m = StopWorkersRequest{} } func (m *StopWorkersRequest) String() string { return proto.CompactTextString(m) } func (*StopWorkersRequest) ProtoMessage() {} -func (*StopWorkersRequest) Descriptor() ([]byte, []int) { return fileDescriptor0, []int{26} } +func (*StopWorkersRequest) Descriptor() ([]byte, []int) { return fileDescriptor0, []int{28} } func (m *StopWorkersRequest) GetStudyId() string { if m != nil { @@ -1012,10 +1050,10 @@ type StopWorkersReply struct { func (m *StopWorkersReply) Reset() { *m = StopWorkersReply{} } func (m *StopWorkersReply) String() string { return proto.CompactTextString(m) } func (*StopWorkersReply) ProtoMessage() {} -func (*StopWorkersReply) Descriptor() ([]byte, []int) { return fileDescriptor0, []int{27} } +func (*StopWorkersReply) Descriptor() ([]byte, []int) { return fileDescriptor0, []int{29} } // * -// Get a Worker Configs and Statuses from DB by ID of Study, Trial or Worker. +// Get a configs and status of a Worker from DB by ID of Study, Trial or Worker. type GetWorkersRequest struct { StudyId string `protobuf:"bytes,1,opt,name=study_id,json=studyId" json:"study_id,omitempty"` TrialId string `protobuf:"bytes,2,opt,name=trial_id,json=trialId" json:"trial_id,omitempty"` @@ -1025,7 +1063,7 @@ type GetWorkersRequest struct { func (m *GetWorkersRequest) Reset() { *m = GetWorkersRequest{} } func (m *GetWorkersRequest) String() string { return proto.CompactTextString(m) } func (*GetWorkersRequest) ProtoMessage() {} -func (*GetWorkersRequest) Descriptor() ([]byte, []int) { return fileDescriptor0, []int{28} } +func (*GetWorkersRequest) Descriptor() ([]byte, []int) { return fileDescriptor0, []int{30} } func (m *GetWorkersRequest) GetStudyId() string { if m != nil { @@ -1057,7 +1095,7 @@ type GetWorkersReply struct { func (m *GetWorkersReply) Reset() { *m = GetWorkersReply{} } func (m *GetWorkersReply) String() string { return proto.CompactTextString(m) } func (*GetWorkersReply) ProtoMessage() {} -func (*GetWorkersReply) Descriptor() ([]byte, []int) { return fileDescriptor0, []int{29} } +func (*GetWorkersReply) Descriptor() ([]byte, []int) { return fileDescriptor0, []int{31} } func (m *GetWorkersReply) GetWorkers() []*Worker { if m != nil { @@ -1076,7 +1114,7 @@ type UpdateWorkerStateRequest struct { func (m *UpdateWorkerStateRequest) Reset() { *m = UpdateWorkerStateRequest{} } func (m *UpdateWorkerStateRequest) String() string { return proto.CompactTextString(m) } func (*UpdateWorkerStateRequest) ProtoMessage() {} -func (*UpdateWorkerStateRequest) Descriptor() ([]byte, []int) { return fileDescriptor0, []int{30} } +func (*UpdateWorkerStateRequest) Descriptor() ([]byte, []int) { return fileDescriptor0, []int{32} } func (m *UpdateWorkerStateRequest) GetWorkerId() string { if m != nil { @@ -1098,10 +1136,10 @@ type UpdateWorkerStateReply struct { func (m *UpdateWorkerStateReply) Reset() { *m = UpdateWorkerStateReply{} } func (m *UpdateWorkerStateReply) String() string { return proto.CompactTextString(m) } func (*UpdateWorkerStateReply) ProtoMessage() {} -func (*UpdateWorkerStateReply) Descriptor() ([]byte, []int) { return fileDescriptor0, []int{31} } +func (*UpdateWorkerStateReply) Descriptor() ([]byte, []int) { return fileDescriptor0, []int{33} } // * -// Get a full informations related to specified Workers. +// Get a full information related to specified Workers. // It includes Worker Config, HyperParameters and Metrics Logs. type GetWorkerFullInfoRequest struct { StudyId string `protobuf:"bytes,1,opt,name=study_id,json=studyId" json:"study_id,omitempty"` @@ -1113,7 +1151,7 @@ type GetWorkerFullInfoRequest struct { func (m *GetWorkerFullInfoRequest) Reset() { *m = GetWorkerFullInfoRequest{} } func (m *GetWorkerFullInfoRequest) String() string { return proto.CompactTextString(m) } func (*GetWorkerFullInfoRequest) ProtoMessage() {} -func (*GetWorkerFullInfoRequest) Descriptor() ([]byte, []int) { return fileDescriptor0, []int{32} } +func (*GetWorkerFullInfoRequest) Descriptor() ([]byte, []int) { return fileDescriptor0, []int{34} } func (m *GetWorkerFullInfoRequest) GetStudyId() string { if m != nil { @@ -1152,7 +1190,7 @@ type WorkerFullInfo struct { func (m *WorkerFullInfo) Reset() { *m = WorkerFullInfo{} } func (m *WorkerFullInfo) String() string { return proto.CompactTextString(m) } func (*WorkerFullInfo) ProtoMessage() {} -func (*WorkerFullInfo) Descriptor() ([]byte, []int) { return fileDescriptor0, []int{33} } +func (*WorkerFullInfo) Descriptor() ([]byte, []int) { return fileDescriptor0, []int{35} } func (m *WorkerFullInfo) GetWorker() *Worker { if m != nil { @@ -1182,7 +1220,7 @@ type GetWorkerFullInfoReply struct { func (m *GetWorkerFullInfoReply) Reset() { *m = GetWorkerFullInfoReply{} } func (m *GetWorkerFullInfoReply) String() string { return proto.CompactTextString(m) } func (*GetWorkerFullInfoReply) ProtoMessage() {} -func (*GetWorkerFullInfoReply) Descriptor() ([]byte, []int) { return fileDescriptor0, []int{34} } +func (*GetWorkerFullInfoReply) Descriptor() ([]byte, []int) { return fileDescriptor0, []int{36} } func (m *GetWorkerFullInfoReply) GetWorkerFullInfos() []*WorkerFullInfo { if m != nil { @@ -1202,7 +1240,7 @@ type GetSuggestionsRequest struct { func (m *GetSuggestionsRequest) Reset() { *m = GetSuggestionsRequest{} } func (m *GetSuggestionsRequest) String() string { return proto.CompactTextString(m) } func (*GetSuggestionsRequest) ProtoMessage() {} -func (*GetSuggestionsRequest) Descriptor() ([]byte, []int) { return fileDescriptor0, []int{35} } +func (*GetSuggestionsRequest) Descriptor() ([]byte, []int) { return fileDescriptor0, []int{37} } func (m *GetSuggestionsRequest) GetStudyId() string { if m != nil { @@ -1246,7 +1284,7 @@ type GetSuggestionsReply struct { func (m *GetSuggestionsReply) Reset() { *m = GetSuggestionsReply{} } func (m *GetSuggestionsReply) String() string { return proto.CompactTextString(m) } func (*GetSuggestionsReply) ProtoMessage() {} -func (*GetSuggestionsReply) Descriptor() ([]byte, []int) { return fileDescriptor0, []int{36} } +func (*GetSuggestionsReply) Descriptor() ([]byte, []int) { return fileDescriptor0, []int{38} } func (m *GetSuggestionsReply) GetTrials() []*Trial { if m != nil { @@ -1264,7 +1302,7 @@ type GetShouldStopWorkersRequest struct { func (m *GetShouldStopWorkersRequest) Reset() { *m = GetShouldStopWorkersRequest{} } func (m *GetShouldStopWorkersRequest) String() string { return proto.CompactTextString(m) } func (*GetShouldStopWorkersRequest) ProtoMessage() {} -func (*GetShouldStopWorkersRequest) Descriptor() ([]byte, []int) { return fileDescriptor0, []int{37} } +func (*GetShouldStopWorkersRequest) Descriptor() ([]byte, []int) { return fileDescriptor0, []int{39} } func (m *GetShouldStopWorkersRequest) GetStudyId() string { if m != nil { @@ -1294,7 +1332,7 @@ type GetShouldStopWorkersReply struct { func (m *GetShouldStopWorkersReply) Reset() { *m = GetShouldStopWorkersReply{} } func (m *GetShouldStopWorkersReply) String() string { return proto.CompactTextString(m) } func (*GetShouldStopWorkersReply) ProtoMessage() {} -func (*GetShouldStopWorkersReply) Descriptor() ([]byte, []int) { return fileDescriptor0, []int{38} } +func (*GetShouldStopWorkersReply) Descriptor() ([]byte, []int) { return fileDescriptor0, []int{40} } func (m *GetShouldStopWorkersReply) GetShouldStopWorkerIds() []string { if m != nil { @@ -1312,7 +1350,7 @@ type GetMetricsRequest struct { func (m *GetMetricsRequest) Reset() { *m = GetMetricsRequest{} } func (m *GetMetricsRequest) String() string { return proto.CompactTextString(m) } func (*GetMetricsRequest) ProtoMessage() {} -func (*GetMetricsRequest) Descriptor() ([]byte, []int) { return fileDescriptor0, []int{39} } +func (*GetMetricsRequest) Descriptor() ([]byte, []int) { return fileDescriptor0, []int{41} } func (m *GetMetricsRequest) GetStudyId() string { if m != nil { @@ -1342,7 +1380,7 @@ type GetMetricsReply struct { func (m *GetMetricsReply) Reset() { *m = GetMetricsReply{} } func (m *GetMetricsReply) String() string { return proto.CompactTextString(m) } func (*GetMetricsReply) ProtoMessage() {} -func (*GetMetricsReply) Descriptor() ([]byte, []int) { return fileDescriptor0, []int{40} } +func (*GetMetricsReply) Descriptor() ([]byte, []int) { return fileDescriptor0, []int{42} } func (m *GetMetricsReply) GetMetricsLogSets() []*MetricsLogSet { if m != nil { @@ -1359,7 +1397,7 @@ type ReportMetricsLogsRequest struct { func (m *ReportMetricsLogsRequest) Reset() { *m = ReportMetricsLogsRequest{} } func (m *ReportMetricsLogsRequest) String() string { return proto.CompactTextString(m) } func (*ReportMetricsLogsRequest) ProtoMessage() {} -func (*ReportMetricsLogsRequest) Descriptor() ([]byte, []int) { return fileDescriptor0, []int{41} } +func (*ReportMetricsLogsRequest) Descriptor() ([]byte, []int) { return fileDescriptor0, []int{43} } func (m *ReportMetricsLogsRequest) GetStudyId() string { if m != nil { @@ -1381,7 +1419,7 @@ type ReportMetricsLogsReply struct { func (m *ReportMetricsLogsReply) Reset() { *m = ReportMetricsLogsReply{} } func (m *ReportMetricsLogsReply) String() string { return proto.CompactTextString(m) } func (*ReportMetricsLogsReply) ProtoMessage() {} -func (*ReportMetricsLogsReply) Descriptor() ([]byte, []int) { return fileDescriptor0, []int{42} } +func (*ReportMetricsLogsReply) Descriptor() ([]byte, []int) { return fileDescriptor0, []int{44} } type ModelInfo struct { StudyName string `protobuf:"bytes,1,opt,name=study_name,json=studyName" json:"study_name,omitempty"` @@ -1394,7 +1432,7 @@ type ModelInfo struct { func (m *ModelInfo) Reset() { *m = ModelInfo{} } func (m *ModelInfo) String() string { return proto.CompactTextString(m) } func (*ModelInfo) ProtoMessage() {} -func (*ModelInfo) Descriptor() ([]byte, []int) { return fileDescriptor0, []int{43} } +func (*ModelInfo) Descriptor() ([]byte, []int) { return fileDescriptor0, []int{45} } func (m *ModelInfo) GetStudyName() string { if m != nil { @@ -1439,7 +1477,7 @@ type DataSetInfo struct { func (m *DataSetInfo) Reset() { *m = DataSetInfo{} } func (m *DataSetInfo) String() string { return proto.CompactTextString(m) } func (*DataSetInfo) ProtoMessage() {} -func (*DataSetInfo) Descriptor() ([]byte, []int) { return fileDescriptor0, []int{44} } +func (*DataSetInfo) Descriptor() ([]byte, []int) { return fileDescriptor0, []int{46} } func (m *DataSetInfo) GetName() string { if m != nil { @@ -1464,7 +1502,7 @@ type SaveStudyRequest struct { func (m *SaveStudyRequest) Reset() { *m = SaveStudyRequest{} } func (m *SaveStudyRequest) String() string { return proto.CompactTextString(m) } func (*SaveStudyRequest) ProtoMessage() {} -func (*SaveStudyRequest) Descriptor() ([]byte, []int) { return fileDescriptor0, []int{45} } +func (*SaveStudyRequest) Descriptor() ([]byte, []int) { return fileDescriptor0, []int{47} } func (m *SaveStudyRequest) GetStudyName() string { if m != nil { @@ -1493,7 +1531,7 @@ type SaveStudyReply struct { func (m *SaveStudyReply) Reset() { *m = SaveStudyReply{} } func (m *SaveStudyReply) String() string { return proto.CompactTextString(m) } func (*SaveStudyReply) ProtoMessage() {} -func (*SaveStudyReply) Descriptor() ([]byte, []int) { return fileDescriptor0, []int{46} } +func (*SaveStudyReply) Descriptor() ([]byte, []int) { return fileDescriptor0, []int{48} } type SaveModelRequest struct { Model *ModelInfo `protobuf:"bytes,1,opt,name=model" json:"model,omitempty"` @@ -1504,7 +1542,7 @@ type SaveModelRequest struct { func (m *SaveModelRequest) Reset() { *m = SaveModelRequest{} } func (m *SaveModelRequest) String() string { return proto.CompactTextString(m) } func (*SaveModelRequest) ProtoMessage() {} -func (*SaveModelRequest) Descriptor() ([]byte, []int) { return fileDescriptor0, []int{47} } +func (*SaveModelRequest) Descriptor() ([]byte, []int) { return fileDescriptor0, []int{49} } func (m *SaveModelRequest) GetModel() *ModelInfo { if m != nil { @@ -1533,7 +1571,7 @@ type SaveModelReply struct { func (m *SaveModelReply) Reset() { *m = SaveModelReply{} } func (m *SaveModelReply) String() string { return proto.CompactTextString(m) } func (*SaveModelReply) ProtoMessage() {} -func (*SaveModelReply) Descriptor() ([]byte, []int) { return fileDescriptor0, []int{48} } +func (*SaveModelReply) Descriptor() ([]byte, []int) { return fileDescriptor0, []int{50} } type GetSavedStudiesRequest struct { } @@ -1541,7 +1579,7 @@ type GetSavedStudiesRequest struct { func (m *GetSavedStudiesRequest) Reset() { *m = GetSavedStudiesRequest{} } func (m *GetSavedStudiesRequest) String() string { return proto.CompactTextString(m) } func (*GetSavedStudiesRequest) ProtoMessage() {} -func (*GetSavedStudiesRequest) Descriptor() ([]byte, []int) { return fileDescriptor0, []int{49} } +func (*GetSavedStudiesRequest) Descriptor() ([]byte, []int) { return fileDescriptor0, []int{51} } type GetSavedStudiesReply struct { Studies []*StudyOverview `protobuf:"bytes,1,rep,name=studies" json:"studies,omitempty"` @@ -1550,7 +1588,7 @@ type GetSavedStudiesReply struct { func (m *GetSavedStudiesReply) Reset() { *m = GetSavedStudiesReply{} } func (m *GetSavedStudiesReply) String() string { return proto.CompactTextString(m) } func (*GetSavedStudiesReply) ProtoMessage() {} -func (*GetSavedStudiesReply) Descriptor() ([]byte, []int) { return fileDescriptor0, []int{50} } +func (*GetSavedStudiesReply) Descriptor() ([]byte, []int) { return fileDescriptor0, []int{52} } func (m *GetSavedStudiesReply) GetStudies() []*StudyOverview { if m != nil { @@ -1566,7 +1604,7 @@ type GetSavedModelsRequest struct { func (m *GetSavedModelsRequest) Reset() { *m = GetSavedModelsRequest{} } func (m *GetSavedModelsRequest) String() string { return proto.CompactTextString(m) } func (*GetSavedModelsRequest) ProtoMessage() {} -func (*GetSavedModelsRequest) Descriptor() ([]byte, []int) { return fileDescriptor0, []int{51} } +func (*GetSavedModelsRequest) Descriptor() ([]byte, []int) { return fileDescriptor0, []int{53} } func (m *GetSavedModelsRequest) GetStudyName() string { if m != nil { @@ -1582,7 +1620,7 @@ type GetSavedModelsReply struct { func (m *GetSavedModelsReply) Reset() { *m = GetSavedModelsReply{} } func (m *GetSavedModelsReply) String() string { return proto.CompactTextString(m) } func (*GetSavedModelsReply) ProtoMessage() {} -func (*GetSavedModelsReply) Descriptor() ([]byte, []int) { return fileDescriptor0, []int{52} } +func (*GetSavedModelsReply) Descriptor() ([]byte, []int) { return fileDescriptor0, []int{54} } func (m *GetSavedModelsReply) GetModels() []*ModelInfo { if m != nil { @@ -1599,7 +1637,7 @@ type GetSavedModelRequest struct { func (m *GetSavedModelRequest) Reset() { *m = GetSavedModelRequest{} } func (m *GetSavedModelRequest) String() string { return proto.CompactTextString(m) } func (*GetSavedModelRequest) ProtoMessage() {} -func (*GetSavedModelRequest) Descriptor() ([]byte, []int) { return fileDescriptor0, []int{53} } +func (*GetSavedModelRequest) Descriptor() ([]byte, []int) { return fileDescriptor0, []int{55} } func (m *GetSavedModelRequest) GetStudyName() string { if m != nil { @@ -1622,7 +1660,7 @@ type GetSavedModelReply struct { func (m *GetSavedModelReply) Reset() { *m = GetSavedModelReply{} } func (m *GetSavedModelReply) String() string { return proto.CompactTextString(m) } func (*GetSavedModelReply) ProtoMessage() {} -func (*GetSavedModelReply) Descriptor() ([]byte, []int) { return fileDescriptor0, []int{54} } +func (*GetSavedModelReply) Descriptor() ([]byte, []int) { return fileDescriptor0, []int{56} } func (m *GetSavedModelReply) GetModel() *ModelInfo { if m != nil { @@ -1641,7 +1679,7 @@ type SetSuggestionParametersRequest struct { func (m *SetSuggestionParametersRequest) Reset() { *m = SetSuggestionParametersRequest{} } func (m *SetSuggestionParametersRequest) String() string { return proto.CompactTextString(m) } func (*SetSuggestionParametersRequest) ProtoMessage() {} -func (*SetSuggestionParametersRequest) Descriptor() ([]byte, []int) { return fileDescriptor0, []int{55} } +func (*SetSuggestionParametersRequest) Descriptor() ([]byte, []int) { return fileDescriptor0, []int{57} } func (m *SetSuggestionParametersRequest) GetStudyId() string { if m != nil { @@ -1678,7 +1716,7 @@ type SetSuggestionParametersReply struct { func (m *SetSuggestionParametersReply) Reset() { *m = SetSuggestionParametersReply{} } func (m *SetSuggestionParametersReply) String() string { return proto.CompactTextString(m) } func (*SetSuggestionParametersReply) ProtoMessage() {} -func (*SetSuggestionParametersReply) Descriptor() ([]byte, []int) { return fileDescriptor0, []int{56} } +func (*SetSuggestionParametersReply) Descriptor() ([]byte, []int) { return fileDescriptor0, []int{58} } func (m *SetSuggestionParametersReply) GetParamId() string { if m != nil { @@ -1694,7 +1732,7 @@ type GetSuggestionParametersRequest struct { func (m *GetSuggestionParametersRequest) Reset() { *m = GetSuggestionParametersRequest{} } func (m *GetSuggestionParametersRequest) String() string { return proto.CompactTextString(m) } func (*GetSuggestionParametersRequest) ProtoMessage() {} -func (*GetSuggestionParametersRequest) Descriptor() ([]byte, []int) { return fileDescriptor0, []int{57} } +func (*GetSuggestionParametersRequest) Descriptor() ([]byte, []int) { return fileDescriptor0, []int{59} } func (m *GetSuggestionParametersRequest) GetParamId() string { if m != nil { @@ -1710,7 +1748,7 @@ type GetSuggestionParametersReply struct { func (m *GetSuggestionParametersReply) Reset() { *m = GetSuggestionParametersReply{} } func (m *GetSuggestionParametersReply) String() string { return proto.CompactTextString(m) } func (*GetSuggestionParametersReply) ProtoMessage() {} -func (*GetSuggestionParametersReply) Descriptor() ([]byte, []int) { return fileDescriptor0, []int{58} } +func (*GetSuggestionParametersReply) Descriptor() ([]byte, []int) { return fileDescriptor0, []int{60} } func (m *GetSuggestionParametersReply) GetSuggestionParameters() []*SuggestionParameter { if m != nil { @@ -1727,7 +1765,7 @@ func (m *GetSuggestionParameterListRequest) Reset() { *m = GetSuggestion func (m *GetSuggestionParameterListRequest) String() string { return proto.CompactTextString(m) } func (*GetSuggestionParameterListRequest) ProtoMessage() {} func (*GetSuggestionParameterListRequest) Descriptor() ([]byte, []int) { - return fileDescriptor0, []int{59} + return fileDescriptor0, []int{61} } func (m *GetSuggestionParameterListRequest) GetStudyId() string { @@ -1746,7 +1784,7 @@ type SuggestionParameterSet struct { func (m *SuggestionParameterSet) Reset() { *m = SuggestionParameterSet{} } func (m *SuggestionParameterSet) String() string { return proto.CompactTextString(m) } func (*SuggestionParameterSet) ProtoMessage() {} -func (*SuggestionParameterSet) Descriptor() ([]byte, []int) { return fileDescriptor0, []int{60} } +func (*SuggestionParameterSet) Descriptor() ([]byte, []int) { return fileDescriptor0, []int{62} } func (m *SuggestionParameterSet) GetParamId() string { if m != nil { @@ -1777,7 +1815,7 @@ func (m *GetSuggestionParameterListReply) Reset() { *m = GetSuggestionPa func (m *GetSuggestionParameterListReply) String() string { return proto.CompactTextString(m) } func (*GetSuggestionParameterListReply) ProtoMessage() {} func (*GetSuggestionParameterListReply) Descriptor() ([]byte, []int) { - return fileDescriptor0, []int{61} + return fileDescriptor0, []int{63} } func (m *GetSuggestionParameterListReply) GetSuggestionParameterSets() []*SuggestionParameterSet { @@ -1794,7 +1832,7 @@ type StopSuggestionRequest struct { func (m *StopSuggestionRequest) Reset() { *m = StopSuggestionRequest{} } func (m *StopSuggestionRequest) String() string { return proto.CompactTextString(m) } func (*StopSuggestionRequest) ProtoMessage() {} -func (*StopSuggestionRequest) Descriptor() ([]byte, []int) { return fileDescriptor0, []int{62} } +func (*StopSuggestionRequest) Descriptor() ([]byte, []int) { return fileDescriptor0, []int{64} } func (m *StopSuggestionRequest) GetStudyId() string { if m != nil { @@ -1809,7 +1847,7 @@ type StopSuggestionReply struct { func (m *StopSuggestionReply) Reset() { *m = StopSuggestionReply{} } func (m *StopSuggestionReply) String() string { return proto.CompactTextString(m) } func (*StopSuggestionReply) ProtoMessage() {} -func (*StopSuggestionReply) Descriptor() ([]byte, []int) { return fileDescriptor0, []int{63} } +func (*StopSuggestionReply) Descriptor() ([]byte, []int) { return fileDescriptor0, []int{65} } type SetEarlyStoppingParametersRequest struct { StudyId string `protobuf:"bytes,1,opt,name=study_id,json=studyId" json:"study_id,omitempty"` @@ -1822,7 +1860,7 @@ func (m *SetEarlyStoppingParametersRequest) Reset() { *m = SetEarlyStopp func (m *SetEarlyStoppingParametersRequest) String() string { return proto.CompactTextString(m) } func (*SetEarlyStoppingParametersRequest) ProtoMessage() {} func (*SetEarlyStoppingParametersRequest) Descriptor() ([]byte, []int) { - return fileDescriptor0, []int{64} + return fileDescriptor0, []int{66} } func (m *SetEarlyStoppingParametersRequest) GetStudyId() string { @@ -1861,7 +1899,7 @@ func (m *SetEarlyStoppingParametersReply) Reset() { *m = SetEarlyStoppin func (m *SetEarlyStoppingParametersReply) String() string { return proto.CompactTextString(m) } func (*SetEarlyStoppingParametersReply) ProtoMessage() {} func (*SetEarlyStoppingParametersReply) Descriptor() ([]byte, []int) { - return fileDescriptor0, []int{65} + return fileDescriptor0, []int{67} } func (m *SetEarlyStoppingParametersReply) GetParamId() string { @@ -1879,7 +1917,7 @@ func (m *GetEarlyStoppingParametersRequest) Reset() { *m = GetEarlyStopp func (m *GetEarlyStoppingParametersRequest) String() string { return proto.CompactTextString(m) } func (*GetEarlyStoppingParametersRequest) ProtoMessage() {} func (*GetEarlyStoppingParametersRequest) Descriptor() ([]byte, []int) { - return fileDescriptor0, []int{66} + return fileDescriptor0, []int{68} } func (m *GetEarlyStoppingParametersRequest) GetParamId() string { @@ -1897,7 +1935,7 @@ func (m *GetEarlyStoppingParametersReply) Reset() { *m = GetEarlyStoppin func (m *GetEarlyStoppingParametersReply) String() string { return proto.CompactTextString(m) } func (*GetEarlyStoppingParametersReply) ProtoMessage() {} func (*GetEarlyStoppingParametersReply) Descriptor() ([]byte, []int) { - return fileDescriptor0, []int{67} + return fileDescriptor0, []int{69} } func (m *GetEarlyStoppingParametersReply) GetEarlyStoppingParameters() []*EarlyStoppingParameter { @@ -1915,7 +1953,7 @@ func (m *GetEarlyStoppingParameterListRequest) Reset() { *m = GetEarlySt func (m *GetEarlyStoppingParameterListRequest) String() string { return proto.CompactTextString(m) } func (*GetEarlyStoppingParameterListRequest) ProtoMessage() {} func (*GetEarlyStoppingParameterListRequest) Descriptor() ([]byte, []int) { - return fileDescriptor0, []int{68} + return fileDescriptor0, []int{70} } func (m *GetEarlyStoppingParameterListRequest) GetStudyId() string { @@ -1934,7 +1972,7 @@ type EarlyStoppingParameterSet struct { func (m *EarlyStoppingParameterSet) Reset() { *m = EarlyStoppingParameterSet{} } func (m *EarlyStoppingParameterSet) String() string { return proto.CompactTextString(m) } func (*EarlyStoppingParameterSet) ProtoMessage() {} -func (*EarlyStoppingParameterSet) Descriptor() ([]byte, []int) { return fileDescriptor0, []int{69} } +func (*EarlyStoppingParameterSet) Descriptor() ([]byte, []int) { return fileDescriptor0, []int{71} } func (m *EarlyStoppingParameterSet) GetParamId() string { if m != nil { @@ -1965,7 +2003,7 @@ func (m *GetEarlyStoppingParameterListReply) Reset() { *m = GetEarlyStop func (m *GetEarlyStoppingParameterListReply) String() string { return proto.CompactTextString(m) } func (*GetEarlyStoppingParameterListReply) ProtoMessage() {} func (*GetEarlyStoppingParameterListReply) Descriptor() ([]byte, []int) { - return fileDescriptor0, []int{70} + return fileDescriptor0, []int{72} } func (m *GetEarlyStoppingParameterListReply) GetEarlyStoppingParameterSets() []*EarlyStoppingParameterSet { @@ -2001,6 +2039,8 @@ func init() { proto.RegisterType((*CreateTrialReply)(nil), "api.CreateTrialReply") proto.RegisterType((*GetTrialsRequest)(nil), "api.GetTrialsRequest") proto.RegisterType((*GetTrialsReply)(nil), "api.GetTrialsReply") + proto.RegisterType((*GetTrialRequest)(nil), "api.GetTrialRequest") + proto.RegisterType((*GetTrialReply)(nil), "api.GetTrialReply") proto.RegisterType((*RegisterWorkerRequest)(nil), "api.RegisterWorkerRequest") proto.RegisterType((*RegisterWorkerReply)(nil), "api.RegisterWorkerReply") proto.RegisterType((*StopWorkersRequest)(nil), "api.StopWorkersRequest") @@ -2082,17 +2122,20 @@ type ManagerClient interface { // Get a Trial Configs from DB by ID of Study. GetTrials(ctx context.Context, in *GetTrialsRequest, opts ...grpc.CallOption) (*GetTrialsReply, error) // * + // Get a Trial Configuration from DB by ID of Trial. + GetTrial(ctx context.Context, in *GetTrialRequest, opts ...grpc.CallOption) (*GetTrialReply, error) + // * // Create a Worker from Worker Config. // Generate a unique ID and store the Worker to DB. RegisterWorker(ctx context.Context, in *RegisterWorkerRequest, opts ...grpc.CallOption) (*RegisterWorkerReply, error) // * - // Get a Worker Configs and Statuses from DB by ID of Study, Trial or Worker. + // Get a Worker Configs and Status from DB by ID of Study, Trial or Worker. GetWorkers(ctx context.Context, in *GetWorkersRequest, opts ...grpc.CallOption) (*GetWorkersReply, error) // * // Update a Status of Worker. UpdateWorkerState(ctx context.Context, in *UpdateWorkerStateRequest, opts ...grpc.CallOption) (*UpdateWorkerStateReply, error) // * - // Get a full informations related to specified Workers. + // Get full information related to specified Workers. // It includes Worker Config, HyperParameters and Metrics Logs. GetWorkerFullInfo(ctx context.Context, in *GetWorkerFullInfoRequest, opts ...grpc.CallOption) (*GetWorkerFullInfoReply, error) // * @@ -2105,8 +2148,8 @@ type ManagerClient interface { GetMetrics(ctx context.Context, in *GetMetricsRequest, opts ...grpc.CallOption) (*GetMetricsReply, error) // * // Create or Update parameter set for a suggestion service. - // When you specified a ID of parameter set, it will update the parameter set by your request. - // When you specified no ID, it will create a new parameter set for corresponding study and suggestion service. + // If you specify an ID of parameter set, it will update the parameter set by your request. + // If you don't specify an ID, it will create a new parameter set for corresponding study and suggestion service. // The parameters are key-value format. SetSuggestionParameters(ctx context.Context, in *SetSuggestionParametersRequest, opts ...grpc.CallOption) (*SetSuggestionParametersReply, error) // * @@ -2182,6 +2225,15 @@ func (c *managerClient) GetTrials(ctx context.Context, in *GetTrialsRequest, opt return out, nil } +func (c *managerClient) GetTrial(ctx context.Context, in *GetTrialRequest, opts ...grpc.CallOption) (*GetTrialReply, error) { + out := new(GetTrialReply) + err := grpc.Invoke(ctx, "/api.Manager/GetTrial", in, out, c.cc, opts...) + if err != nil { + return nil, err + } + return out, nil +} + func (c *managerClient) RegisterWorker(ctx context.Context, in *RegisterWorkerRequest, opts ...grpc.CallOption) (*RegisterWorkerReply, error) { out := new(RegisterWorkerReply) err := grpc.Invoke(ctx, "/api.Manager/RegisterWorker", in, out, c.cc, opts...) @@ -2365,17 +2417,20 @@ type ManagerServer interface { // Get a Trial Configs from DB by ID of Study. GetTrials(context.Context, *GetTrialsRequest) (*GetTrialsReply, error) // * + // Get a Trial Configuration from DB by ID of Trial. + GetTrial(context.Context, *GetTrialRequest) (*GetTrialReply, error) + // * // Create a Worker from Worker Config. // Generate a unique ID and store the Worker to DB. RegisterWorker(context.Context, *RegisterWorkerRequest) (*RegisterWorkerReply, error) // * - // Get a Worker Configs and Statuses from DB by ID of Study, Trial or Worker. + // Get a Worker Configs and Status from DB by ID of Study, Trial or Worker. GetWorkers(context.Context, *GetWorkersRequest) (*GetWorkersReply, error) // * // Update a Status of Worker. UpdateWorkerState(context.Context, *UpdateWorkerStateRequest) (*UpdateWorkerStateReply, error) // * - // Get a full informations related to specified Workers. + // Get full information related to specified Workers. // It includes Worker Config, HyperParameters and Metrics Logs. GetWorkerFullInfo(context.Context, *GetWorkerFullInfoRequest) (*GetWorkerFullInfoReply, error) // * @@ -2388,8 +2443,8 @@ type ManagerServer interface { GetMetrics(context.Context, *GetMetricsRequest) (*GetMetricsReply, error) // * // Create or Update parameter set for a suggestion service. - // When you specified a ID of parameter set, it will update the parameter set by your request. - // When you specified no ID, it will create a new parameter set for corresponding study and suggestion service. + // If you specify an ID of parameter set, it will update the parameter set by your request. + // If you don't specify an ID, it will create a new parameter set for corresponding study and suggestion service. // The parameters are key-value format. SetSuggestionParameters(context.Context, *SetSuggestionParametersRequest) (*SetSuggestionParametersReply, error) // * @@ -2506,6 +2561,24 @@ func _Manager_GetTrials_Handler(srv interface{}, ctx context.Context, dec func(i return interceptor(ctx, in, info, handler) } +func _Manager_GetTrial_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) { + in := new(GetTrialRequest) + if err := dec(in); err != nil { + return nil, err + } + if interceptor == nil { + return srv.(ManagerServer).GetTrial(ctx, in) + } + info := &grpc.UnaryServerInfo{ + Server: srv, + FullMethod: "/api.Manager/GetTrial", + } + handler := func(ctx context.Context, req interface{}) (interface{}, error) { + return srv.(ManagerServer).GetTrial(ctx, req.(*GetTrialRequest)) + } + return interceptor(ctx, in, info, handler) +} + func _Manager_RegisterWorker_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) { in := new(RegisterWorkerRequest) if err := dec(in); err != nil { @@ -2854,6 +2927,10 @@ var _Manager_serviceDesc = grpc.ServiceDesc{ MethodName: "GetTrials", Handler: _Manager_GetTrials_Handler, }, + { + MethodName: "GetTrial", + Handler: _Manager_GetTrial_Handler, + }, { MethodName: "RegisterWorker", Handler: _Manager_RegisterWorker_Handler, @@ -3062,179 +3139,182 @@ var _EarlyStopping_serviceDesc = grpc.ServiceDesc{ func init() { proto.RegisterFile("api.proto", fileDescriptor0) } var fileDescriptor0 = []byte{ - // 2783 bytes of a gzipped FileDescriptorProto - 0x1f, 0x8b, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0xff, 0xbc, 0x5a, 0x4b, 0x73, 0x1b, 0xc7, - 0xf1, 0xf7, 0x02, 0x7c, 0xa1, 0x41, 0x80, 0xe0, 0xf0, 0xb5, 0x04, 0x1f, 0x22, 0x47, 0xb4, 0x44, - 0xeb, 0x41, 0xda, 0x90, 0x2d, 0x5b, 0xb4, 0xfc, 0x77, 0x51, 0x24, 0x85, 0x3f, 0xca, 0x24, 0xc8, - 0x5a, 0x40, 0xa1, 0x1f, 0x55, 0x46, 0x2d, 0x89, 0x21, 0xb4, 0x16, 0x80, 0xdd, 0x60, 0x97, 0x92, - 0x29, 0x97, 0x2f, 0xb9, 0x24, 0x97, 0x54, 0x39, 0x49, 0xe5, 0x92, 0x83, 0x73, 0xcb, 0x07, 0x48, - 0x55, 0x0e, 0xb9, 0xe4, 0x9e, 0x43, 0x4e, 0xa9, 0x54, 0xe5, 0x03, 0xe4, 0x96, 0x7c, 0x88, 0xd4, - 0x3c, 0x76, 0x77, 0x76, 0xb1, 0xbb, 0x84, 0x29, 0x2b, 0x37, 0xcc, 0x4c, 0x3f, 0x7e, 0xdd, 0xd3, - 0xdd, 0xd3, 0xdb, 0x24, 0x64, 0x74, 0xcb, 0xd8, 0xb0, 0x7a, 0xa6, 0x63, 0xa2, 0xb4, 0x6e, 0x19, - 0xc5, 0xc5, 0x96, 0x69, 0xb6, 0xda, 0x64, 0x53, 0xb7, 0x8c, 0x4d, 0xbd, 0xdb, 0x35, 0x1d, 0xdd, - 0x31, 0xcc, 0xae, 0xcd, 0x49, 0x70, 0x19, 0x72, 0x8f, 0x89, 0x6e, 0x1b, 0x27, 0x6d, 0x52, 0xb3, - 0xf4, 0x53, 0x82, 0x0a, 0x90, 0xee, 0xe8, 0x5f, 0xab, 0xca, 0x8a, 0xb2, 0x9e, 0xd1, 0xe8, 0x4f, - 0xb6, 0x63, 0x74, 0xd5, 0x94, 0xd8, 0x31, 0xba, 0x08, 0xc1, 0x50, 0xdb, 0xb0, 0x1d, 0x35, 0xbd, - 0x92, 0x5e, 0xcf, 0x68, 0xec, 0x37, 0xfe, 0x4e, 0x81, 0x89, 0x23, 0xbd, 0xa7, 0x77, 0x88, 0x43, - 0x7a, 0x3b, 0x66, 0xf7, 0xcc, 0x68, 0x51, 0xba, 0xae, 0xde, 0x21, 0x42, 0x18, 0xfb, 0x8d, 0x1e, - 0x40, 0xde, 0x72, 0xc9, 0x1a, 0xce, 0x85, 0x45, 0x98, 0xe0, 0x7c, 0x09, 0x6d, 0x50, 0xdc, 0x9e, - 0x84, 0xfa, 0x85, 0x45, 0xb4, 0x9c, 0x25, 0x2f, 0xd1, 0x06, 0x8c, 0x9d, 0x09, 0xac, 0x6a, 0x7a, - 0x45, 0x59, 0xcf, 0x0a, 0xa6, 0x80, 0x01, 0x9a, 0x47, 0x83, 0x2d, 0xc8, 0x78, 0xf2, 0x7e, 0x6c, - 0x2c, 0xd3, 0x30, 0xfc, 0x5c, 0x6f, 0x9f, 0x73, 0x20, 0x19, 0x8d, 0x2f, 0xf0, 0xaf, 0x14, 0xc8, - 0x1d, 0x10, 0xa7, 0x67, 0x9c, 0xda, 0xfb, 0x66, 0xab, 0x46, 0x1c, 0xb4, 0x00, 0x99, 0x17, 0x66, - 0xef, 0x19, 0xe9, 0x35, 0x8c, 0xa6, 0xd0, 0x3d, 0xc6, 0x37, 0x2a, 0x4d, 0x54, 0x82, 0xf1, 0x0e, - 0xa7, 0x6e, 0xb4, 0xcd, 0x96, 0xad, 0xa6, 0x56, 0xd2, 0xeb, 0xd9, 0xd2, 0x04, 0xd3, 0xee, 0x8b, - 0xd1, 0xb2, 0x1d, 0xef, 0xb7, 0x8d, 0x36, 0x21, 0x27, 0x04, 0xda, 0x8e, 0xee, 0x9c, 0xdb, 0x0c, - 0x40, 0xbe, 0x04, 0x8c, 0xa9, 0xe6, 0xe8, 0x0e, 0xd1, 0xc6, 0x39, 0x41, 0x8d, 0x9d, 0xe3, 0x7b, - 0x30, 0x2a, 0x64, 0x45, 0xfa, 0xc0, 0x33, 0x24, 0x25, 0x1b, 0xf2, 0x10, 0x0a, 0x82, 0xe9, 0x27, - 0x74, 0x5d, 0x37, 0x3a, 0x84, 0x72, 0x3b, 0x86, 0xcf, 0x4d, 0x7f, 0xc7, 0x70, 0x1f, 0x02, 0xf8, - 0xf0, 0x23, 0xb5, 0xde, 0x85, 0x11, 0x46, 0xea, 0xda, 0x3c, 0x23, 0xdb, 0xec, 0xa9, 0xd4, 0x04, - 0x11, 0xfe, 0x18, 0xa6, 0x6a, 0xe7, 0xad, 0x16, 0xb1, 0x69, 0xe8, 0x26, 0xdf, 0x69, 0x34, 0xa2, - 0x47, 0x30, 0xbb, 0xa7, 0xf7, 0xda, 0x17, 0x35, 0xc7, 0xb4, 0x2c, 0xa3, 0xdb, 0xba, 0x8a, 0x8c, - 0x4d, 0x48, 0xd7, 0xf5, 0xd6, 0x0f, 0x60, 0x78, 0x06, 0xb9, 0x9a, 0x73, 0xde, 0xbc, 0x38, 0x7c, - 0x4e, 0x7a, 0xcf, 0x0d, 0xf2, 0x22, 0x8e, 0xd5, 0x7c, 0xd1, 0x25, 0x3d, 0x97, 0x95, 0x2d, 0x50, - 0x1e, 0x52, 0x46, 0x53, 0xc4, 0x56, 0xca, 0x68, 0xa2, 0x15, 0xc8, 0x36, 0x89, 0x7d, 0xda, 0x33, - 0x2c, 0xea, 0x01, 0x75, 0x88, 0x1d, 0xc8, 0x5b, 0xf8, 0xcf, 0x0a, 0x0c, 0xd7, 0x7b, 0x86, 0xde, - 0x46, 0xf3, 0x30, 0xe6, 0xd0, 0x1f, 0x7e, 0xc4, 0x8d, 0xb2, 0x75, 0xa5, 0x49, 0x8f, 0x6c, 0x8a, - 0x88, 0x1e, 0x71, 0x7d, 0xa3, 0x6c, 0x5d, 0x69, 0xa2, 0x7b, 0xe0, 0x47, 0x78, 0xc3, 0x26, 0x3c, - 0xb9, 0xb3, 0xa5, 0x7c, 0x30, 0x15, 0xb4, 0x71, 0x8f, 0x88, 0x46, 0xf7, 0x4d, 0x98, 0x30, 0x4f, - 0xbe, 0x22, 0xa7, 0x8e, 0xf1, 0x9c, 0x34, 0xb8, 0x07, 0x38, 0xb4, 0xbc, 0xb7, 0xcd, 0x2e, 0x13, - 0x2d, 0xc2, 0x90, 0xa3, 0xb7, 0x6c, 0x75, 0x98, 0x09, 0x1d, 0x63, 0x42, 0xeb, 0x7a, 0x4b, 0x63, - 0xbb, 0xf8, 0x1f, 0x0a, 0x8c, 0x1c, 0xb3, 0x98, 0x4d, 0xce, 0x97, 0x04, 0xf8, 0xb2, 0xd1, 0xe9, - 0xa0, 0xd1, 0x08, 0x86, 0x68, 0xca, 0x0a, 0x64, 0xec, 0x37, 0xc2, 0x30, 0x22, 0xd2, 0x67, 0xb8, - 0x2f, 0x7d, 0xc4, 0x09, 0xc2, 0x30, 0x5e, 0x27, 0x1d, 0xab, 0xad, 0x3b, 0xe4, 0x48, 0x77, 0x9e, - 0xaa, 0x23, 0x8c, 0x3f, 0xb0, 0xe7, 0xd9, 0x35, 0x1a, 0x69, 0xd7, 0xbf, 0xd3, 0x90, 0x65, 0x11, - 0x90, 0x50, 0x0f, 0xa3, 0xef, 0xff, 0x11, 0x4c, 0x9a, 0x96, 0x63, 0x74, 0x8c, 0x97, 0xac, 0x5a, - 0xf3, 0xe2, 0xc4, 0x33, 0x9d, 0xa7, 0xca, 0xa1, 0x74, 0xca, 0xea, 0x53, 0xc1, 0x0c, 0xed, 0xa0, - 0xdb, 0x21, 0x19, 0x2d, 0x53, 0x6f, 0x33, 0x27, 0x28, 0x41, 0xe2, 0xb2, 0xa9, 0xb7, 0x51, 0x15, - 0x26, 0xfd, 0xeb, 0x3f, 0x65, 0x70, 0xb9, 0x6f, 0xb2, 0xa5, 0x55, 0xe1, 0x1b, 0xcf, 0x8e, 0x8d, - 0x50, 0x9d, 0xb7, 0xb5, 0x82, 0x15, 0xda, 0x41, 0x77, 0x01, 0xe9, 0xa7, 0xa7, 0xc4, 0xb6, 0x1b, - 0x16, 0xe9, 0x75, 0x0c, 0xdb, 0xa6, 0x6f, 0x8e, 0x3a, 0xc2, 0x1e, 0x8c, 0x49, 0x7e, 0x72, 0xe4, - 0x1f, 0x24, 0xfb, 0x11, 0xbd, 0x0d, 0xd3, 0xa1, 0x30, 0x6b, 0x30, 0x3f, 0x8e, 0x31, 0x97, 0xa1, - 0x60, 0xac, 0x55, 0xa9, 0x57, 0x55, 0x18, 0x15, 0x45, 0x53, 0xcd, 0x30, 0x9d, 0xee, 0x92, 0xfa, - 0xfb, 0x2b, 0xf3, 0xa4, 0xd2, 0x54, 0x81, 0xfb, 0x9b, 0x2d, 0x8a, 0x8f, 0xa0, 0x10, 0x36, 0x0a, - 0x6d, 0xc0, 0xa8, 0xeb, 0x08, 0x85, 0xc1, 0x9a, 0x0e, 0xe6, 0x02, 0xa7, 0xd3, 0x5c, 0x22, 0x5c, - 0x01, 0xb4, 0xd3, 0x23, 0xba, 0x43, 0x98, 0xab, 0x34, 0xf2, 0xd3, 0x73, 0x62, 0x3b, 0xe8, 0x1e, - 0x8c, 0xf3, 0x98, 0xe5, 0x64, 0xec, 0xee, 0xb3, 0xa5, 0x42, 0xd8, 0xa7, 0x5a, 0xd6, 0xf6, 0x17, - 0xf8, 0x2e, 0x14, 0x02, 0xa2, 0xac, 0xf6, 0x45, 0x20, 0xf8, 0x95, 0x40, 0xf0, 0xe3, 0x3b, 0x30, - 0x51, 0x26, 0x4e, 0x40, 0x6d, 0x02, 0xf5, 0x2e, 0xe4, 0x7c, 0x6a, 0x2a, 0xf9, 0x4a, 0x10, 0x67, - 0x60, 0xca, 0x95, 0xb2, 0x6f, 0xd8, 0x8e, 0xd0, 0x8b, 0x8f, 0x60, 0x32, 0xb8, 0x4d, 0x15, 0x7c, - 0x08, 0x13, 0x5c, 0x81, 0x29, 0x2a, 0xa1, 0xeb, 0x51, 0xe4, 0xeb, 0x70, 0x8b, 0xa4, 0x96, 0xb7, - 0xe5, 0xa5, 0x8d, 0xef, 0xbb, 0x6e, 0x65, 0xd5, 0xcd, 0xb5, 0x6f, 0x05, 0x86, 0x59, 0x7e, 0x0b, - 0xb0, 0x3c, 0x7f, 0x39, 0x05, 0x3f, 0xf0, 0x7d, 0x28, 0xf8, 0x84, 0x0f, 0x63, 0x4a, 0x23, 0x25, - 0x2f, 0x13, 0x87, 0xd1, 0xda, 0x03, 0x38, 0xf1, 0x5d, 0xc8, 0x4b, 0xe4, 0x54, 0x36, 0x86, 0x11, - 0x26, 0xcb, 0xb5, 0x4d, 0x86, 0x24, 0x4e, 0xf0, 0x43, 0x98, 0xd1, 0x48, 0xcb, 0xb0, 0x1d, 0xd2, - 0xe3, 0xf5, 0xce, 0xd5, 0x74, 0x1d, 0x46, 0x78, 0x95, 0x13, 0xf6, 0x64, 0x19, 0xb3, 0xa0, 0x11, - 0x47, 0xb8, 0x04, 0x53, 0x61, 0x6e, 0xaa, 0x38, 0xa9, 0x64, 0x62, 0x13, 0x10, 0x7d, 0xf3, 0x38, - 0xfd, 0x00, 0x86, 0xa1, 0x25, 0x00, 0x4f, 0x1a, 0x7f, 0x9d, 0x33, 0x5a, 0xc6, 0x15, 0x67, 0xa3, - 0x6b, 0x90, 0x35, 0xec, 0xc6, 0xa9, 0xd9, 0xb1, 0xda, 0xc4, 0xe1, 0x25, 0x69, 0x4c, 0x03, 0xc3, - 0xde, 0x11, 0x3b, 0x18, 0x41, 0x21, 0xa0, 0xd0, 0x6a, 0x5f, 0xe0, 0x33, 0x16, 0x14, 0x83, 0x63, - 0x90, 0xaf, 0x29, 0x15, 0x2c, 0xe6, 0x01, 0x63, 0xd3, 0x21, 0x63, 0x3f, 0x60, 0x79, 0x20, 0xab, - 0x46, 0x6f, 0xc2, 0x28, 0x3f, 0x76, 0xaf, 0x25, 0xe0, 0x59, 0xf7, 0x0c, 0x7f, 0x01, 0xea, 0x13, - 0xab, 0xa9, 0x3b, 0xe4, 0xd8, 0x6b, 0x9d, 0x88, 0x0b, 0x34, 0xf1, 0x49, 0xf2, 0x1f, 0x92, 0x54, - 0xdc, 0x43, 0x82, 0x55, 0x98, 0x8d, 0x10, 0x4e, 0x1d, 0xf3, 0x5b, 0x05, 0x54, 0x0f, 0xf1, 0xe3, - 0xf3, 0x76, 0xbb, 0xd2, 0x3d, 0x33, 0x5f, 0x9f, 0x83, 0xd0, 0x0d, 0x98, 0x30, 0xbb, 0xed, 0x8b, - 0x06, 0x7d, 0xbf, 0x6c, 0x87, 0x36, 0x9d, 0xec, 0x41, 0x18, 0xd3, 0x72, 0x74, 0x7b, 0x9f, 0xed, - 0xee, 0x9b, 0x2d, 0xfc, 0xbd, 0x02, 0xf9, 0x20, 0x28, 0x1a, 0xa1, 0xc7, 0xf1, 0x11, 0x2a, 0x5e, - 0xef, 0xbe, 0x26, 0x22, 0x35, 0x40, 0x13, 0x11, 0xee, 0x82, 0xd3, 0x97, 0x77, 0xc1, 0xf8, 0x33, - 0x98, 0x8d, 0xf0, 0x1b, 0xbd, 0xf0, 0x8f, 0x61, 0x52, 0xd8, 0x7f, 0x76, 0xde, 0x6e, 0x37, 0x8c, - 0xee, 0x99, 0xe9, 0x5e, 0xfd, 0x94, 0x04, 0xd9, 0x63, 0x9a, 0x78, 0x11, 0x58, 0xdb, 0xf8, 0x6f, - 0x0a, 0xcc, 0xd0, 0x12, 0xe6, 0xf5, 0x9b, 0x83, 0x44, 0xec, 0x3b, 0x30, 0x6d, 0x7b, 0x0c, 0x0d, - 0xbd, 0xdd, 0x32, 0x7b, 0x86, 0xf3, 0xb4, 0x23, 0x2e, 0x67, 0xca, 0x3f, 0xdb, 0x76, 0x8f, 0xd0, - 0x9b, 0x90, 0xef, 0x71, 0xc1, 0x8d, 0xee, 0x79, 0xe7, 0x84, 0xf4, 0xd8, 0x6d, 0x0d, 0x6b, 0x39, - 0xb1, 0x5b, 0x65, 0x9b, 0x68, 0x0d, 0xf2, 0x6d, 0xb3, 0xd5, 0x90, 0x72, 0x72, 0x88, 0xe5, 0xe4, - 0x78, 0xdb, 0x6c, 0x1d, 0x7b, 0x69, 0x39, 0x0f, 0x63, 0xcc, 0xa7, 0x14, 0xda, 0x30, 0x87, 0xc6, - 0xd6, 0x95, 0x26, 0x7e, 0xc0, 0x0b, 0xb5, 0x6c, 0xce, 0xa0, 0xe5, 0xea, 0x97, 0x0a, 0x2c, 0x50, - 0xde, 0xa7, 0xe6, 0x79, 0xbb, 0xf9, 0xc3, 0xca, 0xc8, 0x07, 0xa0, 0x12, 0xda, 0x70, 0x37, 0x6c, - 0xd1, 0x71, 0xf7, 0x39, 0x65, 0x96, 0xc8, 0x0d, 0xb9, 0xef, 0x97, 0x04, 0x53, 0x8e, 0x60, 0x3e, - 0x1a, 0x0e, 0x7f, 0xc5, 0x66, 0x6d, 0x76, 0xc2, 0x54, 0xca, 0x0e, 0x53, 0x98, 0xc3, 0xa6, 0xec, - 0x10, 0x5f, 0xa5, 0x69, 0xe3, 0x1e, 0xab, 0x4c, 0x22, 0xca, 0x5e, 0xbd, 0x3a, 0x5e, 0x87, 0x9c, - 0x1b, 0xca, 0xb4, 0x41, 0xb1, 0xc5, 0x17, 0xb2, 0x1b, 0xdf, 0xb4, 0x35, 0xb1, 0xf1, 0x21, 0xab, - 0x52, 0x9e, 0x4e, 0x8a, 0xfd, 0x21, 0x14, 0xa4, 0x14, 0xa0, 0x99, 0x13, 0x7c, 0x21, 0x03, 0xdf, - 0x94, 0x5a, 0xbe, 0x23, 0x2f, 0x6d, 0x6c, 0x83, 0xaa, 0x11, 0xcb, 0xec, 0x39, 0x3e, 0xd9, 0x20, - 0xb6, 0x44, 0x29, 0x4d, 0x0f, 0xac, 0x54, 0x85, 0xd9, 0x08, 0xa5, 0xb4, 0xa8, 0xfd, 0x45, 0x81, - 0xcc, 0x81, 0xd9, 0x24, 0xbc, 0x6e, 0x2c, 0x01, 0x70, 0x00, 0x52, 0xe7, 0x9b, 0x61, 0x3b, 0xac, - 0x51, 0x0b, 0x94, 0xab, 0x54, 0xa8, 0x5c, 0x6d, 0x00, 0x78, 0x95, 0xc2, 0x8e, 0xf9, 0x20, 0x91, - 0x28, 0xd0, 0x0d, 0xbf, 0xeb, 0x1b, 0x62, 0xc4, 0xe3, 0xb2, 0x21, 0x7e, 0x0f, 0xb8, 0x04, 0xd0, - 0xa1, 0x00, 0x1b, 0x16, 0xed, 0xeb, 0x79, 0x90, 0x65, 0xd8, 0x0e, 0x6d, 0xea, 0xf1, 0x7b, 0x90, - 0xdd, 0xd5, 0x1d, 0xbd, 0x46, 0x1c, 0x66, 0x41, 0x54, 0xd7, 0x8e, 0x60, 0x88, 0xf1, 0x72, 0xc4, - 0xec, 0x37, 0x36, 0xa0, 0x50, 0xd3, 0x9f, 0x07, 0xbb, 0xbf, 0x4b, 0xac, 0x8f, 0x6e, 0xfe, 0x43, - 0x1f, 0x7b, 0xe9, 0xfe, 0x8f, 0xbd, 0x02, 0xe4, 0x25, 0x55, 0xd4, 0xe9, 0xbf, 0x50, 0xb8, 0x76, - 0xe6, 0x78, 0x57, 0xfb, 0x1a, 0x0c, 0x33, 0xab, 0x44, 0xc9, 0xe6, 0xae, 0xf3, 0xae, 0x46, 0xe3, - 0x87, 0xe8, 0x36, 0x8c, 0x35, 0x75, 0x47, 0x17, 0xf5, 0xda, 0x6f, 0xfd, 0x24, 0x1f, 0x68, 0xa3, - 0x4d, 0xbe, 0x40, 0xab, 0x30, 0xee, 0x90, 0xae, 0x6d, 0xf6, 0x1a, 0x27, 0xa6, 0xde, 0x6b, 0x8a, - 0x06, 0x20, 0xcb, 0xf7, 0x1e, 0xd1, 0x2d, 0x17, 0x9c, 0x40, 0x42, 0xc1, 0xa9, 0xac, 0x5a, 0xd3, - 0xcd, 0x26, 0x85, 0x6c, 0x10, 0x37, 0x3c, 0xf1, 0x2e, 0x4c, 0xf7, 0x9d, 0xd0, 0x84, 0xb8, 0x03, - 0x2c, 0x4c, 0x0d, 0x92, 0xd4, 0x29, 0xba, 0x24, 0xf8, 0x3e, 0xaf, 0xd8, 0x54, 0x0a, 0xd3, 0x6a, - 0x0f, 0xe6, 0x7e, 0xfc, 0x11, 0x2f, 0x8d, 0x32, 0x1f, 0x55, 0x7e, 0x03, 0x46, 0x98, 0x67, 0x5c, - 0xdd, 0x61, 0xbf, 0x89, 0x53, 0xac, 0xf9, 0xe0, 0x03, 0x6e, 0x7f, 0x85, 0x90, 0xc7, 0x5b, 0x80, - 0x42, 0x32, 0x29, 0xa2, 0x81, 0x2e, 0x12, 0xff, 0x53, 0x81, 0xe5, 0x9a, 0x5c, 0xea, 0xbd, 0x2c, - 0x79, 0x4d, 0x4f, 0x98, 0x5c, 0xaa, 0xd3, 0x81, 0x52, 0x8d, 0x0e, 0x60, 0x46, 0x92, 0x26, 0x65, - 0x31, 0x4f, 0x4c, 0x95, 0x5f, 0x67, 0x3f, 0x52, 0x4d, 0x02, 0xe1, 0xc3, 0xc7, 0x0f, 0x60, 0x31, - 0xd6, 0x32, 0xd1, 0xd8, 0x7b, 0x48, 0x94, 0xe0, 0xa3, 0xf1, 0x21, 0x2c, 0x97, 0x2f, 0x75, 0x4a, - 0x1c, 0x73, 0x07, 0x16, 0xcb, 0x49, 0x7a, 0x63, 0xcd, 0x54, 0xae, 0x64, 0xe6, 0xff, 0xc1, 0x6a, - 0xb4, 0x3a, 0xe9, 0x13, 0x2b, 0xe9, 0xab, 0xe4, 0x4f, 0x0a, 0xcc, 0x46, 0x70, 0xd3, 0xc4, 0x8d, - 0x37, 0xf2, 0x2a, 0x37, 0x1f, 0x6b, 0x77, 0xfa, 0x4a, 0x76, 0xbf, 0x84, 0x6b, 0x49, 0x76, 0x53, - 0x4f, 0x1f, 0xc3, 0x7c, 0x94, 0x46, 0xf9, 0xad, 0x5c, 0x88, 0xd3, 0x4a, 0xdf, 0xaf, 0x39, 0x3b, - 0x72, 0xdf, 0xc6, 0x25, 0x98, 0xa1, 0x3d, 0x81, 0xcf, 0x36, 0x80, 0x9f, 0x67, 0x60, 0x2a, 0xcc, - 0x43, 0xeb, 0xdc, 0x7f, 0x14, 0x58, 0xad, 0x11, 0x27, 0x7a, 0xd2, 0xf8, 0xbf, 0xeb, 0x9a, 0x42, - 0xa9, 0x78, 0x0c, 0xf3, 0x21, 0xa1, 0x7d, 0xe9, 0xc8, 0x3d, 0x17, 0x8d, 0x5b, 0x9b, 0x23, 0xd1, - 0xf6, 0xe0, 0x87, 0x70, 0x2d, 0xc9, 0xda, 0x4b, 0xf2, 0x92, 0xc7, 0xfa, 0xe5, 0xbe, 0x8a, 0xe3, - 0xe7, 0x31, 0x93, 0xa8, 0x3d, 0xd1, 0x72, 0xe5, 0x15, 0x2c, 0xdf, 0x86, 0xb5, 0x58, 0xdd, 0x03, - 0xa6, 0xea, 0x5f, 0x15, 0x98, 0x8f, 0x16, 0x70, 0x49, 0xb6, 0x5e, 0x3d, 0x46, 0x12, 0xdd, 0x91, - 0x7e, 0x05, 0x77, 0xfc, 0x5c, 0x01, 0x7c, 0x89, 0x3f, 0xe8, 0x75, 0xe8, 0xb0, 0x14, 0xa7, 0x5f, - 0x4e, 0xe3, 0xe5, 0x04, 0x0c, 0x34, 0x93, 0x8b, 0x24, 0xee, 0xc8, 0xbe, 0xf5, 0x04, 0x72, 0x81, - 0x3f, 0xdb, 0xa0, 0x02, 0x8c, 0x3f, 0xa9, 0x7e, 0x52, 0x3d, 0x3c, 0xae, 0x36, 0xea, 0x9f, 0x1d, - 0xed, 0x15, 0xde, 0x40, 0x00, 0x23, 0xbb, 0x87, 0x4f, 0x1e, 0xed, 0xef, 0x15, 0x14, 0x34, 0x0a, - 0xe9, 0x4a, 0xb5, 0x5e, 0x48, 0xa1, 0x71, 0x18, 0xdb, 0xad, 0xd4, 0x76, 0xb4, 0xbd, 0xfa, 0x5e, - 0x21, 0x8d, 0x26, 0x20, 0xbb, 0xb3, 0x5d, 0xdf, 0x2b, 0x1f, 0x6a, 0x95, 0x9d, 0xed, 0xfd, 0xc2, - 0xd0, 0xad, 0xff, 0x87, 0x42, 0x78, 0xe0, 0x8a, 0x54, 0x98, 0x76, 0x25, 0x1f, 0x1e, 0xd5, 0x2b, - 0x07, 0x95, 0xcf, 0xb7, 0xeb, 0x95, 0xc3, 0x6a, 0xe1, 0x0d, 0x2a, 0xec, 0xa0, 0x52, 0xa5, 0x3b, - 0x54, 0x07, 0x5d, 0x6d, 0x7f, 0xca, 0x57, 0xa9, 0x5b, 0x65, 0x18, 0x66, 0xdf, 0xff, 0x28, 0x0b, - 0xa3, 0x47, 0x7b, 0xd5, 0xdd, 0x4a, 0xb5, 0x5c, 0x78, 0x83, 0x2e, 0xb4, 0x27, 0xd5, 0x2a, 0x5d, - 0x28, 0x28, 0x07, 0x99, 0x9d, 0xc3, 0x83, 0xa3, 0xfd, 0xbd, 0xfa, 0xde, 0x6e, 0x21, 0x45, 0xf1, - 0x7e, 0x52, 0xd9, 0xdf, 0xdf, 0xdb, 0x2d, 0xa4, 0x51, 0x06, 0x86, 0xf7, 0x34, 0xed, 0x50, 0x2b, - 0x7c, 0x5d, 0xfa, 0xfd, 0x2c, 0x8c, 0x1e, 0xe8, 0x5d, 0xbd, 0x45, 0x7a, 0xa8, 0x03, 0x59, 0x69, - 0x5c, 0x88, 0xe6, 0x98, 0x03, 0xfb, 0x67, 0x91, 0xc5, 0x99, 0xfe, 0x03, 0x5a, 0xb6, 0x36, 0x7e, - 0xf6, 0xf7, 0x7f, 0xfd, 0x26, 0xb5, 0x8e, 0x55, 0xf6, 0x37, 0x42, 0x21, 0x74, 0x53, 0x22, 0xdb, - 0x0a, 0xcc, 0x07, 0xd1, 0x97, 0x30, 0xe6, 0xce, 0xf8, 0x10, 0x9f, 0x89, 0x86, 0xa6, 0x8f, 0x45, - 0x14, 0xda, 0xa5, 0x5a, 0xd6, 0x99, 0x16, 0x8c, 0x56, 0x02, 0x5a, 0x5c, 0x9a, 0xcd, 0x6f, 0xdc, - 0x44, 0xf9, 0x16, 0x9d, 0xc2, 0xb8, 0x3c, 0x43, 0x44, 0x6a, 0x40, 0x9a, 0x94, 0x5f, 0xc5, 0xd9, - 0x88, 0x13, 0xaa, 0x6b, 0x95, 0xe9, 0x5a, 0x40, 0xf3, 0x91, 0xba, 0x98, 0xd0, 0x33, 0xd7, 0x67, - 0xfc, 0x8f, 0x26, 0xb2, 0xcf, 0xe4, 0x41, 0x63, 0xc0, 0x67, 0xfe, 0x24, 0x11, 0xdf, 0x64, 0x1a, - 0x56, 0x23, 0x7d, 0xc6, 0xc8, 0xb6, 0xf8, 0x18, 0x12, 0x9d, 0x40, 0xc6, 0x1b, 0x14, 0xa2, 0x19, - 0x17, 0x6f, 0x60, 0xce, 0x58, 0x9c, 0x0a, 0x6f, 0x53, 0x0d, 0x6f, 0x31, 0x0d, 0xd7, 0xd1, 0x6a, - 0xd8, 0x06, 0x4e, 0x24, 0x3b, 0xcc, 0x86, 0x7c, 0x70, 0x30, 0x88, 0x8a, 0x4c, 0x62, 0xe4, 0xac, - 0xb1, 0xa8, 0x46, 0x9e, 0x51, 0x95, 0xb7, 0x99, 0xca, 0x37, 0xf1, 0x42, 0x40, 0x65, 0x90, 0x72, - 0x4b, 0x4c, 0x23, 0xd1, 0x17, 0x00, 0xfe, 0xb0, 0x0d, 0x79, 0x37, 0x11, 0x1c, 0x11, 0x14, 0xa7, - 0xfb, 0xf6, 0xa9, 0xa2, 0x6b, 0x4c, 0xd1, 0x3c, 0x9a, 0x0b, 0xdb, 0xe6, 0x8a, 0x7b, 0x09, 0x93, - 0x7d, 0x23, 0x33, 0xb4, 0xc4, 0x64, 0xc5, 0xcd, 0xe9, 0x8a, 0x0b, 0x71, 0xc7, 0x92, 0x37, 0x8b, - 0xcb, 0x01, 0x8d, 0x7d, 0xc4, 0x5b, 0xca, 0x2d, 0xf4, 0x42, 0x9a, 0x56, 0x7a, 0xe3, 0xaf, 0xa5, - 0xa0, 0x1d, 0xa1, 0x59, 0x9d, 0xd0, 0x1d, 0x3d, 0x92, 0xc2, 0x37, 0x98, 0xee, 0x15, 0xb4, 0x1c, - 0x6d, 0xad, 0xa7, 0xa3, 0xcb, 0x66, 0xca, 0xd2, 0xa4, 0x46, 0x5c, 0x63, 0xe4, 0x34, 0xaa, 0xa8, - 0x46, 0x9e, 0x49, 0xfa, 0x42, 0xd7, 0x18, 0xa4, 0xa4, 0x86, 0x7e, 0xa7, 0xf0, 0x0f, 0x98, 0xf0, - 0x3c, 0x05, 0xad, 0x78, 0xa2, 0x63, 0x26, 0x3f, 0xc5, 0xe5, 0x04, 0x0a, 0x0a, 0xe1, 0x3e, 0x83, - 0xf0, 0x36, 0xbe, 0x1d, 0x13, 0xbc, 0x51, 0x9c, 0x14, 0xd2, 0x97, 0x2c, 0xa8, 0xdc, 0xbf, 0x57, - 0x7b, 0x41, 0x15, 0x1c, 0xd0, 0xf8, 0x41, 0x25, 0x0f, 0x51, 0x30, 0x66, 0x3a, 0x17, 0x71, 0x5f, - 0x50, 0x09, 0x2a, 0x2a, 0xff, 0xd7, 0x0a, 0xcc, 0xc5, 0x7c, 0x48, 0xa0, 0xeb, 0xbc, 0x7d, 0x4c, - 0xfc, 0x56, 0x28, 0xae, 0x26, 0x13, 0x51, 0x1c, 0x9b, 0x0c, 0xc7, 0x5b, 0x78, 0x2d, 0x80, 0x23, - 0x86, 0x85, 0x82, 0xfa, 0x9d, 0x02, 0x73, 0xe5, 0x44, 0x50, 0xe5, 0x41, 0x40, 0x25, 0x7d, 0xa8, - 0xe0, 0xf7, 0x19, 0xa8, 0x77, 0xd0, 0x66, 0x7c, 0x4c, 0xf8, 0x2c, 0x9b, 0xdf, 0xb8, 0xcd, 0xc7, - 0xb7, 0xe8, 0x0f, 0x0a, 0x14, 0xe3, 0x7b, 0x73, 0x74, 0x23, 0x41, 0xb5, 0x5c, 0xa9, 0xd7, 0x2e, - 0xa5, 0xa3, 0x28, 0xb7, 0x18, 0xca, 0x77, 0x51, 0x69, 0x00, 0x94, 0x94, 0x4b, 0x2e, 0x82, 0xdf, - 0x2b, 0x50, 0x8c, 0x6f, 0x47, 0x05, 0xd0, 0x4b, 0xbb, 0x73, 0x01, 0xf4, 0x92, 0xbe, 0x16, 0x97, - 0x18, 0xd0, 0x3b, 0xf8, 0x66, 0xf8, 0x8e, 0x63, 0xb8, 0xe8, 0x35, 0x0b, 0x4f, 0x26, 0x03, 0x2c, - 0x0f, 0x08, 0xf0, 0x92, 0xd6, 0x37, 0xde, 0x93, 0x31, 0x5c, 0xf2, 0x95, 0xff, 0x51, 0x81, 0xa5, - 0xc4, 0x76, 0x0e, 0xbd, 0x95, 0x8c, 0x41, 0xbe, 0xf8, 0x9b, 0x83, 0x90, 0x52, 0xc4, 0x1f, 0x31, - 0xc4, 0xef, 0xa3, 0xf7, 0x06, 0x43, 0x1c, 0xbe, 0xfe, 0xcf, 0x21, 0xe3, 0x8d, 0xc4, 0xc4, 0x3b, - 0x1b, 0x9e, 0xc6, 0x89, 0x77, 0x36, 0x34, 0x39, 0x13, 0xbd, 0x02, 0x9e, 0x0d, 0x5e, 0xa5, 0x4b, - 0x44, 0x6f, 0x4e, 0xc8, 0x66, 0x03, 0x17, 0x49, 0xb6, 0x3c, 0xf4, 0x91, 0x64, 0x4b, 0x83, 0xaf, - 0x78, 0xd9, 0x8c, 0x88, 0xca, 0x7e, 0x09, 0x93, 0x7d, 0x73, 0x54, 0xf1, 0xda, 0xc4, 0x0d, 0x75, - 0xc5, 0x6b, 0x13, 0x33, 0x7e, 0x15, 0x2f, 0x1d, 0x5e, 0x0e, 0x3d, 0xe2, 0x21, 0x62, 0xaa, 0xdb, - 0xe4, 0x7f, 0x37, 0x96, 0xa6, 0x6f, 0xc8, 0x7b, 0xc8, 0x22, 0xa6, 0x75, 0xc5, 0xf9, 0xe8, 0x43, - 0xaa, 0x75, 0x8d, 0x69, 0x5d, 0x46, 0x8b, 0x7d, 0x99, 0x2b, 0x4b, 0x7f, 0xc6, 0x5f, 0x38, 0x7f, - 0xe0, 0x26, 0xbd, 0x70, 0x7d, 0xd3, 0x3b, 0xe9, 0x85, 0x0b, 0x4d, 0xe8, 0xf0, 0x75, 0xa6, 0x6d, - 0x09, 0x2d, 0x44, 0x6a, 0xe3, 0x94, 0xa5, 0x3a, 0x80, 0x5f, 0x36, 0xd0, 0xe3, 0x1f, 0xe7, 0x71, - 0x2d, 0x19, 0x90, 0x0b, 0x04, 0x24, 0xfa, 0xf4, 0x75, 0x3d, 0xa2, 0x27, 0x23, 0xec, 0x5f, 0xf4, - 0xee, 0xfd, 0x37, 0x00, 0x00, 0xff, 0xff, 0xe7, 0x43, 0xd7, 0x20, 0xd2, 0x27, 0x00, 0x00, + // 2819 bytes of a gzipped FileDescriptorProto + 0x1f, 0x8b, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0xff, 0xbc, 0x5a, 0x4b, 0x73, 0xdb, 0xd6, + 0xf5, 0x0f, 0x48, 0xbd, 0x78, 0x28, 0x52, 0xd4, 0xd5, 0x0b, 0xa2, 0x1e, 0x96, 0xae, 0x15, 0x5b, + 0x7e, 0x49, 0x31, 0x9d, 0x38, 0xb1, 0xe2, 0xfc, 0x33, 0xb2, 0x24, 0xf3, 0xcf, 0x89, 0x44, 0x69, + 0x40, 0xba, 0xca, 0x63, 0x26, 0x1c, 0x48, 0xbc, 0xa2, 0x11, 0x93, 0x04, 0x4b, 0x40, 0x76, 0x64, + 0x8f, 0x37, 0xdd, 0xb4, 0x9b, 0xce, 0xa4, 0xed, 0x74, 0xd3, 0x45, 0x96, 0xfd, 0x00, 0x9d, 0xe9, + 0xa2, 0x9b, 0xee, 0xbb, 0xe8, 0xaa, 0xd3, 0x99, 0x7e, 0x80, 0xee, 0xda, 0xef, 0xd0, 0xce, 0x7d, + 0x00, 0xb8, 0x00, 0x01, 0x90, 0x91, 0xe3, 0xee, 0x78, 0xef, 0x3d, 0xf7, 0x9c, 0xdf, 0x79, 0xde, + 0x83, 0x23, 0x41, 0x4a, 0xef, 0x18, 0x1b, 0x9d, 0xae, 0x69, 0x9b, 0x28, 0xa9, 0x77, 0x8c, 0xfc, + 0x62, 0xc3, 0x34, 0x1b, 0x4d, 0xb2, 0xa9, 0x77, 0x8c, 0x4d, 0xbd, 0xdd, 0x36, 0x6d, 0xdd, 0x36, + 0xcc, 0xb6, 0xc5, 0x49, 0x70, 0x11, 0x32, 0x8f, 0x89, 0x6e, 0x19, 0x27, 0x4d, 0x52, 0xe9, 0xe8, + 0xa7, 0x04, 0xe5, 0x20, 0xd9, 0xd2, 0xbf, 0x55, 0x95, 0x15, 0x65, 0x3d, 0xa5, 0xd1, 0x9f, 0x6c, + 0xc7, 0x68, 0xab, 0x09, 0xb1, 0x63, 0xb4, 0x11, 0x82, 0xa1, 0xa6, 0x61, 0xd9, 0x6a, 0x72, 0x25, + 0xb9, 0x9e, 0xd2, 0xd8, 0x6f, 0xfc, 0x9d, 0x02, 0x13, 0x47, 0x7a, 0x57, 0x6f, 0x11, 0x9b, 0x74, + 0x77, 0xcc, 0xf6, 0x99, 0xd1, 0xa0, 0x74, 0x6d, 0xbd, 0x45, 0x04, 0x33, 0xf6, 0x1b, 0x3d, 0x80, + 0x6c, 0xc7, 0x21, 0xab, 0xd9, 0x17, 0x1d, 0xc2, 0x18, 0x67, 0x0b, 0x68, 0x83, 0xe2, 0x76, 0x39, + 0x54, 0x2f, 0x3a, 0x44, 0xcb, 0x74, 0xe4, 0x25, 0xda, 0x80, 0xb1, 0x33, 0x81, 0x55, 0x4d, 0xae, + 0x28, 0xeb, 0x69, 0x71, 0xc9, 0xa7, 0x80, 0xe6, 0xd2, 0xe0, 0x0e, 0xa4, 0x5c, 0x7e, 0x3f, 0x36, + 0x96, 0x69, 0x18, 0x7e, 0xae, 0x37, 0xcf, 0x39, 0x90, 0x94, 0xc6, 0x17, 0xf8, 0x57, 0x0a, 0x64, + 0x0e, 0x88, 0xdd, 0x35, 0x4e, 0xad, 0x7d, 0xb3, 0x51, 0x21, 0x36, 0x5a, 0x80, 0xd4, 0x0b, 0xb3, + 0xfb, 0x8c, 0x74, 0x6b, 0x46, 0x5d, 0xc8, 0x1e, 0xe3, 0x1b, 0xa5, 0x3a, 0x2a, 0xc0, 0x78, 0x8b, + 0x53, 0xd7, 0x9a, 0x66, 0xc3, 0x52, 0x13, 0x2b, 0xc9, 0xf5, 0x74, 0x61, 0x82, 0x49, 0xf7, 0xd8, + 0x68, 0xe9, 0x96, 0xfb, 0xdb, 0x42, 0x9b, 0x90, 0x11, 0x0c, 0x2d, 0x5b, 0xb7, 0xcf, 0x2d, 0x06, + 0x20, 0x5b, 0x00, 0x76, 0xa9, 0x62, 0xeb, 0x36, 0xd1, 0xc6, 0x39, 0x41, 0x85, 0x9d, 0xe3, 0x7b, + 0x30, 0x2a, 0x78, 0x85, 0xda, 0xc0, 0x55, 0x24, 0x21, 0x2b, 0xf2, 0x10, 0x72, 0xe2, 0xd2, 0x4f, + 0xe8, 0xba, 0x6a, 0xb4, 0x08, 0xbd, 0x6d, 0x1b, 0xde, 0x6d, 0xfa, 0x3b, 0xe2, 0xf6, 0x21, 0x80, + 0x07, 0x3f, 0x54, 0xea, 0x1d, 0x18, 0x61, 0xa4, 0x8e, 0xce, 0x33, 0xb2, 0xce, 0xae, 0x48, 0x4d, + 0x10, 0xe1, 0x4f, 0x61, 0xaa, 0x72, 0xde, 0x68, 0x10, 0x8b, 0x86, 0x6e, 0xbc, 0x4f, 0xc3, 0x11, + 0x3d, 0x82, 0xd9, 0x3d, 0xbd, 0xdb, 0xbc, 0xa8, 0xd8, 0x66, 0xa7, 0x63, 0xb4, 0x1b, 0x97, 0xe1, + 0xb1, 0x09, 0xc9, 0xaa, 0xde, 0xf8, 0x01, 0x17, 0x9e, 0x41, 0xa6, 0x62, 0x9f, 0xd7, 0x2f, 0x0e, + 0x9f, 0x93, 0xee, 0x73, 0x83, 0xbc, 0x88, 0xba, 0x6a, 0xbe, 0x68, 0x93, 0xae, 0x73, 0x95, 0x2d, + 0x50, 0x16, 0x12, 0x46, 0x5d, 0xc4, 0x56, 0xc2, 0xa8, 0xa3, 0x15, 0x48, 0xd7, 0x89, 0x75, 0xda, + 0x35, 0x3a, 0xd4, 0x02, 0xea, 0x10, 0x3b, 0x90, 0xb7, 0xf0, 0x9f, 0x14, 0x18, 0xae, 0x76, 0x0d, + 0xbd, 0x89, 0xe6, 0x61, 0xcc, 0xa6, 0x3f, 0xbc, 0x88, 0x1b, 0x65, 0xeb, 0x52, 0x9d, 0x1e, 0x59, + 0x14, 0x11, 0x3d, 0xe2, 0xf2, 0x46, 0xd9, 0xba, 0x54, 0x47, 0xf7, 0xc0, 0x8b, 0xf0, 0x9a, 0x45, + 0x78, 0x72, 0xa7, 0x0b, 0x59, 0x7f, 0x2a, 0x68, 0xe3, 0x2e, 0x11, 0x8d, 0xee, 0xeb, 0x30, 0x61, + 0x9e, 0x7c, 0x43, 0x4e, 0x6d, 0xe3, 0x39, 0xa9, 0x71, 0x0b, 0x70, 0x68, 0x59, 0x77, 0x9b, 0x39, + 0x13, 0x2d, 0xc2, 0x90, 0xad, 0x37, 0x2c, 0x75, 0x98, 0x31, 0x1d, 0x63, 0x4c, 0xab, 0x7a, 0x43, + 0x63, 0xbb, 0xf8, 0xef, 0x0a, 0x8c, 0x1c, 0xb3, 0x98, 0x8d, 0xcf, 0x97, 0x18, 0xf8, 0xb2, 0xd2, + 0x49, 0xbf, 0xd2, 0x08, 0x86, 0x68, 0xca, 0x0a, 0x64, 0xec, 0x37, 0xc2, 0x30, 0x22, 0xd2, 0x67, + 0xb8, 0x27, 0x7d, 0xc4, 0x09, 0xc2, 0x30, 0x5e, 0x25, 0xad, 0x4e, 0x53, 0xb7, 0xc9, 0x91, 0x6e, + 0x3f, 0x55, 0x47, 0xd8, 0x7d, 0xdf, 0x9e, 0xab, 0xd7, 0x68, 0xa8, 0x5e, 0xff, 0x4a, 0x42, 0x9a, + 0x45, 0x40, 0x4c, 0x3d, 0x0c, 0xf7, 0xff, 0x23, 0x98, 0x34, 0x3b, 0xb6, 0xd1, 0x32, 0x5e, 0xb2, + 0x6a, 0xcd, 0x8b, 0x13, 0xcf, 0x74, 0x9e, 0x2a, 0x87, 0xd2, 0x29, 0xab, 0x4f, 0x39, 0x33, 0xb0, + 0x83, 0x6e, 0x05, 0x78, 0x34, 0x4c, 0xbd, 0xc9, 0x8c, 0xa0, 0xf8, 0x89, 0x8b, 0xa6, 0xde, 0x44, + 0x65, 0x98, 0xf4, 0xdc, 0x7f, 0xca, 0xe0, 0x72, 0xdb, 0xa4, 0x0b, 0xab, 0xc2, 0x36, 0xae, 0x1e, + 0x1b, 0x81, 0x3a, 0x6f, 0x69, 0xb9, 0x4e, 0x60, 0x07, 0xdd, 0x01, 0xa4, 0x9f, 0x9e, 0x12, 0xcb, + 0xaa, 0x75, 0x48, 0xb7, 0x65, 0x58, 0x16, 0x7d, 0x73, 0xd4, 0x11, 0xf6, 0x60, 0x4c, 0xf2, 0x93, + 0x23, 0xef, 0x20, 0xde, 0x8e, 0xe8, 0x3d, 0x98, 0x0e, 0x84, 0x59, 0x8d, 0xd9, 0x71, 0x8c, 0x99, + 0x0c, 0xf9, 0x63, 0xad, 0x4c, 0xad, 0xaa, 0xc2, 0xa8, 0x28, 0x9a, 0x6a, 0x8a, 0xc9, 0x74, 0x96, + 0xd4, 0xde, 0xdf, 0x98, 0x27, 0xa5, 0xba, 0x0a, 0xdc, 0xde, 0x6c, 0x91, 0x7f, 0x04, 0xb9, 0xa0, + 0x52, 0x68, 0x03, 0x46, 0x1d, 0x43, 0x28, 0x0c, 0xd6, 0xb4, 0x3f, 0x17, 0x38, 0x9d, 0xe6, 0x10, + 0xe1, 0x12, 0xa0, 0x9d, 0x2e, 0xd1, 0x6d, 0xc2, 0x4c, 0xa5, 0x91, 0x9f, 0x9e, 0x13, 0xcb, 0x46, + 0xf7, 0x60, 0x9c, 0xc7, 0x2c, 0x27, 0x63, 0xbe, 0x4f, 0x17, 0x72, 0x41, 0x9b, 0x6a, 0x69, 0xcb, + 0x5b, 0xe0, 0x3b, 0x90, 0xf3, 0xb1, 0xea, 0x34, 0x2f, 0x7c, 0xc1, 0xaf, 0xf8, 0x82, 0x1f, 0xdf, + 0x86, 0x89, 0x22, 0xb1, 0x7d, 0x62, 0x63, 0xa8, 0x77, 0x21, 0xe3, 0x51, 0x53, 0xce, 0x97, 0x82, + 0x38, 0x03, 0x53, 0x0e, 0x97, 0x7d, 0xc3, 0xb2, 0x85, 0x5c, 0x7c, 0x04, 0x93, 0xfe, 0x6d, 0x2a, + 0xe0, 0x63, 0x98, 0xe0, 0x02, 0x4c, 0x51, 0x09, 0x1d, 0x8b, 0x22, 0x4f, 0x86, 0x53, 0x24, 0xb5, + 0xac, 0x25, 0x2f, 0x2d, 0x7c, 0xdf, 0x31, 0x2b, 0xab, 0x6e, 0x8e, 0x7e, 0x2b, 0x30, 0xcc, 0xf2, + 0x5b, 0x80, 0xe5, 0xf9, 0xcb, 0x29, 0xf8, 0x81, 0x67, 0x43, 0x71, 0x4f, 0xd8, 0x30, 0xa2, 0x34, + 0x52, 0xf2, 0x22, 0xb1, 0x19, 0xad, 0x35, 0x80, 0x11, 0xdf, 0x87, 0xac, 0x44, 0x4e, 0x79, 0x63, + 0x18, 0x61, 0xbc, 0x1c, 0xdd, 0x64, 0x48, 0xe2, 0x44, 0x38, 0xca, 0xa7, 0x48, 0x0c, 0xa4, 0xbb, + 0xcc, 0x51, 0x12, 0xfc, 0xfe, 0x4a, 0x3f, 0x84, 0x19, 0x8d, 0x34, 0x0c, 0xcb, 0x26, 0x5d, 0x5e, + 0x50, 0x1d, 0x31, 0x57, 0x61, 0x84, 0x97, 0x51, 0x71, 0x37, 0xcd, 0xee, 0x0a, 0x1a, 0x71, 0x84, + 0x0b, 0x30, 0x15, 0xbc, 0x4d, 0xc5, 0xc6, 0xd5, 0x64, 0x6c, 0x02, 0xa2, 0x8f, 0x2a, 0xa7, 0x1f, + 0xc0, 0x72, 0x68, 0x09, 0xc0, 0xe5, 0xc6, 0x9f, 0xff, 0x94, 0x96, 0x72, 0xd8, 0x59, 0xe8, 0x0a, + 0xa4, 0x0d, 0xab, 0x76, 0x6a, 0xb6, 0x3a, 0x4d, 0x62, 0xf3, 0x9a, 0x37, 0xa6, 0x81, 0x61, 0xed, + 0x88, 0x1d, 0x8c, 0x20, 0xe7, 0x13, 0xd8, 0x69, 0x5e, 0xe0, 0x33, 0x16, 0x75, 0x83, 0x63, 0x90, + 0x8d, 0x9e, 0xf0, 0xbf, 0x16, 0x3e, 0x65, 0x93, 0x01, 0x65, 0x3f, 0x62, 0xfe, 0x93, 0x45, 0xa3, + 0x77, 0x61, 0x94, 0x1f, 0x3b, 0x7e, 0xf7, 0x59, 0xd6, 0x39, 0xc3, 0x5f, 0x81, 0xfa, 0xa4, 0x53, + 0xd7, 0x6d, 0x72, 0xec, 0xf6, 0x66, 0xc4, 0x01, 0x1a, 0xfb, 0xe6, 0x79, 0x2f, 0x55, 0x22, 0xea, + 0xa5, 0xc2, 0x2a, 0xcc, 0x86, 0x30, 0xa7, 0x86, 0xf9, 0xad, 0x02, 0xaa, 0x8b, 0xf8, 0xf1, 0x79, + 0xb3, 0x59, 0x6a, 0x9f, 0x99, 0x6f, 0xcf, 0x40, 0xe8, 0x1a, 0x4c, 0x98, 0xed, 0xe6, 0x45, 0x8d, + 0x3e, 0x90, 0x96, 0x4d, 0xbb, 0x5a, 0xf6, 0xe2, 0x8c, 0x69, 0x19, 0xba, 0xbd, 0xcf, 0x76, 0xf7, + 0xcd, 0x06, 0xfe, 0x5e, 0x81, 0xac, 0x1f, 0x14, 0x8d, 0xd0, 0xe3, 0xe8, 0x08, 0x15, 0xed, 0x41, + 0x4f, 0x97, 0x92, 0x18, 0xa0, 0x4b, 0x09, 0xb6, 0xd9, 0xc9, 0xfe, 0x6d, 0x36, 0xfe, 0x02, 0x66, + 0x43, 0xec, 0x46, 0x1d, 0xfe, 0x29, 0x4c, 0x0a, 0xfd, 0xcf, 0xce, 0x9b, 0xcd, 0x9a, 0xd1, 0x3e, + 0x33, 0x1d, 0xd7, 0x4f, 0x49, 0x90, 0xdd, 0x4b, 0x13, 0x2f, 0x7c, 0x6b, 0x0b, 0xff, 0x55, 0x81, + 0x19, 0x5a, 0x23, 0xdd, 0x86, 0x76, 0x90, 0x88, 0xbd, 0x0b, 0xd3, 0x96, 0x7b, 0xa1, 0xa6, 0x37, + 0x1b, 0x66, 0xd7, 0xb0, 0x9f, 0xb6, 0x84, 0x73, 0xa6, 0xbc, 0xb3, 0x6d, 0xe7, 0x08, 0xbd, 0x0b, + 0xd9, 0x2e, 0x67, 0x5c, 0x6b, 0x9f, 0xb7, 0x4e, 0x48, 0x97, 0x79, 0x6b, 0x58, 0xcb, 0x88, 0xdd, + 0x32, 0xdb, 0x44, 0x6b, 0x90, 0x6d, 0x9a, 0x8d, 0x9a, 0x94, 0x93, 0x43, 0x2c, 0x27, 0xc7, 0x9b, + 0x66, 0xe3, 0xd8, 0x4d, 0xcb, 0x79, 0x18, 0x63, 0x36, 0xa5, 0xd0, 0x86, 0x39, 0x34, 0xb6, 0x2e, + 0xd5, 0xf1, 0x03, 0xfe, 0x12, 0xc8, 0xea, 0x0c, 0x5a, 0x0f, 0x7f, 0xa9, 0xc0, 0x02, 0xbd, 0xfb, + 0xd4, 0x3c, 0x6f, 0xd6, 0x7f, 0x58, 0x19, 0xf9, 0x08, 0x54, 0x42, 0x3b, 0xfa, 0x9a, 0x25, 0x5a, + 0xfa, 0x1e, 0xa3, 0xcc, 0x12, 0xb9, 0xe3, 0xf7, 0xec, 0x12, 0xa3, 0xca, 0x11, 0xcc, 0x87, 0xc3, + 0xe1, 0xcf, 0xe4, 0xac, 0xc5, 0x4e, 0x98, 0x48, 0xd9, 0x60, 0x0a, 0x33, 0xd8, 0x94, 0x15, 0xb8, + 0x57, 0xaa, 0x5b, 0xb8, 0xcb, 0x2a, 0x93, 0x88, 0xb2, 0x37, 0xaf, 0x8e, 0x57, 0x21, 0xe3, 0x84, + 0x32, 0xed, 0x80, 0x2c, 0xf1, 0x09, 0xee, 0xc4, 0x37, 0xed, 0x7d, 0x2c, 0x7c, 0xc8, 0xaa, 0x94, + 0x2b, 0x93, 0x62, 0x7f, 0x08, 0x39, 0x29, 0x05, 0x68, 0xe6, 0xf8, 0x9f, 0x60, 0xdf, 0x47, 0xab, + 0x96, 0x6d, 0xc9, 0x4b, 0x0b, 0x5b, 0xa0, 0x6a, 0xa4, 0x63, 0x76, 0x6d, 0x8f, 0x6c, 0x10, 0x5d, + 0xc2, 0x84, 0x26, 0x07, 0x16, 0xaa, 0xc2, 0x6c, 0x88, 0x50, 0x5a, 0xd4, 0xfe, 0xac, 0x40, 0xea, + 0xc0, 0xac, 0x13, 0x5e, 0x37, 0x96, 0x00, 0x38, 0x00, 0xa9, 0xb5, 0x4e, 0xb1, 0x1d, 0xd6, 0x09, + 0xfa, 0xca, 0x55, 0x22, 0x50, 0xae, 0x36, 0x00, 0xdc, 0x4a, 0x61, 0x45, 0x7c, 0xf1, 0x48, 0x14, + 0xe8, 0x9a, 0xd7, 0x56, 0x0e, 0x31, 0xe2, 0x71, 0x59, 0x11, 0xaf, 0xc9, 0x5c, 0x02, 0x68, 0x51, + 0x80, 0xb5, 0x0e, 0xfd, 0x70, 0xe0, 0x41, 0x96, 0x62, 0x3b, 0xf4, 0xab, 0x01, 0x7f, 0x00, 0xe9, + 0x5d, 0xdd, 0xd6, 0x2b, 0xc4, 0x66, 0x1a, 0x84, 0x7d, 0x16, 0x20, 0x18, 0x62, 0x77, 0x39, 0x62, + 0xf6, 0x1b, 0x1b, 0x90, 0xab, 0xe8, 0xcf, 0xfd, 0xed, 0x65, 0x1f, 0xed, 0xc3, 0xbf, 0x2e, 0x02, + 0x5f, 0x93, 0xc9, 0xde, 0xaf, 0xc9, 0x1c, 0x64, 0x25, 0x51, 0xd4, 0xe8, 0xbf, 0x50, 0xb8, 0x74, + 0x66, 0x78, 0x47, 0xfa, 0x1a, 0x0c, 0x33, 0xad, 0x44, 0xc9, 0xe6, 0xa6, 0x73, 0x5d, 0xa3, 0xf1, + 0x43, 0x74, 0x0b, 0xc6, 0xea, 0xba, 0xad, 0x8b, 0x7a, 0xed, 0xf5, 0x96, 0x92, 0x0d, 0xb4, 0xd1, + 0x3a, 0x5f, 0xa0, 0x55, 0x18, 0xb7, 0x49, 0xdb, 0x32, 0xbb, 0xb5, 0x13, 0x53, 0xef, 0xd6, 0x45, + 0x03, 0x90, 0xe6, 0x7b, 0x8f, 0xe8, 0x96, 0x03, 0x4e, 0x20, 0xa1, 0xe0, 0x54, 0x56, 0xad, 0xe9, + 0x66, 0x9d, 0x42, 0x36, 0x88, 0x13, 0x9e, 0x78, 0x17, 0xa6, 0x7b, 0x4e, 0x68, 0x42, 0xdc, 0x06, + 0x16, 0xa6, 0x06, 0x89, 0x6b, 0x45, 0x1d, 0x12, 0x7c, 0x9f, 0x57, 0x6c, 0xca, 0x85, 0x49, 0xb5, + 0x06, 0x33, 0x3f, 0xfe, 0x84, 0x97, 0x46, 0xf9, 0x1e, 0x15, 0x7e, 0x0d, 0x46, 0x98, 0x65, 0x1c, + 0xd9, 0x41, 0xbb, 0x89, 0x53, 0xac, 0x79, 0xe0, 0x7d, 0x66, 0x7f, 0x83, 0x90, 0xc7, 0x5b, 0x80, + 0x02, 0x3c, 0x29, 0xa2, 0x81, 0x1c, 0x89, 0xff, 0xa1, 0xc0, 0x72, 0x45, 0x2e, 0xf5, 0x6e, 0x96, + 0xbc, 0xa5, 0x27, 0x4c, 0x2e, 0xd5, 0x49, 0x5f, 0xa9, 0x46, 0x07, 0x30, 0x23, 0x71, 0x93, 0xb2, + 0x98, 0x27, 0xa6, 0xca, 0xdd, 0xd9, 0x8b, 0x54, 0x93, 0x40, 0x78, 0xf0, 0xf1, 0x03, 0x58, 0x8c, + 0xd4, 0x4c, 0x7c, 0x39, 0xb8, 0x48, 0x14, 0xff, 0xa3, 0xf1, 0x31, 0x2c, 0x17, 0xfb, 0x1a, 0x25, + 0xea, 0x72, 0x0b, 0x16, 0x8b, 0x71, 0x72, 0x23, 0xd5, 0x54, 0x2e, 0xa5, 0xe6, 0xff, 0xc1, 0x6a, + 0xb8, 0x38, 0xe9, 0x1b, 0x2e, 0xee, 0xb3, 0xe7, 0x8f, 0x0a, 0xcc, 0x86, 0xdc, 0xa6, 0x89, 0x1b, + 0xad, 0xe4, 0x65, 0x3c, 0x1f, 0xa9, 0x77, 0xf2, 0x52, 0x7a, 0xbf, 0x84, 0x2b, 0x71, 0x7a, 0x53, + 0x4b, 0x1f, 0xc3, 0x7c, 0x98, 0x44, 0xf9, 0xad, 0x5c, 0x88, 0x92, 0x4a, 0xdf, 0xaf, 0x39, 0x2b, + 0x74, 0xdf, 0xc2, 0x05, 0x98, 0xa1, 0x3d, 0x81, 0x77, 0x6d, 0x00, 0x3b, 0xcf, 0xc0, 0x54, 0xf0, + 0x0e, 0xad, 0x73, 0xff, 0x56, 0x60, 0xb5, 0x42, 0xec, 0xf0, 0x51, 0xe6, 0xff, 0xae, 0x6b, 0x0a, + 0xa4, 0xe2, 0x31, 0xcc, 0x07, 0x98, 0xf6, 0xa4, 0x23, 0xb7, 0x5c, 0x38, 0x6e, 0x6d, 0x8e, 0x84, + 0xeb, 0x83, 0x1f, 0xc2, 0x95, 0x38, 0x6d, 0xfb, 0xe4, 0x25, 0x8f, 0xf5, 0xfe, 0xb6, 0x8a, 0xba, + 0xcf, 0x63, 0x26, 0x56, 0x7a, 0xac, 0xe6, 0xca, 0x1b, 0x68, 0xbe, 0x0d, 0x6b, 0x91, 0xb2, 0x07, + 0x4c, 0xd5, 0xbf, 0x28, 0x30, 0x1f, 0xce, 0xa0, 0x4f, 0xb6, 0x5e, 0x3e, 0x46, 0x62, 0xcd, 0x91, + 0x7c, 0x03, 0x73, 0xfc, 0x5c, 0x01, 0xdc, 0xc7, 0x1e, 0xd4, 0x1d, 0x3a, 0x2c, 0x45, 0xc9, 0x97, + 0xd3, 0x78, 0x39, 0x06, 0x03, 0xcd, 0xe4, 0x3c, 0x89, 0x3a, 0xb2, 0x6e, 0x3e, 0x81, 0x8c, 0xef, + 0xef, 0x42, 0x28, 0x07, 0xe3, 0x4f, 0xca, 0x9f, 0x95, 0x0f, 0x8f, 0xcb, 0xb5, 0xea, 0x17, 0x47, + 0x7b, 0xb9, 0x77, 0x10, 0xc0, 0xc8, 0xee, 0xe1, 0x93, 0x47, 0xfb, 0x7b, 0x39, 0x05, 0x8d, 0x42, + 0xb2, 0x54, 0xae, 0xe6, 0x12, 0x68, 0x1c, 0xc6, 0x76, 0x4b, 0x95, 0x1d, 0x6d, 0xaf, 0xba, 0x97, + 0x4b, 0xa2, 0x09, 0x48, 0xef, 0x6c, 0x57, 0xf7, 0x8a, 0x87, 0x5a, 0x69, 0x67, 0x7b, 0x3f, 0x37, + 0x74, 0xf3, 0xff, 0x21, 0x17, 0x9c, 0xe8, 0x22, 0x15, 0xa6, 0x1d, 0xce, 0x87, 0x47, 0xd5, 0xd2, + 0x41, 0xe9, 0xcb, 0xed, 0x6a, 0xe9, 0xb0, 0x9c, 0x7b, 0x87, 0x32, 0x3b, 0x28, 0x95, 0xe9, 0x0e, + 0x95, 0x41, 0x57, 0xdb, 0x9f, 0xf3, 0x55, 0xe2, 0x66, 0x11, 0x86, 0xd9, 0xf7, 0x3f, 0x4a, 0xc3, + 0xe8, 0xd1, 0x5e, 0x79, 0xb7, 0x54, 0x2e, 0xe6, 0xde, 0xa1, 0x0b, 0xed, 0x49, 0xb9, 0x4c, 0x17, + 0x0a, 0xca, 0x40, 0x6a, 0xe7, 0xf0, 0xe0, 0x68, 0x7f, 0xaf, 0xba, 0xb7, 0x9b, 0x4b, 0x50, 0xbc, + 0x9f, 0x95, 0xf6, 0xf7, 0xf7, 0x76, 0x73, 0x49, 0x94, 0x82, 0xe1, 0x3d, 0x4d, 0x3b, 0xd4, 0x72, + 0xdf, 0x16, 0xfe, 0x33, 0x0b, 0xa3, 0x07, 0x7a, 0x5b, 0x6f, 0x90, 0x2e, 0x6a, 0x41, 0x5a, 0x9a, + 0x47, 0xa2, 0x39, 0x66, 0xc0, 0xde, 0x61, 0x67, 0x7e, 0xa6, 0xf7, 0x80, 0x96, 0xad, 0x8d, 0x9f, + 0xfd, 0xed, 0x9f, 0xbf, 0x49, 0xac, 0x63, 0x95, 0xfd, 0x11, 0x52, 0x30, 0xdd, 0x94, 0xc8, 0xb6, + 0x7c, 0x03, 0x48, 0xf4, 0x35, 0x8c, 0x39, 0x43, 0x44, 0xc4, 0x87, 0xae, 0x81, 0xf1, 0x66, 0x1e, + 0x05, 0x76, 0xa9, 0x94, 0x75, 0x26, 0x05, 0xa3, 0x15, 0x9f, 0x14, 0x87, 0x66, 0xf3, 0x95, 0x93, + 0x28, 0xaf, 0xd1, 0x29, 0x8c, 0xcb, 0x43, 0x4a, 0xa4, 0xfa, 0xb8, 0x49, 0xf9, 0x95, 0x9f, 0x0d, + 0x39, 0xa1, 0xb2, 0x56, 0x99, 0xac, 0x05, 0x34, 0x1f, 0x2a, 0x8b, 0x31, 0x3d, 0x73, 0x6c, 0xc6, + 0xff, 0x2a, 0x23, 0xdb, 0x4c, 0x1e, 0x00, 0xfa, 0x6c, 0xe6, 0xcd, 0xfa, 0xf0, 0x75, 0x26, 0x61, + 0x35, 0xd4, 0x66, 0x8c, 0x6c, 0x8b, 0x8f, 0xfc, 0xd0, 0x09, 0xa4, 0xdc, 0x49, 0x24, 0x9a, 0x71, + 0xf0, 0xfa, 0x06, 0x99, 0xf9, 0xa9, 0xe0, 0x36, 0x95, 0x70, 0x83, 0x49, 0xb8, 0x8a, 0x56, 0x83, + 0x3a, 0x70, 0x22, 0xd9, 0x60, 0xdc, 0x21, 0x5c, 0x91, 0x69, 0x1f, 0xaf, 0x1e, 0x87, 0x48, 0x2a, + 0x44, 0x3a, 0x84, 0xd1, 0x6c, 0xbe, 0x72, 0x26, 0x4c, 0xaf, 0x91, 0x05, 0x59, 0xff, 0xe0, 0x11, + 0xe5, 0x19, 0xbf, 0xd0, 0x59, 0x66, 0x5e, 0x0d, 0x3d, 0xa3, 0x12, 0x6f, 0x31, 0x89, 0xef, 0xe2, + 0x05, 0x9f, 0x44, 0x3f, 0xe5, 0x96, 0x98, 0x76, 0xa2, 0xaf, 0x00, 0xbc, 0x61, 0x1e, 0x72, 0x3d, + 0xed, 0x1f, 0x41, 0xe4, 0xa7, 0x7b, 0xf6, 0xa9, 0xa0, 0x2b, 0x4c, 0xd0, 0x3c, 0x9a, 0x0b, 0xaa, + 0xe6, 0xb0, 0x7b, 0x09, 0x93, 0x3d, 0x23, 0x39, 0xb4, 0xc4, 0x78, 0x45, 0xcd, 0x01, 0xf3, 0x0b, + 0x51, 0xc7, 0x92, 0xb7, 0xf2, 0xcb, 0x3e, 0x89, 0x3d, 0xc4, 0x5b, 0xca, 0x4d, 0xf4, 0x42, 0x9a, + 0x86, 0xba, 0xe3, 0xb5, 0x25, 0xbf, 0x1e, 0x81, 0x59, 0xa0, 0x90, 0x1d, 0x3e, 0xf2, 0xc2, 0xd7, + 0x98, 0xec, 0x15, 0xb4, 0x1c, 0xae, 0xad, 0x2b, 0xa3, 0xcd, 0x86, 0xe2, 0xd2, 0x24, 0x48, 0xb8, + 0x31, 0x74, 0xda, 0x95, 0x57, 0x43, 0xcf, 0x24, 0x79, 0x01, 0x37, 0xfa, 0x29, 0xa9, 0xa2, 0xdf, + 0x29, 0xfc, 0x03, 0x29, 0x38, 0xaf, 0x41, 0x2b, 0x2e, 0xeb, 0x88, 0xc9, 0x52, 0x7e, 0x39, 0x86, + 0x82, 0x42, 0xb8, 0xcf, 0x20, 0xbc, 0x87, 0x6f, 0x45, 0x24, 0x47, 0xd8, 0x4d, 0x0a, 0xe9, 0x6b, + 0x16, 0x54, 0xce, 0x1f, 0xdc, 0xdd, 0xa0, 0xf2, 0x0f, 0x80, 0xbc, 0xa0, 0x92, 0x87, 0x34, 0x18, + 0x33, 0x99, 0x8b, 0xb8, 0x27, 0xa8, 0x04, 0x15, 0xe5, 0xff, 0x6b, 0x05, 0xe6, 0x22, 0x3e, 0x54, + 0xd0, 0x55, 0xde, 0x9e, 0xc6, 0x7e, 0x8b, 0xe4, 0x57, 0xe3, 0x89, 0x28, 0x8e, 0x4d, 0x86, 0xe3, + 0x06, 0x5e, 0xf3, 0xe1, 0x88, 0xb8, 0x42, 0x41, 0xfd, 0x4e, 0x81, 0xb9, 0x62, 0x2c, 0xa8, 0xe2, + 0x20, 0xa0, 0xe2, 0x3e, 0x84, 0xf0, 0x87, 0x0c, 0xd4, 0x5d, 0xb4, 0x19, 0x1d, 0x13, 0xde, 0x95, + 0xcd, 0x57, 0x4e, 0x73, 0xf3, 0x1a, 0xfd, 0x5e, 0x81, 0x7c, 0x74, 0xef, 0x8f, 0xae, 0xc5, 0x88, + 0x96, 0x5f, 0x82, 0xb5, 0xbe, 0x74, 0x14, 0xe5, 0x16, 0x43, 0xf9, 0x3e, 0x2a, 0x0c, 0x80, 0x92, + 0xde, 0x92, 0x8b, 0xec, 0xf7, 0x0a, 0xe4, 0xa3, 0xdb, 0x5d, 0x01, 0xb4, 0x6f, 0xf7, 0x2f, 0x80, + 0xf6, 0xe9, 0x9b, 0x71, 0x81, 0x01, 0xbd, 0x8d, 0xaf, 0x07, 0x7d, 0x1c, 0x71, 0x8b, 0xba, 0x59, + 0x58, 0x32, 0x1e, 0x60, 0x71, 0x40, 0x80, 0x7d, 0x5a, 0xeb, 0x68, 0x4b, 0x46, 0xdc, 0x92, 0x5d, + 0xfe, 0x07, 0x05, 0x96, 0x62, 0xdb, 0x45, 0x74, 0x23, 0x1e, 0x83, 0xec, 0xf8, 0xeb, 0x83, 0x90, + 0x52, 0xc4, 0x9f, 0x30, 0xc4, 0x1f, 0xa2, 0x0f, 0x06, 0x43, 0x1c, 0x74, 0xff, 0x97, 0x90, 0x72, + 0x47, 0x6e, 0xe2, 0x1d, 0x0f, 0x4e, 0xfb, 0xc4, 0x3b, 0x1e, 0x98, 0xcc, 0x89, 0x5e, 0x04, 0xcf, + 0xfa, 0x5d, 0xe9, 0x10, 0x51, 0xcf, 0x09, 0xde, 0x6c, 0xa0, 0x23, 0xf1, 0x96, 0x87, 0x4a, 0x12, + 0x6f, 0x69, 0xb0, 0x16, 0xcd, 0x9b, 0x11, 0x51, 0xde, 0x2f, 0x61, 0xb2, 0x67, 0x4e, 0x2b, 0x5e, + 0x9b, 0xa8, 0xa1, 0xb1, 0x78, 0x6d, 0x22, 0xc6, 0xbb, 0xe2, 0xa5, 0xc3, 0xcb, 0x81, 0x47, 0x3c, + 0x40, 0x4c, 0x65, 0x9b, 0xfc, 0x0f, 0xdf, 0xd2, 0x74, 0x0f, 0xb9, 0x0f, 0x59, 0xc8, 0x34, 0x30, + 0x3f, 0x1f, 0x7e, 0x48, 0xa5, 0xae, 0x31, 0xa9, 0xcb, 0x68, 0xb1, 0x27, 0x73, 0x65, 0xee, 0xcf, + 0xf8, 0x0b, 0xe7, 0x0d, 0xf4, 0xa4, 0x17, 0xae, 0x67, 0x3a, 0x28, 0xbd, 0x70, 0x81, 0x09, 0x20, + 0xbe, 0xca, 0xa4, 0x2d, 0xa1, 0x85, 0x50, 0x69, 0x9c, 0xb2, 0x50, 0x05, 0xf0, 0xca, 0x06, 0x7a, + 0xfc, 0xe3, 0x3c, 0xae, 0x05, 0x03, 0x32, 0xbe, 0x80, 0x44, 0x9f, 0xbf, 0xad, 0x47, 0xf4, 0x64, + 0x84, 0xfd, 0x8f, 0xe1, 0xbd, 0xff, 0x06, 0x00, 0x00, 0xff, 0xff, 0x3a, 0x50, 0x27, 0x40, 0x93, + 0x28, 0x00, 0x00, } diff --git a/pkg/api/api.pb.gw.go b/pkg/api/api.pb.gw.go index 8672bef142c..3d726c3494b 100644 --- a/pkg/api/api.pb.gw.go +++ b/pkg/api/api.pb.gw.go @@ -117,6 +117,33 @@ func request_Manager_GetTrials_0(ctx context.Context, marshaler runtime.Marshale } +func request_Manager_GetTrial_0(ctx context.Context, marshaler runtime.Marshaler, client ManagerClient, req *http.Request, pathParams map[string]string) (proto.Message, runtime.ServerMetadata, error) { + var protoReq GetTrialRequest + var metadata runtime.ServerMetadata + + var ( + val string + ok bool + err error + _ = err + ) + + val, ok = pathParams["trial_id"] + if !ok { + return nil, metadata, status.Errorf(codes.InvalidArgument, "missing parameter %s", "trial_id") + } + + protoReq.TrialId, err = runtime.String(val) + + if err != nil { + return nil, metadata, status.Errorf(codes.InvalidArgument, "type mismatch, parameter: %s, error: %v", "trial_id", err) + } + + msg, err := client.GetTrial(ctx, &protoReq, grpc.Header(&metadata.HeaderMD), grpc.Trailer(&metadata.TrailerMD)) + return msg, metadata, err + +} + func request_Manager_RegisterWorker_0(ctx context.Context, marshaler runtime.Marshaler, client ManagerClient, req *http.Request, pathParams map[string]string) (proto.Message, runtime.ServerMetadata, error) { var protoReq RegisterWorkerRequest var metadata runtime.ServerMetadata @@ -590,6 +617,35 @@ func RegisterManagerHandler(ctx context.Context, mux *runtime.ServeMux, conn *gr }) + mux.Handle("GET", pattern_Manager_GetTrial_0, func(w http.ResponseWriter, req *http.Request, pathParams map[string]string) { + ctx, cancel := context.WithCancel(ctx) + defer cancel() + if cn, ok := w.(http.CloseNotifier); ok { + go func(done <-chan struct{}, closed <-chan bool) { + select { + case <-done: + case <-closed: + cancel() + } + }(ctx.Done(), cn.CloseNotify()) + } + inboundMarshaler, outboundMarshaler := runtime.MarshalerForRequest(mux, req) + rctx, err := runtime.AnnotateContext(ctx, mux, req) + if err != nil { + runtime.HTTPError(ctx, mux, outboundMarshaler, w, req, err) + return + } + resp, md, err := request_Manager_GetTrial_0(rctx, inboundMarshaler, client, req, pathParams) + ctx = runtime.NewServerMetadataContext(ctx, md) + if err != nil { + runtime.HTTPError(ctx, mux, outboundMarshaler, w, req, err) + return + } + + forward_Manager_GetTrial_0(ctx, mux, outboundMarshaler, w, req, resp, mux.GetForwardResponseOptions()...) + + }) + mux.Handle("POST", pattern_Manager_RegisterWorker_0, func(w http.ResponseWriter, req *http.Request, pathParams map[string]string) { ctx, cancel := context.WithCancel(ctx) defer cancel() @@ -1126,6 +1182,8 @@ var ( pattern_Manager_GetTrials_0 = runtime.MustPattern(runtime.NewPattern(1, []int{2, 0, 2, 1, 2, 2, 1, 0, 4, 1, 5, 3}, []string{"api", "Manager", "GetTrials", "study_id"}, "")) + pattern_Manager_GetTrial_0 = runtime.MustPattern(runtime.NewPattern(1, []int{2, 0, 2, 1, 2, 2, 1, 0, 4, 1, 5, 3}, []string{"api", "Manager", "GetTrial", "trial_id"}, "")) + pattern_Manager_RegisterWorker_0 = runtime.MustPattern(runtime.NewPattern(1, []int{2, 0, 2, 1, 2, 2}, []string{"api", "Manager", "RegisterWorker"}, "")) pattern_Manager_GetWorkers_0 = runtime.MustPattern(runtime.NewPattern(1, []int{2, 0, 2, 1, 2, 2}, []string{"api", "Manager", "GetWorkers"}, "")) @@ -1174,6 +1232,8 @@ var ( forward_Manager_GetTrials_0 = runtime.ForwardResponseMessage + forward_Manager_GetTrial_0 = runtime.ForwardResponseMessage + forward_Manager_RegisterWorker_0 = runtime.ForwardResponseMessage forward_Manager_GetWorkers_0 = runtime.ForwardResponseMessage diff --git a/pkg/api/api.proto b/pkg/api/api.proto index e3f990d6b97..f4e38393ab4 100644 --- a/pkg/api/api.proto +++ b/pkg/api/api.proto @@ -58,6 +58,14 @@ service Manager { get: "/api/Manager/GetTrials/{study_id}" }; }; + /** + * Get a Trial Configuration from DB by ID of Trial. + */ + rpc GetTrial(GetTrialRequest) returns (GetTrialReply){ + option (google.api.http) = { + get: "/api/Manager/GetTrial/{trial_id}" + }; + }; /** * Create a Worker from Worker Config. * Generate a unique ID and store the Worker to DB. @@ -460,6 +468,20 @@ message GetTrialsReply { repeated Trial trials = 1; } +/** + * Get a trial configuration from DB by trial ID + */ +message GetTrialRequest { + string trial_id = 1; +} + +/** + * Return a trial configuration by specified trial ID + */ +message GetTrialReply { + Trial trial = 1; +} + /** * Create a Worker from Worker Config. * Generate an unique ID and store the Worker to DB. diff --git a/pkg/api/api.swagger.json b/pkg/api/api.swagger.json index d949005f21c..937bb3fde2c 100644 --- a/pkg/api/api.swagger.json +++ b/pkg/api/api.swagger.json @@ -303,6 +303,31 @@ ] } }, + "/api/Manager/GetTrial/{trial_id}": { + "get": { + "summary": "*\nGet a Trial Configuration from DB by ID of Trial.", + "operationId": "GetTrial", + "responses": { + "200": { + "description": "", + "schema": { + "$ref": "#/definitions/apiGetTrialReply" + } + } + }, + "parameters": [ + { + "name": "trial_id", + "in": "path", + "required": true, + "type": "string" + } + ], + "tags": [ + "Manager" + ] + } + }, "/api/Manager/GetTrials/GetShouldStopWorkers": { "post": { "operationId": "GetShouldStopWorkers", @@ -356,7 +381,7 @@ }, "/api/Manager/GetWorkerFullInfo": { "get": { - "summary": "* \nGet a full informations related to specified Workers.\nIt includes Worker Config, HyperParameters and Metrics Logs.", + "summary": "* \nGet full information related to specified Workers.\nIt includes Worker Config, HyperParameters and Metrics Logs.", "operationId": "GetWorkerFullInfo", "responses": { "200": { @@ -400,7 +425,7 @@ }, "/api/Manager/GetWorkers": { "get": { - "summary": "* \nGet a Worker Configs and Statuses from DB by ID of Study, Trial or Worker.", + "summary": "* \nGet a Worker Configs and Status from DB by ID of Study, Trial or Worker.", "operationId": "GetWorkers", "responses": { "200": { @@ -569,7 +594,7 @@ }, "/api/Manager/SetSuggestionParameters": { "post": { - "summary": "*\nCreate or Update parameter set for a suggestion service.\nWhen you specified a ID of parameter set, it will update the parameter set by your request.\nWhen you specified no ID, it will create a new parameter set for corresponding study and suggestion service.\nThe parameters are key-value format.", + "summary": "*\nCreate or Update parameter set for a suggestion service.\nIf you specify an ID of parameter set, it will update the parameter set by your request.\nIf you don't specify an ID, it will create a new parameter set for corresponding study and suggestion service.\nThe parameters are key-value format.", "operationId": "SetSuggestionParameters", "responses": { "200": { @@ -674,7 +699,7 @@ "type": "string" } }, - "description": "*\nParameter for EarlyStopping service. Key value format." + "description": "*\nParameter for EarlyStopping service. Key-value format." }, "apiEarlyStoppingParameterSet": { "type": "object", @@ -889,6 +914,15 @@ } } }, + "apiGetTrialReply": { + "type": "object", + "properties": { + "trial": { + "$ref": "#/definitions/apiTrial" + } + }, + "title": "*\nReturn a trial configuration by specified trial ID" + }, "apiGetTrialsReply": { "type": "object", "properties": { @@ -1262,7 +1296,7 @@ "type": "string" } }, - "description": "*\nParameter for Suggestion service. Key value format." + "description": "*\nParameter for Suggestion service. Key-value format." }, "apiSuggestionParameterSet": { "type": "object", @@ -1291,7 +1325,7 @@ "type": "string" } }, - "description": "*\nTag for each resources." + "description": "*\nTag for each resource." }, "apiTrial": { "type": "object", @@ -1318,7 +1352,7 @@ } } }, - "description": "*\nA set of Hyperparameter.\nIn a study, multiple trials are evaluated by worker.\nSuggestion service will generate next trials." + "description": "*\nA set of Hyperparameter.\nIn a study, multiple trials are evaluated by workers.\nSuggestion service will generate next trials." }, "apiUpdateWorkerStateReply": { "type": "object" diff --git a/pkg/api/gen-doc/api.md b/pkg/api/gen-doc/api.md index 2a841a0526a..8510bf6add4 100644 --- a/pkg/api/gen-doc/api.md +++ b/pkg/api/gen-doc/api.md @@ -36,6 +36,8 @@ - [GetSuggestionParametersRequest](#api.GetSuggestionParametersRequest) - [GetSuggestionsReply](#api.GetSuggestionsReply) - [GetSuggestionsRequest](#api.GetSuggestionsRequest) + - [GetTrialReply](#api.GetTrialReply) + - [GetTrialRequest](#api.GetTrialRequest) - [GetTrialsReply](#api.GetTrialsReply) - [GetTrialsRequest](#api.GetTrialsRequest) - [GetWorkerFullInfoReply](#api.GetWorkerFullInfoReply) @@ -117,7 +119,7 @@ Return generated StudyID. ### CreateStudyRequest Create a Study from Study Config. -Generate a unique ID and store the Study to DB. +Generate an unique ID and store the Study to DB. | Field | Type | Label | Description | @@ -148,7 +150,7 @@ Return generated TrialID. ### CreateTrialRequest Create a Trial from Trial Config. -Generate a unique ID and store the Trial to DB. +Generate an unique ID and store the Trial to DB. | Field | Type | Label | Description | @@ -179,7 +181,7 @@ Generate a unique ID and store the Trial to DB. ### EarlyStoppingParameter -Parameter for EarlyStopping service. Key value format. +Parameter for EarlyStopping service. Key-value format. | Field | Type | Label | Description | @@ -587,6 +589,36 @@ Get a Study Config from DB by ID of Study. + + +### GetTrialReply +Return a trial configuration by specified trial ID + + +| Field | Type | Label | Description | +| ----- | ---- | ----- | ----------- | +| trial | [Trial](#api.Trial) | | | + + + + + + + + +### GetTrialRequest +Get a trial configuration from DB by trial ID + + +| Field | Type | Label | Description | +| ----- | ---- | ----- | ----------- | +| trial_id | [string](#string) | | | + + + + + + ### GetTrialsReply @@ -635,7 +667,7 @@ Get a Trial Configs from DB by ID of Study. ### GetWorkerFullInfoRequest -Get a full informations related to specified Workers. +Get a full information related to specified Workers. It includes Worker Config, HyperParameters and Metrics Logs. @@ -669,7 +701,7 @@ Return a Worker list by specified condition. ### GetWorkersRequest -Get a Worker Configs and Statuses from DB by ID of Study, Trial or Worker. +Get a configs and status of a Worker from DB by ID of Study, Trial or Worker. | Field | Type | Label | Description | @@ -822,7 +854,7 @@ Return generated WorkerID. ### RegisterWorkerRequest Create a Worker from Worker Config. -Generate a unique ID and store the Worker to DB. +Generate an unique ID and store the Worker to DB. | Field | Type | Label | Description | @@ -1094,7 +1126,7 @@ Overview of a study. For UI. ### SuggestionParameter -Parameter for Suggestion service. Key value format. +Parameter for Suggestion service. Key-value format. | Field | Type | Label | Description | @@ -1127,7 +1159,7 @@ Parameter for Suggestion service. Key value format. ### Tag -Tag for each resources. +Tag for each resource. | Field | Type | Label | Description | @@ -1144,7 +1176,7 @@ Tag for each resources. ### Trial A set of Hyperparameter. -In a study, multiple trials are evaluated by worker. +In a study, multiple trials are evaluated by workers. Suggestion service will generate next trials. @@ -1301,14 +1333,15 @@ https://cloud.google.com/service-infrastructure/docs/service-management/referenc | GetStudyList | [GetStudyListRequest](#api.GetStudyListRequest) | [GetStudyListReply](#api.GetStudyListRequest) | Get all Study Configs from DB. | | CreateTrial | [CreateTrialRequest](#api.CreateTrialRequest) | [CreateTrialReply](#api.CreateTrialRequest) | Create a Trial from Trial Config. Generate a unique ID and store the Trial to DB. | | GetTrials | [GetTrialsRequest](#api.GetTrialsRequest) | [GetTrialsReply](#api.GetTrialsRequest) | Get a Trial Configs from DB by ID of Study. | +| GetTrial | [GetTrialRequest](#api.GetTrialRequest) | [GetTrialReply](#api.GetTrialRequest) | Get a Trial Configuration from DB by ID of Trial. | | RegisterWorker | [RegisterWorkerRequest](#api.RegisterWorkerRequest) | [RegisterWorkerReply](#api.RegisterWorkerRequest) | Create a Worker from Worker Config. Generate a unique ID and store the Worker to DB. | -| GetWorkers | [GetWorkersRequest](#api.GetWorkersRequest) | [GetWorkersReply](#api.GetWorkersRequest) | Get a Worker Configs and Statuses from DB by ID of Study, Trial or Worker. | +| GetWorkers | [GetWorkersRequest](#api.GetWorkersRequest) | [GetWorkersReply](#api.GetWorkersRequest) | Get a Worker Configs and Status from DB by ID of Study, Trial or Worker. | | UpdateWorkerState | [UpdateWorkerStateRequest](#api.UpdateWorkerStateRequest) | [UpdateWorkerStateReply](#api.UpdateWorkerStateRequest) | Update a Status of Worker. | -| GetWorkerFullInfo | [GetWorkerFullInfoRequest](#api.GetWorkerFullInfoRequest) | [GetWorkerFullInfoReply](#api.GetWorkerFullInfoRequest) | Get a full informations related to specified Workers. It includes Worker Config, HyperParameters and Metrics Logs. | +| GetWorkerFullInfo | [GetWorkerFullInfoRequest](#api.GetWorkerFullInfoRequest) | [GetWorkerFullInfoReply](#api.GetWorkerFullInfoRequest) | Get full information related to specified Workers. It includes Worker Config, HyperParameters and Metrics Logs. | | GetSuggestions | [GetSuggestionsRequest](#api.GetSuggestionsRequest) | [GetSuggestionsReply](#api.GetSuggestionsRequest) | Get Suggestions from a Suggestion service. | | GetShouldStopWorkers | [GetShouldStopWorkersRequest](#api.GetShouldStopWorkersRequest) | [GetShouldStopWorkersReply](#api.GetShouldStopWorkersRequest) | | | GetMetrics | [GetMetricsRequest](#api.GetMetricsRequest) | [GetMetricsReply](#api.GetMetricsRequest) | Get metrics of workers. You can get all logs of metrics since start of the worker. | -| SetSuggestionParameters | [SetSuggestionParametersRequest](#api.SetSuggestionParametersRequest) | [SetSuggestionParametersReply](#api.SetSuggestionParametersRequest) | Create or Update parameter set for a suggestion service. When you specified a ID of parameter set, it will update the parameter set by your request. When you specified no ID, it will create a new parameter set for corresponding study and suggestion service. The parameters are key-value format. | +| SetSuggestionParameters | [SetSuggestionParametersRequest](#api.SetSuggestionParametersRequest) | [SetSuggestionParametersReply](#api.SetSuggestionParametersRequest) | Create or Update parameter set for a suggestion service. If you specify an ID of parameter set, it will update the parameter set by your request. If you don't specify an ID, it will create a new parameter set for corresponding study and suggestion service. The parameters are key-value format. | | GetSuggestionParameters | [GetSuggestionParametersRequest](#api.GetSuggestionParametersRequest) | [GetSuggestionParametersReply](#api.GetSuggestionParametersRequest) | Get suggestion parameter set from DB specified. | | GetSuggestionParameterList | [GetSuggestionParameterListRequest](#api.GetSuggestionParameterListRequest) | [GetSuggestionParameterListReply](#api.GetSuggestionParameterListRequest) | Get all suggestion parameter sets from DB. | | SetEarlyStoppingParameters | [SetEarlyStoppingParametersRequest](#api.SetEarlyStoppingParametersRequest) | [SetEarlyStoppingParametersReply](#api.SetEarlyStoppingParametersRequest) | | diff --git a/pkg/api/gen-doc/index.html b/pkg/api/gen-doc/index.html index e3239455171..fa0b014dd7f 100644 --- a/pkg/api/gen-doc/index.html +++ b/pkg/api/gen-doc/index.html @@ -306,6 +306,14 @@
Create a Study from Study Config.
Generate a unique ID and store the Study to DB.
+Create a Study from Study Config.
Generate an unique ID and store the Study to DB.
Field | Type | Label | Description |
trial | +Trial | ++ |
|
+
Get a trial configuration from DB by trial ID
+ + +Field | Type | Label | Description |
trial_id | +string | ++ |
|
+
Return a trial list in specified Study.
@@ -1387,7 +1441,7 @@Get a full informations related to specified Workers.
It includes Worker Config, HyperParameters and Metrics Logs.
+Get a full information related to specified Workers.
It includes Worker Config, HyperParameters and Metrics Logs.
Get a Trial Configs from DB by ID of Study. |
+ ||||||
GetTrial | +GetTrialRequest | +GetTrialReply | +Get a Trial Configuration from DB by ID of Trial. |
+ |||
RegisterWorker | RegisterWorkerRequest | @@ -2753,7 +2814,7 @@GetWorkers | GetWorkersRequest | GetWorkersReply | -Get a Worker Configs and Statuses from DB by ID of Study, Trial or Worker. |
+ Get a Worker Configs and Status from DB by ID of Study, Trial or Worker. |
GetWorkerFullInfo | GetWorkerFullInfoRequest | GetWorkerFullInfoReply | -Get a full informations related to specified Workers. + | Get full information related to specified Workers. It includes Worker Config, HyperParameters and Metrics Logs. |
SetSuggestionParametersRequest | SetSuggestionParametersReply | Create or Update parameter set for a suggestion service. -When you specified a ID of parameter set, it will update the parameter set by your request. -When you specified no ID, it will create a new parameter set for corresponding study and suggestion service. +If you specify an ID of parameter set, it will update the parameter set by your request. +If you don't specify an ID, it will create a new parameter set for corresponding study and suggestion service. The parameters are key-value format. |
diff --git a/pkg/api/operators/apis/studyjob/v1alpha1/studyjob_types.go b/pkg/api/operators/apis/studyjob/v1alpha1/studyjob_types.go
index 84d9731170f..b2b2ca153ad 100644
--- a/pkg/api/operators/apis/studyjob/v1alpha1/studyjob_types.go
+++ b/pkg/api/operators/apis/studyjob/v1alpha1/studyjob_types.go
@@ -42,17 +42,17 @@ type StudyJobSpec struct {
// StudyJobStatus defines the observed state of StudyJob
type StudyJobStatus struct {
- // Represents time when the TFJob was acknowledged by the TFJob controller.
+ // Represents time when the StudyJob was acknowledged by the StudyJob controller.
// It is not guaranteed to be set in happens-before order across separate operations.
// It is represented in RFC3339 form and is in UTC.
StartTime *metav1.Time `json:"startTime,omitempty"`
- // Represents time when the TFJob was completed. It is not guaranteed to
+ // Represents time when the StudyJob was completed. It is not guaranteed to
// be set in happens-before order across separate operations.
// It is represented in RFC3339 form and is in UTC.
CompletionTime *metav1.Time `json:"completionTime,omitempty"`
- // Represents last time when the TFJob was reconciled. It is not guaranteed to
+ // Represents last time when the StudyJob was reconciled. It is not guaranteed to
// be set in happens-before order across separate operations.
// It is represented in RFC3339 form and is in UTC.
LastReconcileTime *metav1.Time `json:"lastReconcileTime,omitempty"`
@@ -63,6 +63,8 @@ type StudyJobStatus struct {
EarlyStoppingParameterID string `json:"earlyStoppingParameterId"`
Trials []TrialSet `json:"trials,omitempty"`
BestObjectiveValue *float64 `json:"bestObjectiveValue,omitempty"`
+ BestTrialID string `json:"bestTrialId,omitempty"`
+ BestWorkerID string `json:"bestWorkerId,omitempty"`
SuggestionCount int `json:"suggestionCount,omitempty"`
}
diff --git a/pkg/api/python/api_pb2.py b/pkg/api/python/api_pb2.py
index eca61355170..3bef6a7c8c7 100644
--- a/pkg/api/python/api_pb2.py
+++ b/pkg/api/python/api_pb2.py
@@ -21,7 +21,7 @@
name='api.proto',
package='api',
syntax='proto3',
- serialized_pb=_b('\n\tapi.proto\x12\x03\x61pi\x1a\x1cgoogle/api/annotations.proto\"7\n\rFeasibleSpace\x12\x0b\n\x03max\x18\x01 \x01(\t\x12\x0b\n\x03min\x18\x02 \x01(\t\x12\x0c\n\x04list\x18\x03 \x03(\t\"q\n\x0fParameterConfig\x12\x0c\n\x04name\x18\x01 \x01(\t\x12*\n\x0eparameter_type\x18\x02 \x01(\x0e\x32\x12.api.ParameterType\x12$\n\x08\x66\x65\x61sible\x18\x03 \x01(\x0b\x32\x12.api.FeasibleSpace\"T\n\tParameter\x12\x0c\n\x04name\x18\x01 \x01(\t\x12*\n\x0eparameter_type\x18\x02 \x01(\x0e\x32\x12.api.ParameterType\x12\r\n\x05value\x18\x03 \x01(\t\"l\n\rMetricsLogSet\x12\x11\n\tworker_id\x18\x01 \x01(\t\x12%\n\x0cmetrics_logs\x18\x02 \x03(\x0b\x32\x0f.api.MetricsLog\x12!\n\rworker_status\x18\x03 \x01(\x0e\x32\n.api.State\"&\n\x07Metrics\x12\x0c\n\x04name\x18\x01 \x01(\t\x12\r\n\x05value\x18\x02 \x01(\t\"/\n\x10MetricsValueTime\x12\x0c\n\x04time\x18\x01 \x01(\t\x12\r\n\x05value\x18\x02 \x01(\t\"A\n\nMetricsLog\x12\x0c\n\x04name\x18\x01 \x01(\t\x12%\n\x06values\x18\x02 \x03(\x0b\x32\x15.api.MetricsValueTime\"2\n\x13SuggestionParameter\x12\x0c\n\x04name\x18\x01 \x01(\t\x12\r\n\x05value\x18\x02 \x01(\t\"5\n\x16\x45\x61rlyStoppingParameter\x12\x0c\n\x04name\x18\x01 \x01(\t\x12\r\n\x05value\x18\x02 \x01(\t\"\"\n\x03Tag\x12\x0c\n\x04name\x18\x01 \x01(\t\x12\r\n\x05value\x18\x02 \x01(\t\"M\n\rStudyOverview\x12\x0c\n\x04name\x18\x01 \x01(\t\x12\r\n\x05owner\x18\x02 \x01(\t\x12\n\n\x02id\x18\x03 \x01(\t\x12\x13\n\x0b\x64\x65scription\x18\x04 \x01(\t\"\x83\x01\n\x05Trial\x12\x10\n\x08trial_id\x18\x01 \x01(\t\x12\x10\n\x08study_id\x18\x02 \x01(\t\x12%\n\rparameter_set\x18\x03 \x03(\x0b\x32\x0e.api.Parameter\x12\x17\n\x0fobjective_value\x18\x04 \x01(\t\x12\x16\n\x04tags\x18\x05 \x03(\x0b\x32\x08.api.Tag\"\x97\x01\n\x06Worker\x12\x11\n\tworker_id\x18\x01 \x01(\t\x12\x10\n\x08study_id\x18\x02 \x01(\t\x12\x10\n\x08trial_id\x18\x03 \x01(\t\x12\x0c\n\x04Type\x18\x04 \x01(\t\x12\x1a\n\x06status\x18\x05 \x01(\x0e\x32\n.api.State\x12\x14\n\x0cTemplatePath\x18\x06 \x01(\t\x12\x16\n\x04tags\x18\x07 \x03(\x0b\x32\x08.api.Tag\"\xe2\x02\n\x0bStudyConfig\x12\x0c\n\x04name\x18\x01 \x01(\t\x12\r\n\x05owner\x18\x02 \x01(\t\x12\x30\n\x11optimization_type\x18\x03 \x01(\x0e\x32\x15.api.OptimizationType\x12\x19\n\x11optimization_goal\x18\x04 \x01(\x01\x12<\n\x11parameter_configs\x18\x05 \x01(\x0b\x32!.api.StudyConfig.ParameterConfigs\x12\x1a\n\x12\x61\x63\x63\x65ss_permissions\x18\x06 \x03(\t\x12\x16\n\x04tags\x18\x07 \x03(\x0b\x32\x08.api.Tag\x12\x1c\n\x14objective_value_name\x18\x08 \x01(\t\x12\x0f\n\x07metrics\x18\t \x03(\t\x12\r\n\x05jobId\x18\n \x01(\t\x1a\x39\n\x10ParameterConfigs\x12%\n\x07\x63onfigs\x18\x01 \x03(\x0b\x32\x14.api.ParameterConfig\"<\n\x12\x43reateStudyRequest\x12&\n\x0cstudy_config\x18\x01 \x01(\x0b\x32\x10.api.StudyConfig\"$\n\x10\x43reateStudyReply\x12\x10\n\x08study_id\x18\x01 \x01(\t\"#\n\x0fGetStudyRequest\x12\x10\n\x08study_id\x18\x01 \x01(\t\"7\n\rGetStudyReply\x12&\n\x0cstudy_config\x18\x01 \x01(\x0b\x32\x10.api.StudyConfig\"\x15\n\x13GetStudyListRequest\"@\n\x11GetStudyListReply\x12+\n\x0fstudy_overviews\x18\x01 \x03(\x0b\x32\x12.api.StudyOverview\"/\n\x12\x43reateTrialRequest\x12\x19\n\x05trial\x18\x01 \x01(\x0b\x32\n.api.Trial\"$\n\x10\x43reateTrialReply\x12\x10\n\x08trial_id\x18\x01 \x01(\t\"$\n\x10GetTrialsRequest\x12\x10\n\x08study_id\x18\x01 \x01(\t\",\n\x0eGetTrialsReply\x12\x1a\n\x06trials\x18\x01 \x03(\x0b\x32\n.api.Trial\"4\n\x15RegisterWorkerRequest\x12\x1b\n\x06worker\x18\x01 \x01(\x0b\x32\x0b.api.Worker\"(\n\x13RegisterWorkerReply\x12\x11\n\tworker_id\x18\x01 \x01(\t\"O\n\x12StopWorkersRequest\x12\x10\n\x08study_id\x18\x01 \x01(\t\x12\x12\n\nworker_ids\x18\x02 \x03(\t\x12\x13\n\x0bis_complete\x18\x03 \x01(\x08\"\x12\n\x10StopWorkersReply\"J\n\x11GetWorkersRequest\x12\x10\n\x08study_id\x18\x01 \x01(\t\x12\x10\n\x08trial_id\x18\x02 \x01(\t\x12\x11\n\tworker_id\x18\x03 \x01(\t\"/\n\x0fGetWorkersReply\x12\x1c\n\x07workers\x18\x01 \x03(\x0b\x32\x0b.api.Worker\"I\n\x18UpdateWorkerStateRequest\x12\x11\n\tworker_id\x18\x01 \x01(\t\x12\x1a\n\x06status\x18\x02 \x01(\x0e\x32\n.api.State\"\x18\n\x16UpdateWorkerStateReply\"j\n\x18GetWorkerFullInfoRequest\x12\x10\n\x08study_id\x18\x01 \x01(\t\x12\x10\n\x08trial_id\x18\x02 \x01(\t\x12\x11\n\tworker_id\x18\x03 \x01(\t\x12\x17\n\x0fonly_latest_log\x18\x04 \x01(\x08\"{\n\x0eWorkerFullInfo\x12\x1b\n\x06Worker\x18\x01 \x01(\x0b\x32\x0b.api.Worker\x12%\n\rparameter_set\x18\x02 \x03(\x0b\x32\x0e.api.Parameter\x12%\n\x0cmetrics_logs\x18\x03 \x03(\x0b\x32\x0f.api.MetricsLog\"H\n\x16GetWorkerFullInfoReply\x12.\n\x11worker_full_infos\x18\x01 \x03(\x0b\x32\x13.api.WorkerFullInfo\"\x89\x01\n\x15GetSuggestionsRequest\x12\x10\n\x08study_id\x18\x01 \x01(\t\x12\x1c\n\x14suggestion_algorithm\x18\x02 \x01(\t\x12\x16\n\x0erequest_number\x18\x03 \x01(\x05\x12\x16\n\x0elog_worker_ids\x18\x04 \x03(\t\x12\x10\n\x08param_id\x18\x05 \x01(\t\"1\n\x13GetSuggestionsReply\x12\x1a\n\x06trials\x18\x01 \x03(\x0b\x32\n.api.Trial\"c\n\x1bGetShouldStopWorkersRequest\x12\x10\n\x08study_id\x18\x01 \x01(\t\x12 \n\x18\x65\x61rly_stopping_algorithm\x18\x02 \x01(\t\x12\x10\n\x08param_id\x18\x05 \x01(\t\";\n\x19GetShouldStopWorkersReply\x12\x1e\n\x16should_stop_worker_ids\x18\x01 \x03(\t\"P\n\x11GetMetricsRequest\x12\x10\n\x08study_id\x18\x01 \x01(\t\x12\x12\n\nworker_ids\x18\x02 \x03(\t\x12\x15\n\rmetrics_names\x18\x03 \x03(\t\"?\n\x0fGetMetricsReply\x12,\n\x10metrics_log_sets\x18\x01 \x03(\x0b\x32\x12.api.MetricsLogSet\"Z\n\x18ReportMetricsLogsRequest\x12\x10\n\x08study_id\x18\x01 \x01(\t\x12,\n\x10metrics_log_sets\x18\x03 \x03(\x0b\x32\x12.api.MetricsLogSet\"\x18\n\x16ReportMetricsLogsReply\"\x89\x01\n\tModelInfo\x12\x12\n\nstudy_name\x18\x01 \x01(\t\x12\x11\n\tworker_id\x18\x02 \x01(\t\x12\"\n\nparameters\x18\x03 \x03(\x0b\x32\x0e.api.Parameter\x12\x1d\n\x07metrics\x18\x04 \x03(\x0b\x32\x0c.api.Metrics\x12\x12\n\nmodel_path\x18\x05 \x01(\t\")\n\x0b\x44\x61taSetInfo\x12\x0c\n\x04name\x18\x01 \x01(\t\x12\x0c\n\x04path\x18\x02 \x01(\t\"J\n\x10SaveStudyRequest\x12\x12\n\nstudy_name\x18\x01 \x01(\t\x12\r\n\x05owner\x18\x02 \x01(\t\x12\x13\n\x0b\x64\x65scription\x18\x03 \x01(\t\"\x10\n\x0eSaveStudyReply\"k\n\x10SaveModelRequest\x12\x1d\n\x05model\x18\x01 \x01(\x0b\x32\x0e.api.ModelInfo\x12\"\n\x08\x64\x61ta_set\x18\x02 \x01(\x0b\x32\x10.api.DataSetInfo\x12\x14\n\x0ctensor_board\x18\x03 \x01(\x08\"\x10\n\x0eSaveModelReply\"\x18\n\x16GetSavedStudiesRequest\";\n\x14GetSavedStudiesReply\x12#\n\x07studies\x18\x01 \x03(\x0b\x32\x12.api.StudyOverview\"+\n\x15GetSavedModelsRequest\x12\x12\n\nstudy_name\x18\x01 \x01(\t\"5\n\x13GetSavedModelsReply\x12\x1e\n\x06models\x18\x01 \x03(\x0b\x32\x0e.api.ModelInfo\"=\n\x14GetSavedModelRequest\x12\x12\n\nstudy_name\x18\x01 \x01(\t\x12\x11\n\tworker_id\x18\x02 \x01(\t\"3\n\x12GetSavedModelReply\x12\x1d\n\x05model\x18\x01 \x01(\x0b\x32\x0e.api.ModelInfo\"\x9b\x01\n\x1eSetSuggestionParametersRequest\x12\x10\n\x08study_id\x18\x01 \x01(\t\x12\x1c\n\x14suggestion_algorithm\x18\x02 \x01(\t\x12\x10\n\x08param_id\x18\x03 \x01(\t\x12\x37\n\x15suggestion_parameters\x18\x04 \x03(\x0b\x32\x18.api.SuggestionParameter\"0\n\x1cSetSuggestionParametersReply\x12\x10\n\x08param_id\x18\x01 \x01(\t\"2\n\x1eGetSuggestionParametersRequest\x12\x10\n\x08param_id\x18\x01 \x01(\t\"W\n\x1cGetSuggestionParametersReply\x12\x37\n\x15suggestion_parameters\x18\x01 \x03(\x0b\x32\x18.api.SuggestionParameter\"5\n!GetSuggestionParameterListRequest\x12\x10\n\x08study_id\x18\x01 \x01(\t\"\x81\x01\n\x16SuggestionParameterSet\x12\x10\n\x08param_id\x18\x01 \x01(\t\x12\x1c\n\x14suggestion_algorithm\x18\x02 \x01(\t\x12\x37\n\x15suggestion_parameters\x18\x03 \x03(\x0b\x32\x18.api.SuggestionParameter\"a\n\x1fGetSuggestionParameterListReply\x12>\n\x19suggestion_parameter_sets\x18\x01 \x03(\x0b\x32\x1b.api.SuggestionParameterSet\")\n\x15StopSuggestionRequest\x12\x10\n\x08study_id\x18\x01 \x01(\t\"\x15\n\x13StopSuggestionReply\"\xa9\x01\n!SetEarlyStoppingParametersRequest\x12\x10\n\x08study_id\x18\x01 \x01(\t\x12 \n\x18\x65\x61rly_stopping_algorithm\x18\x02 \x01(\t\x12\x10\n\x08param_id\x18\x03 \x01(\t\x12>\n\x19\x65\x61rly_stopping_parameters\x18\x04 \x03(\x0b\x32\x1b.api.EarlyStoppingParameter\"3\n\x1fSetEarlyStoppingParametersReply\x12\x10\n\x08param_id\x18\x01 \x01(\t\"5\n!GetEarlyStoppingParametersRequest\x12\x10\n\x08param_id\x18\x01 \x01(\t\"a\n\x1fGetEarlyStoppingParametersReply\x12>\n\x19\x65\x61rly_stopping_parameters\x18\x01 \x03(\x0b\x32\x1b.api.EarlyStoppingParameter\"8\n$GetEarlyStoppingParameterListRequest\x12\x10\n\x08study_id\x18\x01 \x01(\t\"\x8f\x01\n\x19\x45\x61rlyStoppingParameterSet\x12\x10\n\x08param_id\x18\x01 \x01(\t\x12 \n\x18\x65\x61rly_stopping_algorithm\x18\x02 \x01(\t\x12>\n\x19\x65\x61rly_stopping_parameters\x18\x03 \x03(\x0b\x32\x1b.api.EarlyStoppingParameter\"k\n\"GetEarlyStoppingParameterListReply\x12\x45\n\x1d\x65\x61rly_stopping_parameter_sets\x18\x01 \x03(\x0b\x32\x1e.api.EarlyStoppingParameterSet*U\n\rParameterType\x12\x10\n\x0cUNKNOWN_TYPE\x10\x00\x12\n\n\x06\x44OUBLE\x10\x01\x12\x07\n\x03INT\x10\x02\x12\x0c\n\x08\x44ISCRETE\x10\x03\x12\x0f\n\x0b\x43\x41TEGORICAL\x10\x04*H\n\x10OptimizationType\x12\x18\n\x14UNKNOWN_OPTIMIZATION\x10\x00\x12\x0c\n\x08MINIMIZE\x10\x01\x12\x0c\n\x08MAXIMIZE\x10\x02*G\n\x05State\x12\x0b\n\x07PENDING\x10\x00\x12\x0b\n\x07RUNNING\x10\x01\x12\r\n\tCOMPLETED\x10\x02\x12\n\n\x06KILLED\x10\x03\x12\t\n\x05\x45RROR\x10x2\x9f\x16\n\x07Manager\x12m\n\x0b\x43reateStudy\x12\x17.api.CreateStudyRequest\x1a\x15.api.CreateStudyReply\".\x82\xd3\xe4\x93\x02(\"\x18/api/Manager/CreateStudy:\x0cstudy_config\x12^\n\x08GetStudy\x12\x14.api.GetStudyRequest\x1a\x12.api.GetStudyReply\"(\x82\xd3\xe4\x93\x02\"\x12 /api/Manager/GetStudy/{study_id}\x12\x63\n\x0cGetStudyList\x12\x18.api.GetStudyListRequest\x1a\x16.api.GetStudyListReply\"!\x82\xd3\xe4\x93\x02\x1b\x12\x19/api/Manager/GetStudyList\x12\x66\n\x0b\x43reateTrial\x12\x17.api.CreateTrialRequest\x1a\x15.api.CreateTrialReply\"\'\x82\xd3\xe4\x93\x02!\"\x18/api/Manager/CreateTrial:\x05trial\x12\x62\n\tGetTrials\x12\x15.api.GetTrialsRequest\x1a\x13.api.GetTrialsReply\")\x82\xd3\xe4\x93\x02#\x12!/api/Manager/GetTrials/{study_id}\x12s\n\x0eRegisterWorker\x12\x1a.api.RegisterWorkerRequest\x1a\x18.api.RegisterWorkerReply\"+\x82\xd3\xe4\x93\x02%\"\x1b/api/Manager/RegisterWorker:\x06worker\x12[\n\nGetWorkers\x12\x16.api.GetWorkersRequest\x1a\x14.api.GetWorkersReply\"\x1f\x82\xd3\xe4\x93\x02\x19\x12\x17/api/Manager/GetWorkers\x12z\n\x11UpdateWorkerState\x12\x1d.api.UpdateWorkerStateRequest\x1a\x1b.api.UpdateWorkerStateReply\")\x82\xd3\xe4\x93\x02#\x1a\x1e/api/Manager/UpdateWorkerState:\x01*\x12w\n\x11GetWorkerFullInfo\x12\x1d.api.GetWorkerFullInfoRequest\x1a\x1b.api.GetWorkerFullInfoReply\"&\x82\xd3\xe4\x93\x02 \x12\x1e/api/Manager/GetWorkerFullInfo\x12n\n\x0eGetSuggestions\x12\x1a.api.GetSuggestionsRequest\x1a\x18.api.GetSuggestionsReply\"&\x82\xd3\xe4\x93\x02 \"\x1b/api/Manager/GetSuggestions:\x01*\x12\x90\x01\n\x14GetShouldStopWorkers\x12 .api.GetShouldStopWorkersRequest\x1a\x1e.api.GetShouldStopWorkersReply\"6\x82\xd3\xe4\x93\x02\x30\"+/api/Manager/GetTrials/GetShouldStopWorkers:\x01*\x12^\n\nGetMetrics\x12\x16.api.GetMetricsRequest\x1a\x14.api.GetMetricsReply\"\"\x82\xd3\xe4\x93\x02\x1c\"\x17/api/Manager/GetMetrics:\x01*\x12\x92\x01\n\x17SetSuggestionParameters\x12#.api.SetSuggestionParametersRequest\x1a!.api.SetSuggestionParametersReply\"/\x82\xd3\xe4\x93\x02)\"$/api/Manager/SetSuggestionParameters:\x01*\x12\x9a\x01\n\x17GetSuggestionParameters\x12#.api.GetSuggestionParametersRequest\x1a!.api.GetSuggestionParametersReply\"7\x82\xd3\xe4\x93\x02\x31\x12//api/Manager/GetSuggestionParameters/{param_id}\x12\xa6\x01\n\x1aGetSuggestionParameterList\x12&.api.GetSuggestionParameterListRequest\x1a$.api.GetSuggestionParameterListReply\":\x82\xd3\xe4\x93\x02\x34\x12\x32/api/Manager/GetSuggestionParameterList/{study_id}\x12\x9e\x01\n\x1aSetEarlyStoppingParameters\x12&.api.SetEarlyStoppingParametersRequest\x1a$.api.SetEarlyStoppingParametersReply\"2\x82\xd3\xe4\x93\x02,\"\'/api/Manager/SetEarlyStoppingParameters:\x01*\x12\xa6\x01\n\x1aGetEarlyStoppingParameters\x12&.api.GetEarlyStoppingParametersRequest\x1a$.api.GetEarlyStoppingParametersReply\":\x82\xd3\xe4\x93\x02\x34\x12\x32/api/Manager/GetEarlyStoppingParameters/{param_id}\x12\xb2\x01\n\x1dGetEarlyStoppingParameterList\x12).api.GetEarlyStoppingParameterListRequest\x1a\'.api.GetEarlyStoppingParameterListReply\"=\x82\xd3\xe4\x93\x02\x37\x12\x35/api/Manager/GetEarlyStoppingParameterList/{study_id}\x12Z\n\tSaveStudy\x12\x15.api.SaveStudyRequest\x1a\x13.api.SaveStudyReply\"!\x82\xd3\xe4\x93\x02\x1b\"\x16/api/Manager/SaveStudy:\x01*\x12Z\n\tSaveModel\x12\x15.api.SaveModelRequest\x1a\x13.api.SaveModelReply\"!\x82\xd3\xe4\x93\x02\x1b\"\x16/api/Manager/SaveModel:\x01*\x12z\n\x11ReportMetricsLogs\x12\x1d.api.ReportMetricsLogsRequest\x1a\x1b.api.ReportMetricsLogsReply\")\x82\xd3\xe4\x93\x02#\"\x1e/api/Manager/ReportMetricsLogs:\x01*\x12o\n\x0fGetSavedStudies\x12\x1b.api.GetSavedStudiesRequest\x1a\x19.api.GetSavedStudiesReply\"$\x82\xd3\xe4\x93\x02\x1e\x12\x1c/api/Manager/GetSavedStudies\x12k\n\x0eGetSavedModels\x12\x1a.api.GetSavedModelsRequest\x1a\x18.api.GetSavedModelsReply\"#\x82\xd3\xe4\x93\x02\x1d\x12\x1b/api/Manager/GetSavedModels2T\n\nSuggestion\x12\x46\n\x0eGetSuggestions\x12\x1a.api.GetSuggestionsRequest\x1a\x18.api.GetSuggestionsReply2i\n\rEarlyStopping\x12X\n\x14GetShouldStopWorkers\x12 .api.GetShouldStopWorkersRequest\x1a\x1e.api.GetShouldStopWorkersReplyb\x06proto3')
+ serialized_pb=_b('\n\tapi.proto\x12\x03\x61pi\x1a\x1cgoogle/api/annotations.proto\"7\n\rFeasibleSpace\x12\x0b\n\x03max\x18\x01 \x01(\t\x12\x0b\n\x03min\x18\x02 \x01(\t\x12\x0c\n\x04list\x18\x03 \x03(\t\"q\n\x0fParameterConfig\x12\x0c\n\x04name\x18\x01 \x01(\t\x12*\n\x0eparameter_type\x18\x02 \x01(\x0e\x32\x12.api.ParameterType\x12$\n\x08\x66\x65\x61sible\x18\x03 \x01(\x0b\x32\x12.api.FeasibleSpace\"T\n\tParameter\x12\x0c\n\x04name\x18\x01 \x01(\t\x12*\n\x0eparameter_type\x18\x02 \x01(\x0e\x32\x12.api.ParameterType\x12\r\n\x05value\x18\x03 \x01(\t\"l\n\rMetricsLogSet\x12\x11\n\tworker_id\x18\x01 \x01(\t\x12%\n\x0cmetrics_logs\x18\x02 \x03(\x0b\x32\x0f.api.MetricsLog\x12!\n\rworker_status\x18\x03 \x01(\x0e\x32\n.api.State\"&\n\x07Metrics\x12\x0c\n\x04name\x18\x01 \x01(\t\x12\r\n\x05value\x18\x02 \x01(\t\"/\n\x10MetricsValueTime\x12\x0c\n\x04time\x18\x01 \x01(\t\x12\r\n\x05value\x18\x02 \x01(\t\"A\n\nMetricsLog\x12\x0c\n\x04name\x18\x01 \x01(\t\x12%\n\x06values\x18\x02 \x03(\x0b\x32\x15.api.MetricsValueTime\"2\n\x13SuggestionParameter\x12\x0c\n\x04name\x18\x01 \x01(\t\x12\r\n\x05value\x18\x02 \x01(\t\"5\n\x16\x45\x61rlyStoppingParameter\x12\x0c\n\x04name\x18\x01 \x01(\t\x12\r\n\x05value\x18\x02 \x01(\t\"\"\n\x03Tag\x12\x0c\n\x04name\x18\x01 \x01(\t\x12\r\n\x05value\x18\x02 \x01(\t\"M\n\rStudyOverview\x12\x0c\n\x04name\x18\x01 \x01(\t\x12\r\n\x05owner\x18\x02 \x01(\t\x12\n\n\x02id\x18\x03 \x01(\t\x12\x13\n\x0b\x64\x65scription\x18\x04 \x01(\t\"\x83\x01\n\x05Trial\x12\x10\n\x08trial_id\x18\x01 \x01(\t\x12\x10\n\x08study_id\x18\x02 \x01(\t\x12%\n\rparameter_set\x18\x03 \x03(\x0b\x32\x0e.api.Parameter\x12\x17\n\x0fobjective_value\x18\x04 \x01(\t\x12\x16\n\x04tags\x18\x05 \x03(\x0b\x32\x08.api.Tag\"\x97\x01\n\x06Worker\x12\x11\n\tworker_id\x18\x01 \x01(\t\x12\x10\n\x08study_id\x18\x02 \x01(\t\x12\x10\n\x08trial_id\x18\x03 \x01(\t\x12\x0c\n\x04Type\x18\x04 \x01(\t\x12\x1a\n\x06status\x18\x05 \x01(\x0e\x32\n.api.State\x12\x14\n\x0cTemplatePath\x18\x06 \x01(\t\x12\x16\n\x04tags\x18\x07 \x03(\x0b\x32\x08.api.Tag\"\xe2\x02\n\x0bStudyConfig\x12\x0c\n\x04name\x18\x01 \x01(\t\x12\r\n\x05owner\x18\x02 \x01(\t\x12\x30\n\x11optimization_type\x18\x03 \x01(\x0e\x32\x15.api.OptimizationType\x12\x19\n\x11optimization_goal\x18\x04 \x01(\x01\x12<\n\x11parameter_configs\x18\x05 \x01(\x0b\x32!.api.StudyConfig.ParameterConfigs\x12\x1a\n\x12\x61\x63\x63\x65ss_permissions\x18\x06 \x03(\t\x12\x16\n\x04tags\x18\x07 \x03(\x0b\x32\x08.api.Tag\x12\x1c\n\x14objective_value_name\x18\x08 \x01(\t\x12\x0f\n\x07metrics\x18\t \x03(\t\x12\r\n\x05jobId\x18\n \x01(\t\x1a\x39\n\x10ParameterConfigs\x12%\n\x07\x63onfigs\x18\x01 \x03(\x0b\x32\x14.api.ParameterConfig\"<\n\x12\x43reateStudyRequest\x12&\n\x0cstudy_config\x18\x01 \x01(\x0b\x32\x10.api.StudyConfig\"$\n\x10\x43reateStudyReply\x12\x10\n\x08study_id\x18\x01 \x01(\t\"#\n\x0fGetStudyRequest\x12\x10\n\x08study_id\x18\x01 \x01(\t\"7\n\rGetStudyReply\x12&\n\x0cstudy_config\x18\x01 \x01(\x0b\x32\x10.api.StudyConfig\"\x15\n\x13GetStudyListRequest\"@\n\x11GetStudyListReply\x12+\n\x0fstudy_overviews\x18\x01 \x03(\x0b\x32\x12.api.StudyOverview\"/\n\x12\x43reateTrialRequest\x12\x19\n\x05trial\x18\x01 \x01(\x0b\x32\n.api.Trial\"$\n\x10\x43reateTrialReply\x12\x10\n\x08trial_id\x18\x01 \x01(\t\"$\n\x10GetTrialsRequest\x12\x10\n\x08study_id\x18\x01 \x01(\t\",\n\x0eGetTrialsReply\x12\x1a\n\x06trials\x18\x01 \x03(\x0b\x32\n.api.Trial\"#\n\x0fGetTrialRequest\x12\x10\n\x08trial_id\x18\x01 \x01(\t\"*\n\rGetTrialReply\x12\x19\n\x05trial\x18\x01 \x01(\x0b\x32\n.api.Trial\"4\n\x15RegisterWorkerRequest\x12\x1b\n\x06worker\x18\x01 \x01(\x0b\x32\x0b.api.Worker\"(\n\x13RegisterWorkerReply\x12\x11\n\tworker_id\x18\x01 \x01(\t\"O\n\x12StopWorkersRequest\x12\x10\n\x08study_id\x18\x01 \x01(\t\x12\x12\n\nworker_ids\x18\x02 \x03(\t\x12\x13\n\x0bis_complete\x18\x03 \x01(\x08\"\x12\n\x10StopWorkersReply\"J\n\x11GetWorkersRequest\x12\x10\n\x08study_id\x18\x01 \x01(\t\x12\x10\n\x08trial_id\x18\x02 \x01(\t\x12\x11\n\tworker_id\x18\x03 \x01(\t\"/\n\x0fGetWorkersReply\x12\x1c\n\x07workers\x18\x01 \x03(\x0b\x32\x0b.api.Worker\"I\n\x18UpdateWorkerStateRequest\x12\x11\n\tworker_id\x18\x01 \x01(\t\x12\x1a\n\x06status\x18\x02 \x01(\x0e\x32\n.api.State\"\x18\n\x16UpdateWorkerStateReply\"j\n\x18GetWorkerFullInfoRequest\x12\x10\n\x08study_id\x18\x01 \x01(\t\x12\x10\n\x08trial_id\x18\x02 \x01(\t\x12\x11\n\tworker_id\x18\x03 \x01(\t\x12\x17\n\x0fonly_latest_log\x18\x04 \x01(\x08\"{\n\x0eWorkerFullInfo\x12\x1b\n\x06Worker\x18\x01 \x01(\x0b\x32\x0b.api.Worker\x12%\n\rparameter_set\x18\x02 \x03(\x0b\x32\x0e.api.Parameter\x12%\n\x0cmetrics_logs\x18\x03 \x03(\x0b\x32\x0f.api.MetricsLog\"H\n\x16GetWorkerFullInfoReply\x12.\n\x11worker_full_infos\x18\x01 \x03(\x0b\x32\x13.api.WorkerFullInfo\"\x89\x01\n\x15GetSuggestionsRequest\x12\x10\n\x08study_id\x18\x01 \x01(\t\x12\x1c\n\x14suggestion_algorithm\x18\x02 \x01(\t\x12\x16\n\x0erequest_number\x18\x03 \x01(\x05\x12\x16\n\x0elog_worker_ids\x18\x04 \x03(\t\x12\x10\n\x08param_id\x18\x05 \x01(\t\"1\n\x13GetSuggestionsReply\x12\x1a\n\x06trials\x18\x01 \x03(\x0b\x32\n.api.Trial\"c\n\x1bGetShouldStopWorkersRequest\x12\x10\n\x08study_id\x18\x01 \x01(\t\x12 \n\x18\x65\x61rly_stopping_algorithm\x18\x02 \x01(\t\x12\x10\n\x08param_id\x18\x05 \x01(\t\";\n\x19GetShouldStopWorkersReply\x12\x1e\n\x16should_stop_worker_ids\x18\x01 \x03(\t\"P\n\x11GetMetricsRequest\x12\x10\n\x08study_id\x18\x01 \x01(\t\x12\x12\n\nworker_ids\x18\x02 \x03(\t\x12\x15\n\rmetrics_names\x18\x03 \x03(\t\"?\n\x0fGetMetricsReply\x12,\n\x10metrics_log_sets\x18\x01 \x03(\x0b\x32\x12.api.MetricsLogSet\"Z\n\x18ReportMetricsLogsRequest\x12\x10\n\x08study_id\x18\x01 \x01(\t\x12,\n\x10metrics_log_sets\x18\x03 \x03(\x0b\x32\x12.api.MetricsLogSet\"\x18\n\x16ReportMetricsLogsReply\"\x89\x01\n\tModelInfo\x12\x12\n\nstudy_name\x18\x01 \x01(\t\x12\x11\n\tworker_id\x18\x02 \x01(\t\x12\"\n\nparameters\x18\x03 \x03(\x0b\x32\x0e.api.Parameter\x12\x1d\n\x07metrics\x18\x04 \x03(\x0b\x32\x0c.api.Metrics\x12\x12\n\nmodel_path\x18\x05 \x01(\t\")\n\x0b\x44\x61taSetInfo\x12\x0c\n\x04name\x18\x01 \x01(\t\x12\x0c\n\x04path\x18\x02 \x01(\t\"J\n\x10SaveStudyRequest\x12\x12\n\nstudy_name\x18\x01 \x01(\t\x12\r\n\x05owner\x18\x02 \x01(\t\x12\x13\n\x0b\x64\x65scription\x18\x03 \x01(\t\"\x10\n\x0eSaveStudyReply\"k\n\x10SaveModelRequest\x12\x1d\n\x05model\x18\x01 \x01(\x0b\x32\x0e.api.ModelInfo\x12\"\n\x08\x64\x61ta_set\x18\x02 \x01(\x0b\x32\x10.api.DataSetInfo\x12\x14\n\x0ctensor_board\x18\x03 \x01(\x08\"\x10\n\x0eSaveModelReply\"\x18\n\x16GetSavedStudiesRequest\";\n\x14GetSavedStudiesReply\x12#\n\x07studies\x18\x01 \x03(\x0b\x32\x12.api.StudyOverview\"+\n\x15GetSavedModelsRequest\x12\x12\n\nstudy_name\x18\x01 \x01(\t\"5\n\x13GetSavedModelsReply\x12\x1e\n\x06models\x18\x01 \x03(\x0b\x32\x0e.api.ModelInfo\"=\n\x14GetSavedModelRequest\x12\x12\n\nstudy_name\x18\x01 \x01(\t\x12\x11\n\tworker_id\x18\x02 \x01(\t\"3\n\x12GetSavedModelReply\x12\x1d\n\x05model\x18\x01 \x01(\x0b\x32\x0e.api.ModelInfo\"\x9b\x01\n\x1eSetSuggestionParametersRequest\x12\x10\n\x08study_id\x18\x01 \x01(\t\x12\x1c\n\x14suggestion_algorithm\x18\x02 \x01(\t\x12\x10\n\x08param_id\x18\x03 \x01(\t\x12\x37\n\x15suggestion_parameters\x18\x04 \x03(\x0b\x32\x18.api.SuggestionParameter\"0\n\x1cSetSuggestionParametersReply\x12\x10\n\x08param_id\x18\x01 \x01(\t\"2\n\x1eGetSuggestionParametersRequest\x12\x10\n\x08param_id\x18\x01 \x01(\t\"W\n\x1cGetSuggestionParametersReply\x12\x37\n\x15suggestion_parameters\x18\x01 \x03(\x0b\x32\x18.api.SuggestionParameter\"5\n!GetSuggestionParameterListRequest\x12\x10\n\x08study_id\x18\x01 \x01(\t\"\x81\x01\n\x16SuggestionParameterSet\x12\x10\n\x08param_id\x18\x01 \x01(\t\x12\x1c\n\x14suggestion_algorithm\x18\x02 \x01(\t\x12\x37\n\x15suggestion_parameters\x18\x03 \x03(\x0b\x32\x18.api.SuggestionParameter\"a\n\x1fGetSuggestionParameterListReply\x12>\n\x19suggestion_parameter_sets\x18\x01 \x03(\x0b\x32\x1b.api.SuggestionParameterSet\")\n\x15StopSuggestionRequest\x12\x10\n\x08study_id\x18\x01 \x01(\t\"\x15\n\x13StopSuggestionReply\"\xa9\x01\n!SetEarlyStoppingParametersRequest\x12\x10\n\x08study_id\x18\x01 \x01(\t\x12 \n\x18\x65\x61rly_stopping_algorithm\x18\x02 \x01(\t\x12\x10\n\x08param_id\x18\x03 \x01(\t\x12>\n\x19\x65\x61rly_stopping_parameters\x18\x04 \x03(\x0b\x32\x1b.api.EarlyStoppingParameter\"3\n\x1fSetEarlyStoppingParametersReply\x12\x10\n\x08param_id\x18\x01 \x01(\t\"5\n!GetEarlyStoppingParametersRequest\x12\x10\n\x08param_id\x18\x01 \x01(\t\"a\n\x1fGetEarlyStoppingParametersReply\x12>\n\x19\x65\x61rly_stopping_parameters\x18\x01 \x03(\x0b\x32\x1b.api.EarlyStoppingParameter\"8\n$GetEarlyStoppingParameterListRequest\x12\x10\n\x08study_id\x18\x01 \x01(\t\"\x8f\x01\n\x19\x45\x61rlyStoppingParameterSet\x12\x10\n\x08param_id\x18\x01 \x01(\t\x12 \n\x18\x65\x61rly_stopping_algorithm\x18\x02 \x01(\t\x12>\n\x19\x65\x61rly_stopping_parameters\x18\x03 \x03(\x0b\x32\x1b.api.EarlyStoppingParameter\"k\n\"GetEarlyStoppingParameterListReply\x12\x45\n\x1d\x65\x61rly_stopping_parameter_sets\x18\x01 \x03(\x0b\x32\x1e.api.EarlyStoppingParameterSet*U\n\rParameterType\x12\x10\n\x0cUNKNOWN_TYPE\x10\x00\x12\n\n\x06\x44OUBLE\x10\x01\x12\x07\n\x03INT\x10\x02\x12\x0c\n\x08\x44ISCRETE\x10\x03\x12\x0f\n\x0b\x43\x41TEGORICAL\x10\x04*H\n\x10OptimizationType\x12\x18\n\x14UNKNOWN_OPTIMIZATION\x10\x00\x12\x0c\n\x08MINIMIZE\x10\x01\x12\x0c\n\x08MAXIMIZE\x10\x02*G\n\x05State\x12\x0b\n\x07PENDING\x10\x00\x12\x0b\n\x07RUNNING\x10\x01\x12\r\n\tCOMPLETED\x10\x02\x12\n\n\x06KILLED\x10\x03\x12\t\n\x05\x45RROR\x10x2\xff\x16\n\x07Manager\x12m\n\x0b\x43reateStudy\x12\x17.api.CreateStudyRequest\x1a\x15.api.CreateStudyReply\".\x82\xd3\xe4\x93\x02(\"\x18/api/Manager/CreateStudy:\x0cstudy_config\x12^\n\x08GetStudy\x12\x14.api.GetStudyRequest\x1a\x12.api.GetStudyReply\"(\x82\xd3\xe4\x93\x02\"\x12 /api/Manager/GetStudy/{study_id}\x12\x63\n\x0cGetStudyList\x12\x18.api.GetStudyListRequest\x1a\x16.api.GetStudyListReply\"!\x82\xd3\xe4\x93\x02\x1b\x12\x19/api/Manager/GetStudyList\x12\x66\n\x0b\x43reateTrial\x12\x17.api.CreateTrialRequest\x1a\x15.api.CreateTrialReply\"\'\x82\xd3\xe4\x93\x02!\"\x18/api/Manager/CreateTrial:\x05trial\x12\x62\n\tGetTrials\x12\x15.api.GetTrialsRequest\x1a\x13.api.GetTrialsReply\")\x82\xd3\xe4\x93\x02#\x12!/api/Manager/GetTrials/{study_id}\x12^\n\x08GetTrial\x12\x14.api.GetTrialRequest\x1a\x12.api.GetTrialReply\"(\x82\xd3\xe4\x93\x02\"\x12 /api/Manager/GetTrial/{trial_id}\x12s\n\x0eRegisterWorker\x12\x1a.api.RegisterWorkerRequest\x1a\x18.api.RegisterWorkerReply\"+\x82\xd3\xe4\x93\x02%\"\x1b/api/Manager/RegisterWorker:\x06worker\x12[\n\nGetWorkers\x12\x16.api.GetWorkersRequest\x1a\x14.api.GetWorkersReply\"\x1f\x82\xd3\xe4\x93\x02\x19\x12\x17/api/Manager/GetWorkers\x12z\n\x11UpdateWorkerState\x12\x1d.api.UpdateWorkerStateRequest\x1a\x1b.api.UpdateWorkerStateReply\")\x82\xd3\xe4\x93\x02#\x1a\x1e/api/Manager/UpdateWorkerState:\x01*\x12w\n\x11GetWorkerFullInfo\x12\x1d.api.GetWorkerFullInfoRequest\x1a\x1b.api.GetWorkerFullInfoReply\"&\x82\xd3\xe4\x93\x02 \x12\x1e/api/Manager/GetWorkerFullInfo\x12n\n\x0eGetSuggestions\x12\x1a.api.GetSuggestionsRequest\x1a\x18.api.GetSuggestionsReply\"&\x82\xd3\xe4\x93\x02 \"\x1b/api/Manager/GetSuggestions:\x01*\x12\x90\x01\n\x14GetShouldStopWorkers\x12 .api.GetShouldStopWorkersRequest\x1a\x1e.api.GetShouldStopWorkersReply\"6\x82\xd3\xe4\x93\x02\x30\"+/api/Manager/GetTrials/GetShouldStopWorkers:\x01*\x12^\n\nGetMetrics\x12\x16.api.GetMetricsRequest\x1a\x14.api.GetMetricsReply\"\"\x82\xd3\xe4\x93\x02\x1c\"\x17/api/Manager/GetMetrics:\x01*\x12\x92\x01\n\x17SetSuggestionParameters\x12#.api.SetSuggestionParametersRequest\x1a!.api.SetSuggestionParametersReply\"/\x82\xd3\xe4\x93\x02)\"$/api/Manager/SetSuggestionParameters:\x01*\x12\x9a\x01\n\x17GetSuggestionParameters\x12#.api.GetSuggestionParametersRequest\x1a!.api.GetSuggestionParametersReply\"7\x82\xd3\xe4\x93\x02\x31\x12//api/Manager/GetSuggestionParameters/{param_id}\x12\xa6\x01\n\x1aGetSuggestionParameterList\x12&.api.GetSuggestionParameterListRequest\x1a$.api.GetSuggestionParameterListReply\":\x82\xd3\xe4\x93\x02\x34\x12\x32/api/Manager/GetSuggestionParameterList/{study_id}\x12\x9e\x01\n\x1aSetEarlyStoppingParameters\x12&.api.SetEarlyStoppingParametersRequest\x1a$.api.SetEarlyStoppingParametersReply\"2\x82\xd3\xe4\x93\x02,\"\'/api/Manager/SetEarlyStoppingParameters:\x01*\x12\xa6\x01\n\x1aGetEarlyStoppingParameters\x12&.api.GetEarlyStoppingParametersRequest\x1a$.api.GetEarlyStoppingParametersReply\":\x82\xd3\xe4\x93\x02\x34\x12\x32/api/Manager/GetEarlyStoppingParameters/{param_id}\x12\xb2\x01\n\x1dGetEarlyStoppingParameterList\x12).api.GetEarlyStoppingParameterListRequest\x1a\'.api.GetEarlyStoppingParameterListReply\"=\x82\xd3\xe4\x93\x02\x37\x12\x35/api/Manager/GetEarlyStoppingParameterList/{study_id}\x12Z\n\tSaveStudy\x12\x15.api.SaveStudyRequest\x1a\x13.api.SaveStudyReply\"!\x82\xd3\xe4\x93\x02\x1b\"\x16/api/Manager/SaveStudy:\x01*\x12Z\n\tSaveModel\x12\x15.api.SaveModelRequest\x1a\x13.api.SaveModelReply\"!\x82\xd3\xe4\x93\x02\x1b\"\x16/api/Manager/SaveModel:\x01*\x12z\n\x11ReportMetricsLogs\x12\x1d.api.ReportMetricsLogsRequest\x1a\x1b.api.ReportMetricsLogsReply\")\x82\xd3\xe4\x93\x02#\"\x1e/api/Manager/ReportMetricsLogs:\x01*\x12o\n\x0fGetSavedStudies\x12\x1b.api.GetSavedStudiesRequest\x1a\x19.api.GetSavedStudiesReply\"$\x82\xd3\xe4\x93\x02\x1e\x12\x1c/api/Manager/GetSavedStudies\x12k\n\x0eGetSavedModels\x12\x1a.api.GetSavedModelsRequest\x1a\x18.api.GetSavedModelsReply\"#\x82\xd3\xe4\x93\x02\x1d\x12\x1b/api/Manager/GetSavedModels2T\n\nSuggestion\x12\x46\n\x0eGetSuggestions\x12\x1a.api.GetSuggestionsRequest\x1a\x18.api.GetSuggestionsReply2i\n\rEarlyStopping\x12X\n\x14GetShouldStopWorkers\x12 .api.GetShouldStopWorkersRequest\x1a\x1e.api.GetShouldStopWorkersReplyb\x06proto3')
,
dependencies=[google_dot_api_dot_annotations__pb2.DESCRIPTOR,])
@@ -54,8 +54,8 @@
],
containing_type=None,
options=None,
- serialized_start=5341,
- serialized_end=5426,
+ serialized_start=5422,
+ serialized_end=5507,
)
_sym_db.RegisterEnumDescriptor(_PARAMETERTYPE)
@@ -81,8 +81,8 @@
],
containing_type=None,
options=None,
- serialized_start=5428,
- serialized_end=5500,
+ serialized_start=5509,
+ serialized_end=5581,
)
_sym_db.RegisterEnumDescriptor(_OPTIMIZATIONTYPE)
@@ -116,8 +116,8 @@
],
containing_type=None,
options=None,
- serialized_start=5502,
- serialized_end=5573,
+ serialized_start=5583,
+ serialized_end=5654,
)
_sym_db.RegisterEnumDescriptor(_STATE)
@@ -1157,6 +1157,68 @@
)
+_GETTRIALREQUEST = _descriptor.Descriptor(
+ name='GetTrialRequest',
+ full_name='api.GetTrialRequest',
+ filename=None,
+ file=DESCRIPTOR,
+ containing_type=None,
+ fields=[
+ _descriptor.FieldDescriptor(
+ name='trial_id', full_name='api.GetTrialRequest.trial_id', index=0,
+ number=1, type=9, cpp_type=9, label=1,
+ has_default_value=False, default_value=_b("").decode('utf-8'),
+ message_type=None, enum_type=None, containing_type=None,
+ is_extension=False, extension_scope=None,
+ options=None),
+ ],
+ extensions=[
+ ],
+ nested_types=[],
+ enum_types=[
+ ],
+ options=None,
+ is_extendable=False,
+ syntax='proto3',
+ extension_ranges=[],
+ oneofs=[
+ ],
+ serialized_start=1893,
+ serialized_end=1928,
+)
+
+
+_GETTRIALREPLY = _descriptor.Descriptor(
+ name='GetTrialReply',
+ full_name='api.GetTrialReply',
+ filename=None,
+ file=DESCRIPTOR,
+ containing_type=None,
+ fields=[
+ _descriptor.FieldDescriptor(
+ name='trial', full_name='api.GetTrialReply.trial', index=0,
+ number=1, type=11, cpp_type=10, label=1,
+ has_default_value=False, default_value=None,
+ message_type=None, enum_type=None, containing_type=None,
+ is_extension=False, extension_scope=None,
+ options=None),
+ ],
+ extensions=[
+ ],
+ nested_types=[],
+ enum_types=[
+ ],
+ options=None,
+ is_extendable=False,
+ syntax='proto3',
+ extension_ranges=[],
+ oneofs=[
+ ],
+ serialized_start=1930,
+ serialized_end=1972,
+)
+
+
_REGISTERWORKERREQUEST = _descriptor.Descriptor(
name='RegisterWorkerRequest',
full_name='api.RegisterWorkerRequest',
@@ -1183,8 +1245,8 @@
extension_ranges=[],
oneofs=[
],
- serialized_start=1893,
- serialized_end=1945,
+ serialized_start=1974,
+ serialized_end=2026,
)
@@ -1214,8 +1276,8 @@
extension_ranges=[],
oneofs=[
],
- serialized_start=1947,
- serialized_end=1987,
+ serialized_start=2028,
+ serialized_end=2068,
)
@@ -1259,8 +1321,8 @@
extension_ranges=[],
oneofs=[
],
- serialized_start=1989,
- serialized_end=2068,
+ serialized_start=2070,
+ serialized_end=2149,
)
@@ -1283,8 +1345,8 @@
extension_ranges=[],
oneofs=[
],
- serialized_start=2070,
- serialized_end=2088,
+ serialized_start=2151,
+ serialized_end=2169,
)
@@ -1328,8 +1390,8 @@
extension_ranges=[],
oneofs=[
],
- serialized_start=2090,
- serialized_end=2164,
+ serialized_start=2171,
+ serialized_end=2245,
)
@@ -1359,8 +1421,8 @@
extension_ranges=[],
oneofs=[
],
- serialized_start=2166,
- serialized_end=2213,
+ serialized_start=2247,
+ serialized_end=2294,
)
@@ -1397,8 +1459,8 @@
extension_ranges=[],
oneofs=[
],
- serialized_start=2215,
- serialized_end=2288,
+ serialized_start=2296,
+ serialized_end=2369,
)
@@ -1421,8 +1483,8 @@
extension_ranges=[],
oneofs=[
],
- serialized_start=2290,
- serialized_end=2314,
+ serialized_start=2371,
+ serialized_end=2395,
)
@@ -1473,8 +1535,8 @@
extension_ranges=[],
oneofs=[
],
- serialized_start=2316,
- serialized_end=2422,
+ serialized_start=2397,
+ serialized_end=2503,
)
@@ -1518,8 +1580,8 @@
extension_ranges=[],
oneofs=[
],
- serialized_start=2424,
- serialized_end=2547,
+ serialized_start=2505,
+ serialized_end=2628,
)
@@ -1549,8 +1611,8 @@
extension_ranges=[],
oneofs=[
],
- serialized_start=2549,
- serialized_end=2621,
+ serialized_start=2630,
+ serialized_end=2702,
)
@@ -1608,8 +1670,8 @@
extension_ranges=[],
oneofs=[
],
- serialized_start=2624,
- serialized_end=2761,
+ serialized_start=2705,
+ serialized_end=2842,
)
@@ -1639,8 +1701,8 @@
extension_ranges=[],
oneofs=[
],
- serialized_start=2763,
- serialized_end=2812,
+ serialized_start=2844,
+ serialized_end=2893,
)
@@ -1684,8 +1746,8 @@
extension_ranges=[],
oneofs=[
],
- serialized_start=2814,
- serialized_end=2913,
+ serialized_start=2895,
+ serialized_end=2994,
)
@@ -1715,8 +1777,8 @@
extension_ranges=[],
oneofs=[
],
- serialized_start=2915,
- serialized_end=2974,
+ serialized_start=2996,
+ serialized_end=3055,
)
@@ -1760,8 +1822,8 @@
extension_ranges=[],
oneofs=[
],
- serialized_start=2976,
- serialized_end=3056,
+ serialized_start=3057,
+ serialized_end=3137,
)
@@ -1791,8 +1853,8 @@
extension_ranges=[],
oneofs=[
],
- serialized_start=3058,
- serialized_end=3121,
+ serialized_start=3139,
+ serialized_end=3202,
)
@@ -1829,8 +1891,8 @@
extension_ranges=[],
oneofs=[
],
- serialized_start=3123,
- serialized_end=3213,
+ serialized_start=3204,
+ serialized_end=3294,
)
@@ -1853,8 +1915,8 @@
extension_ranges=[],
oneofs=[
],
- serialized_start=3215,
- serialized_end=3239,
+ serialized_start=3296,
+ serialized_end=3320,
)
@@ -1912,8 +1974,8 @@
extension_ranges=[],
oneofs=[
],
- serialized_start=3242,
- serialized_end=3379,
+ serialized_start=3323,
+ serialized_end=3460,
)
@@ -1950,8 +2012,8 @@
extension_ranges=[],
oneofs=[
],
- serialized_start=3381,
- serialized_end=3422,
+ serialized_start=3462,
+ serialized_end=3503,
)
@@ -1995,8 +2057,8 @@
extension_ranges=[],
oneofs=[
],
- serialized_start=3424,
- serialized_end=3498,
+ serialized_start=3505,
+ serialized_end=3579,
)
@@ -2019,8 +2081,8 @@
extension_ranges=[],
oneofs=[
],
- serialized_start=3500,
- serialized_end=3516,
+ serialized_start=3581,
+ serialized_end=3597,
)
@@ -2064,8 +2126,8 @@
extension_ranges=[],
oneofs=[
],
- serialized_start=3518,
- serialized_end=3625,
+ serialized_start=3599,
+ serialized_end=3706,
)
@@ -2088,8 +2150,8 @@
extension_ranges=[],
oneofs=[
],
- serialized_start=3627,
- serialized_end=3643,
+ serialized_start=3708,
+ serialized_end=3724,
)
@@ -2112,8 +2174,8 @@
extension_ranges=[],
oneofs=[
],
- serialized_start=3645,
- serialized_end=3669,
+ serialized_start=3726,
+ serialized_end=3750,
)
@@ -2143,8 +2205,8 @@
extension_ranges=[],
oneofs=[
],
- serialized_start=3671,
- serialized_end=3730,
+ serialized_start=3752,
+ serialized_end=3811,
)
@@ -2174,8 +2236,8 @@
extension_ranges=[],
oneofs=[
],
- serialized_start=3732,
- serialized_end=3775,
+ serialized_start=3813,
+ serialized_end=3856,
)
@@ -2205,8 +2267,8 @@
extension_ranges=[],
oneofs=[
],
- serialized_start=3777,
- serialized_end=3830,
+ serialized_start=3858,
+ serialized_end=3911,
)
@@ -2243,8 +2305,8 @@
extension_ranges=[],
oneofs=[
],
- serialized_start=3832,
- serialized_end=3893,
+ serialized_start=3913,
+ serialized_end=3974,
)
@@ -2274,8 +2336,8 @@
extension_ranges=[],
oneofs=[
],
- serialized_start=3895,
- serialized_end=3946,
+ serialized_start=3976,
+ serialized_end=4027,
)
@@ -2326,8 +2388,8 @@
extension_ranges=[],
oneofs=[
],
- serialized_start=3949,
- serialized_end=4104,
+ serialized_start=4030,
+ serialized_end=4185,
)
@@ -2357,8 +2419,8 @@
extension_ranges=[],
oneofs=[
],
- serialized_start=4106,
- serialized_end=4154,
+ serialized_start=4187,
+ serialized_end=4235,
)
@@ -2388,8 +2450,8 @@
extension_ranges=[],
oneofs=[
],
- serialized_start=4156,
- serialized_end=4206,
+ serialized_start=4237,
+ serialized_end=4287,
)
@@ -2419,8 +2481,8 @@
extension_ranges=[],
oneofs=[
],
- serialized_start=4208,
- serialized_end=4295,
+ serialized_start=4289,
+ serialized_end=4376,
)
@@ -2450,8 +2512,8 @@
extension_ranges=[],
oneofs=[
],
- serialized_start=4297,
- serialized_end=4350,
+ serialized_start=4378,
+ serialized_end=4431,
)
@@ -2495,8 +2557,8 @@
extension_ranges=[],
oneofs=[
],
- serialized_start=4353,
- serialized_end=4482,
+ serialized_start=4434,
+ serialized_end=4563,
)
@@ -2526,8 +2588,8 @@
extension_ranges=[],
oneofs=[
],
- serialized_start=4484,
- serialized_end=4581,
+ serialized_start=4565,
+ serialized_end=4662,
)
@@ -2557,8 +2619,8 @@
extension_ranges=[],
oneofs=[
],
- serialized_start=4583,
- serialized_end=4624,
+ serialized_start=4664,
+ serialized_end=4705,
)
@@ -2581,8 +2643,8 @@
extension_ranges=[],
oneofs=[
],
- serialized_start=4626,
- serialized_end=4647,
+ serialized_start=4707,
+ serialized_end=4728,
)
@@ -2633,8 +2695,8 @@
extension_ranges=[],
oneofs=[
],
- serialized_start=4650,
- serialized_end=4819,
+ serialized_start=4731,
+ serialized_end=4900,
)
@@ -2664,8 +2726,8 @@
extension_ranges=[],
oneofs=[
],
- serialized_start=4821,
- serialized_end=4872,
+ serialized_start=4902,
+ serialized_end=4953,
)
@@ -2695,8 +2757,8 @@
extension_ranges=[],
oneofs=[
],
- serialized_start=4874,
- serialized_end=4927,
+ serialized_start=4955,
+ serialized_end=5008,
)
@@ -2726,8 +2788,8 @@
extension_ranges=[],
oneofs=[
],
- serialized_start=4929,
- serialized_end=5026,
+ serialized_start=5010,
+ serialized_end=5107,
)
@@ -2757,8 +2819,8 @@
extension_ranges=[],
oneofs=[
],
- serialized_start=5028,
- serialized_end=5084,
+ serialized_start=5109,
+ serialized_end=5165,
)
@@ -2802,8 +2864,8 @@
extension_ranges=[],
oneofs=[
],
- serialized_start=5087,
- serialized_end=5230,
+ serialized_start=5168,
+ serialized_end=5311,
)
@@ -2833,8 +2895,8 @@
extension_ranges=[],
oneofs=[
],
- serialized_start=5232,
- serialized_end=5339,
+ serialized_start=5313,
+ serialized_end=5420,
)
_PARAMETERCONFIG.fields_by_name['parameter_type'].enum_type = _PARAMETERTYPE
@@ -2857,6 +2919,7 @@
_GETSTUDYLISTREPLY.fields_by_name['study_overviews'].message_type = _STUDYOVERVIEW
_CREATETRIALREQUEST.fields_by_name['trial'].message_type = _TRIAL
_GETTRIALSREPLY.fields_by_name['trials'].message_type = _TRIAL
+_GETTRIALREPLY.fields_by_name['trial'].message_type = _TRIAL
_REGISTERWORKERREQUEST.fields_by_name['worker'].message_type = _WORKER
_GETWORKERSREPLY.fields_by_name['workers'].message_type = _WORKER
_UPDATEWORKERSTATEREQUEST.fields_by_name['status'].enum_type = _STATE
@@ -2906,6 +2969,8 @@
DESCRIPTOR.message_types_by_name['CreateTrialReply'] = _CREATETRIALREPLY
DESCRIPTOR.message_types_by_name['GetTrialsRequest'] = _GETTRIALSREQUEST
DESCRIPTOR.message_types_by_name['GetTrialsReply'] = _GETTRIALSREPLY
+DESCRIPTOR.message_types_by_name['GetTrialRequest'] = _GETTRIALREQUEST
+DESCRIPTOR.message_types_by_name['GetTrialReply'] = _GETTRIALREPLY
DESCRIPTOR.message_types_by_name['RegisterWorkerRequest'] = _REGISTERWORKERREQUEST
DESCRIPTOR.message_types_by_name['RegisterWorkerReply'] = _REGISTERWORKERREPLY
DESCRIPTOR.message_types_by_name['StopWorkersRequest'] = _STOPWORKERSREQUEST
@@ -3134,6 +3199,20 @@
))
_sym_db.RegisterMessage(GetTrialsReply)
+GetTrialRequest = _reflection.GeneratedProtocolMessageType('GetTrialRequest', (_message.Message,), dict(
+ DESCRIPTOR = _GETTRIALREQUEST,
+ __module__ = 'api_pb2'
+ # @@protoc_insertion_point(class_scope:api.GetTrialRequest)
+ ))
+_sym_db.RegisterMessage(GetTrialRequest)
+
+GetTrialReply = _reflection.GeneratedProtocolMessageType('GetTrialReply', (_message.Message,), dict(
+ DESCRIPTOR = _GETTRIALREPLY,
+ __module__ = 'api_pb2'
+ # @@protoc_insertion_point(class_scope:api.GetTrialReply)
+ ))
+_sym_db.RegisterMessage(GetTrialReply)
+
RegisterWorkerRequest = _reflection.GeneratedProtocolMessageType('RegisterWorkerRequest', (_message.Message,), dict(
DESCRIPTOR = _REGISTERWORKERREQUEST,
__module__ = 'api_pb2'
@@ -3471,8 +3550,8 @@
file=DESCRIPTOR,
index=0,
options=None,
- serialized_start=5576,
- serialized_end=8423,
+ serialized_start=5657,
+ serialized_end=8600,
methods=[
_descriptor.MethodDescriptor(
name='CreateStudy',
@@ -3519,10 +3598,19 @@
output_type=_GETTRIALSREPLY,
options=_descriptor._ParseOptions(descriptor_pb2.MethodOptions(), _b('\202\323\344\223\002#\022!/api/Manager/GetTrials/{study_id}')),
),
+ _descriptor.MethodDescriptor(
+ name='GetTrial',
+ full_name='api.Manager.GetTrial',
+ index=5,
+ containing_service=None,
+ input_type=_GETTRIALREQUEST,
+ output_type=_GETTRIALREPLY,
+ options=_descriptor._ParseOptions(descriptor_pb2.MethodOptions(), _b('\202\323\344\223\002\"\022 /api/Manager/GetTrial/{trial_id}')),
+ ),
_descriptor.MethodDescriptor(
name='RegisterWorker',
full_name='api.Manager.RegisterWorker',
- index=5,
+ index=6,
containing_service=None,
input_type=_REGISTERWORKERREQUEST,
output_type=_REGISTERWORKERREPLY,
@@ -3531,7 +3619,7 @@
_descriptor.MethodDescriptor(
name='GetWorkers',
full_name='api.Manager.GetWorkers',
- index=6,
+ index=7,
containing_service=None,
input_type=_GETWORKERSREQUEST,
output_type=_GETWORKERSREPLY,
@@ -3540,7 +3628,7 @@
_descriptor.MethodDescriptor(
name='UpdateWorkerState',
full_name='api.Manager.UpdateWorkerState',
- index=7,
+ index=8,
containing_service=None,
input_type=_UPDATEWORKERSTATEREQUEST,
output_type=_UPDATEWORKERSTATEREPLY,
@@ -3549,7 +3637,7 @@
_descriptor.MethodDescriptor(
name='GetWorkerFullInfo',
full_name='api.Manager.GetWorkerFullInfo',
- index=8,
+ index=9,
containing_service=None,
input_type=_GETWORKERFULLINFOREQUEST,
output_type=_GETWORKERFULLINFOREPLY,
@@ -3558,7 +3646,7 @@
_descriptor.MethodDescriptor(
name='GetSuggestions',
full_name='api.Manager.GetSuggestions',
- index=9,
+ index=10,
containing_service=None,
input_type=_GETSUGGESTIONSREQUEST,
output_type=_GETSUGGESTIONSREPLY,
@@ -3567,7 +3655,7 @@
_descriptor.MethodDescriptor(
name='GetShouldStopWorkers',
full_name='api.Manager.GetShouldStopWorkers',
- index=10,
+ index=11,
containing_service=None,
input_type=_GETSHOULDSTOPWORKERSREQUEST,
output_type=_GETSHOULDSTOPWORKERSREPLY,
@@ -3576,7 +3664,7 @@
_descriptor.MethodDescriptor(
name='GetMetrics',
full_name='api.Manager.GetMetrics',
- index=11,
+ index=12,
containing_service=None,
input_type=_GETMETRICSREQUEST,
output_type=_GETMETRICSREPLY,
@@ -3585,7 +3673,7 @@
_descriptor.MethodDescriptor(
name='SetSuggestionParameters',
full_name='api.Manager.SetSuggestionParameters',
- index=12,
+ index=13,
containing_service=None,
input_type=_SETSUGGESTIONPARAMETERSREQUEST,
output_type=_SETSUGGESTIONPARAMETERSREPLY,
@@ -3594,7 +3682,7 @@
_descriptor.MethodDescriptor(
name='GetSuggestionParameters',
full_name='api.Manager.GetSuggestionParameters',
- index=13,
+ index=14,
containing_service=None,
input_type=_GETSUGGESTIONPARAMETERSREQUEST,
output_type=_GETSUGGESTIONPARAMETERSREPLY,
@@ -3603,7 +3691,7 @@
_descriptor.MethodDescriptor(
name='GetSuggestionParameterList',
full_name='api.Manager.GetSuggestionParameterList',
- index=14,
+ index=15,
containing_service=None,
input_type=_GETSUGGESTIONPARAMETERLISTREQUEST,
output_type=_GETSUGGESTIONPARAMETERLISTREPLY,
@@ -3612,7 +3700,7 @@
_descriptor.MethodDescriptor(
name='SetEarlyStoppingParameters',
full_name='api.Manager.SetEarlyStoppingParameters',
- index=15,
+ index=16,
containing_service=None,
input_type=_SETEARLYSTOPPINGPARAMETERSREQUEST,
output_type=_SETEARLYSTOPPINGPARAMETERSREPLY,
@@ -3621,7 +3709,7 @@
_descriptor.MethodDescriptor(
name='GetEarlyStoppingParameters',
full_name='api.Manager.GetEarlyStoppingParameters',
- index=16,
+ index=17,
containing_service=None,
input_type=_GETEARLYSTOPPINGPARAMETERSREQUEST,
output_type=_GETEARLYSTOPPINGPARAMETERSREPLY,
@@ -3630,7 +3718,7 @@
_descriptor.MethodDescriptor(
name='GetEarlyStoppingParameterList',
full_name='api.Manager.GetEarlyStoppingParameterList',
- index=17,
+ index=18,
containing_service=None,
input_type=_GETEARLYSTOPPINGPARAMETERLISTREQUEST,
output_type=_GETEARLYSTOPPINGPARAMETERLISTREPLY,
@@ -3639,7 +3727,7 @@
_descriptor.MethodDescriptor(
name='SaveStudy',
full_name='api.Manager.SaveStudy',
- index=18,
+ index=19,
containing_service=None,
input_type=_SAVESTUDYREQUEST,
output_type=_SAVESTUDYREPLY,
@@ -3648,7 +3736,7 @@
_descriptor.MethodDescriptor(
name='SaveModel',
full_name='api.Manager.SaveModel',
- index=19,
+ index=20,
containing_service=None,
input_type=_SAVEMODELREQUEST,
output_type=_SAVEMODELREPLY,
@@ -3657,7 +3745,7 @@
_descriptor.MethodDescriptor(
name='ReportMetricsLogs',
full_name='api.Manager.ReportMetricsLogs',
- index=20,
+ index=21,
containing_service=None,
input_type=_REPORTMETRICSLOGSREQUEST,
output_type=_REPORTMETRICSLOGSREPLY,
@@ -3666,7 +3754,7 @@
_descriptor.MethodDescriptor(
name='GetSavedStudies',
full_name='api.Manager.GetSavedStudies',
- index=21,
+ index=22,
containing_service=None,
input_type=_GETSAVEDSTUDIESREQUEST,
output_type=_GETSAVEDSTUDIESREPLY,
@@ -3675,7 +3763,7 @@
_descriptor.MethodDescriptor(
name='GetSavedModels',
full_name='api.Manager.GetSavedModels',
- index=22,
+ index=23,
containing_service=None,
input_type=_GETSAVEDMODELSREQUEST,
output_type=_GETSAVEDMODELSREPLY,
@@ -3693,8 +3781,8 @@
file=DESCRIPTOR,
index=1,
options=None,
- serialized_start=8425,
- serialized_end=8509,
+ serialized_start=8602,
+ serialized_end=8686,
methods=[
_descriptor.MethodDescriptor(
name='GetSuggestions',
@@ -3717,8 +3805,8 @@
file=DESCRIPTOR,
index=2,
options=None,
- serialized_start=8511,
- serialized_end=8616,
+ serialized_start=8688,
+ serialized_end=8793,
methods=[
_descriptor.MethodDescriptor(
name='GetShouldStopWorkers',
@@ -3783,6 +3871,11 @@ def __init__(self, channel):
request_serializer=GetTrialsRequest.SerializeToString,
response_deserializer=GetTrialsReply.FromString,
)
+ self.GetTrial = channel.unary_unary(
+ '/api.Manager/GetTrial',
+ request_serializer=GetTrialRequest.SerializeToString,
+ response_deserializer=GetTrialReply.FromString,
+ )
self.RegisterWorker = channel.unary_unary(
'/api.Manager/RegisterWorker',
request_serializer=RegisterWorkerRequest.SerializeToString,
@@ -3925,6 +4018,14 @@ def GetTrials(self, request, context):
context.set_details('Method not implemented!')
raise NotImplementedError('Method not implemented!')
+ def GetTrial(self, request, context):
+ """*
+ Get a Trial Configuration from DB by ID of Trial.
+ """
+ context.set_code(grpc.StatusCode.UNIMPLEMENTED)
+ context.set_details('Method not implemented!')
+ raise NotImplementedError('Method not implemented!')
+
def RegisterWorker(self, request, context):
"""*
Create a Worker from Worker Config.
@@ -3936,7 +4037,7 @@ def RegisterWorker(self, request, context):
def GetWorkers(self, request, context):
"""*
- Get a Worker Configs and Statuses from DB by ID of Study, Trial or Worker.
+ Get a Worker Configs and Status from DB by ID of Study, Trial or Worker.
"""
context.set_code(grpc.StatusCode.UNIMPLEMENTED)
context.set_details('Method not implemented!')
@@ -3952,7 +4053,7 @@ def UpdateWorkerState(self, request, context):
def GetWorkerFullInfo(self, request, context):
"""*
- Get a full informations related to specified Workers.
+ Get full information related to specified Workers.
It includes Worker Config, HyperParameters and Metrics Logs.
"""
context.set_code(grpc.StatusCode.UNIMPLEMENTED)
@@ -3986,8 +4087,8 @@ def GetMetrics(self, request, context):
def SetSuggestionParameters(self, request, context):
"""*
Create or Update parameter set for a suggestion service.
- When you specified a ID of parameter set, it will update the parameter set by your request.
- When you specified no ID, it will create a new parameter set for corresponding study and suggestion service.
+ If you specify an ID of parameter set, it will update the parameter set by your request.
+ If you don't specify an ID, it will create a new parameter set for corresponding study and suggestion service.
The parameters are key-value format.
"""
context.set_code(grpc.StatusCode.UNIMPLEMENTED)
@@ -4097,6 +4198,11 @@ def add_ManagerServicer_to_server(servicer, server):
request_deserializer=GetTrialsRequest.FromString,
response_serializer=GetTrialsReply.SerializeToString,
),
+ 'GetTrial': grpc.unary_unary_rpc_method_handler(
+ servicer.GetTrial,
+ request_deserializer=GetTrialRequest.FromString,
+ response_serializer=GetTrialReply.SerializeToString,
+ ),
'RegisterWorker': grpc.unary_unary_rpc_method_handler(
servicer.RegisterWorker,
request_deserializer=RegisterWorkerRequest.FromString,
@@ -4316,6 +4422,11 @@ def GetTrials(self, request, context):
Get a Trial Configs from DB by ID of Study.
"""
context.code(beta_interfaces.StatusCode.UNIMPLEMENTED)
+ def GetTrial(self, request, context):
+ """*
+ Get a Trial Configuration from DB by ID of Trial.
+ """
+ context.code(beta_interfaces.StatusCode.UNIMPLEMENTED)
def RegisterWorker(self, request, context):
"""*
Create a Worker from Worker Config.
@@ -4324,7 +4435,7 @@ def RegisterWorker(self, request, context):
context.code(beta_interfaces.StatusCode.UNIMPLEMENTED)
def GetWorkers(self, request, context):
"""*
- Get a Worker Configs and Statuses from DB by ID of Study, Trial or Worker.
+ Get a Worker Configs and Status from DB by ID of Study, Trial or Worker.
"""
context.code(beta_interfaces.StatusCode.UNIMPLEMENTED)
def UpdateWorkerState(self, request, context):
@@ -4334,7 +4445,7 @@ def UpdateWorkerState(self, request, context):
context.code(beta_interfaces.StatusCode.UNIMPLEMENTED)
def GetWorkerFullInfo(self, request, context):
"""*
- Get a full informations related to specified Workers.
+ Get full information related to specified Workers.
It includes Worker Config, HyperParameters and Metrics Logs.
"""
context.code(beta_interfaces.StatusCode.UNIMPLEMENTED)
@@ -4356,8 +4467,8 @@ def GetMetrics(self, request, context):
def SetSuggestionParameters(self, request, context):
"""*
Create or Update parameter set for a suggestion service.
- When you specified a ID of parameter set, it will update the parameter set by your request.
- When you specified no ID, it will create a new parameter set for corresponding study and suggestion service.
+ If you specify an ID of parameter set, it will update the parameter set by your request.
+ If you don't specify an ID, it will create a new parameter set for corresponding study and suggestion service.
The parameters are key-value format.
"""
context.code(beta_interfaces.StatusCode.UNIMPLEMENTED)
@@ -4452,6 +4563,12 @@ def GetTrials(self, request, timeout, metadata=None, with_call=False, protocol_o
"""
raise NotImplementedError()
GetTrials.future = None
+ def GetTrial(self, request, timeout, metadata=None, with_call=False, protocol_options=None):
+ """*
+ Get a Trial Configuration from DB by ID of Trial.
+ """
+ raise NotImplementedError()
+ GetTrial.future = None
def RegisterWorker(self, request, timeout, metadata=None, with_call=False, protocol_options=None):
"""*
Create a Worker from Worker Config.
@@ -4461,7 +4578,7 @@ def RegisterWorker(self, request, timeout, metadata=None, with_call=False, proto
RegisterWorker.future = None
def GetWorkers(self, request, timeout, metadata=None, with_call=False, protocol_options=None):
"""*
- Get a Worker Configs and Statuses from DB by ID of Study, Trial or Worker.
+ Get a Worker Configs and Status from DB by ID of Study, Trial or Worker.
"""
raise NotImplementedError()
GetWorkers.future = None
@@ -4473,7 +4590,7 @@ def UpdateWorkerState(self, request, timeout, metadata=None, with_call=False, pr
UpdateWorkerState.future = None
def GetWorkerFullInfo(self, request, timeout, metadata=None, with_call=False, protocol_options=None):
"""*
- Get a full informations related to specified Workers.
+ Get full information related to specified Workers.
It includes Worker Config, HyperParameters and Metrics Logs.
"""
raise NotImplementedError()
@@ -4499,8 +4616,8 @@ def GetMetrics(self, request, timeout, metadata=None, with_call=False, protocol_
def SetSuggestionParameters(self, request, timeout, metadata=None, with_call=False, protocol_options=None):
"""*
Create or Update parameter set for a suggestion service.
- When you specified a ID of parameter set, it will update the parameter set by your request.
- When you specified no ID, it will create a new parameter set for corresponding study and suggestion service.
+ If you specify an ID of parameter set, it will update the parameter set by your request.
+ If you don't specify an ID, it will create a new parameter set for corresponding study and suggestion service.
The parameters are key-value format.
"""
raise NotImplementedError()
@@ -4582,6 +4699,7 @@ def beta_create_Manager_server(servicer, pool=None, pool_size=None, default_time
('api.Manager', 'GetSuggestionParameterList'): GetSuggestionParameterListRequest.FromString,
('api.Manager', 'GetSuggestionParameters'): GetSuggestionParametersRequest.FromString,
('api.Manager', 'GetSuggestions'): GetSuggestionsRequest.FromString,
+ ('api.Manager', 'GetTrial'): GetTrialRequest.FromString,
('api.Manager', 'GetTrials'): GetTrialsRequest.FromString,
('api.Manager', 'GetWorkerFullInfo'): GetWorkerFullInfoRequest.FromString,
('api.Manager', 'GetWorkers'): GetWorkersRequest.FromString,
@@ -4607,6 +4725,7 @@ def beta_create_Manager_server(servicer, pool=None, pool_size=None, default_time
('api.Manager', 'GetSuggestionParameterList'): GetSuggestionParameterListReply.SerializeToString,
('api.Manager', 'GetSuggestionParameters'): GetSuggestionParametersReply.SerializeToString,
('api.Manager', 'GetSuggestions'): GetSuggestionsReply.SerializeToString,
+ ('api.Manager', 'GetTrial'): GetTrialReply.SerializeToString,
('api.Manager', 'GetTrials'): GetTrialsReply.SerializeToString,
('api.Manager', 'GetWorkerFullInfo'): GetWorkerFullInfoReply.SerializeToString,
('api.Manager', 'GetWorkers'): GetWorkersReply.SerializeToString,
@@ -4632,6 +4751,7 @@ def beta_create_Manager_server(servicer, pool=None, pool_size=None, default_time
('api.Manager', 'GetSuggestionParameterList'): face_utilities.unary_unary_inline(servicer.GetSuggestionParameterList),
('api.Manager', 'GetSuggestionParameters'): face_utilities.unary_unary_inline(servicer.GetSuggestionParameters),
('api.Manager', 'GetSuggestions'): face_utilities.unary_unary_inline(servicer.GetSuggestions),
+ ('api.Manager', 'GetTrial'): face_utilities.unary_unary_inline(servicer.GetTrial),
('api.Manager', 'GetTrials'): face_utilities.unary_unary_inline(servicer.GetTrials),
('api.Manager', 'GetWorkerFullInfo'): face_utilities.unary_unary_inline(servicer.GetWorkerFullInfo),
('api.Manager', 'GetWorkers'): face_utilities.unary_unary_inline(servicer.GetWorkers),
@@ -4667,6 +4787,7 @@ def beta_create_Manager_stub(channel, host=None, metadata_transformer=None, pool
('api.Manager', 'GetSuggestionParameterList'): GetSuggestionParameterListRequest.SerializeToString,
('api.Manager', 'GetSuggestionParameters'): GetSuggestionParametersRequest.SerializeToString,
('api.Manager', 'GetSuggestions'): GetSuggestionsRequest.SerializeToString,
+ ('api.Manager', 'GetTrial'): GetTrialRequest.SerializeToString,
('api.Manager', 'GetTrials'): GetTrialsRequest.SerializeToString,
('api.Manager', 'GetWorkerFullInfo'): GetWorkerFullInfoRequest.SerializeToString,
('api.Manager', 'GetWorkers'): GetWorkersRequest.SerializeToString,
@@ -4692,6 +4813,7 @@ def beta_create_Manager_stub(channel, host=None, metadata_transformer=None, pool
('api.Manager', 'GetSuggestionParameterList'): GetSuggestionParameterListReply.FromString,
('api.Manager', 'GetSuggestionParameters'): GetSuggestionParametersReply.FromString,
('api.Manager', 'GetSuggestions'): GetSuggestionsReply.FromString,
+ ('api.Manager', 'GetTrial'): GetTrialReply.FromString,
('api.Manager', 'GetTrials'): GetTrialsReply.FromString,
('api.Manager', 'GetWorkerFullInfo'): GetWorkerFullInfoReply.FromString,
('api.Manager', 'GetWorkers'): GetWorkersReply.FromString,
@@ -4717,6 +4839,7 @@ def beta_create_Manager_stub(channel, host=None, metadata_transformer=None, pool
'GetSuggestionParameterList': cardinality.Cardinality.UNARY_UNARY,
'GetSuggestionParameters': cardinality.Cardinality.UNARY_UNARY,
'GetSuggestions': cardinality.Cardinality.UNARY_UNARY,
+ 'GetTrial': cardinality.Cardinality.UNARY_UNARY,
'GetTrials': cardinality.Cardinality.UNARY_UNARY,
'GetWorkerFullInfo': cardinality.Cardinality.UNARY_UNARY,
'GetWorkers': cardinality.Cardinality.UNARY_UNARY,
diff --git a/pkg/api/python/api_pb2_grpc.py b/pkg/api/python/api_pb2_grpc.py
index fe031416955..2180171306a 100644
--- a/pkg/api/python/api_pb2_grpc.py
+++ b/pkg/api/python/api_pb2_grpc.py
@@ -43,6 +43,11 @@ def __init__(self, channel):
request_serializer=api__pb2.GetTrialsRequest.SerializeToString,
response_deserializer=api__pb2.GetTrialsReply.FromString,
)
+ self.GetTrial = channel.unary_unary(
+ '/api.Manager/GetTrial',
+ request_serializer=api__pb2.GetTrialRequest.SerializeToString,
+ response_deserializer=api__pb2.GetTrialReply.FromString,
+ )
self.RegisterWorker = channel.unary_unary(
'/api.Manager/RegisterWorker',
request_serializer=api__pb2.RegisterWorkerRequest.SerializeToString,
@@ -185,6 +190,14 @@ def GetTrials(self, request, context):
context.set_details('Method not implemented!')
raise NotImplementedError('Method not implemented!')
+ def GetTrial(self, request, context):
+ """*
+ Get a Trial Configuration from DB by ID of Trial.
+ """
+ context.set_code(grpc.StatusCode.UNIMPLEMENTED)
+ context.set_details('Method not implemented!')
+ raise NotImplementedError('Method not implemented!')
+
def RegisterWorker(self, request, context):
"""*
Create a Worker from Worker Config.
@@ -196,7 +209,7 @@ def RegisterWorker(self, request, context):
def GetWorkers(self, request, context):
"""*
- Get a Worker Configs and Statuses from DB by ID of Study, Trial or Worker.
+ Get a Worker Configs and Status from DB by ID of Study, Trial or Worker.
"""
context.set_code(grpc.StatusCode.UNIMPLEMENTED)
context.set_details('Method not implemented!')
@@ -212,7 +225,7 @@ def UpdateWorkerState(self, request, context):
def GetWorkerFullInfo(self, request, context):
"""*
- Get a full informations related to specified Workers.
+ Get full information related to specified Workers.
It includes Worker Config, HyperParameters and Metrics Logs.
"""
context.set_code(grpc.StatusCode.UNIMPLEMENTED)
@@ -246,8 +259,8 @@ def GetMetrics(self, request, context):
def SetSuggestionParameters(self, request, context):
"""*
Create or Update parameter set for a suggestion service.
- When you specified a ID of parameter set, it will update the parameter set by your request.
- When you specified no ID, it will create a new parameter set for corresponding study and suggestion service.
+ If you specify an ID of parameter set, it will update the parameter set by your request.
+ If you don't specify an ID, it will create a new parameter set for corresponding study and suggestion service.
The parameters are key-value format.
"""
context.set_code(grpc.StatusCode.UNIMPLEMENTED)
@@ -357,6 +370,11 @@ def add_ManagerServicer_to_server(servicer, server):
request_deserializer=api__pb2.GetTrialsRequest.FromString,
response_serializer=api__pb2.GetTrialsReply.SerializeToString,
),
+ 'GetTrial': grpc.unary_unary_rpc_method_handler(
+ servicer.GetTrial,
+ request_deserializer=api__pb2.GetTrialRequest.FromString,
+ response_serializer=api__pb2.GetTrialReply.SerializeToString,
+ ),
'RegisterWorker': grpc.unary_unary_rpc_method_handler(
servicer.RegisterWorker,
request_deserializer=api__pb2.RegisterWorkerRequest.FromString,
diff --git a/pkg/controller/studyjob/studyjob_controller.go b/pkg/controller/studyjob/studyjob_controller.go
index 1f70f2ca772..7a21288a5c2 100644
--- a/pkg/controller/studyjob/studyjob_controller.go
+++ b/pkg/controller/studyjob/studyjob_controller.go
@@ -249,43 +249,7 @@ func (r *ReconcileStudyJobController) checkGoal(instance *katibv1alpha1.StudyJob
if ml.Name == instance.Spec.ObjectiveValueName {
if len(ml.Values) > 0 {
curValue, _ := strconv.ParseFloat(ml.Values[len(ml.Values)-1].Value, 32)
- if instance.Spec.OptimizationType == katibv1alpha1.OptimizationTypeMinimize {
- if curValue < *instance.Spec.OptimizationGoal {
- goal = true
- }
- if instance.Status.BestObjectiveValue != nil {
- if *instance.Status.BestObjectiveValue > curValue {
- instance.Status.BestObjectiveValue = &curValue
- }
- } else {
- instance.Status.BestObjectiveValue = &curValue
- }
- for i := range instance.Status.Trials {
- for j := range instance.Status.Trials[i].WorkerList {
- if instance.Status.Trials[i].WorkerList[j].WorkerID == mls.WorkerId {
- instance.Status.Trials[i].WorkerList[j].ObjectiveValue = &curValue
- }
- }
- }
- } else if instance.Spec.OptimizationType == katibv1alpha1.OptimizationTypeMaximize {
- if curValue > *instance.Spec.OptimizationGoal {
- goal = true
- }
- if instance.Status.BestObjectiveValue != nil {
- if *instance.Status.BestObjectiveValue < curValue {
- instance.Status.BestObjectiveValue = &curValue
- }
- } else {
- instance.Status.BestObjectiveValue = &curValue
- }
- for i := range instance.Status.Trials {
- for j := range instance.Status.Trials[i].WorkerList {
- if instance.Status.Trials[i].WorkerList[j].WorkerID == mls.WorkerId {
- instance.Status.Trials[i].WorkerList[j].ObjectiveValue = &curValue
- }
- }
- }
- }
+ goal = checkGoalAndUpdateObject(curValue, instance, mls.WorkerId )
}
break
}
diff --git a/pkg/controller/studyjob/utils.go b/pkg/controller/studyjob/utils.go
index 784ac462396..5aaf3bd1fd5 100644
--- a/pkg/controller/studyjob/utils.go
+++ b/pkg/controller/studyjob/utils.go
@@ -96,3 +96,42 @@ func validateStudy(instance *katibv1alpha1.StudyJob, namespace string) error {
}
return nil
}
+
+func checkGoalAndUpdateObject(curValue float64, instance *katibv1alpha1.StudyJob, workerId string) bool {
+ optTypeFuncMap := map[katibv1alpha1.OptimizationType] func(float64, float64) bool {
+ katibv1alpha1.OptimizationTypeMinimize: func(a, b float64) bool {return a < b},
+ katibv1alpha1.OptimizationTypeMaximize: func(a, b float64) bool {return a > b},
+ }
+ goal := false
+ if optTypeFuncMap[instance.Spec.OptimizationType] == nil {
+ return false
+ }
+ var trialId string
+ OuterLoop:
+ for i := range instance.Status.Trials {
+ for j := range instance.Status.Trials[i].WorkerList {
+ if instance.Status.Trials[i].WorkerList[j].WorkerID == workerId {
+ instance.Status.Trials[i].WorkerList[j].ObjectiveValue = &curValue
+ trialId = instance.Status.Trials[i].TrialID
+ break OuterLoop
+ }
+ }
+ }
+ opFunc := optTypeFuncMap[instance.Spec.OptimizationType]
+ if opFunc(curValue, *instance.Spec.OptimizationGoal) {
+ goal = true
+ }
+ if instance.Status.BestObjectiveValue != nil {
+ if opFunc(curValue, *instance.Status.BestObjectiveValue) {
+ instance.Status.BestObjectiveValue = &curValue
+ instance.Status.BestTrialID = trialId
+ instance.Status.BestWorkerID = workerId
+ }
+ } else {
+ instance.Status.BestObjectiveValue = &curValue
+ instance.Status.BestTrialID = trialId
+ instance.Status.BestWorkerID = workerId
+ }
+
+ return goal
+}
diff --git a/pkg/mock/api/manager.go b/pkg/mock/api/manager.go
index 653d5c9bae6..7d7fbf784b8 100644
--- a/pkg/mock/api/manager.go
+++ b/pkg/mock/api/manager.go
@@ -269,6 +269,24 @@ func (mr *MockManagerClientMockRecorder) GetSuggestions(arg0, arg1 interface{},
return mr.mock.ctrl.RecordCallWithMethodType(mr.mock, "GetSuggestions", reflect.TypeOf((*MockManagerClient)(nil).GetSuggestions), varargs...)
}
+// GetTrial mocks base method
+func (m *MockManagerClient) GetTrial(arg0 context.Context, arg1 *api.GetTrialRequest, arg2 ...grpc.CallOption) (*api.GetTrialReply, error) {
+ varargs := []interface{}{arg0, arg1}
+ for _, a := range arg2 {
+ varargs = append(varargs, a)
+ }
+ ret := m.ctrl.Call(m, "GetTrial", varargs...)
+ ret0, _ := ret[0].(*api.GetTrialReply)
+ ret1, _ := ret[1].(error)
+ return ret0, ret1
+}
+
+// GetTrial indicates an expected call of GetTrial
+func (mr *MockManagerClientMockRecorder) GetTrial(arg0, arg1 interface{}, arg2 ...interface{}) *gomock.Call {
+ varargs := append([]interface{}{arg0, arg1}, arg2...)
+ return mr.mock.ctrl.RecordCallWithMethodType(mr.mock, "GetTrial", reflect.TypeOf((*MockManagerClient)(nil).GetTrial), varargs...)
+}
+
// GetTrials mocks base method
func (m *MockManagerClient) GetTrials(arg0 context.Context, arg1 *api.GetTrialsRequest, arg2 ...grpc.CallOption) (*api.GetTrialsReply, error) {
varargs := []interface{}{arg0, arg1}
diff --git a/pkg/mock/db/db.go b/pkg/mock/db/db.go
index bb681ed15c5..35e556e6303 100644
--- a/pkg/mock/db/db.go
+++ b/pkg/mock/db/db.go
@@ -78,12 +78,6 @@ func (m *MockVizierDBInterface) DBInit() {
m.ctrl.Call(m, "DBInit")
}
-func (m *MockVizierDBInterface) SelectOne() error {
- ret := m.ctrl.Call(m, "SelectOne")
- ret0, _ := ret[0].(error)
- return ret0
-}
-
// DBInit indicates an expected call of DBInit
func (mr *MockVizierDBInterfaceMockRecorder) DBInit() *gomock.Call {
return mr.mock.ctrl.RecordCallWithMethodType(mr.mock, "DBInit", reflect.TypeOf((*MockVizierDBInterface)(nil).DBInit))
@@ -307,6 +301,18 @@ func (mr *MockVizierDBInterfaceMockRecorder) GetWorkerTimestamp(arg0 interface{}
return mr.mock.ctrl.RecordCallWithMethodType(mr.mock, "GetWorkerTimestamp", reflect.TypeOf((*MockVizierDBInterface)(nil).GetWorkerTimestamp), arg0)
}
+// SelectOne mocks base method
+func (m *MockVizierDBInterface) SelectOne() error {
+ ret := m.ctrl.Call(m, "SelectOne")
+ ret0, _ := ret[0].(error)
+ return ret0
+}
+
+// SelectOne indicates an expected call of SelectOne
+func (mr *MockVizierDBInterfaceMockRecorder) SelectOne() *gomock.Call {
+ return mr.mock.ctrl.RecordCallWithMethodType(mr.mock, "SelectOne", reflect.TypeOf((*MockVizierDBInterface)(nil).SelectOne))
+}
+
// SetEarlyStopParam mocks base method
func (m *MockVizierDBInterface) SetEarlyStopParam(arg0, arg1 string, arg2 []*api.EarlyStoppingParameter) (string, error) {
ret := m.ctrl.Call(m, "SetEarlyStopParam", arg0, arg1, arg2)