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 @@

Table of Contents

MGetSuggestionsRequest +
  • + MGetTrialReply +
  • + +
  • + MGetTrialRequest +
  • +
  • MGetTrialsReply
  • @@ -532,7 +540,7 @@

    CreateStudyReply

    CreateStudyRequest

    -

    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.

    @@ -578,7 +586,7 @@

    CreateTrialReply

    CreateTrialRequest

    -

    Create a Trial from Trial Config.

    Generate a unique ID and store the Trial to DB.

    +

    Create a Trial from Trial Config.

    Generate an unique ID and store the Trial to DB.

    @@ -631,7 +639,7 @@

    DataSetInfo

    EarlyStoppingParameter

    -

    Parameter for EarlyStopping service. Key value format.

    +

    Parameter for EarlyStopping service. Key-value format.

    @@ -1317,6 +1325,52 @@

    GetSuggestionsRequest

    +

    GetTrialReply

    +

    Return a trial configuration by specified trial ID

    + + +
    + + + + + + + + + + + + + +
    FieldTypeLabelDescription
    trialTrial

    + + + + +

    GetTrialRequest

    +

    Get a trial configuration from DB by trial ID

    + + + + + + + + + + + + + + + + +
    FieldTypeLabelDescription
    trial_idstring

    + + + +

    GetTrialsReply

    Return a trial list in specified Study.

    @@ -1387,7 +1441,7 @@

    GetWorkerFullInfoReply

    GetWorkerFullInfoRequest

    -

    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.

    @@ -1454,7 +1508,7 @@

    GetWorkersReply

    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.

    @@ -1766,7 +1820,7 @@

    RegisterWorkerReply

    RegisterWorkerRequest

    -

    Create a Worker from Worker Config.

    Generate a unique ID and store the Worker to DB.

    +

    Create a Worker from Worker Config.

    Generate an unique ID and store the Worker to DB.

    @@ -2275,7 +2329,7 @@

    StudyOverview

    SuggestionParameter

    -

    Parameter for Suggestion service. Key value format.

    +

    Parameter for Suggestion service. Key-value format.

    @@ -2342,7 +2396,7 @@

    SuggestionParameterSet

    Tag

    -

    Tag for each resources.

    +

    Tag for each resource.

    @@ -2372,7 +2426,7 @@

    Tag

    Trial

    -

    A set of Hyperparameter.

    In a study, multiple trials are evaluated by worker.

    Suggestion service will generate next trials.

    +

    A set of Hyperparameter.

    In a study, multiple trials are evaluated by workers.

    Suggestion service will generate next trials.

    @@ -2741,6 +2795,13 @@

    Manager

    + + + + + + + @@ -2753,7 +2814,7 @@

    Manager

    - + @@ -2767,7 +2828,7 @@

    Manager

    - @@ -2798,8 +2859,8 @@

    Manager

    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)

    Get a Trial Configs from DB by ID of Study.

    GetTrialGetTrialRequestGetTrialReply

    Get a Trial Configuration from DB by ID of Trial.

    RegisterWorker RegisterWorkerRequest 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.