From f11c13e8c65a9236afe2878e5c915a1c769ad52b Mon Sep 17 00:00:00 2001 From: Andrey Velichkevich Date: Mon, 28 Jan 2019 17:23:06 -0800 Subject: [PATCH] Extend Katib API for NAS jobs (#327) * Add fields to studyjob structure * Change nasjob yaml file * Change parameter type * Add Parameter Type=range * Change API * Change input size * Reset API structure * Change StudyJob API structure * Remove Range parameter * Fix api.proto * Fix gopkg.toml * Remove old nasjob file * Fix nasjob.yaml * Add custom suggestion * Add blank NAS suggestion Change Katib API to process yaml file for NAS * Add correct YAML file for NAS example * Fix newline * Change StudyID to 1 * Add jobType parameter in Parsing * Remove changes in manager * Add NasConfig inside Yaml file * Fix name in nasConfig * Fix get StudyConfig in NAS * Add JobType in all services * Add job_type in bayesian_service * Add pointers in NasConfig structure * Fix Pointer in API * Add consts for jobType Remove return from populateCommonConfigFields * Move const jobType to const file * Remove Range parameter * Modify YAML file for NAS jobs * Add getStudyJobType function in GRPC server * Add blank GetStudyJobType func in manager * Fix metrics collector * Remove jobType from getStudy * Remove getStudyJobType from manager * Add NAS RL yaml deployment * Change worker to GPU * Clean nasrl suggestion * Add -u inside training-container * Fix namespace in worker template --- cmd/manager/main.go | 4 +- cmd/suggestion/nasrl/Dockerfile | 8 + cmd/suggestion/nasrl/__init__.py | 0 cmd/suggestion/nasrl/main.py | 29 + cmd/suggestion/nasrl/requirements.txt | 9 + examples/nasjob-example-RL.yaml | 120 ++++ .../reinforcementlearning/deployment.yaml | 23 + .../reinforcementlearning/service.yaml | 17 + pkg/api/api.pb.go | 651 +++++++++++------- pkg/api/api.proto | 38 + pkg/api/api.swagger.json | 92 ++- pkg/api/gen-doc/api.md | 87 +++ pkg/api/gen-doc/index.html | 184 +++++ .../apis/studyjob/v1alpha1/studyjob_types.go | 21 + pkg/api/python/api_pb2.py | 578 +++++++++++----- pkg/controller/studyjob/const.go | 2 + pkg/controller/studyjob/katib_api_util.go | 121 +++- .../studyjob/studyjob_controller.go | 25 +- pkg/controller/studyjob/utils.go | 8 +- pkg/suggestion/hyperband_service.go | 2 +- pkg/suggestion/nasrl_service.py | 22 + pkg/types.go | 14 +- 22 files changed, 1604 insertions(+), 451 deletions(-) create mode 100644 cmd/suggestion/nasrl/Dockerfile create mode 100644 cmd/suggestion/nasrl/__init__.py create mode 100644 cmd/suggestion/nasrl/main.py create mode 100644 cmd/suggestion/nasrl/requirements.txt create mode 100644 examples/nasjob-example-RL.yaml create mode 100644 manifests/vizier/suggestion/reinforcementlearning/deployment.yaml create mode 100644 manifests/vizier/suggestion/reinforcementlearning/service.yaml create mode 100644 pkg/suggestion/nasrl_service.py diff --git a/cmd/manager/main.go b/cmd/manager/main.go index 0e814753d59..008df73453a 100644 --- a/cmd/manager/main.go +++ b/cmd/manager/main.go @@ -91,8 +91,8 @@ func (s *server) GetTrials(ctx context.Context, in *api_pb.GetTrialsRequest) (*a } 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 + 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) { diff --git a/cmd/suggestion/nasrl/Dockerfile b/cmd/suggestion/nasrl/Dockerfile new file mode 100644 index 00000000000..b5fee2f7d8f --- /dev/null +++ b/cmd/suggestion/nasrl/Dockerfile @@ -0,0 +1,8 @@ +FROM python:3 + +ADD . /usr/src/app/github.com/kubeflow/katib +WORKDIR /usr/src/app/github.com/kubeflow/katib/cmd/suggestion/nasrl +RUN pip install --no-cache-dir -r requirements.txt +ENV PYTHONPATH /usr/src/app/github.com/kubeflow/katib:/usr/src/app/github.com/kubeflow/katib/pkg/api/python + +ENTRYPOINT ["python", "-u", "main.py"] diff --git a/cmd/suggestion/nasrl/__init__.py b/cmd/suggestion/nasrl/__init__.py new file mode 100644 index 00000000000..e69de29bb2d diff --git a/cmd/suggestion/nasrl/main.py b/cmd/suggestion/nasrl/main.py new file mode 100644 index 00000000000..e31c5a165e3 --- /dev/null +++ b/cmd/suggestion/nasrl/main.py @@ -0,0 +1,29 @@ +import grpc +from concurrent import futures + +import time + +from pkg.api.python import api_pb2_grpc +from pkg.suggestion.nasrl_service import NasrlService +from pkg.suggestion.types import DEFAULT_PORT +from logging import getLogger, StreamHandler, INFO, DEBUG + + +_ONE_DAY_IN_SECONDS = 60 * 60 * 24 + + +def serve(): + print("NAS RL Suggestion Service") + server = grpc.server(futures.ThreadPoolExecutor(max_workers=10)) + api_pb2_grpc.add_SuggestionServicer_to_server(NasrlService(), server) + server.add_insecure_port(DEFAULT_PORT) + print("Listening...") + server.start() + try: + while True: + time.sleep(_ONE_DAY_IN_SECONDS) + except KeyboardInterrupt: + server.stop(0) + +if __name__ == "__main__": + serve() diff --git a/cmd/suggestion/nasrl/requirements.txt b/cmd/suggestion/nasrl/requirements.txt new file mode 100644 index 00000000000..8d2c9d4bda7 --- /dev/null +++ b/cmd/suggestion/nasrl/requirements.txt @@ -0,0 +1,9 @@ +grpcio +duecredit +cloudpickle==0.5.6 +numpy>=1.13.3 +scikit-learn>=0.19.0 +scipy>=0.19.1 +forestci +protobuf +googleapis-common-protos diff --git a/examples/nasjob-example-RL.yaml b/examples/nasjob-example-RL.yaml new file mode 100644 index 00000000000..db0bf8318f8 --- /dev/null +++ b/examples/nasjob-example-RL.yaml @@ -0,0 +1,120 @@ +apiVersion: "kubeflow.org/v1alpha1" +kind: StudyJob +metadata: + namespace: kubeflow + labels: + controller-tools.k8s.io: "1.0" + name: nas-rl-example +spec: + studyName: nas-rl-example + owner: crd + optimizationtype: maximize + objectivevaluename: Validation-Accuracy + optimizationgoal: 0.99 + requestcount: 3 + metricsnames: + - accuracy + nasConfig: + graphConfig: + numLayers: 8 + inputSize: + - 32 + - 32 + - 3 + outputSize: + - 10 + operations: + - operationType: convolution + parameterconfigs: + - name: filter_size + parametertype: categorical + feasible: + list: + - "3" + - "5" + - "7" + - name: num_filter + parametertype: categorical + feasible: + list: + - "32" + - "48" + - "64" + - "96" + - "128" + - name: stride + parametertype: categorical + feasible: + list: + - "1" + - "2" + - operationType: reduction + parameterconfigs: + - name: reduction_type + parametertype: categorical + feasible: + list: + - max_pooling + - avg_pooling + - name: pool_size + parametertype: int + feasible: + min: "2" + max: "3" + step: "1" + workerSpec: + goTemplate: + rawTemplate: |- + apiVersion: batch/v1 + kind: Job + metadata: + name: {{.WorkerID}} + namespace: {{.NameSpace}} + spec: + template: + spec: + containers: + - name: {{.WorkerID}} + image: docker.io/deepermind/training-container-nas + command: + - "python3.5" + - "-u" + - "RunTrial.py" + {{- with .HyperParameters}} + {{- range .}} + - "--{{.Name}}={{.Value}}" + {{- end}} + {{- end}} + resources: + limits: + nvidia.com/gpu: 1 + restartPolicy: Never + suggestionSpec: + suggestionAlgorithm: "nasrl" + suggestionParameters: + - name: "lstm_num_cells" + value: "64" + - name: "lstm_num_layers" + value: "1" + - name: "lstm_keep_prob" + value: "1.0" + - name: "optimizer" + value: "adam" + - name: "init_learning_rate" + value: "1e-3" + - name: "lr_decay_start" + value: "0" + - name: "lr_decay_every" + value: "1000" + - name: "lr_decay_rate" + value: "0.9" + - name: "skip-target" + value: "0.4" + - name: "skip-weight" + value: "0.8" + - name: "l2_reg" + value: "0" + - name: "entropy_weight" + value: "1e-4" + - name: "baseline_decay" + value: "0.9999" diff --git a/manifests/vizier/suggestion/reinforcementlearning/deployment.yaml b/manifests/vizier/suggestion/reinforcementlearning/deployment.yaml new file mode 100644 index 00000000000..9ee9db3295a --- /dev/null +++ b/manifests/vizier/suggestion/reinforcementlearning/deployment.yaml @@ -0,0 +1,23 @@ +apiVersion: extensions/v1beta1 +kind: Deployment +metadata: + name: vizier-suggestion-nasrl + namespace: kubeflow + labels: + app: vizier + component: suggestion-nasrl +spec: + replicas: 1 + template: + metadata: + name: vizier-suggestion-nasrl + labels: + app: vizier + component: suggestion-nasrl + spec: + containers: + - name: vizier-suggestion-nasrl + image: docker.io/deepermind/katib-nasrl-suggestion + ports: + - name: api + containerPort: 6789 diff --git a/manifests/vizier/suggestion/reinforcementlearning/service.yaml b/manifests/vizier/suggestion/reinforcementlearning/service.yaml new file mode 100644 index 00000000000..dd6cc30fb60 --- /dev/null +++ b/manifests/vizier/suggestion/reinforcementlearning/service.yaml @@ -0,0 +1,17 @@ +apiVersion: v1 +kind: Service +metadata: + name: vizier-suggestion-nasrl + namespace: kubeflow + labels: + app: vizier + component: suggestion-nasrl +spec: + type: ClusterIP + ports: + - port: 6789 + protocol: TCP + name: api + selector: + app: vizier + component: suggestion-nasrl diff --git a/pkg/api/api.pb.go b/pkg/api/api.pb.go index ccee234f740..9044ae2ce8e 100644 --- a/pkg/api/api.pb.go +++ b/pkg/api/api.pb.go @@ -21,6 +21,9 @@ It has these top-level messages: StudyOverview Trial Worker + NasConfig + GraphConfig + Operation StudyConfig CreateStudyRequest CreateStudyReply @@ -206,6 +209,7 @@ type FeasibleSpace struct { Max string `protobuf:"bytes,1,opt,name=max" json:"max,omitempty"` Min string `protobuf:"bytes,2,opt,name=min" json:"min,omitempty"` List []string `protobuf:"bytes,3,rep,name=list" json:"list,omitempty"` + Step string `protobuf:"bytes,4,opt,name=step" json:"step,omitempty"` } func (m *FeasibleSpace) Reset() { *m = FeasibleSpace{} } @@ -234,6 +238,13 @@ func (m *FeasibleSpace) GetList() []string { return nil } +func (m *FeasibleSpace) GetStep() string { + if m != nil { + return m.Step + } + return "" +} + // * // Config for a Hyper parameter. // Katib will create each Hyper parameter from this config. @@ -655,6 +666,126 @@ func (m *Worker) GetTags() []*Tag { return nil } +// * +// NasConfig contains a config of NAS job +type NasConfig struct { + GraphConfig *GraphConfig `protobuf:"bytes,1,opt,name=graph_config,json=graphConfig" json:"graph_config,omitempty"` + Operations *NasConfig_Operations `protobuf:"bytes,2,opt,name=operations" json:"operations,omitempty"` +} + +func (m *NasConfig) Reset() { *m = NasConfig{} } +func (m *NasConfig) String() string { return proto.CompactTextString(m) } +func (*NasConfig) ProtoMessage() {} +func (*NasConfig) Descriptor() ([]byte, []int) { return fileDescriptor0, []int{13} } + +func (m *NasConfig) GetGraphConfig() *GraphConfig { + if m != nil { + return m.GraphConfig + } + return nil +} + +func (m *NasConfig) GetOperations() *NasConfig_Operations { + if m != nil { + return m.Operations + } + return nil +} + +type NasConfig_Operations struct { + Operation []*Operation `protobuf:"bytes,1,rep,name=operation" json:"operation,omitempty"` +} + +func (m *NasConfig_Operations) Reset() { *m = NasConfig_Operations{} } +func (m *NasConfig_Operations) String() string { return proto.CompactTextString(m) } +func (*NasConfig_Operations) ProtoMessage() {} +func (*NasConfig_Operations) Descriptor() ([]byte, []int) { return fileDescriptor0, []int{13, 0} } + +func (m *NasConfig_Operations) GetOperation() []*Operation { + if m != nil { + return m.Operation + } + return nil +} + +// * +// GraphConfig contains a config of DAG +type GraphConfig struct { + NumLayers int32 `protobuf:"varint,1,opt,name=num_layers,json=numLayers" json:"num_layers,omitempty"` + InputSize []int32 `protobuf:"varint,2,rep,packed,name=input_size,json=inputSize" json:"input_size,omitempty"` + OutputSize []int32 `protobuf:"varint,3,rep,packed,name=output_size,json=outputSize" json:"output_size,omitempty"` +} + +func (m *GraphConfig) Reset() { *m = GraphConfig{} } +func (m *GraphConfig) String() string { return proto.CompactTextString(m) } +func (*GraphConfig) ProtoMessage() {} +func (*GraphConfig) Descriptor() ([]byte, []int) { return fileDescriptor0, []int{14} } + +func (m *GraphConfig) GetNumLayers() int32 { + if m != nil { + return m.NumLayers + } + return 0 +} + +func (m *GraphConfig) GetInputSize() []int32 { + if m != nil { + return m.InputSize + } + return nil +} + +func (m *GraphConfig) GetOutputSize() []int32 { + if m != nil { + return m.OutputSize + } + return nil +} + +// * +// Config for operations in DAG +type Operation struct { + OperationType string `protobuf:"bytes,1,opt,name=operationType" json:"operationType,omitempty"` + ParameterConfigs *Operation_ParameterConfigs `protobuf:"bytes,2,opt,name=parameter_configs,json=parameterConfigs" json:"parameter_configs,omitempty"` +} + +func (m *Operation) Reset() { *m = Operation{} } +func (m *Operation) String() string { return proto.CompactTextString(m) } +func (*Operation) ProtoMessage() {} +func (*Operation) Descriptor() ([]byte, []int) { return fileDescriptor0, []int{15} } + +func (m *Operation) GetOperationType() string { + if m != nil { + return m.OperationType + } + return "" +} + +func (m *Operation) GetParameterConfigs() *Operation_ParameterConfigs { + if m != nil { + return m.ParameterConfigs + } + return nil +} + +// * +// List of ParameterConfig +type Operation_ParameterConfigs struct { + Configs []*ParameterConfig `protobuf:"bytes,1,rep,name=configs" json:"configs,omitempty"` +} + +func (m *Operation_ParameterConfigs) Reset() { *m = Operation_ParameterConfigs{} } +func (m *Operation_ParameterConfigs) String() string { return proto.CompactTextString(m) } +func (*Operation_ParameterConfigs) ProtoMessage() {} +func (*Operation_ParameterConfigs) Descriptor() ([]byte, []int) { return fileDescriptor0, []int{15, 0} } + +func (m *Operation_ParameterConfigs) GetConfigs() []*ParameterConfig { + if m != nil { + return m.Configs + } + return nil +} + // * // Config of a Study. Study represents a single optimization run over a feasible space. // Each Study contains a configuration describing the feasible space, as well as a set of Trials. @@ -670,12 +801,14 @@ type StudyConfig struct { ObjectiveValueName string `protobuf:"bytes,8,opt,name=objective_value_name,json=objectiveValueName" json:"objective_value_name,omitempty"` Metrics []string `protobuf:"bytes,9,rep,name=metrics" json:"metrics,omitempty"` JobId string `protobuf:"bytes,10,opt,name=jobId" json:"jobId,omitempty"` + NasConfig *NasConfig `protobuf:"bytes,11,opt,name=nas_config,json=nasConfig" json:"nas_config,omitempty"` + JobType string `protobuf:"bytes,12,opt,name=job_type,json=jobType" json:"job_type,omitempty"` } func (m *StudyConfig) Reset() { *m = StudyConfig{} } func (m *StudyConfig) String() string { return proto.CompactTextString(m) } func (*StudyConfig) ProtoMessage() {} -func (*StudyConfig) Descriptor() ([]byte, []int) { return fileDescriptor0, []int{13} } +func (*StudyConfig) Descriptor() ([]byte, []int) { return fileDescriptor0, []int{16} } func (m *StudyConfig) GetName() string { if m != nil { @@ -747,6 +880,20 @@ func (m *StudyConfig) GetJobId() string { return "" } +func (m *StudyConfig) GetNasConfig() *NasConfig { + if m != nil { + return m.NasConfig + } + return nil +} + +func (m *StudyConfig) GetJobType() string { + if m != nil { + return m.JobType + } + return "" +} + // * // List of ParameterConfig type StudyConfig_ParameterConfigs struct { @@ -757,7 +904,7 @@ func (m *StudyConfig_ParameterConfigs) Reset() { *m = StudyConfig_Parame func (m *StudyConfig_ParameterConfigs) String() string { return proto.CompactTextString(m) } func (*StudyConfig_ParameterConfigs) ProtoMessage() {} func (*StudyConfig_ParameterConfigs) Descriptor() ([]byte, []int) { - return fileDescriptor0, []int{13, 0} + return fileDescriptor0, []int{16, 0} } func (m *StudyConfig_ParameterConfigs) GetConfigs() []*ParameterConfig { @@ -777,7 +924,7 @@ type CreateStudyRequest struct { func (m *CreateStudyRequest) Reset() { *m = CreateStudyRequest{} } func (m *CreateStudyRequest) String() string { return proto.CompactTextString(m) } func (*CreateStudyRequest) ProtoMessage() {} -func (*CreateStudyRequest) Descriptor() ([]byte, []int) { return fileDescriptor0, []int{14} } +func (*CreateStudyRequest) Descriptor() ([]byte, []int) { return fileDescriptor0, []int{17} } func (m *CreateStudyRequest) GetStudyConfig() *StudyConfig { if m != nil { @@ -795,7 +942,7 @@ type CreateStudyReply struct { func (m *CreateStudyReply) Reset() { *m = CreateStudyReply{} } func (m *CreateStudyReply) String() string { return proto.CompactTextString(m) } func (*CreateStudyReply) ProtoMessage() {} -func (*CreateStudyReply) Descriptor() ([]byte, []int) { return fileDescriptor0, []int{15} } +func (*CreateStudyReply) Descriptor() ([]byte, []int) { return fileDescriptor0, []int{18} } func (m *CreateStudyReply) GetStudyId() string { if m != nil { @@ -813,7 +960,7 @@ type DeleteStudyRequest struct { func (m *DeleteStudyRequest) Reset() { *m = DeleteStudyRequest{} } func (m *DeleteStudyRequest) String() string { return proto.CompactTextString(m) } func (*DeleteStudyRequest) ProtoMessage() {} -func (*DeleteStudyRequest) Descriptor() ([]byte, []int) { return fileDescriptor0, []int{16} } +func (*DeleteStudyRequest) Descriptor() ([]byte, []int) { return fileDescriptor0, []int{19} } func (m *DeleteStudyRequest) GetStudyId() string { if m != nil { @@ -831,7 +978,7 @@ type DeleteStudyReply struct { func (m *DeleteStudyReply) Reset() { *m = DeleteStudyReply{} } func (m *DeleteStudyReply) String() string { return proto.CompactTextString(m) } func (*DeleteStudyReply) ProtoMessage() {} -func (*DeleteStudyReply) Descriptor() ([]byte, []int) { return fileDescriptor0, []int{17} } +func (*DeleteStudyReply) Descriptor() ([]byte, []int) { return fileDescriptor0, []int{20} } func (m *DeleteStudyReply) GetStudyId() string { if m != nil { @@ -849,7 +996,7 @@ type GetStudyRequest struct { func (m *GetStudyRequest) Reset() { *m = GetStudyRequest{} } func (m *GetStudyRequest) String() string { return proto.CompactTextString(m) } func (*GetStudyRequest) ProtoMessage() {} -func (*GetStudyRequest) Descriptor() ([]byte, []int) { return fileDescriptor0, []int{18} } +func (*GetStudyRequest) Descriptor() ([]byte, []int) { return fileDescriptor0, []int{21} } func (m *GetStudyRequest) GetStudyId() string { if m != nil { @@ -867,7 +1014,7 @@ type GetStudyReply struct { func (m *GetStudyReply) Reset() { *m = GetStudyReply{} } func (m *GetStudyReply) String() string { return proto.CompactTextString(m) } func (*GetStudyReply) ProtoMessage() {} -func (*GetStudyReply) Descriptor() ([]byte, []int) { return fileDescriptor0, []int{19} } +func (*GetStudyReply) Descriptor() ([]byte, []int) { return fileDescriptor0, []int{22} } func (m *GetStudyReply) GetStudyConfig() *StudyConfig { if m != nil { @@ -884,7 +1031,7 @@ type GetStudyListRequest struct { func (m *GetStudyListRequest) Reset() { *m = GetStudyListRequest{} } func (m *GetStudyListRequest) String() string { return proto.CompactTextString(m) } func (*GetStudyListRequest) ProtoMessage() {} -func (*GetStudyListRequest) Descriptor() ([]byte, []int) { return fileDescriptor0, []int{20} } +func (*GetStudyListRequest) Descriptor() ([]byte, []int) { return fileDescriptor0, []int{23} } // * // Return a overview list of Studies. @@ -895,7 +1042,7 @@ type GetStudyListReply struct { func (m *GetStudyListReply) Reset() { *m = GetStudyListReply{} } func (m *GetStudyListReply) String() string { return proto.CompactTextString(m) } func (*GetStudyListReply) ProtoMessage() {} -func (*GetStudyListReply) Descriptor() ([]byte, []int) { return fileDescriptor0, []int{21} } +func (*GetStudyListReply) Descriptor() ([]byte, []int) { return fileDescriptor0, []int{24} } func (m *GetStudyListReply) GetStudyOverviews() []*StudyOverview { if m != nil { @@ -914,7 +1061,7 @@ type CreateTrialRequest struct { func (m *CreateTrialRequest) Reset() { *m = CreateTrialRequest{} } func (m *CreateTrialRequest) String() string { return proto.CompactTextString(m) } func (*CreateTrialRequest) ProtoMessage() {} -func (*CreateTrialRequest) Descriptor() ([]byte, []int) { return fileDescriptor0, []int{22} } +func (*CreateTrialRequest) Descriptor() ([]byte, []int) { return fileDescriptor0, []int{25} } func (m *CreateTrialRequest) GetTrial() *Trial { if m != nil { @@ -932,7 +1079,7 @@ type CreateTrialReply struct { func (m *CreateTrialReply) Reset() { *m = CreateTrialReply{} } func (m *CreateTrialReply) String() string { return proto.CompactTextString(m) } func (*CreateTrialReply) ProtoMessage() {} -func (*CreateTrialReply) Descriptor() ([]byte, []int) { return fileDescriptor0, []int{23} } +func (*CreateTrialReply) Descriptor() ([]byte, []int) { return fileDescriptor0, []int{26} } func (m *CreateTrialReply) GetTrialId() string { if m != nil { @@ -950,7 +1097,7 @@ type GetTrialsRequest struct { func (m *GetTrialsRequest) Reset() { *m = GetTrialsRequest{} } func (m *GetTrialsRequest) String() string { return proto.CompactTextString(m) } func (*GetTrialsRequest) ProtoMessage() {} -func (*GetTrialsRequest) Descriptor() ([]byte, []int) { return fileDescriptor0, []int{24} } +func (*GetTrialsRequest) Descriptor() ([]byte, []int) { return fileDescriptor0, []int{27} } func (m *GetTrialsRequest) GetStudyId() string { if m != nil { @@ -968,7 +1115,7 @@ type GetTrialsReply struct { func (m *GetTrialsReply) Reset() { *m = GetTrialsReply{} } func (m *GetTrialsReply) String() string { return proto.CompactTextString(m) } func (*GetTrialsReply) ProtoMessage() {} -func (*GetTrialsReply) Descriptor() ([]byte, []int) { return fileDescriptor0, []int{25} } +func (*GetTrialsReply) Descriptor() ([]byte, []int) { return fileDescriptor0, []int{28} } func (m *GetTrialsReply) GetTrials() []*Trial { if m != nil { @@ -986,7 +1133,7 @@ type GetTrialRequest struct { 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{26} } +func (*GetTrialRequest) Descriptor() ([]byte, []int) { return fileDescriptor0, []int{29} } func (m *GetTrialRequest) GetTrialId() string { if m != nil { @@ -1004,7 +1151,7 @@ type GetTrialReply struct { 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{27} } +func (*GetTrialReply) Descriptor() ([]byte, []int) { return fileDescriptor0, []int{30} } func (m *GetTrialReply) GetTrial() *Trial { if m != nil { @@ -1023,7 +1170,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{28} } +func (*RegisterWorkerRequest) Descriptor() ([]byte, []int) { return fileDescriptor0, []int{31} } func (m *RegisterWorkerRequest) GetWorker() *Worker { if m != nil { @@ -1041,7 +1188,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{29} } +func (*RegisterWorkerReply) Descriptor() ([]byte, []int) { return fileDescriptor0, []int{32} } func (m *RegisterWorkerReply) GetWorkerId() string { if m != nil { @@ -1059,7 +1206,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{30} } +func (*StopWorkersRequest) Descriptor() ([]byte, []int) { return fileDescriptor0, []int{33} } func (m *StopWorkersRequest) GetStudyId() string { if m != nil { @@ -1088,7 +1235,7 @@ 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{31} } +func (*StopWorkersReply) Descriptor() ([]byte, []int) { return fileDescriptor0, []int{34} } // * // Get a configs and status of a Worker from DB by ID of Study, Trial or Worker. @@ -1101,7 +1248,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{32} } +func (*GetWorkersRequest) Descriptor() ([]byte, []int) { return fileDescriptor0, []int{35} } func (m *GetWorkersRequest) GetStudyId() string { if m != nil { @@ -1133,7 +1280,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{33} } +func (*GetWorkersReply) Descriptor() ([]byte, []int) { return fileDescriptor0, []int{36} } func (m *GetWorkersReply) GetWorkers() []*Worker { if m != nil { @@ -1152,7 +1299,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{34} } +func (*UpdateWorkerStateRequest) Descriptor() ([]byte, []int) { return fileDescriptor0, []int{37} } func (m *UpdateWorkerStateRequest) GetWorkerId() string { if m != nil { @@ -1174,7 +1321,7 @@ 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{35} } +func (*UpdateWorkerStateReply) Descriptor() ([]byte, []int) { return fileDescriptor0, []int{38} } // * // Get a full information related to specified Workers. @@ -1189,7 +1336,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{36} } +func (*GetWorkerFullInfoRequest) Descriptor() ([]byte, []int) { return fileDescriptor0, []int{39} } func (m *GetWorkerFullInfoRequest) GetStudyId() string { if m != nil { @@ -1228,7 +1375,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{37} } +func (*WorkerFullInfo) Descriptor() ([]byte, []int) { return fileDescriptor0, []int{40} } func (m *WorkerFullInfo) GetWorker() *Worker { if m != nil { @@ -1258,7 +1405,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{38} } +func (*GetWorkerFullInfoReply) Descriptor() ([]byte, []int) { return fileDescriptor0, []int{41} } func (m *GetWorkerFullInfoReply) GetWorkerFullInfos() []*WorkerFullInfo { if m != nil { @@ -1278,7 +1425,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{39} } +func (*GetSuggestionsRequest) Descriptor() ([]byte, []int) { return fileDescriptor0, []int{42} } func (m *GetSuggestionsRequest) GetStudyId() string { if m != nil { @@ -1322,7 +1469,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{40} } +func (*GetSuggestionsReply) Descriptor() ([]byte, []int) { return fileDescriptor0, []int{43} } func (m *GetSuggestionsReply) GetTrials() []*Trial { if m != nil { @@ -1340,7 +1487,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{41} } +func (*GetShouldStopWorkersRequest) Descriptor() ([]byte, []int) { return fileDescriptor0, []int{44} } func (m *GetShouldStopWorkersRequest) GetStudyId() string { if m != nil { @@ -1370,7 +1517,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{42} } +func (*GetShouldStopWorkersReply) Descriptor() ([]byte, []int) { return fileDescriptor0, []int{45} } func (m *GetShouldStopWorkersReply) GetShouldStopWorkerIds() []string { if m != nil { @@ -1388,7 +1535,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{43} } +func (*GetMetricsRequest) Descriptor() ([]byte, []int) { return fileDescriptor0, []int{46} } func (m *GetMetricsRequest) GetStudyId() string { if m != nil { @@ -1418,7 +1565,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{44} } +func (*GetMetricsReply) Descriptor() ([]byte, []int) { return fileDescriptor0, []int{47} } func (m *GetMetricsReply) GetMetricsLogSets() []*MetricsLogSet { if m != nil { @@ -1435,7 +1582,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{45} } +func (*ReportMetricsLogsRequest) Descriptor() ([]byte, []int) { return fileDescriptor0, []int{48} } func (m *ReportMetricsLogsRequest) GetStudyId() string { if m != nil { @@ -1457,7 +1604,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{46} } +func (*ReportMetricsLogsReply) Descriptor() ([]byte, []int) { return fileDescriptor0, []int{49} } type ModelInfo struct { StudyName string `protobuf:"bytes,1,opt,name=study_name,json=studyName" json:"study_name,omitempty"` @@ -1470,7 +1617,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{47} } +func (*ModelInfo) Descriptor() ([]byte, []int) { return fileDescriptor0, []int{50} } func (m *ModelInfo) GetStudyName() string { if m != nil { @@ -1515,7 +1662,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{48} } +func (*DataSetInfo) Descriptor() ([]byte, []int) { return fileDescriptor0, []int{51} } func (m *DataSetInfo) GetName() string { if m != nil { @@ -1540,7 +1687,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{49} } +func (*SaveStudyRequest) Descriptor() ([]byte, []int) { return fileDescriptor0, []int{52} } func (m *SaveStudyRequest) GetStudyName() string { if m != nil { @@ -1569,7 +1716,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{50} } +func (*SaveStudyReply) Descriptor() ([]byte, []int) { return fileDescriptor0, []int{53} } type SaveModelRequest struct { Model *ModelInfo `protobuf:"bytes,1,opt,name=model" json:"model,omitempty"` @@ -1580,7 +1727,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{51} } +func (*SaveModelRequest) Descriptor() ([]byte, []int) { return fileDescriptor0, []int{54} } func (m *SaveModelRequest) GetModel() *ModelInfo { if m != nil { @@ -1609,7 +1756,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{52} } +func (*SaveModelReply) Descriptor() ([]byte, []int) { return fileDescriptor0, []int{55} } type GetSavedStudiesRequest struct { } @@ -1617,7 +1764,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{53} } +func (*GetSavedStudiesRequest) Descriptor() ([]byte, []int) { return fileDescriptor0, []int{56} } type GetSavedStudiesReply struct { Studies []*StudyOverview `protobuf:"bytes,1,rep,name=studies" json:"studies,omitempty"` @@ -1626,7 +1773,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{54} } +func (*GetSavedStudiesReply) Descriptor() ([]byte, []int) { return fileDescriptor0, []int{57} } func (m *GetSavedStudiesReply) GetStudies() []*StudyOverview { if m != nil { @@ -1642,7 +1789,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{55} } +func (*GetSavedModelsRequest) Descriptor() ([]byte, []int) { return fileDescriptor0, []int{58} } func (m *GetSavedModelsRequest) GetStudyName() string { if m != nil { @@ -1658,7 +1805,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{56} } +func (*GetSavedModelsReply) Descriptor() ([]byte, []int) { return fileDescriptor0, []int{59} } func (m *GetSavedModelsReply) GetModels() []*ModelInfo { if m != nil { @@ -1675,7 +1822,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{57} } +func (*GetSavedModelRequest) Descriptor() ([]byte, []int) { return fileDescriptor0, []int{60} } func (m *GetSavedModelRequest) GetStudyName() string { if m != nil { @@ -1698,7 +1845,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{58} } +func (*GetSavedModelReply) Descriptor() ([]byte, []int) { return fileDescriptor0, []int{61} } func (m *GetSavedModelReply) GetModel() *ModelInfo { if m != nil { @@ -1717,7 +1864,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{59} } +func (*SetSuggestionParametersRequest) Descriptor() ([]byte, []int) { return fileDescriptor0, []int{62} } func (m *SetSuggestionParametersRequest) GetStudyId() string { if m != nil { @@ -1754,7 +1901,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{60} } +func (*SetSuggestionParametersReply) Descriptor() ([]byte, []int) { return fileDescriptor0, []int{63} } func (m *SetSuggestionParametersReply) GetParamId() string { if m != nil { @@ -1770,7 +1917,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{61} } +func (*GetSuggestionParametersRequest) Descriptor() ([]byte, []int) { return fileDescriptor0, []int{64} } func (m *GetSuggestionParametersRequest) GetParamId() string { if m != nil { @@ -1786,7 +1933,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{62} } +func (*GetSuggestionParametersReply) Descriptor() ([]byte, []int) { return fileDescriptor0, []int{65} } func (m *GetSuggestionParametersReply) GetSuggestionParameters() []*SuggestionParameter { if m != nil { @@ -1803,7 +1950,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{63} + return fileDescriptor0, []int{66} } func (m *GetSuggestionParameterListRequest) GetStudyId() string { @@ -1822,7 +1969,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{64} } +func (*SuggestionParameterSet) Descriptor() ([]byte, []int) { return fileDescriptor0, []int{67} } func (m *SuggestionParameterSet) GetParamId() string { if m != nil { @@ -1853,7 +2000,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{65} + return fileDescriptor0, []int{68} } func (m *GetSuggestionParameterListReply) GetSuggestionParameterSets() []*SuggestionParameterSet { @@ -1870,7 +2017,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{66} } +func (*StopSuggestionRequest) Descriptor() ([]byte, []int) { return fileDescriptor0, []int{69} } func (m *StopSuggestionRequest) GetStudyId() string { if m != nil { @@ -1885,7 +2032,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{67} } +func (*StopSuggestionReply) Descriptor() ([]byte, []int) { return fileDescriptor0, []int{70} } type SetEarlyStoppingParametersRequest struct { StudyId string `protobuf:"bytes,1,opt,name=study_id,json=studyId" json:"study_id,omitempty"` @@ -1898,7 +2045,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{68} + return fileDescriptor0, []int{71} } func (m *SetEarlyStoppingParametersRequest) GetStudyId() string { @@ -1937,7 +2084,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{69} + return fileDescriptor0, []int{72} } func (m *SetEarlyStoppingParametersReply) GetParamId() string { @@ -1955,7 +2102,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{70} + return fileDescriptor0, []int{73} } func (m *GetEarlyStoppingParametersRequest) GetParamId() string { @@ -1973,7 +2120,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{71} + return fileDescriptor0, []int{74} } func (m *GetEarlyStoppingParametersReply) GetEarlyStoppingParameters() []*EarlyStoppingParameter { @@ -1991,7 +2138,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{72} + return fileDescriptor0, []int{75} } func (m *GetEarlyStoppingParameterListRequest) GetStudyId() string { @@ -2010,7 +2157,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{73} } +func (*EarlyStoppingParameterSet) Descriptor() ([]byte, []int) { return fileDescriptor0, []int{76} } func (m *EarlyStoppingParameterSet) GetParamId() string { if m != nil { @@ -2041,7 +2188,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{74} + return fileDescriptor0, []int{77} } func (m *GetEarlyStoppingParameterListReply) GetEarlyStoppingParameterSets() []*EarlyStoppingParameterSet { @@ -2065,6 +2212,11 @@ func init() { proto.RegisterType((*StudyOverview)(nil), "api.StudyOverview") proto.RegisterType((*Trial)(nil), "api.Trial") proto.RegisterType((*Worker)(nil), "api.Worker") + proto.RegisterType((*NasConfig)(nil), "api.NasConfig") + proto.RegisterType((*NasConfig_Operations)(nil), "api.NasConfig.Operations") + proto.RegisterType((*GraphConfig)(nil), "api.GraphConfig") + proto.RegisterType((*Operation)(nil), "api.Operation") + proto.RegisterType((*Operation_ParameterConfigs)(nil), "api.Operation.ParameterConfigs") proto.RegisterType((*StudyConfig)(nil), "api.StudyConfig") proto.RegisterType((*StudyConfig_ParameterConfigs)(nil), "api.StudyConfig.ParameterConfigs") proto.RegisterType((*CreateStudyRequest)(nil), "api.CreateStudyRequest") @@ -3216,184 +3368,197 @@ var _EarlyStopping_serviceDesc = grpc.ServiceDesc{ func init() { proto.RegisterFile("api.proto", fileDescriptor0) } var fileDescriptor0 = []byte{ - // 2858 bytes of a gzipped FileDescriptorProto - 0x1f, 0x8b, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0xff, 0xbc, 0x5a, 0x49, 0x73, 0x1b, 0xc7, - 0xf5, 0xf7, 0x00, 0xdc, 0xf0, 0x40, 0x82, 0x60, 0x73, 0x1b, 0x82, 0x22, 0x45, 0xb6, 0x64, 0x49, - 0x96, 0x2c, 0xd2, 0x86, 0xbc, 0xca, 0xf2, 0xdf, 0x25, 0x91, 0x34, 0xff, 0x28, 0x93, 0x20, 0x6b, - 0x08, 0x85, 0x5e, 0xaa, 0x8c, 0x1a, 0x12, 0x4d, 0x78, 0x6c, 0x00, 0x83, 0x60, 0x86, 0x92, 0x29, - 0x97, 0x2f, 0xb9, 0x24, 0x97, 0x54, 0x39, 0x49, 0xe5, 0x92, 0x83, 0x8f, 0xf9, 0x00, 0xa9, 0xca, - 0x21, 0x97, 0xdc, 0x73, 0xc8, 0x29, 0x95, 0xaa, 0x7c, 0x80, 0xdc, 0x9c, 0x0f, 0x91, 0xea, 0xd7, - 0x3d, 0x33, 0x3d, 0x83, 0x99, 0x01, 0x4c, 0x59, 0xb9, 0x4d, 0x77, 0xbf, 0xe5, 0xf7, 0x96, 0x7e, - 0xdd, 0xfd, 0x00, 0xc8, 0x99, 0x5d, 0x6b, 0xa3, 0xdb, 0xb3, 0x5d, 0x9b, 0x64, 0xcd, 0xae, 0x55, - 0xba, 0xd2, 0xb4, 0xed, 0x66, 0x8b, 0x6d, 0x9a, 0x5d, 0x6b, 0xd3, 0xec, 0x74, 0x6c, 0xd7, 0x74, - 0x2d, 0xbb, 0xe3, 0x08, 0x12, 0xba, 0x0b, 0x53, 0x1f, 0x32, 0xd3, 0xb1, 0x4e, 0x5a, 0xec, 0xa8, - 0x6b, 0x9e, 0x32, 0x52, 0x84, 0x6c, 0xdb, 0xfc, 0x5a, 0xd7, 0xd6, 0xb4, 0x5b, 0x39, 0x83, 0x7f, - 0xe2, 0x8c, 0xd5, 0xd1, 0x33, 0x72, 0xc6, 0xea, 0x10, 0x02, 0x23, 0x2d, 0xcb, 0x71, 0xf5, 0xec, - 0x5a, 0xf6, 0x56, 0xce, 0xc0, 0x6f, 0xfa, 0x9d, 0x06, 0xd3, 0x87, 0x66, 0xcf, 0x6c, 0x33, 0x97, - 0xf5, 0xb6, 0xec, 0xce, 0x99, 0xd5, 0xe4, 0x74, 0x1d, 0xb3, 0xcd, 0xa4, 0x30, 0xfc, 0x26, 0xef, - 0x42, 0xa1, 0xeb, 0x91, 0xd5, 0xdd, 0x8b, 0x2e, 0x43, 0xc1, 0x85, 0x32, 0xd9, 0xe0, 0xb8, 0x7d, - 0x09, 0xb5, 0x8b, 0x2e, 0x33, 0xa6, 0xba, 0xea, 0x90, 0x6c, 0xc0, 0xc4, 0x99, 0xc4, 0xaa, 0x67, - 0xd7, 0xb4, 0x5b, 0x79, 0xc9, 0x14, 0x32, 0xc0, 0xf0, 0x69, 0x68, 0x17, 0x72, 0xbe, 0xbc, 0x9f, - 0x1a, 0xcb, 0x1c, 0x8c, 0x3e, 0x31, 0x5b, 0xe7, 0x02, 0x48, 0xce, 0x10, 0x03, 0xfa, 0x1b, 0x0d, - 0xa6, 0xf6, 0x99, 0xdb, 0xb3, 0x4e, 0x9d, 0x3d, 0xbb, 0x79, 0xc4, 0x5c, 0xb2, 0x0c, 0xb9, 0xa7, - 0x76, 0xef, 0x2b, 0xd6, 0xab, 0x5b, 0x0d, 0xa9, 0x7b, 0x42, 0x4c, 0x54, 0x1a, 0xa4, 0x0c, 0x93, - 0x6d, 0x41, 0x5d, 0x6f, 0xd9, 0x4d, 0x47, 0xcf, 0xac, 0x65, 0x6f, 0xe5, 0xcb, 0xd3, 0xa8, 0x3d, - 0x10, 0x63, 0xe4, 0xdb, 0xfe, 0xb7, 0x43, 0x36, 0x61, 0x4a, 0x0a, 0x74, 0x5c, 0xd3, 0x3d, 0x77, - 0x10, 0x40, 0xa1, 0x0c, 0xc8, 0x74, 0xe4, 0x9a, 0x2e, 0x33, 0x26, 0x05, 0xc1, 0x11, 0xae, 0xd3, - 0x7b, 0x30, 0x2e, 0x65, 0xc5, 0xfa, 0xc0, 0x37, 0x24, 0xa3, 0x1a, 0xf2, 0x00, 0x8a, 0x92, 0xe9, - 0x67, 0x7c, 0x5c, 0xb3, 0xda, 0x8c, 0x73, 0xbb, 0x56, 0xc0, 0xcd, 0xbf, 0x13, 0xb8, 0x0f, 0x00, - 0x02, 0xf8, 0xb1, 0x5a, 0xef, 0xc2, 0x18, 0x92, 0x7a, 0x36, 0xcf, 0xab, 0x36, 0xfb, 0x2a, 0x0d, - 0x49, 0x44, 0x3f, 0x80, 0xd9, 0xa3, 0xf3, 0x66, 0x93, 0x39, 0x3c, 0x75, 0xd3, 0x63, 0x1a, 0x8f, - 0xe8, 0x11, 0x2c, 0xec, 0x98, 0xbd, 0xd6, 0xc5, 0x91, 0x6b, 0x77, 0xbb, 0x56, 0xa7, 0x79, 0x19, - 0x19, 0x9b, 0x90, 0xad, 0x99, 0xcd, 0x1f, 0xc1, 0xf0, 0x15, 0x4c, 0x1d, 0xb9, 0xe7, 0x8d, 0x8b, - 0x83, 0x27, 0xac, 0xf7, 0xc4, 0x62, 0x4f, 0x93, 0x58, 0xed, 0xa7, 0x1d, 0xd6, 0xf3, 0x58, 0x71, - 0x40, 0x0a, 0x90, 0xb1, 0x1a, 0x32, 0xb7, 0x32, 0x56, 0x83, 0xac, 0x41, 0xbe, 0xc1, 0x9c, 0xd3, - 0x9e, 0xd5, 0xe5, 0x1e, 0xd0, 0x47, 0x70, 0x41, 0x9d, 0xa2, 0x7f, 0xd1, 0x60, 0xb4, 0xd6, 0xb3, - 0xcc, 0x16, 0x59, 0x82, 0x09, 0x97, 0x7f, 0x04, 0x19, 0x37, 0x8e, 0xe3, 0x4a, 0x83, 0x2f, 0x39, - 0x1c, 0x11, 0x5f, 0x12, 0xfa, 0xc6, 0x71, 0x5c, 0x69, 0x90, 0x7b, 0x10, 0x64, 0x78, 0xdd, 0x61, - 0x62, 0x73, 0xe7, 0xcb, 0x85, 0xf0, 0x56, 0x30, 0x26, 0x7d, 0x22, 0x9e, 0xdd, 0x37, 0x61, 0xda, - 0x3e, 0xf9, 0x92, 0x9d, 0xba, 0xd6, 0x13, 0x56, 0x17, 0x1e, 0x10, 0xd0, 0x0a, 0xfe, 0x34, 0x06, - 0x93, 0x5c, 0x81, 0x11, 0xd7, 0x6c, 0x3a, 0xfa, 0x28, 0x0a, 0x9d, 0x40, 0xa1, 0x35, 0xb3, 0x69, - 0xe0, 0x2c, 0xfd, 0xa7, 0x06, 0x63, 0xc7, 0x98, 0xb3, 0xe9, 0xfb, 0x25, 0x05, 0xbe, 0x6a, 0x74, - 0x36, 0x6c, 0x34, 0x81, 0x11, 0xbe, 0x65, 0x25, 0x32, 0xfc, 0x26, 0x14, 0xc6, 0xe4, 0xf6, 0x19, - 0xed, 0xdb, 0x3e, 0x72, 0x85, 0x50, 0x98, 0xac, 0xb1, 0x76, 0xb7, 0x65, 0xba, 0xec, 0xd0, 0x74, - 0xbf, 0xd0, 0xc7, 0x90, 0x3f, 0x34, 0xe7, 0xdb, 0x35, 0x1e, 0x6b, 0xd7, 0x0f, 0x59, 0xc8, 0x63, - 0x06, 0xa4, 0xd4, 0xc3, 0xf8, 0xf8, 0x3f, 0x82, 0x19, 0xbb, 0xeb, 0x5a, 0x6d, 0xeb, 0x19, 0x56, - 0x6b, 0x51, 0x9c, 0xc4, 0x4e, 0x17, 0x5b, 0xe5, 0x40, 0x59, 0xc5, 0xfa, 0x54, 0xb4, 0x23, 0x33, - 0xe4, 0x4e, 0x44, 0x46, 0xd3, 0x36, 0x5b, 0xe8, 0x04, 0x2d, 0x4c, 0xbc, 0x6b, 0x9b, 0x2d, 0x52, - 0x85, 0x99, 0x20, 0xfc, 0xa7, 0x08, 0x57, 0xf8, 0x26, 0x5f, 0x5e, 0x97, 0xbe, 0xf1, 0xed, 0xd8, - 0x88, 0xd4, 0x79, 0xc7, 0x28, 0x76, 0x23, 0x33, 0xe4, 0x2e, 0x10, 0xf3, 0xf4, 0x94, 0x39, 0x4e, - 0xbd, 0xcb, 0x7a, 0x6d, 0xcb, 0x71, 0xf8, 0x99, 0xa3, 0x8f, 0xe1, 0x81, 0x31, 0x23, 0x56, 0x0e, - 0x83, 0x85, 0x74, 0x3f, 0x92, 0xd7, 0x60, 0x2e, 0x92, 0x66, 0x75, 0xf4, 0xe3, 0x04, 0xba, 0x8c, - 0x84, 0x73, 0xad, 0xca, 0xbd, 0xaa, 0xc3, 0xb8, 0x2c, 0x9a, 0x7a, 0x0e, 0x75, 0x7a, 0x43, 0xee, - 0xef, 0x2f, 0xed, 0x93, 0x4a, 0x43, 0x07, 0xe1, 0x6f, 0x1c, 0x94, 0x1e, 0x41, 0x31, 0x6a, 0x14, - 0xd9, 0x80, 0x71, 0xcf, 0x11, 0x1a, 0xc2, 0x9a, 0x0b, 0xef, 0x05, 0x41, 0x67, 0x78, 0x44, 0xb4, - 0x02, 0x64, 0xab, 0xc7, 0x4c, 0x97, 0xa1, 0xab, 0x0c, 0xf6, 0xf3, 0x73, 0xe6, 0xb8, 0xe4, 0x1e, - 0x4c, 0x8a, 0x9c, 0x15, 0x64, 0x18, 0xfb, 0x7c, 0xb9, 0x18, 0xf5, 0xa9, 0x91, 0x77, 0x82, 0x01, - 0xbd, 0x0b, 0xc5, 0x90, 0xa8, 0x6e, 0xeb, 0x22, 0x94, 0xfc, 0x5a, 0x28, 0xf9, 0xe9, 0x26, 0x90, - 0x6d, 0xd6, 0x62, 0x11, 0xcd, 0x29, 0x0c, 0x77, 0xa1, 0x18, 0x62, 0x18, 0x20, 0xff, 0x55, 0x98, - 0xde, 0x65, 0xee, 0xb0, 0xc2, 0xb7, 0x61, 0x2a, 0xa0, 0xe6, 0x92, 0x2f, 0xe5, 0x82, 0x79, 0x98, - 0xf5, 0xa4, 0xec, 0x59, 0x8e, 0x2b, 0xf5, 0xd2, 0x43, 0x98, 0x09, 0x4f, 0x73, 0x05, 0xef, 0xc1, - 0xb4, 0x50, 0x60, 0xcb, 0x4a, 0xeb, 0x45, 0x8c, 0x04, 0x3a, 0xbc, 0x22, 0x6c, 0x14, 0x1c, 0x75, - 0xe8, 0xd0, 0xb7, 0xbc, 0xb0, 0x61, 0xf5, 0xf4, 0xec, 0x5b, 0x83, 0x51, 0xac, 0x1f, 0x12, 0xac, - 0xa8, 0x0f, 0x82, 0x42, 0x2c, 0x04, 0x31, 0x92, 0x7c, 0xd2, 0x87, 0x09, 0xa5, 0x97, 0x93, 0xef, - 0x32, 0x17, 0x69, 0x9d, 0x21, 0x9c, 0xf8, 0x06, 0x14, 0x14, 0x72, 0x2e, 0x9b, 0xc2, 0x18, 0xca, - 0xf2, 0x6c, 0x53, 0x21, 0xc9, 0x15, 0x19, 0xa8, 0x90, 0x21, 0x29, 0x90, 0x5e, 0xc7, 0x40, 0x29, - 0xf0, 0x07, 0x1b, 0xfd, 0x00, 0xe6, 0x0d, 0xd6, 0xb4, 0x1c, 0x97, 0xf5, 0x44, 0xc1, 0xf6, 0xd4, - 0x5c, 0x83, 0x31, 0x51, 0xa6, 0x25, 0x6f, 0x1e, 0x79, 0x25, 0x8d, 0x5c, 0xa2, 0x65, 0x98, 0x8d, - 0x72, 0x73, 0xb5, 0x69, 0x35, 0x9f, 0xda, 0x40, 0xf8, 0xa1, 0x2d, 0xe8, 0x87, 0xf0, 0x1c, 0x59, - 0x01, 0xf0, 0xa5, 0x89, 0xeb, 0x45, 0xce, 0xc8, 0x79, 0xe2, 0x1c, 0x72, 0x15, 0xf2, 0x96, 0x53, - 0x3f, 0xb5, 0xdb, 0x5d, 0x9e, 0xff, 0x58, 0x53, 0x27, 0x0c, 0xb0, 0x9c, 0x2d, 0x39, 0x43, 0x09, - 0x14, 0x43, 0x0a, 0xbb, 0xad, 0x0b, 0x7a, 0x86, 0x59, 0x37, 0x3c, 0x06, 0xd5, 0xe9, 0x99, 0xf0, - 0x69, 0x14, 0x32, 0x36, 0x1b, 0x31, 0xf6, 0x1d, 0x8c, 0x9f, 0xaa, 0x9a, 0xbc, 0x0c, 0xe3, 0x62, - 0xd9, 0x8b, 0x7b, 0xc8, 0xb3, 0xde, 0x1a, 0xfd, 0x0c, 0xf4, 0xc7, 0xdd, 0x86, 0xe9, 0xb2, 0x63, - 0xff, 0xee, 0xc7, 0x3c, 0xa0, 0xa9, 0x67, 0x6a, 0x70, 0x12, 0x66, 0x92, 0x4e, 0x42, 0xaa, 0xc3, - 0x42, 0x8c, 0x70, 0xee, 0x98, 0xdf, 0x6b, 0xa0, 0xfb, 0x88, 0x3f, 0x3c, 0x6f, 0xb5, 0x2a, 0x9d, - 0x33, 0xfb, 0xc5, 0x39, 0x88, 0xdc, 0x80, 0x69, 0xbb, 0xd3, 0xba, 0xa8, 0xf3, 0x03, 0xd8, 0x71, - 0xf9, 0xad, 0x19, 0x4f, 0xb4, 0x09, 0x63, 0x8a, 0x4f, 0xef, 0xe1, 0xec, 0x9e, 0xdd, 0xa4, 0xdf, - 0x6b, 0x50, 0x08, 0x83, 0xe2, 0x19, 0x7a, 0x9c, 0x9c, 0xa1, 0xf2, 0xfa, 0xd1, 0x77, 0x0b, 0xca, - 0x0c, 0x71, 0x0b, 0x8a, 0x5e, 0xe3, 0xb3, 0x83, 0xaf, 0xf1, 0xf4, 0x13, 0x58, 0x88, 0xf1, 0x1b, - 0x0f, 0xf8, 0x07, 0x30, 0x23, 0xed, 0x3f, 0x3b, 0x6f, 0xb5, 0xea, 0x56, 0xe7, 0xcc, 0xf6, 0x42, - 0x3f, 0xab, 0x40, 0xf6, 0x99, 0xa6, 0x9f, 0x86, 0xc6, 0x0e, 0xfd, 0xbb, 0x06, 0xf3, 0xbc, 0x46, - 0xfa, 0x17, 0xe6, 0x61, 0x32, 0xf6, 0x75, 0x98, 0x73, 0x7c, 0x86, 0xba, 0xd9, 0x6a, 0xda, 0x3d, - 0xcb, 0xfd, 0xa2, 0x2d, 0x83, 0x33, 0x1b, 0xac, 0x3d, 0xf4, 0x96, 0xc8, 0xcb, 0x50, 0xe8, 0x09, - 0xc1, 0xf5, 0xce, 0x79, 0xfb, 0x84, 0xf5, 0x30, 0x5a, 0xa3, 0xc6, 0x94, 0x9c, 0xad, 0xe2, 0x24, - 0xb9, 0x0e, 0x85, 0x96, 0xdd, 0xac, 0x2b, 0x7b, 0x72, 0x04, 0xf7, 0xe4, 0x64, 0xcb, 0x6e, 0x1e, - 0xfb, 0xdb, 0x72, 0x09, 0x26, 0xd0, 0xa7, 0x1c, 0xda, 0xa8, 0x80, 0x86, 0xe3, 0x4a, 0x83, 0xbe, - 0x2b, 0x4e, 0x02, 0xd5, 0x9c, 0x61, 0xeb, 0xe1, 0xaf, 0x35, 0x58, 0xe6, 0xbc, 0x5f, 0xd8, 0xe7, - 0xad, 0xc6, 0x8f, 0x2b, 0x23, 0xef, 0x80, 0xce, 0xf8, 0x8b, 0xa1, 0xee, 0xc8, 0x27, 0x43, 0x9f, - 0x53, 0x16, 0x98, 0xfa, 0xa2, 0x08, 0xfc, 0x92, 0x62, 0xca, 0x21, 0x2c, 0xc5, 0xc3, 0x11, 0xc7, - 0xe4, 0x82, 0x83, 0x2b, 0xa8, 0x52, 0x75, 0x98, 0x86, 0x0e, 0x9b, 0x75, 0x22, 0x7c, 0x95, 0x86, - 0x43, 0x7b, 0x58, 0x99, 0x64, 0x96, 0x3d, 0x7f, 0x75, 0xbc, 0x06, 0x53, 0x5e, 0x2a, 0xf3, 0x1b, - 0x96, 0x23, 0x9f, 0xf8, 0x5e, 0x7e, 0xf3, 0xbb, 0x95, 0x43, 0x0f, 0xb0, 0x4a, 0xf9, 0x3a, 0x39, - 0xf6, 0x07, 0x50, 0x54, 0xb6, 0x00, 0xdf, 0x39, 0xe1, 0x23, 0x38, 0xf4, 0x28, 0x36, 0x0a, 0x6d, - 0x75, 0xe8, 0x50, 0x07, 0x74, 0x83, 0x75, 0xed, 0x9e, 0x1b, 0x90, 0x0d, 0x63, 0x4b, 0x9c, 0xd2, - 0xec, 0xd0, 0x4a, 0x75, 0x58, 0x88, 0x51, 0xca, 0x8b, 0xda, 0x5f, 0x35, 0xc8, 0xed, 0xdb, 0x0d, - 0x26, 0xea, 0xc6, 0x0a, 0x80, 0x00, 0xa0, 0x5c, 0xdd, 0x73, 0x38, 0x83, 0x37, 0xcd, 0x50, 0xb9, - 0xca, 0x44, 0xca, 0xd5, 0x06, 0x80, 0x5f, 0x29, 0x9c, 0x84, 0x17, 0x95, 0x42, 0x41, 0x6e, 0x04, - 0xd7, 0xd6, 0x11, 0x24, 0x9e, 0x54, 0x0d, 0x09, 0x2e, 0xb1, 0x2b, 0x00, 0x6d, 0x0e, 0xb0, 0xde, - 0xe5, 0x0f, 0x13, 0x91, 0x64, 0x39, 0x9c, 0xe1, 0xaf, 0x12, 0xfa, 0x26, 0xe4, 0xb7, 0x4d, 0xd7, - 0x3c, 0x62, 0x2e, 0x5a, 0x10, 0xf7, 0xec, 0x20, 0x30, 0x82, 0xbc, 0x02, 0x31, 0x7e, 0x53, 0x0b, - 0x8a, 0x47, 0xe6, 0x93, 0xf0, 0x25, 0x72, 0x80, 0xf5, 0xf1, 0xaf, 0x97, 0xc8, 0x6b, 0x35, 0xdb, - 0xff, 0x5a, 0x2d, 0x42, 0x41, 0x51, 0xc5, 0x9d, 0xfe, 0x2b, 0x4d, 0x68, 0x47, 0xc7, 0x7b, 0xda, - 0xaf, 0xc3, 0x28, 0x5a, 0x25, 0x4b, 0xb6, 0x70, 0x9d, 0x1f, 0x1a, 0x43, 0x2c, 0x92, 0x3b, 0x30, - 0xd1, 0x30, 0x5d, 0x53, 0xd6, 0xeb, 0xe0, 0x6e, 0xa9, 0xf8, 0xc0, 0x18, 0x6f, 0x88, 0x01, 0x59, - 0x87, 0x49, 0x97, 0x75, 0x1c, 0xbb, 0x57, 0x3f, 0xb1, 0xcd, 0x5e, 0x43, 0x5e, 0x00, 0xf2, 0x62, - 0xee, 0x11, 0x9f, 0xf2, 0xc0, 0x49, 0x24, 0x1c, 0x9c, 0x8e, 0xd5, 0x9a, 0x4f, 0x36, 0x38, 0x64, - 0x8b, 0x79, 0xe9, 0x49, 0xb7, 0x61, 0xae, 0x6f, 0x85, 0x6f, 0x88, 0x57, 0x01, 0xd3, 0xd4, 0x62, - 0x69, 0x57, 0x51, 0x8f, 0x84, 0xbe, 0x25, 0x2a, 0x36, 0x97, 0x82, 0x5a, 0x9d, 0xe1, 0xdc, 0x4f, - 0xdf, 0x17, 0xa5, 0x51, 0xe5, 0xe3, 0xca, 0x6f, 0xc0, 0x18, 0x7a, 0xc6, 0xd3, 0x1d, 0xf5, 0x9b, - 0x5c, 0xa5, 0x46, 0x00, 0x3e, 0xe4, 0xf6, 0xe7, 0x48, 0x79, 0x7a, 0x1f, 0x48, 0x44, 0x26, 0x47, - 0x34, 0x54, 0x20, 0xe9, 0xbf, 0x34, 0x58, 0x3d, 0x52, 0x4b, 0xbd, 0xbf, 0x4b, 0x5e, 0xd0, 0x11, - 0xa6, 0x96, 0xea, 0x6c, 0xa8, 0x54, 0x93, 0x7d, 0x98, 0x57, 0xa4, 0x29, 0xbb, 0x58, 0x6c, 0x4c, - 0x5d, 0x84, 0xb3, 0x1f, 0xa9, 0xa1, 0x80, 0x08, 0xe0, 0xd3, 0x77, 0xe1, 0x4a, 0xa2, 0x65, 0xf2, - 0xe5, 0xe0, 0x23, 0xd1, 0xc2, 0x87, 0xc6, 0x7b, 0xb0, 0xba, 0x3b, 0xd0, 0x29, 0x49, 0xcc, 0x6d, - 0xb8, 0xb2, 0x9b, 0xa6, 0x37, 0xd1, 0x4c, 0xed, 0x52, 0x66, 0xfe, 0x1f, 0xac, 0xc7, 0xab, 0x53, - 0xde, 0x70, 0x69, 0xcf, 0x9e, 0x3f, 0x6b, 0xb0, 0x10, 0xc3, 0xcd, 0x37, 0x6e, 0xb2, 0x91, 0x97, - 0x89, 0x7c, 0xa2, 0xdd, 0xd9, 0x4b, 0xd9, 0xfd, 0x0c, 0xae, 0xa6, 0xd9, 0xcd, 0x3d, 0x7d, 0x0c, - 0x4b, 0x71, 0x1a, 0xd5, 0xb3, 0x72, 0x39, 0x49, 0x2b, 0x3f, 0xbf, 0x16, 0x9d, 0xd8, 0x79, 0x87, - 0x96, 0x61, 0x9e, 0xdf, 0x09, 0x02, 0xb6, 0x21, 0xfc, 0x3c, 0x0f, 0xb3, 0x51, 0x1e, 0x5e, 0xe7, - 0xfe, 0xa3, 0xc1, 0xfa, 0x11, 0x73, 0xe3, 0x5b, 0xa5, 0xff, 0xbb, 0x5b, 0x53, 0x64, 0x2b, 0x1e, - 0xc3, 0x52, 0x44, 0x68, 0xdf, 0x76, 0x14, 0x9e, 0x8b, 0xc7, 0x6d, 0x2c, 0xb2, 0x78, 0x7b, 0xe8, - 0x03, 0xb8, 0x9a, 0x66, 0xed, 0x80, 0x7d, 0x29, 0x72, 0x7d, 0xb0, 0xaf, 0x92, 0xf8, 0x45, 0xce, - 0xa4, 0x6a, 0x4f, 0xb5, 0x5c, 0x7b, 0x0e, 0xcb, 0x1f, 0xc2, 0xf5, 0x44, 0xdd, 0x43, 0x6e, 0xd5, - 0xbf, 0x69, 0xb0, 0x14, 0x2f, 0x60, 0xc0, 0x6e, 0xbd, 0x7c, 0x8e, 0xa4, 0xba, 0x23, 0xfb, 0x1c, - 0xee, 0xf8, 0xa5, 0x06, 0x74, 0x80, 0x3f, 0x78, 0x38, 0x4c, 0x58, 0x49, 0xd2, 0xaf, 0x6e, 0xe3, - 0xd5, 0x14, 0x0c, 0x7c, 0x27, 0x97, 0x58, 0xd2, 0x92, 0x73, 0xfb, 0x31, 0x4c, 0x85, 0x7e, 0x77, - 0x22, 0x45, 0x98, 0x7c, 0x5c, 0xfd, 0xa8, 0x7a, 0x70, 0x5c, 0xad, 0xd7, 0x3e, 0x39, 0xdc, 0x29, - 0xbe, 0x44, 0x00, 0xc6, 0xb6, 0x0f, 0x1e, 0x3f, 0xda, 0xdb, 0x29, 0x6a, 0x64, 0x1c, 0xb2, 0x95, - 0x6a, 0xad, 0x98, 0x21, 0x93, 0x30, 0xb1, 0x5d, 0x39, 0xda, 0x32, 0x76, 0x6a, 0x3b, 0xc5, 0x2c, - 0x99, 0x86, 0xfc, 0xd6, 0xc3, 0xda, 0xce, 0xee, 0x81, 0x51, 0xd9, 0x7a, 0xb8, 0x57, 0x1c, 0xb9, - 0xfd, 0xff, 0x50, 0x8c, 0x76, 0x8c, 0x89, 0x0e, 0x73, 0x9e, 0xe4, 0x83, 0xc3, 0x5a, 0x65, 0xbf, - 0xf2, 0xe9, 0xc3, 0x5a, 0xe5, 0xa0, 0x5a, 0x7c, 0x89, 0x0b, 0xdb, 0xaf, 0x54, 0xf9, 0x0c, 0xd7, - 0xc1, 0x47, 0x0f, 0x3f, 0x16, 0xa3, 0xcc, 0xed, 0x5d, 0x18, 0xc5, 0xf7, 0x3f, 0xc9, 0xc3, 0xf8, - 0xe1, 0x4e, 0x75, 0xbb, 0x52, 0xdd, 0x2d, 0xbe, 0xc4, 0x07, 0xc6, 0xe3, 0x6a, 0x95, 0x0f, 0x34, - 0x32, 0x05, 0xb9, 0xad, 0x83, 0xfd, 0xc3, 0xbd, 0x9d, 0xda, 0xce, 0x76, 0x31, 0xc3, 0xf1, 0x7e, - 0x54, 0xd9, 0xdb, 0xdb, 0xd9, 0x2e, 0x66, 0x49, 0x0e, 0x46, 0x77, 0x0c, 0xe3, 0xc0, 0x28, 0x7e, - 0x5d, 0xfe, 0x61, 0x11, 0xc6, 0xf7, 0xcd, 0x8e, 0xd9, 0x64, 0x3d, 0xd2, 0x86, 0xbc, 0xd2, 0xef, - 0x24, 0x8b, 0xe8, 0xc0, 0xfe, 0x66, 0x6a, 0x69, 0xbe, 0x7f, 0x81, 0x97, 0xad, 0x8d, 0x5f, 0xfc, - 0xe3, 0xdf, 0xbf, 0xcb, 0xdc, 0xa2, 0x3a, 0xfe, 0xc8, 0x29, 0x85, 0x6e, 0x2a, 0x64, 0xf7, 0x43, - 0x0d, 0x48, 0xf2, 0x39, 0x4c, 0x78, 0x4d, 0x44, 0x22, 0x9a, 0xba, 0x91, 0xf6, 0x66, 0x89, 0x44, - 0x66, 0xb9, 0x96, 0x5b, 0xa8, 0x85, 0x92, 0xb5, 0x90, 0x16, 0x8f, 0x66, 0xf3, 0x1b, 0x6f, 0xa3, - 0x7c, 0x4b, 0xbe, 0x84, 0xbc, 0xd2, 0x5e, 0x95, 0xe6, 0xf4, 0x77, 0x68, 0xa5, 0x39, 0xd1, 0x4e, - 0x2c, 0xbd, 0x83, 0x8a, 0x5e, 0x26, 0xd7, 0x42, 0x8a, 0x14, 0x32, 0x55, 0xd7, 0x29, 0x4c, 0xaa, - 0x0d, 0x51, 0xa2, 0x87, 0x90, 0x2b, 0x7b, 0xb9, 0xb4, 0x10, 0xb3, 0xc2, 0xd5, 0xad, 0xa3, 0xba, - 0x65, 0xb2, 0x14, 0x6b, 0x17, 0x0a, 0x3d, 0xf3, 0xe2, 0x23, 0x7e, 0x61, 0x52, 0xe3, 0xa3, 0x36, - 0x1b, 0x43, 0xf1, 0x09, 0xfa, 0x8a, 0xf4, 0x26, 0x6a, 0x58, 0x8f, 0x8d, 0x0f, 0x92, 0xdd, 0x17, - 0xed, 0x45, 0x72, 0x02, 0x39, 0xbf, 0xeb, 0x49, 0xe6, 0x3d, 0xbc, 0xa1, 0xa6, 0x69, 0x69, 0x36, - 0x3a, 0xcd, 0x35, 0xbc, 0x82, 0x1a, 0xae, 0x91, 0xf5, 0xa8, 0x0d, 0x82, 0x48, 0x75, 0x98, 0x08, - 0xbe, 0x30, 0x64, 0x2e, 0x24, 0xab, 0x2f, 0xf8, 0x8a, 0x09, 0x89, 0xc1, 0x47, 0x9a, 0xcd, 0x6f, - 0xbc, 0x6e, 0xd6, 0xb7, 0xc4, 0x81, 0x42, 0xb8, 0xc9, 0x49, 0x4a, 0x28, 0x2f, 0xb6, 0x6f, 0x5a, - 0xd2, 0x63, 0xd7, 0x94, 0x2c, 0xa0, 0xcb, 0x21, 0x8d, 0x61, 0xca, 0xfb, 0xb2, 0xb3, 0x4a, 0x3e, - 0x03, 0x08, 0x1a, 0x87, 0xc4, 0x8f, 0x74, 0xb8, 0xdd, 0x51, 0x9a, 0xeb, 0x9b, 0xe7, 0x8a, 0xae, - 0xa2, 0xa2, 0x25, 0xb2, 0x18, 0x35, 0xcd, 0x13, 0xf7, 0x0c, 0x66, 0xfa, 0xda, 0x7f, 0x64, 0x05, - 0x65, 0x25, 0xf5, 0x1c, 0x4b, 0xcb, 0x49, 0xcb, 0x4a, 0xb4, 0x4a, 0xab, 0x21, 0x8d, 0x7d, 0xc4, - 0xf7, 0xb5, 0xdb, 0xe4, 0xa9, 0xd2, 0x79, 0xf5, 0x5b, 0x79, 0x2b, 0x61, 0x3b, 0x22, 0x7d, 0x47, - 0xa9, 0x3b, 0xbe, 0xbd, 0x46, 0x6f, 0xa0, 0xee, 0x35, 0xb2, 0x1a, 0x6f, 0xad, 0xaf, 0xa3, 0x83, - 0x0d, 0x78, 0xa5, 0xeb, 0x24, 0xc3, 0x18, 0xdb, 0x59, 0x2b, 0xe9, 0xb1, 0x6b, 0x8a, 0xbe, 0x48, - 0x18, 0xc3, 0x94, 0xdc, 0xd0, 0xef, 0x34, 0xf1, 0x18, 0x8b, 0xf6, 0x86, 0xc8, 0x9a, 0x2f, 0x3a, - 0xa1, 0x8b, 0x55, 0x5a, 0x4d, 0xa1, 0xe0, 0x10, 0xde, 0x42, 0x08, 0xaf, 0xd1, 0x3b, 0x09, 0x9b, - 0x23, 0x8e, 0x93, 0x43, 0xfa, 0x1c, 0x93, 0xca, 0xfb, 0xf3, 0x80, 0x9f, 0x54, 0xe1, 0x66, 0x53, - 0x90, 0x54, 0x6a, 0x43, 0x88, 0x52, 0xd4, 0x79, 0x85, 0xf6, 0x25, 0x95, 0xa4, 0xe2, 0xf2, 0x7f, - 0xab, 0xc1, 0x62, 0xc2, 0xa3, 0x88, 0x5c, 0x13, 0x57, 0xe1, 0xd4, 0x77, 0x4f, 0x69, 0x3d, 0x9d, - 0x88, 0xe3, 0xd8, 0x44, 0x1c, 0xaf, 0xd0, 0xeb, 0x21, 0x1c, 0x09, 0x2c, 0x1c, 0xd4, 0x1f, 0x34, - 0x58, 0xdc, 0x4d, 0x05, 0xb5, 0x3b, 0x0c, 0xa8, 0xb4, 0x47, 0x17, 0x7d, 0x1b, 0x41, 0xbd, 0x4e, - 0x36, 0x93, 0x73, 0x22, 0x60, 0xd9, 0xfc, 0xc6, 0xbb, 0x48, 0x7d, 0x4b, 0xfe, 0xa8, 0x41, 0x29, - 0xf9, 0x9d, 0x41, 0x6e, 0xa4, 0xa8, 0x56, 0x4f, 0x82, 0xeb, 0x03, 0xe9, 0x38, 0xca, 0xfb, 0x88, - 0xf2, 0x0d, 0x52, 0x1e, 0x02, 0x25, 0xe7, 0x52, 0x8b, 0xec, 0xf7, 0x1a, 0x94, 0x92, 0xaf, 0xd6, - 0x12, 0xe8, 0xc0, 0x97, 0x86, 0x04, 0x3a, 0xe0, 0x8e, 0x4e, 0xcb, 0x08, 0xf4, 0x55, 0x7a, 0x33, - 0x1a, 0xe3, 0x04, 0x2e, 0x1e, 0x66, 0xe9, 0xc9, 0x74, 0x80, 0xbb, 0x43, 0x02, 0x1c, 0x70, 0x8d, - 0x4f, 0xf6, 0x64, 0x02, 0x97, 0x1a, 0xf2, 0x3f, 0x69, 0xb0, 0x92, 0x7a, 0x35, 0x25, 0xaf, 0xa4, - 0x63, 0x50, 0x03, 0x7f, 0x73, 0x18, 0x52, 0x8e, 0xf8, 0x7d, 0x44, 0xfc, 0x36, 0x79, 0x73, 0x38, - 0xc4, 0xd1, 0xf0, 0x7f, 0x0a, 0x39, 0xbf, 0xbd, 0x27, 0xcf, 0xf1, 0x68, 0x67, 0x51, 0x9e, 0xe3, - 0x91, 0x2e, 0xa0, 0xbc, 0x8b, 0xd0, 0x85, 0x70, 0x28, 0x3d, 0x22, 0x1e, 0x39, 0x29, 0x1b, 0x9b, - 0x47, 0x8a, 0x6c, 0xb5, 0x81, 0xa5, 0xc8, 0x56, 0x9a, 0x78, 0xc9, 0xb2, 0x91, 0x88, 0xcb, 0x7e, - 0x06, 0x33, 0x7d, 0x3d, 0x61, 0x79, 0xda, 0x24, 0x35, 0xa8, 0xe5, 0x69, 0x93, 0xd0, 0x4a, 0x96, - 0x27, 0x1d, 0x5d, 0x8d, 0x1c, 0xe2, 0x11, 0x62, 0xae, 0xdb, 0x16, 0x3f, 0xb2, 0x2b, 0x9d, 0x44, - 0xe2, 0x1f, 0x64, 0x31, 0x9d, 0xc7, 0xd2, 0x52, 0xfc, 0x22, 0xd7, 0x7a, 0x1d, 0xb5, 0xae, 0x92, - 0x2b, 0x7d, 0x3b, 0x57, 0x95, 0xfe, 0x95, 0x38, 0xe1, 0x82, 0xe6, 0xa1, 0x72, 0xc2, 0xf5, 0x75, - 0x22, 0x95, 0x13, 0x2e, 0xd2, 0x6d, 0xa4, 0xd7, 0x50, 0xdb, 0x0a, 0x59, 0x8e, 0xd5, 0x26, 0x28, - 0xcb, 0x35, 0x80, 0xa0, 0x6c, 0x90, 0x0f, 0x7f, 0x9a, 0xc3, 0xb5, 0x6c, 0xc1, 0x54, 0x28, 0x21, - 0xc9, 0xc7, 0x2f, 0xea, 0x10, 0x3d, 0x19, 0xc3, 0xff, 0x4b, 0xde, 0xfb, 0x6f, 0x00, 0x00, 0x00, - 0xff, 0xff, 0x05, 0xd2, 0x81, 0x35, 0x5f, 0x29, 0x00, 0x00, + // 3060 bytes of a gzipped FileDescriptorProto + 0x1f, 0x8b, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0xff, 0xbc, 0x5a, 0x4b, 0x73, 0x1b, 0xc7, + 0xf1, 0xf7, 0x12, 0x7c, 0xa1, 0x41, 0x82, 0xd0, 0xf0, 0x05, 0x82, 0x22, 0x45, 0x8e, 0x68, 0x49, + 0xd6, 0x83, 0xb4, 0x21, 0xbf, 0x44, 0xcb, 0x7f, 0x97, 0x44, 0xd2, 0xfc, 0xa3, 0x4c, 0x82, 0xac, + 0x25, 0x14, 0xfa, 0x51, 0x65, 0xd4, 0x92, 0x18, 0x42, 0x2b, 0x03, 0xd8, 0x0d, 0x76, 0x29, 0x99, + 0x72, 0xf9, 0x92, 0x4b, 0x72, 0x49, 0x95, 0x93, 0x54, 0x2e, 0x39, 0xf8, 0x98, 0x0f, 0x90, 0x2a, + 0x57, 0x2a, 0x97, 0x5c, 0x72, 0xca, 0x21, 0xa7, 0x54, 0xaa, 0xf2, 0x01, 0x72, 0x4b, 0x3e, 0x44, + 0x6a, 0x7a, 0x66, 0x77, 0x67, 0x17, 0xbb, 0x0b, 0x58, 0xb2, 0x73, 0xc3, 0xce, 0xf4, 0xe3, 0xd7, + 0xdd, 0xd3, 0xdd, 0x33, 0x4d, 0x42, 0xd6, 0xb0, 0xcd, 0x75, 0xbb, 0x6b, 0xb9, 0x16, 0xc9, 0x18, + 0xb6, 0x59, 0xba, 0xdc, 0xb4, 0xac, 0x66, 0x8b, 0x6d, 0x18, 0xb6, 0xb9, 0x61, 0x74, 0x3a, 0x96, + 0x6b, 0xb8, 0xa6, 0xd5, 0x71, 0x04, 0x09, 0xfd, 0x0c, 0x26, 0x3f, 0x64, 0x86, 0x63, 0x9e, 0xb4, + 0xd8, 0x91, 0x6d, 0x9c, 0x32, 0x52, 0x80, 0x4c, 0xdb, 0xf8, 0xb2, 0xa8, 0xad, 0x68, 0x37, 0xb2, + 0x3a, 0xff, 0x89, 0x2b, 0x66, 0xa7, 0x38, 0x24, 0x57, 0xcc, 0x0e, 0x21, 0x30, 0xdc, 0x32, 0x1d, + 0xb7, 0x98, 0x59, 0xc9, 0xdc, 0xc8, 0xea, 0xf8, 0x9b, 0xaf, 0x39, 0x2e, 0xb3, 0x8b, 0xc3, 0x48, + 0x86, 0xbf, 0xe9, 0x37, 0x1a, 0x4c, 0x1d, 0x1a, 0x5d, 0xa3, 0xcd, 0x5c, 0xd6, 0xdd, 0xb2, 0x3a, + 0x67, 0x66, 0x93, 0xd3, 0x75, 0x8c, 0x36, 0x93, 0x0a, 0xf0, 0x37, 0xb9, 0x07, 0x79, 0xdb, 0x23, + 0xab, 0xbb, 0x17, 0x36, 0x43, 0x65, 0xf9, 0x32, 0x59, 0xe7, 0xb6, 0xf8, 0x12, 0x6a, 0x17, 0x36, + 0xd3, 0x27, 0x6d, 0xf5, 0x93, 0xac, 0xc3, 0xf8, 0x99, 0xc4, 0x5f, 0xcc, 0xac, 0x68, 0x37, 0x72, + 0x92, 0x29, 0x64, 0x94, 0xee, 0xd3, 0x50, 0x1b, 0xb2, 0xbe, 0xbc, 0x1f, 0x1a, 0xcb, 0x0c, 0x8c, + 0x3c, 0x35, 0x5a, 0xe7, 0x02, 0x48, 0x56, 0x17, 0x1f, 0xf4, 0x57, 0x1a, 0x4c, 0xee, 0x33, 0xb7, + 0x6b, 0x9e, 0x3a, 0x7b, 0x56, 0xf3, 0x88, 0xb9, 0x64, 0x11, 0xb2, 0xcf, 0xac, 0xee, 0x17, 0xac, + 0x5b, 0x37, 0x1b, 0x52, 0xf7, 0xb8, 0x58, 0xa8, 0x34, 0x48, 0x19, 0x26, 0xda, 0x82, 0xba, 0xde, + 0xb2, 0x9a, 0x4e, 0x71, 0x68, 0x25, 0x73, 0x23, 0x57, 0x9e, 0x42, 0xed, 0x81, 0x18, 0x3d, 0xd7, + 0xf6, 0x7f, 0x3b, 0x64, 0x03, 0x26, 0xa5, 0x40, 0xc7, 0x35, 0xdc, 0x73, 0x07, 0x01, 0xe4, 0xcb, + 0x80, 0x4c, 0x47, 0xae, 0xe1, 0x32, 0x7d, 0x42, 0x10, 0x1c, 0xe1, 0x3e, 0xbd, 0x0b, 0x63, 0x52, + 0x56, 0xac, 0x0f, 0x7c, 0x43, 0x86, 0x54, 0x43, 0xee, 0x43, 0x41, 0x32, 0xfd, 0x84, 0x7f, 0xd7, + 0xcc, 0x36, 0xe3, 0xdc, 0xae, 0x19, 0x70, 0xf3, 0xdf, 0x09, 0xdc, 0x07, 0x00, 0x01, 0xfc, 0x58, + 0xad, 0x77, 0x60, 0x14, 0x49, 0x3d, 0x9b, 0x67, 0x55, 0x9b, 0x7d, 0x95, 0xba, 0x24, 0xa2, 0x1f, + 0xc0, 0xf4, 0xd1, 0x79, 0xb3, 0xc9, 0x1c, 0x7e, 0x9c, 0xd3, 0x63, 0x1a, 0x8f, 0xe8, 0x21, 0xcc, + 0xed, 0x18, 0xdd, 0xd6, 0xc5, 0x91, 0x6b, 0xd9, 0xb6, 0xd9, 0x69, 0xbe, 0x88, 0x8c, 0x0d, 0xc8, + 0xd4, 0x8c, 0xe6, 0xf7, 0x60, 0xf8, 0x02, 0x26, 0x8f, 0xdc, 0xf3, 0xc6, 0xc5, 0xc1, 0x53, 0xd6, + 0x7d, 0x6a, 0xb2, 0x67, 0x49, 0xac, 0xd6, 0xb3, 0x0e, 0xeb, 0x7a, 0xac, 0xf8, 0x41, 0xf2, 0x30, + 0x64, 0x36, 0xe4, 0xd9, 0x1a, 0x32, 0x1b, 0x64, 0x05, 0x72, 0x0d, 0xe6, 0x9c, 0x76, 0x4d, 0x9b, + 0x7b, 0x40, 0x26, 0x9e, 0xba, 0x44, 0xff, 0xa4, 0xc1, 0x48, 0xad, 0x6b, 0x1a, 0x2d, 0xb2, 0x00, + 0xe3, 0x2e, 0xff, 0x11, 0x9c, 0xb8, 0x31, 0xfc, 0xae, 0x34, 0xf8, 0x96, 0xc3, 0x11, 0xf1, 0x2d, + 0xa1, 0x6f, 0x0c, 0xbf, 0x2b, 0x0d, 0x72, 0x17, 0x82, 0x13, 0x5e, 0x77, 0x98, 0x48, 0xf8, 0x5c, + 0x39, 0x1f, 0x4e, 0x05, 0x7d, 0xc2, 0x27, 0xe2, 0xa7, 0xfb, 0x3a, 0x4c, 0x59, 0x27, 0x4f, 0xd8, + 0xa9, 0x6b, 0x3e, 0x65, 0x75, 0xe1, 0x01, 0x01, 0x2d, 0xef, 0x2f, 0x63, 0x30, 0xc9, 0x65, 0x18, + 0x76, 0x8d, 0xa6, 0x53, 0x1c, 0x41, 0xa1, 0xe3, 0x28, 0xb4, 0x66, 0x34, 0x75, 0x5c, 0xa5, 0xff, + 0xd0, 0x60, 0xf4, 0x18, 0xcf, 0x6c, 0x7a, 0xbe, 0xa4, 0xc0, 0x57, 0x8d, 0xce, 0x84, 0x8d, 0x26, + 0x30, 0xcc, 0x53, 0xd6, 0xab, 0x56, 0x98, 0xbe, 0x14, 0x46, 0x65, 0xfa, 0x8c, 0xf4, 0xa4, 0x8f, + 0xdc, 0x21, 0x14, 0x26, 0x6a, 0xac, 0x6d, 0xb7, 0x0c, 0x97, 0x1d, 0x1a, 0xee, 0xe3, 0xe2, 0x28, + 0xf2, 0x87, 0xd6, 0x7c, 0xbb, 0xc6, 0x62, 0xed, 0xfa, 0xa3, 0x06, 0xd9, 0xaa, 0xe1, 0xc8, 0x6a, + 0x78, 0x17, 0x26, 0x9a, 0x5d, 0xc3, 0x7e, 0x5c, 0x3f, 0xc5, 0x6f, 0xb4, 0x2e, 0x57, 0x2e, 0x20, + 0xcf, 0x2e, 0xdf, 0x10, 0x74, 0x7a, 0xae, 0x19, 0x7c, 0x90, 0x7b, 0x00, 0x96, 0xcd, 0xba, 0xa2, + 0x8e, 0xa3, 0xd1, 0xb9, 0xf2, 0x02, 0xb2, 0xf8, 0x82, 0xd7, 0x0f, 0x7c, 0x02, 0x5d, 0x21, 0x2e, + 0x6d, 0x02, 0x04, 0x3b, 0xe4, 0x36, 0x64, 0xfd, 0xbd, 0xa2, 0xa6, 0xc4, 0xd6, 0xa7, 0xd1, 0x03, + 0x02, 0xda, 0x82, 0x9c, 0x02, 0x89, 0x2c, 0x01, 0x74, 0xce, 0xdb, 0xf5, 0x96, 0x71, 0xc1, 0xba, + 0x0e, 0x02, 0x1f, 0xd1, 0xb3, 0x9d, 0xf3, 0xf6, 0x1e, 0x2e, 0xf0, 0x6d, 0xb3, 0x63, 0x9f, 0xbb, + 0x75, 0xc7, 0x7c, 0xce, 0x30, 0xa3, 0x47, 0xf4, 0x2c, 0xae, 0x1c, 0x99, 0xcf, 0x19, 0xb9, 0x02, + 0x39, 0xeb, 0xdc, 0xf5, 0xf7, 0x33, 0xb8, 0x0f, 0x62, 0x89, 0x13, 0xd0, 0xbf, 0x68, 0x90, 0xf5, + 0x61, 0x90, 0x35, 0x98, 0xf4, 0x81, 0x60, 0xe0, 0xc4, 0x31, 0x08, 0x2f, 0x92, 0x3d, 0xb8, 0x14, + 0x9c, 0x57, 0xe1, 0x51, 0xcf, 0x3f, 0x57, 0xc2, 0x76, 0xad, 0x47, 0xda, 0x92, 0xa3, 0x17, 0xec, + 0xc8, 0x4a, 0xe9, 0x21, 0x14, 0xa2, 0x54, 0x64, 0x1d, 0xc6, 0x3c, 0xb9, 0xc2, 0x5f, 0x33, 0xe1, + 0x5c, 0x90, 0xe1, 0xf2, 0x88, 0xe8, 0x77, 0xc3, 0x90, 0xc3, 0x7c, 0x4f, 0xe9, 0x7e, 0xf1, 0xd9, + 0xfe, 0x10, 0x2e, 0x59, 0xb6, 0x6b, 0xb6, 0xcd, 0xe7, 0x08, 0x58, 0xb4, 0x22, 0x51, 0xd7, 0x67, + 0xa5, 0x2d, 0xc1, 0x2e, 0x76, 0xa3, 0x82, 0x15, 0x59, 0x21, 0xb7, 0x22, 0x32, 0x9a, 0x96, 0xd1, + 0xc2, 0x23, 0xaf, 0x85, 0x89, 0x77, 0x2d, 0xa3, 0x45, 0xaa, 0x71, 0xce, 0x1b, 0x41, 0xe7, 0xad, + 0xca, 0x4c, 0xf0, 0xed, 0x18, 0xc0, 0x7d, 0xe4, 0x0e, 0x10, 0xe3, 0xf4, 0x94, 0x39, 0x4e, 0xdd, + 0x66, 0xdd, 0xb6, 0xe9, 0x38, 0x78, 0x5a, 0x47, 0xf1, 0xca, 0x70, 0x49, 0xec, 0x1c, 0x06, 0x1b, + 0xe9, 0x59, 0x43, 0x5e, 0x87, 0x99, 0x48, 0x51, 0xa9, 0xa3, 0x1f, 0xc7, 0xd1, 0x65, 0x24, 0x5c, + 0x59, 0xaa, 0xdc, 0xab, 0x45, 0x18, 0x93, 0x2d, 0xb2, 0x98, 0x45, 0x9d, 0xde, 0x27, 0xf7, 0xf7, + 0x13, 0xeb, 0xa4, 0xd2, 0x28, 0x82, 0xf0, 0x37, 0x7e, 0x90, 0x3b, 0x00, 0x1d, 0xc3, 0xf1, 0xf2, + 0x30, 0x87, 0x76, 0xe7, 0xc3, 0x49, 0xa5, 0x67, 0x3b, 0x7e, 0xe2, 0x2e, 0xc0, 0xf8, 0x13, 0xeb, + 0x44, 0x44, 0x65, 0x42, 0xd4, 0x96, 0x27, 0xd6, 0x09, 0xf7, 0xfa, 0x0f, 0x72, 0x6e, 0x2a, 0x40, + 0xb6, 0xba, 0xcc, 0x70, 0x19, 0x3a, 0x5d, 0x67, 0x3f, 0x3d, 0x67, 0x8e, 0xcb, 0xab, 0x85, 0xa8, + 0x75, 0x31, 0xd5, 0x42, 0x89, 0x8e, 0x9e, 0x73, 0x82, 0x0f, 0x7a, 0x07, 0x0a, 0x21, 0x51, 0x76, + 0xeb, 0x22, 0x54, 0x34, 0xb5, 0x50, 0xd1, 0xa4, 0x1b, 0x40, 0xb6, 0x59, 0x8b, 0x45, 0x34, 0xa7, + 0x30, 0xdc, 0x81, 0x42, 0x88, 0xa1, 0x8f, 0xfc, 0xdb, 0x30, 0xb5, 0xcb, 0xdc, 0x41, 0x85, 0x6f, + 0xc3, 0x64, 0x40, 0xcd, 0x25, 0xbf, 0x90, 0x0b, 0x66, 0x61, 0xda, 0x93, 0xb2, 0x67, 0x3a, 0xae, + 0xd4, 0x4b, 0x0f, 0xe1, 0x52, 0x78, 0x99, 0x2b, 0x78, 0x0f, 0xa6, 0x84, 0x02, 0x4b, 0x76, 0x68, + 0x2f, 0x62, 0x24, 0xd0, 0xe1, 0x35, 0x6f, 0x3d, 0xef, 0xa8, 0x9f, 0x0e, 0x7d, 0xdb, 0x0b, 0x1b, + 0x76, 0x5d, 0xcf, 0xbe, 0x15, 0x18, 0xc1, 0xbe, 0x23, 0xc1, 0x8a, 0xbe, 0x22, 0x28, 0xc4, 0x46, + 0x10, 0x23, 0xc9, 0x27, 0x7d, 0x98, 0xd0, 0xb2, 0x39, 0xf9, 0x2e, 0x73, 0x91, 0xd6, 0x19, 0xc0, + 0x89, 0x6f, 0x42, 0x5e, 0x21, 0xe7, 0xb2, 0x29, 0x8c, 0xa2, 0x2c, 0xcf, 0x36, 0x15, 0x92, 0xdc, + 0x91, 0x81, 0x0a, 0x19, 0x92, 0x02, 0xe9, 0x0d, 0x0c, 0x94, 0x02, 0xbf, 0xbf, 0xd1, 0xf7, 0x61, + 0x56, 0x67, 0x4d, 0xd3, 0x71, 0x59, 0x57, 0x34, 0x7a, 0x4f, 0xcd, 0x55, 0x18, 0x15, 0xed, 0x5d, + 0xf2, 0xe6, 0x90, 0x57, 0xd2, 0xc8, 0x2d, 0x5a, 0x86, 0xe9, 0x28, 0x37, 0x57, 0x9b, 0x76, 0x57, + 0xa0, 0x16, 0x10, 0x7e, 0xd9, 0x13, 0xf4, 0x03, 0x78, 0x8e, 0x37, 0x31, 0x5f, 0x9a, 0xb8, 0x96, + 0x66, 0xf5, 0xac, 0x27, 0xce, 0xe1, 0x4d, 0xcc, 0xe4, 0x25, 0xa3, 0x6d, 0xf3, 0xf3, 0x8f, 0xd5, + 0x79, 0x5c, 0x07, 0xd3, 0xd9, 0x92, 0x2b, 0x94, 0x40, 0x21, 0xa4, 0xd0, 0x6e, 0x5d, 0xd0, 0x33, + 0x3c, 0x75, 0x83, 0x63, 0x50, 0x9d, 0x3e, 0x14, 0xbe, 0xc5, 0x84, 0x8c, 0xcd, 0x44, 0x8c, 0x7d, + 0x17, 0xe3, 0xa7, 0xaa, 0x26, 0xaf, 0xc2, 0x98, 0xd8, 0xf6, 0xe2, 0x1e, 0xf2, 0xac, 0xb7, 0x47, + 0x3f, 0x83, 0xe2, 0x23, 0xbb, 0x61, 0xb8, 0xec, 0xd8, 0x7f, 0x33, 0x30, 0x0f, 0x68, 0xea, 0x5d, + 0x2c, 0xb8, 0x41, 0x0d, 0x25, 0xdd, 0xa0, 0x68, 0x11, 0xe6, 0x62, 0x84, 0x73, 0xc7, 0xfc, 0x56, + 0x83, 0xa2, 0x8f, 0xf8, 0xc3, 0xf3, 0x56, 0xab, 0xd2, 0x39, 0xb3, 0x7e, 0x3c, 0x07, 0x91, 0x6b, + 0x30, 0x65, 0x75, 0x5a, 0x17, 0x75, 0x7e, 0x71, 0x73, 0x5c, 0xfe, 0xda, 0xc2, 0xde, 0x38, 0xae, + 0x4f, 0xf2, 0xe5, 0x3d, 0x5c, 0xdd, 0xb3, 0x9a, 0xf4, 0x5b, 0x0d, 0xf2, 0x61, 0x50, 0xfc, 0x84, + 0x1e, 0x27, 0x9f, 0x50, 0x79, 0x6d, 0xed, 0xb9, 0x3d, 0x0f, 0x0d, 0x70, 0x7b, 0x8e, 0x3e, 0xff, + 0x32, 0xfd, 0x9f, 0x7f, 0xf4, 0x13, 0x98, 0x8b, 0xf1, 0x1b, 0x0f, 0xf8, 0x07, 0x70, 0x49, 0xda, + 0x7f, 0x76, 0xde, 0x6a, 0xd5, 0xcd, 0xce, 0x99, 0xe5, 0x85, 0x7e, 0x5a, 0x81, 0xec, 0x33, 0x4d, + 0x3d, 0x0b, 0x7d, 0x3b, 0xf4, 0x6f, 0x1a, 0xcc, 0xf2, 0x1a, 0xe9, 0x3f, 0xb4, 0x06, 0x39, 0xb1, + 0x6f, 0xc0, 0x8c, 0xe3, 0x33, 0xd4, 0x8d, 0x56, 0xd3, 0xea, 0x9a, 0xee, 0xe3, 0xb6, 0x0c, 0xce, + 0x74, 0xb0, 0xf7, 0xc0, 0xdb, 0x22, 0xaf, 0x42, 0xbe, 0x2b, 0x04, 0xd7, 0x3b, 0xe7, 0xed, 0x13, + 0xd6, 0xc5, 0x68, 0x8d, 0xe8, 0x93, 0x72, 0xb5, 0x8a, 0x8b, 0x64, 0x0d, 0xf2, 0x2d, 0xab, 0x59, + 0x57, 0x72, 0x72, 0x18, 0x73, 0x72, 0xa2, 0x65, 0x35, 0x8f, 0xfd, 0xb4, 0x5c, 0x80, 0x71, 0xf4, + 0x29, 0x87, 0x36, 0x22, 0xa0, 0xe1, 0x77, 0xa5, 0x41, 0xef, 0x89, 0x4e, 0xa0, 0x9a, 0x33, 0x68, + 0x3d, 0xfc, 0xa5, 0x06, 0x8b, 0x9c, 0xf7, 0xb1, 0x75, 0xde, 0x6a, 0x7c, 0xbf, 0x32, 0xf2, 0x2e, + 0x14, 0x19, 0x7f, 0x69, 0xd6, 0x1d, 0xf9, 0xd4, 0xec, 0x71, 0xca, 0x1c, 0x53, 0x5f, 0xa2, 0x81, + 0x5f, 0x52, 0x4c, 0x39, 0x84, 0x85, 0x78, 0x38, 0xa2, 0x4d, 0xce, 0x39, 0xb8, 0x83, 0x2a, 0x55, + 0x87, 0x69, 0xe8, 0xb0, 0x69, 0x27, 0xc2, 0x57, 0x69, 0x38, 0xb4, 0x8b, 0x95, 0x49, 0x9e, 0xb2, + 0x97, 0xaf, 0x8e, 0x57, 0x61, 0xd2, 0x3b, 0xca, 0xfc, 0xae, 0xe6, 0xc8, 0x71, 0x91, 0x77, 0xbe, + 0xf9, 0x2d, 0xcd, 0xa1, 0x07, 0x58, 0xa5, 0x7c, 0x9d, 0x1c, 0xfb, 0x7d, 0x28, 0x28, 0x29, 0xc0, + 0x33, 0x27, 0xdc, 0x82, 0x43, 0xc3, 0x14, 0x3d, 0xdf, 0x56, 0x3f, 0x1d, 0xea, 0x40, 0x51, 0x67, + 0xb6, 0xd5, 0x75, 0x03, 0xb2, 0x41, 0x6c, 0x89, 0x53, 0x9a, 0x19, 0x58, 0x69, 0x11, 0xe6, 0x62, + 0x94, 0xf2, 0xa2, 0xf6, 0x67, 0x0d, 0xb2, 0xfb, 0x56, 0x83, 0x89, 0xba, 0xb1, 0x04, 0x20, 0x00, + 0x28, 0x8f, 0x80, 0x2c, 0xae, 0xe0, 0x9d, 0x35, 0x54, 0xae, 0x86, 0x22, 0xe5, 0x6a, 0x1d, 0xc0, + 0xaf, 0x14, 0x4e, 0xc2, 0x4b, 0x5c, 0xa1, 0x20, 0xd7, 0x82, 0x0b, 0xf0, 0x30, 0x12, 0x4f, 0xa8, + 0x86, 0x04, 0xd7, 0xe1, 0x25, 0x80, 0x36, 0x07, 0x58, 0xb7, 0xf9, 0x83, 0x56, 0x1c, 0xb2, 0x2c, + 0xae, 0xf0, 0xd7, 0x2c, 0x7d, 0x0b, 0x72, 0xdb, 0x86, 0x6b, 0x1c, 0x31, 0x17, 0x2d, 0x88, 0x7b, + 0xc0, 0x10, 0x18, 0x46, 0x5e, 0x81, 0x18, 0x7f, 0x53, 0x13, 0x0a, 0x47, 0xc6, 0xd3, 0xf0, 0x25, + 0xb2, 0x8f, 0xf5, 0xf1, 0xef, 0xa0, 0xc8, 0x94, 0x23, 0xd3, 0x3b, 0xe5, 0x28, 0x40, 0x5e, 0x51, + 0xc5, 0x9d, 0xfe, 0x0b, 0x4d, 0x68, 0x47, 0xc7, 0x7b, 0xda, 0xd7, 0x60, 0x04, 0xad, 0x92, 0x25, + 0x5b, 0xb8, 0xce, 0x0f, 0x8d, 0x2e, 0x36, 0xc9, 0x2d, 0x18, 0x6f, 0x18, 0xae, 0x21, 0xeb, 0x75, + 0x70, 0xb7, 0x54, 0x7c, 0xa0, 0x8f, 0x35, 0xc4, 0x07, 0x59, 0x85, 0x09, 0x97, 0x75, 0x1c, 0xab, + 0x5b, 0x3f, 0xb1, 0x8c, 0x6e, 0x43, 0x5e, 0x00, 0x72, 0x62, 0xed, 0x21, 0x5f, 0xf2, 0xc0, 0x49, + 0x24, 0x1c, 0x5c, 0x11, 0xab, 0x35, 0x5f, 0x6c, 0x70, 0xc8, 0x26, 0xf3, 0x8e, 0x27, 0xdd, 0x86, + 0x99, 0x9e, 0x1d, 0x9e, 0x10, 0xb7, 0x01, 0x8f, 0xa9, 0xc9, 0xd2, 0xae, 0xa2, 0x1e, 0x09, 0x7d, + 0x5b, 0x54, 0x6c, 0x2e, 0x05, 0xb5, 0x3a, 0x83, 0xb9, 0x9f, 0xbe, 0x2f, 0x4a, 0xa3, 0xca, 0xc7, + 0x95, 0x5f, 0x83, 0x51, 0xf4, 0x8c, 0x13, 0x1a, 0x10, 0x04, 0x7e, 0x93, 0xbb, 0x54, 0x0f, 0xc0, + 0x87, 0xdc, 0xfe, 0x12, 0x47, 0x9e, 0x6e, 0x02, 0x89, 0xc8, 0xe4, 0x88, 0x06, 0x0a, 0x24, 0xfd, + 0xa7, 0x06, 0xcb, 0x47, 0x6a, 0xa9, 0xf7, 0xb3, 0xe4, 0x47, 0x6a, 0x61, 0x6a, 0xa9, 0xce, 0x84, + 0x4a, 0x35, 0xd9, 0x87, 0x59, 0x45, 0x9a, 0x92, 0xc5, 0x22, 0x31, 0x8b, 0x22, 0x9c, 0xbd, 0x48, + 0x75, 0x05, 0x44, 0x00, 0x9f, 0xde, 0x83, 0xcb, 0x89, 0x96, 0xc9, 0x97, 0x83, 0x8f, 0x44, 0x0b, + 0x37, 0x8d, 0xf7, 0x60, 0x79, 0xb7, 0xaf, 0x53, 0x92, 0x98, 0xdb, 0x70, 0x79, 0x37, 0x4d, 0x6f, + 0xa2, 0x99, 0xda, 0x0b, 0x99, 0xf9, 0x7f, 0xb0, 0x1a, 0xaf, 0x4e, 0x79, 0xc3, 0xa5, 0x3d, 0x7b, + 0xbe, 0xd3, 0x60, 0x2e, 0x86, 0x9b, 0x27, 0x6e, 0xb2, 0x91, 0x2f, 0x12, 0xf9, 0x44, 0xbb, 0x33, + 0x2f, 0x64, 0xf7, 0x73, 0xb8, 0x92, 0x66, 0x37, 0xf7, 0xf4, 0x31, 0x2c, 0xc4, 0x69, 0x54, 0x7b, + 0xe5, 0x62, 0x92, 0x56, 0xde, 0xbf, 0xe6, 0x9d, 0xd8, 0x75, 0x87, 0x96, 0x61, 0x96, 0xdf, 0x09, + 0x02, 0xb6, 0x01, 0xfc, 0x3c, 0x0b, 0xd3, 0x51, 0x1e, 0x5e, 0xe7, 0xfe, 0xa3, 0xc1, 0xea, 0x11, + 0x73, 0xe3, 0x47, 0xec, 0xff, 0xbb, 0x5b, 0x53, 0x24, 0x15, 0x8f, 0x61, 0x21, 0x22, 0xb4, 0x27, + 0x1d, 0x85, 0xe7, 0xe2, 0x71, 0xeb, 0xf3, 0x2c, 0xde, 0x1e, 0x7a, 0x1f, 0xae, 0xa4, 0x59, 0xdb, + 0x27, 0x2f, 0xc5, 0x59, 0xef, 0xef, 0xab, 0x24, 0x7e, 0x71, 0x66, 0x52, 0xb5, 0xa7, 0x5a, 0xae, + 0xbd, 0x84, 0xe5, 0x0f, 0x60, 0x2d, 0x51, 0xf7, 0x80, 0xa9, 0xfa, 0x57, 0x0d, 0x16, 0xe2, 0x05, + 0xf4, 0xc9, 0xd6, 0x17, 0x3f, 0x23, 0xa9, 0xee, 0xc8, 0xbc, 0x84, 0x3b, 0x7e, 0xae, 0x01, 0xed, + 0xe3, 0x0f, 0x1e, 0x0e, 0x03, 0x96, 0x92, 0xf4, 0xab, 0x69, 0xbc, 0x9c, 0x82, 0x81, 0x67, 0x72, + 0x89, 0x25, 0x6d, 0x39, 0x37, 0x1f, 0xc1, 0x64, 0xe8, 0xef, 0x95, 0xa4, 0x00, 0x13, 0x8f, 0xaa, + 0x1f, 0x55, 0x0f, 0x8e, 0xab, 0xf5, 0xda, 0x27, 0x87, 0x3b, 0x85, 0x57, 0x08, 0xc0, 0xe8, 0xf6, + 0xc1, 0xa3, 0x87, 0x7b, 0x3b, 0x05, 0x8d, 0x8c, 0x41, 0xa6, 0x52, 0xad, 0x15, 0x86, 0xc8, 0x04, + 0x8c, 0x6f, 0x57, 0x8e, 0xb6, 0xf4, 0x9d, 0xda, 0x4e, 0x21, 0x43, 0xa6, 0x20, 0xb7, 0xf5, 0xa0, + 0xb6, 0xb3, 0x7b, 0xa0, 0x57, 0xb6, 0x1e, 0xec, 0x15, 0x86, 0x6f, 0xfe, 0x3f, 0x14, 0xa2, 0xb3, + 0x67, 0x52, 0x84, 0x19, 0x4f, 0xf2, 0xc1, 0x61, 0xad, 0xb2, 0x5f, 0xf9, 0xf4, 0x41, 0xad, 0x72, + 0x50, 0x2d, 0xbc, 0xc2, 0x85, 0xed, 0x57, 0xaa, 0x7c, 0x85, 0xeb, 0xe0, 0x5f, 0x0f, 0x3e, 0x16, + 0x5f, 0x43, 0x37, 0x77, 0x61, 0x04, 0xdf, 0xff, 0x24, 0x07, 0x63, 0x87, 0x3b, 0xd5, 0xed, 0x4a, + 0x75, 0xb7, 0xf0, 0x0a, 0xff, 0xd0, 0x1f, 0x55, 0xab, 0xfc, 0x43, 0x23, 0x93, 0x90, 0xdd, 0x3a, + 0xd8, 0x3f, 0xdc, 0xdb, 0xa9, 0xed, 0x6c, 0x17, 0x86, 0x38, 0xde, 0x8f, 0x2a, 0x7b, 0x7b, 0x3b, + 0xdb, 0x85, 0x0c, 0xc9, 0xc2, 0xc8, 0x8e, 0xae, 0x1f, 0xe8, 0x85, 0x2f, 0xcb, 0xff, 0x9e, 0x87, + 0xb1, 0x7d, 0xa3, 0x63, 0x34, 0x59, 0x97, 0xb4, 0x21, 0xa7, 0xcc, 0x3b, 0xc9, 0x3c, 0x3a, 0xb0, + 0x77, 0x98, 0x5a, 0x9a, 0xed, 0xdd, 0xe0, 0x65, 0x6b, 0xfd, 0x67, 0x7f, 0xff, 0xd7, 0x6f, 0x86, + 0x6e, 0xd0, 0x22, 0xfe, 0xc1, 0x5c, 0x0a, 0xdd, 0x50, 0xc8, 0x36, 0x43, 0x03, 0x48, 0xf2, 0x39, + 0x8c, 0x7b, 0x43, 0x44, 0x22, 0x86, 0xba, 0x91, 0xf1, 0x66, 0x89, 0x44, 0x56, 0xb9, 0x96, 0x1b, + 0xa8, 0x85, 0x92, 0x95, 0x90, 0x16, 0x8f, 0x66, 0xe3, 0x2b, 0x2f, 0x51, 0xbe, 0x26, 0x4f, 0x20, + 0xa7, 0x8c, 0x57, 0xa5, 0x39, 0xbd, 0x13, 0x5a, 0x69, 0x4e, 0x74, 0x12, 0x4b, 0x6f, 0xa1, 0xa2, + 0x57, 0xc9, 0xd5, 0x90, 0x22, 0x85, 0x4c, 0xd5, 0x75, 0x0a, 0x13, 0xea, 0x40, 0x94, 0x14, 0x43, + 0xc8, 0x95, 0x5c, 0x2e, 0xcd, 0xc5, 0xec, 0x70, 0x75, 0xab, 0xa8, 0x6e, 0x91, 0x2c, 0xc4, 0xda, + 0x85, 0x42, 0xcf, 0xbc, 0xf8, 0x88, 0xbf, 0x4c, 0xaa, 0xf1, 0x51, 0x87, 0x8d, 0xa1, 0xf8, 0x04, + 0x73, 0x45, 0x7a, 0x1d, 0x35, 0xac, 0xc6, 0xc6, 0x07, 0xc9, 0x36, 0xc5, 0x78, 0x91, 0x9c, 0x40, + 0xd6, 0x9f, 0x7a, 0x92, 0x59, 0x0f, 0x6f, 0x68, 0x68, 0x5a, 0x9a, 0x8e, 0x2e, 0x73, 0x0d, 0xaf, + 0xa1, 0x86, 0xab, 0x64, 0x35, 0x6a, 0x83, 0x20, 0x52, 0x1d, 0x26, 0x82, 0x2f, 0x0c, 0x99, 0x09, + 0xc9, 0xea, 0x09, 0xbe, 0x62, 0x42, 0x62, 0xf0, 0x91, 0x66, 0xe3, 0x2b, 0x6f, 0x9a, 0xf5, 0x35, + 0x71, 0x20, 0x1f, 0x1e, 0x72, 0x92, 0x12, 0xca, 0x8b, 0x9d, 0x9b, 0x96, 0x8a, 0xb1, 0x7b, 0xca, + 0x29, 0xa0, 0x8b, 0x21, 0x8d, 0x61, 0xca, 0x4d, 0x39, 0x59, 0x25, 0x9f, 0x01, 0x04, 0x83, 0x43, + 0xe2, 0x47, 0x3a, 0x3c, 0xee, 0x28, 0xcd, 0xf4, 0xac, 0x73, 0x45, 0x57, 0x50, 0xd1, 0x02, 0x99, + 0x8f, 0x9a, 0xe6, 0x89, 0x7b, 0x0e, 0x97, 0x7a, 0xc6, 0x7f, 0x64, 0x09, 0x65, 0x25, 0xcd, 0x1c, + 0x4b, 0x8b, 0x49, 0xdb, 0x4a, 0xb4, 0x4a, 0xcb, 0x21, 0x8d, 0x3d, 0xc4, 0x9b, 0xda, 0x4d, 0xf2, + 0x4c, 0x99, 0xbc, 0xfa, 0xa3, 0xbc, 0xa5, 0xb0, 0x1d, 0x91, 0xb9, 0xa3, 0xd4, 0x1d, 0x3f, 0x5e, + 0xa3, 0xd7, 0x50, 0xf7, 0x0a, 0x59, 0x8e, 0xb7, 0xd6, 0xd7, 0xd1, 0xc1, 0x01, 0xbc, 0x32, 0x75, + 0x92, 0x61, 0x8c, 0x9d, 0xac, 0x95, 0x8a, 0xb1, 0x7b, 0x8a, 0xbe, 0x48, 0x18, 0xc3, 0x94, 0xdc, + 0xd0, 0x6f, 0x34, 0xf1, 0x18, 0x8b, 0xce, 0x86, 0xc8, 0x8a, 0x2f, 0x3a, 0x61, 0x8a, 0x55, 0x5a, + 0x4e, 0xa1, 0xe0, 0x10, 0xde, 0x46, 0x08, 0xaf, 0xd3, 0x5b, 0x09, 0xc9, 0x11, 0xc7, 0xc9, 0x21, + 0x7d, 0x8e, 0x87, 0xca, 0xfb, 0xa7, 0x13, 0xff, 0x50, 0x85, 0x87, 0x4d, 0xc1, 0xa1, 0x52, 0x07, + 0x42, 0x94, 0xa2, 0xce, 0xcb, 0xb4, 0xe7, 0x50, 0x49, 0x2a, 0x2e, 0xff, 0xd7, 0x1a, 0xcc, 0x27, + 0x3c, 0x8a, 0xc8, 0x55, 0x71, 0x15, 0x4e, 0x7d, 0xf7, 0x94, 0x56, 0xd3, 0x89, 0x38, 0x8e, 0x0d, + 0xc4, 0xf1, 0x1a, 0x5d, 0x0b, 0xe1, 0x48, 0x60, 0xe1, 0xa0, 0x7e, 0xa7, 0xc1, 0xfc, 0x6e, 0x2a, + 0xa8, 0xdd, 0x41, 0x40, 0xa5, 0x3d, 0xba, 0xe8, 0x3b, 0x08, 0xea, 0x0d, 0xb2, 0x91, 0x7c, 0x26, + 0x02, 0x96, 0x8d, 0xaf, 0xbc, 0x8b, 0xd4, 0xd7, 0xe4, 0xf7, 0x1a, 0x94, 0x92, 0xdf, 0x19, 0xe4, + 0x5a, 0x8a, 0x6a, 0xb5, 0x13, 0xac, 0xf5, 0xa5, 0xe3, 0x28, 0x37, 0x11, 0xe5, 0x9b, 0xa4, 0x3c, + 0x00, 0x4a, 0xce, 0xa5, 0x16, 0xd9, 0x6f, 0x35, 0x28, 0x25, 0x5f, 0xad, 0x25, 0xd0, 0xbe, 0x2f, + 0x0d, 0x09, 0xb4, 0xcf, 0x1d, 0x9d, 0x96, 0x11, 0xe8, 0x6d, 0x7a, 0x3d, 0x1a, 0xe3, 0x04, 0x2e, + 0x1e, 0x66, 0xe9, 0xc9, 0x74, 0x80, 0xbb, 0x03, 0x02, 0xec, 0x73, 0x8d, 0x4f, 0xf6, 0x64, 0x02, + 0x97, 0x1a, 0xf2, 0x3f, 0x68, 0xb0, 0x94, 0x7a, 0x35, 0x25, 0xaf, 0xa5, 0x63, 0x50, 0x03, 0x7f, + 0x7d, 0x10, 0x52, 0x8e, 0xf8, 0x7d, 0x44, 0xfc, 0x0e, 0x79, 0x6b, 0x30, 0xc4, 0xd1, 0xf0, 0x7f, + 0x0a, 0x59, 0x7f, 0xbc, 0x27, 0xfb, 0x78, 0x74, 0xb2, 0x28, 0xfb, 0x78, 0x64, 0x0a, 0x28, 0xef, + 0x22, 0x74, 0x2e, 0x1c, 0x4a, 0x8f, 0x88, 0x47, 0x4e, 0xca, 0xc6, 0xe1, 0x91, 0x22, 0x5b, 0x1d, + 0x60, 0x29, 0xb2, 0x95, 0x21, 0x5e, 0xb2, 0x6c, 0x24, 0xe2, 0xb2, 0x9f, 0xc3, 0xa5, 0x9e, 0x99, + 0xb0, 0xec, 0x36, 0x49, 0x03, 0x6a, 0xd9, 0x6d, 0x12, 0x46, 0xc9, 0xb2, 0xd3, 0xd1, 0xe5, 0x48, + 0x13, 0x8f, 0x10, 0x73, 0xdd, 0x96, 0xf8, 0x23, 0xbb, 0x32, 0x49, 0x24, 0x7e, 0x23, 0x8b, 0x99, + 0x3c, 0x96, 0x16, 0xe2, 0x37, 0xb9, 0xd6, 0x35, 0xd4, 0xba, 0x4c, 0x2e, 0xf7, 0x64, 0xae, 0x2a, + 0xfd, 0x0b, 0xd1, 0xe1, 0x82, 0xe1, 0xa1, 0xd2, 0xe1, 0x7a, 0x26, 0x91, 0x4a, 0x87, 0x8b, 0x4c, + 0x1b, 0xe9, 0x55, 0xd4, 0xb6, 0x44, 0x16, 0x63, 0xb5, 0x09, 0xca, 0x72, 0x0d, 0x20, 0x28, 0x1b, + 0xe4, 0xc3, 0x1f, 0xa6, 0xb9, 0x96, 0x4d, 0x98, 0x0c, 0x1d, 0x48, 0xf2, 0xf1, 0x8f, 0xd5, 0x44, + 0x4f, 0x46, 0xf1, 0x7f, 0x6f, 0xef, 0xfe, 0x37, 0x00, 0x00, 0xff, 0xff, 0x10, 0x0e, 0xe0, 0x6c, + 0xab, 0x2b, 0x00, 0x00, } diff --git a/pkg/api/api.proto b/pkg/api/api.proto index e42a1376185..7511123567c 100644 --- a/pkg/api/api.proto +++ b/pkg/api/api.proto @@ -253,6 +253,7 @@ message FeasibleSpace { string max = 1; /// Max Value string min = 2; /// Minimum Value repeated string list = 3; /// List of Values. + string step = 4; /// Step for double or int parameter } /** @@ -381,6 +382,41 @@ message Worker { repeated Tag tags = 7; /// Tags of Worker. } +/** + * NasConfig contains a config of NAS job + */ + message NasConfig { + GraphConfig graph_config = 1; /// Config of DAG + message Operations { + repeated Operation operation = 1; + } + Operations operations = 2; /// List of Operation +} + + +/** + * GraphConfig contains a config of DAG + */ + message GraphConfig { + int32 num_layers = 1; /// Number of layers + repeated int32 input_size = 2; /// Dimenstions of input size + repeated int32 output_size = 3; /// Dimensions of output size +} + +/** + * Config for operations in DAG + */ + message Operation { + string operationType = 1; /// Type of operation in DAG + /** + * List of ParameterConfig + */ + message ParameterConfigs { + repeated ParameterConfig configs = 1; + } + ParameterConfigs parameter_configs = 2; /// List of ParameterConfig +} + /** * Config of a Study. Study represents a single optimization run over a feasible space. * Each Study contains a configuration describing the feasible space, as well as a set of Trials. @@ -403,6 +439,8 @@ message StudyConfig { string objective_value_name = 8; /// Name of objective value. repeated string metrics = 9; /// List of metrics name. string jobId = 10; /// ID of studyjob that is created from this config. + NasConfig nas_config = 11; /// Config for NAS job + string job_type = 12; /// Type of the job, NAS or HP } /** diff --git a/pkg/api/api.swagger.json b/pkg/api/api.swagger.json index 2630a27dbf6..8efbdb3333b 100644 --- a/pkg/api/api.swagger.json +++ b/pkg/api/api.swagger.json @@ -673,17 +673,16 @@ } }, "definitions": { - "StudyConfigParameterConfigs": { + "NasConfigOperations": { "type": "object", "properties": { - "configs": { + "operation": { "type": "array", "items": { - "$ref": "#/definitions/apiParameterConfig" + "$ref": "#/definitions/apiOperation" } } - }, - "title": "* \nList of ParameterConfig" + } }, "apiCreateStudyReply": { "type": "object", @@ -766,6 +765,9 @@ "items": { "type": "string" } + }, + "step": { + "type": "string" } }, "description": "*\nFeasible space for optimization.\nInt and Double type use Max/Min.\nDiscrete and Categorical type use List." @@ -992,6 +994,30 @@ }, "description": "*\nReturn a Worker list by specified condition." }, + "apiGraphConfig": { + "type": "object", + "properties": { + "num_layers": { + "type": "integer", + "format": "int32" + }, + "input_size": { + "type": "array", + "items": { + "type": "integer", + "format": "int32" + } + }, + "output_size": { + "type": "array", + "items": { + "type": "integer", + "format": "int32" + } + } + }, + "title": "*\nGraphConfig contains a config of DAG" + }, "apiMetrics": { "type": "object", "properties": { @@ -1075,6 +1101,42 @@ } } }, + "apiNasConfig": { + "type": "object", + "properties": { + "graph_config": { + "$ref": "#/definitions/apiGraphConfig" + }, + "operations": { + "$ref": "#/definitions/NasConfigOperations" + } + }, + "title": "*\nNasConfig contains a config of NAS job" + }, + "apiOperation": { + "type": "object", + "properties": { + "operationType": { + "type": "string" + }, + "parameter_configs": { + "$ref": "#/definitions/apiOperationParameterConfigs" + } + }, + "title": "*\nConfig for operations in DAG" + }, + "apiOperationParameterConfigs": { + "type": "object", + "properties": { + "configs": { + "type": "array", + "items": { + "$ref": "#/definitions/apiParameterConfig" + } + } + }, + "title": "* \nList of ParameterConfig" + }, "apiOptimizationType": { "type": "string", "enum": [ @@ -1273,7 +1335,7 @@ "format": "double" }, "parameter_configs": { - "$ref": "#/definitions/StudyConfigParameterConfigs" + "$ref": "#/definitions/apiStudyConfigParameterConfigs" }, "access_permissions": { "type": "array", @@ -1298,10 +1360,28 @@ }, "jobId": { "type": "string" + }, + "nas_config": { + "$ref": "#/definitions/apiNasConfig" + }, + "job_type": { + "type": "string" } }, "description": "*\nConfig of a Study. Study represents a single optimization run over a feasible space. \nEach Study contains a configuration describing the feasible space, as well as a set of Trials.\nIt is assumed that objective function f(x) does not change in the course of a Study." }, + "apiStudyConfigParameterConfigs": { + "type": "object", + "properties": { + "configs": { + "type": "array", + "items": { + "$ref": "#/definitions/apiParameterConfig" + } + } + }, + "title": "* \nList of ParameterConfig" + }, "apiStudyOverview": { "type": "object", "properties": { diff --git a/pkg/api/gen-doc/api.md b/pkg/api/gen-doc/api.md index c0aa3b664d8..c17a0cf2147 100644 --- a/pkg/api/gen-doc/api.md +++ b/pkg/api/gen-doc/api.md @@ -46,11 +46,16 @@ - [GetWorkerFullInfoRequest](#api.GetWorkerFullInfoRequest) - [GetWorkersReply](#api.GetWorkersReply) - [GetWorkersRequest](#api.GetWorkersRequest) + - [GraphConfig](#api.GraphConfig) - [Metrics](#api.Metrics) - [MetricsLog](#api.MetricsLog) - [MetricsLogSet](#api.MetricsLogSet) - [MetricsValueTime](#api.MetricsValueTime) - [ModelInfo](#api.ModelInfo) + - [NasConfig](#api.NasConfig) + - [NasConfig.Operations](#api.NasConfig.Operations) + - [Operation](#api.Operation) + - [Operation.ParameterConfigs](#api.Operation.ParameterConfigs) - [Parameter](#api.Parameter) - [ParameterConfig](#api.ParameterConfig) - [RegisterWorkerReply](#api.RegisterWorkerReply) @@ -256,6 +261,7 @@ Discrete and Categorical type use List. | max | [string](#string) | | Max Value | | min | [string](#string) | | Minimum Value | | list | [string](#string) | repeated | List of Values. | +| step | [string](#string) | | Step for double or int parameter | @@ -747,6 +753,23 @@ Get a configs and status of a Worker from DB by ID of Study, Trial or Worker. + + +### GraphConfig +GraphConfig contains a config of DAG + + +| Field | Type | Label | Description | +| ----- | ---- | ----- | ----------- | +| num_layers | [int32](#int32) | | Number of layers | +| input_size | [int32](#int32) | repeated | Dimenstions of input size | +| output_size | [int32](#int32) | repeated | Dimensions of output size | + + + + + + ### Metrics @@ -831,6 +854,68 @@ Metrics of a worker with timestamp + + +### NasConfig +NasConfig contains a config of NAS job + + +| Field | Type | Label | Description | +| ----- | ---- | ----- | ----------- | +| graph_config | [GraphConfig](#api.GraphConfig) | | Config of DAG | +| operations | [NasConfig.Operations](#api.NasConfig.Operations) | | List of Operation | + + + + + + + + +### NasConfig.Operations + + + +| Field | Type | Label | Description | +| ----- | ---- | ----- | ----------- | +| operation | [Operation](#api.Operation) | repeated | | + + + + + + + + +### Operation +Config for operations in DAG + + +| Field | Type | Label | Description | +| ----- | ---- | ----- | ----------- | +| operationType | [string](#string) | | Type of operation in DAG | +| parameter_configs | [Operation.ParameterConfigs](#api.Operation.ParameterConfigs) | | List of ParameterConfig | + + + + + + + + +### Operation.ParameterConfigs +List of ParameterConfig + + +| Field | Type | Label | Description | +| ----- | ---- | ----- | ----------- | +| configs | [ParameterConfig](#api.ParameterConfig) | repeated | | + + + + + + ### Parameter @@ -1116,6 +1201,8 @@ It is assumed that objective function f(x) does not change in the course of a St | objective_value_name | [string](#string) | | Name of objective value. | | metrics | [string](#string) | repeated | List of metrics name. | | jobId | [string](#string) | | ID of studyjob that is created from this config. | +| nas_config | [NasConfig](#api.NasConfig) | | Config for NAS job | +| job_type | [string](#string) | | Type of the job, NAS or HP | diff --git a/pkg/api/gen-doc/index.html b/pkg/api/gen-doc/index.html index f36dc065195..82404e6b26d 100644 --- a/pkg/api/gen-doc/index.html +++ b/pkg/api/gen-doc/index.html @@ -346,6 +346,10 @@

Table of Contents

MGetWorkersRequest +
  • + MGraphConfig +
  • +
  • MMetrics
  • @@ -366,6 +370,22 @@

    Table of Contents

    MModelInfo +
  • + MNasConfig +
  • + +
  • + MNasConfig.Operations +
  • + +
  • + MOperation +
  • + +
  • + MOperation.ParameterConfigs +
  • +
  • MParameter
  • @@ -790,6 +810,13 @@

    FeasibleSpace

    List of Values.

    + + step + string + +

    Step for double or int parameter

    + + @@ -1598,6 +1625,43 @@

    GetWorkersRequest

    +

    GraphConfig

    +

    GraphConfig contains a config of DAG

    + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    FieldTypeLabelDescription
    num_layersint32

    Number of layers

    input_sizeint32repeated

    Dimenstions of input size

    output_sizeint32repeated

    Dimensions of output size

    + + + +

    Metrics

    Metrics of a worker

    @@ -1776,6 +1840,112 @@

    ModelInfo

    +

    NasConfig

    +

    NasConfig contains a config of NAS job

    + + + + + + + + + + + + + + + + + + + + + + + +
    FieldTypeLabelDescription
    graph_configGraphConfig

    Config of DAG

    operationsNasConfig.Operations

    List of Operation

    + + + + +

    NasConfig.Operations

    +

    + + + + + + + + + + + + + + + + +
    FieldTypeLabelDescription
    operationOperationrepeated

    + + + + +

    Operation

    +

    Config for operations in DAG

    + + + + + + + + + + + + + + + + + + + + + + + +
    FieldTypeLabelDescription
    operationTypestring

    Type of operation in DAG

    parameter_configsOperation.ParameterConfigs

    List of ParameterConfig

    + + + + +

    Operation.ParameterConfigs

    +

    List of ParameterConfig

    + + + + + + + + + + + + + + + + +
    FieldTypeLabelDescription
    configsParameterConfigrepeated

    + + + +

    Parameter

    Value of a Hyper parameter.

    This will be created from a correcponding Config.

    @@ -2309,6 +2479,20 @@

    StudyConfig

    ID of studyjob that is created from this config.

    + + nas_config + NasConfig + +

    Config for NAS job

    + + + + job_type + string + +

    Type of the job, NAS or HP

    + + diff --git a/pkg/api/operators/apis/studyjob/v1alpha1/studyjob_types.go b/pkg/api/operators/apis/studyjob/v1alpha1/studyjob_types.go index 1a4c18dcfd3..1a606baa2a7 100644 --- a/pkg/api/operators/apis/studyjob/v1alpha1/studyjob_types.go +++ b/pkg/api/operators/apis/studyjob/v1alpha1/studyjob_types.go @@ -38,6 +38,7 @@ type StudyJobSpec struct { SuggestionSpec *SuggestionSpec `json:"suggestionSpec,omitempty"` EarlyStoppingSpec *EarlyStoppingSpec `json:"earlyStoppingSpec,omitempty"` MetricsCollectorSpec *MetricsCollectorSpec `json:"metricsCollectorSpec,omitempty"` + NasConfig *NasConfig `json:"nasConfig,omitempty"` } // StudyJobStatus defines the observed state of StudyJob @@ -92,6 +93,7 @@ type FeasibleSpace struct { Max string `json:"max,omitempty"` Min string `json:"min,omitempty"` List []string `json:"list,omitempty"` + Step string `json:"step,omitempty"` } type ParameterType string @@ -182,6 +184,25 @@ type StudyJobList struct { Items []StudyJob `json:"items"` } +// NasConfig contains config for NAS job +type NasConfig struct { + GraphConfig GraphConfig `json:"graphConfig,omitempty"` + Operations []Operation `json:"operations,omitempty"` +} + +// GraphConfig contains a config of DAG +type GraphConfig struct { + NumLayers int32 `json:"numLayers,omitempty"` + InputSize []int32 `json:"inputSize,omitempty"` + OutputSize []int32 `json:"outputSize,omitempty"` +} + +// Operation contains type of operation in DAG +type Operation struct { + OperationType string `json:"operationType,omitempty"` + ParameterConfigs []ParameterConfig `json:"parameterconfigs,omitempty"` +} + func init() { SchemeBuilder.Register(&StudyJob{}, &StudyJobList{}) } diff --git a/pkg/api/python/api_pb2.py b/pkg/api/python/api_pb2.py index 3ec65a9995d..c381417cf3a 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\x12\x44\x65leteStudyRequest\x12\x10\n\x08study_id\x18\x01 \x01(\t\"$\n\x10\x44\x65leteStudyReply\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\xeb\x17\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}\x12j\n\x0b\x44\x65leteStudy\x12\x17.api.DeleteStudyRequest\x1a\x15.api.DeleteStudyReply\"+\x82\xd3\xe4\x93\x02%\x12#/api/Manager/DeleteStudy/{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') + serialized_pb=_b('\n\tapi.proto\x12\x03\x61pi\x1a\x1cgoogle/api/annotations.proto\"E\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\x12\x0c\n\x04step\x18\x04 \x01(\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\"\x93\x01\n\tNasConfig\x12&\n\x0cgraph_config\x18\x01 \x01(\x0b\x32\x10.api.GraphConfig\x12-\n\noperations\x18\x02 \x01(\x0b\x32\x19.api.NasConfig.Operations\x1a/\n\nOperations\x12!\n\toperation\x18\x01 \x03(\x0b\x32\x0e.api.Operation\"J\n\x0bGraphConfig\x12\x12\n\nnum_layers\x18\x01 \x01(\x05\x12\x12\n\ninput_size\x18\x02 \x03(\x05\x12\x13\n\x0boutput_size\x18\x03 \x03(\x05\"\x99\x01\n\tOperation\x12\x15\n\roperationType\x18\x01 \x01(\t\x12:\n\x11parameter_configs\x18\x02 \x01(\x0b\x32\x1f.api.Operation.ParameterConfigs\x1a\x39\n\x10ParameterConfigs\x12%\n\x07\x63onfigs\x18\x01 \x03(\x0b\x32\x14.api.ParameterConfig\"\x98\x03\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\x12\"\n\nnas_config\x18\x0b \x01(\x0b\x32\x0e.api.NasConfig\x12\x10\n\x08job_type\x18\x0c \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\x12\x44\x65leteStudyRequest\x12\x10\n\x08study_id\x18\x01 \x01(\t\"$\n\x10\x44\x65leteStudyReply\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\xeb\x17\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}\x12j\n\x0b\x44\x65leteStudy\x12\x17.api.DeleteStudyRequest\x1a\x15.api.DeleteStudyReply\"+\x82\xd3\xe4\x93\x02%\x12#/api/Manager/DeleteStudy/{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=5500, - serialized_end=5585, + serialized_start=5950, + serialized_end=6035, ) _sym_db.RegisterEnumDescriptor(_PARAMETERTYPE) @@ -81,8 +81,8 @@ ], containing_type=None, options=None, - serialized_start=5587, - serialized_end=5659, + serialized_start=6037, + serialized_end=6109, ) _sym_db.RegisterEnumDescriptor(_OPTIMIZATIONTYPE) @@ -116,8 +116,8 @@ ], containing_type=None, options=None, - serialized_start=5661, - serialized_end=5732, + serialized_start=6111, + serialized_end=6182, ) _sym_db.RegisterEnumDescriptor(_STATE) @@ -166,6 +166,13 @@ message_type=None, enum_type=None, containing_type=None, is_extension=False, extension_scope=None, options=None), + _descriptor.FieldDescriptor( + name='step', full_name='api.FeasibleSpace.step', index=3, + number=4, 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=[ ], @@ -179,7 +186,7 @@ oneofs=[ ], serialized_start=48, - serialized_end=103, + serialized_end=117, ) @@ -223,8 +230,8 @@ extension_ranges=[], oneofs=[ ], - serialized_start=105, - serialized_end=218, + serialized_start=119, + serialized_end=232, ) @@ -268,8 +275,8 @@ extension_ranges=[], oneofs=[ ], - serialized_start=220, - serialized_end=304, + serialized_start=234, + serialized_end=318, ) @@ -313,8 +320,8 @@ extension_ranges=[], oneofs=[ ], - serialized_start=306, - serialized_end=414, + serialized_start=320, + serialized_end=428, ) @@ -351,8 +358,8 @@ extension_ranges=[], oneofs=[ ], - serialized_start=416, - serialized_end=454, + serialized_start=430, + serialized_end=468, ) @@ -389,8 +396,8 @@ extension_ranges=[], oneofs=[ ], - serialized_start=456, - serialized_end=503, + serialized_start=470, + serialized_end=517, ) @@ -427,8 +434,8 @@ extension_ranges=[], oneofs=[ ], - serialized_start=505, - serialized_end=570, + serialized_start=519, + serialized_end=584, ) @@ -465,8 +472,8 @@ extension_ranges=[], oneofs=[ ], - serialized_start=572, - serialized_end=622, + serialized_start=586, + serialized_end=636, ) @@ -503,8 +510,8 @@ extension_ranges=[], oneofs=[ ], - serialized_start=624, - serialized_end=677, + serialized_start=638, + serialized_end=691, ) @@ -541,8 +548,8 @@ extension_ranges=[], oneofs=[ ], - serialized_start=679, - serialized_end=713, + serialized_start=693, + serialized_end=727, ) @@ -593,8 +600,8 @@ extension_ranges=[], oneofs=[ ], - serialized_start=715, - serialized_end=792, + serialized_start=729, + serialized_end=806, ) @@ -652,8 +659,8 @@ extension_ranges=[], oneofs=[ ], - serialized_start=795, - serialized_end=926, + serialized_start=809, + serialized_end=940, ) @@ -725,8 +732,189 @@ extension_ranges=[], oneofs=[ ], - serialized_start=929, - serialized_end=1080, + serialized_start=943, + serialized_end=1094, +) + + +_NASCONFIG_OPERATIONS = _descriptor.Descriptor( + name='Operations', + full_name='api.NasConfig.Operations', + filename=None, + file=DESCRIPTOR, + containing_type=None, + fields=[ + _descriptor.FieldDescriptor( + name='operation', full_name='api.NasConfig.Operations.operation', index=0, + number=1, type=11, cpp_type=10, label=3, + has_default_value=False, default_value=[], + 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=1197, + serialized_end=1244, +) + +_NASCONFIG = _descriptor.Descriptor( + name='NasConfig', + full_name='api.NasConfig', + filename=None, + file=DESCRIPTOR, + containing_type=None, + fields=[ + _descriptor.FieldDescriptor( + name='graph_config', full_name='api.NasConfig.graph_config', 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), + _descriptor.FieldDescriptor( + name='operations', full_name='api.NasConfig.operations', index=1, + number=2, 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=[_NASCONFIG_OPERATIONS, ], + enum_types=[ + ], + options=None, + is_extendable=False, + syntax='proto3', + extension_ranges=[], + oneofs=[ + ], + serialized_start=1097, + serialized_end=1244, +) + + +_GRAPHCONFIG = _descriptor.Descriptor( + name='GraphConfig', + full_name='api.GraphConfig', + filename=None, + file=DESCRIPTOR, + containing_type=None, + fields=[ + _descriptor.FieldDescriptor( + name='num_layers', full_name='api.GraphConfig.num_layers', index=0, + number=1, type=5, cpp_type=1, label=1, + has_default_value=False, default_value=0, + message_type=None, enum_type=None, containing_type=None, + is_extension=False, extension_scope=None, + options=None), + _descriptor.FieldDescriptor( + name='input_size', full_name='api.GraphConfig.input_size', index=1, + number=2, type=5, cpp_type=1, label=3, + has_default_value=False, default_value=[], + message_type=None, enum_type=None, containing_type=None, + is_extension=False, extension_scope=None, + options=None), + _descriptor.FieldDescriptor( + name='output_size', full_name='api.GraphConfig.output_size', index=2, + number=3, type=5, cpp_type=1, label=3, + has_default_value=False, default_value=[], + 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=1246, + serialized_end=1320, +) + + +_OPERATION_PARAMETERCONFIGS = _descriptor.Descriptor( + name='ParameterConfigs', + full_name='api.Operation.ParameterConfigs', + filename=None, + file=DESCRIPTOR, + containing_type=None, + fields=[ + _descriptor.FieldDescriptor( + name='configs', full_name='api.Operation.ParameterConfigs.configs', index=0, + number=1, type=11, cpp_type=10, label=3, + has_default_value=False, default_value=[], + 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=1419, + serialized_end=1476, +) + +_OPERATION = _descriptor.Descriptor( + name='Operation', + full_name='api.Operation', + filename=None, + file=DESCRIPTOR, + containing_type=None, + fields=[ + _descriptor.FieldDescriptor( + name='operationType', full_name='api.Operation.operationType', 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), + _descriptor.FieldDescriptor( + name='parameter_configs', full_name='api.Operation.parameter_configs', index=1, + number=2, 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=[_OPERATION_PARAMETERCONFIGS, ], + enum_types=[ + ], + options=None, + is_extendable=False, + syntax='proto3', + extension_ranges=[], + oneofs=[ + ], + serialized_start=1323, + serialized_end=1476, ) @@ -756,8 +944,8 @@ extension_ranges=[], oneofs=[ ], - serialized_start=1380, - serialized_end=1437, + serialized_start=1419, + serialized_end=1476, ) _STUDYCONFIG = _descriptor.Descriptor( @@ -837,6 +1025,20 @@ message_type=None, enum_type=None, containing_type=None, is_extension=False, extension_scope=None, options=None), + _descriptor.FieldDescriptor( + name='nas_config', full_name='api.StudyConfig.nas_config', index=10, + number=11, 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), + _descriptor.FieldDescriptor( + name='job_type', full_name='api.StudyConfig.job_type', index=11, + number=12, 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=[ ], @@ -849,8 +1051,8 @@ extension_ranges=[], oneofs=[ ], - serialized_start=1083, - serialized_end=1437, + serialized_start=1479, + serialized_end=1887, ) @@ -880,8 +1082,8 @@ extension_ranges=[], oneofs=[ ], - serialized_start=1439, - serialized_end=1499, + serialized_start=1889, + serialized_end=1949, ) @@ -911,8 +1113,8 @@ extension_ranges=[], oneofs=[ ], - serialized_start=1501, - serialized_end=1537, + serialized_start=1951, + serialized_end=1987, ) @@ -942,8 +1144,8 @@ extension_ranges=[], oneofs=[ ], - serialized_start=1539, - serialized_end=1577, + serialized_start=1989, + serialized_end=2027, ) @@ -973,8 +1175,8 @@ extension_ranges=[], oneofs=[ ], - serialized_start=1579, - serialized_end=1615, + serialized_start=2029, + serialized_end=2065, ) @@ -1004,8 +1206,8 @@ extension_ranges=[], oneofs=[ ], - serialized_start=1617, - serialized_end=1652, + serialized_start=2067, + serialized_end=2102, ) @@ -1035,8 +1237,8 @@ extension_ranges=[], oneofs=[ ], - serialized_start=1654, - serialized_end=1709, + serialized_start=2104, + serialized_end=2159, ) @@ -1059,8 +1261,8 @@ extension_ranges=[], oneofs=[ ], - serialized_start=1711, - serialized_end=1732, + serialized_start=2161, + serialized_end=2182, ) @@ -1090,8 +1292,8 @@ extension_ranges=[], oneofs=[ ], - serialized_start=1734, - serialized_end=1798, + serialized_start=2184, + serialized_end=2248, ) @@ -1121,8 +1323,8 @@ extension_ranges=[], oneofs=[ ], - serialized_start=1800, - serialized_end=1847, + serialized_start=2250, + serialized_end=2297, ) @@ -1152,8 +1354,8 @@ extension_ranges=[], oneofs=[ ], - serialized_start=1849, - serialized_end=1885, + serialized_start=2299, + serialized_end=2335, ) @@ -1183,8 +1385,8 @@ extension_ranges=[], oneofs=[ ], - serialized_start=1887, - serialized_end=1923, + serialized_start=2337, + serialized_end=2373, ) @@ -1214,8 +1416,8 @@ extension_ranges=[], oneofs=[ ], - serialized_start=1925, - serialized_end=1969, + serialized_start=2375, + serialized_end=2419, ) @@ -1245,8 +1447,8 @@ extension_ranges=[], oneofs=[ ], - serialized_start=1971, - serialized_end=2006, + serialized_start=2421, + serialized_end=2456, ) @@ -1276,8 +1478,8 @@ extension_ranges=[], oneofs=[ ], - serialized_start=2008, - serialized_end=2050, + serialized_start=2458, + serialized_end=2500, ) @@ -1307,8 +1509,8 @@ extension_ranges=[], oneofs=[ ], - serialized_start=2052, - serialized_end=2104, + serialized_start=2502, + serialized_end=2554, ) @@ -1338,8 +1540,8 @@ extension_ranges=[], oneofs=[ ], - serialized_start=2106, - serialized_end=2146, + serialized_start=2556, + serialized_end=2596, ) @@ -1383,8 +1585,8 @@ extension_ranges=[], oneofs=[ ], - serialized_start=2148, - serialized_end=2227, + serialized_start=2598, + serialized_end=2677, ) @@ -1407,8 +1609,8 @@ extension_ranges=[], oneofs=[ ], - serialized_start=2229, - serialized_end=2247, + serialized_start=2679, + serialized_end=2697, ) @@ -1452,8 +1654,8 @@ extension_ranges=[], oneofs=[ ], - serialized_start=2249, - serialized_end=2323, + serialized_start=2699, + serialized_end=2773, ) @@ -1483,8 +1685,8 @@ extension_ranges=[], oneofs=[ ], - serialized_start=2325, - serialized_end=2372, + serialized_start=2775, + serialized_end=2822, ) @@ -1521,8 +1723,8 @@ extension_ranges=[], oneofs=[ ], - serialized_start=2374, - serialized_end=2447, + serialized_start=2824, + serialized_end=2897, ) @@ -1545,8 +1747,8 @@ extension_ranges=[], oneofs=[ ], - serialized_start=2449, - serialized_end=2473, + serialized_start=2899, + serialized_end=2923, ) @@ -1597,8 +1799,8 @@ extension_ranges=[], oneofs=[ ], - serialized_start=2475, - serialized_end=2581, + serialized_start=2925, + serialized_end=3031, ) @@ -1642,8 +1844,8 @@ extension_ranges=[], oneofs=[ ], - serialized_start=2583, - serialized_end=2706, + serialized_start=3033, + serialized_end=3156, ) @@ -1673,8 +1875,8 @@ extension_ranges=[], oneofs=[ ], - serialized_start=2708, - serialized_end=2780, + serialized_start=3158, + serialized_end=3230, ) @@ -1732,8 +1934,8 @@ extension_ranges=[], oneofs=[ ], - serialized_start=2783, - serialized_end=2920, + serialized_start=3233, + serialized_end=3370, ) @@ -1763,8 +1965,8 @@ extension_ranges=[], oneofs=[ ], - serialized_start=2922, - serialized_end=2971, + serialized_start=3372, + serialized_end=3421, ) @@ -1808,8 +2010,8 @@ extension_ranges=[], oneofs=[ ], - serialized_start=2973, - serialized_end=3072, + serialized_start=3423, + serialized_end=3522, ) @@ -1839,8 +2041,8 @@ extension_ranges=[], oneofs=[ ], - serialized_start=3074, - serialized_end=3133, + serialized_start=3524, + serialized_end=3583, ) @@ -1884,8 +2086,8 @@ extension_ranges=[], oneofs=[ ], - serialized_start=3135, - serialized_end=3215, + serialized_start=3585, + serialized_end=3665, ) @@ -1915,8 +2117,8 @@ extension_ranges=[], oneofs=[ ], - serialized_start=3217, - serialized_end=3280, + serialized_start=3667, + serialized_end=3730, ) @@ -1953,8 +2155,8 @@ extension_ranges=[], oneofs=[ ], - serialized_start=3282, - serialized_end=3372, + serialized_start=3732, + serialized_end=3822, ) @@ -1977,8 +2179,8 @@ extension_ranges=[], oneofs=[ ], - serialized_start=3374, - serialized_end=3398, + serialized_start=3824, + serialized_end=3848, ) @@ -2036,8 +2238,8 @@ extension_ranges=[], oneofs=[ ], - serialized_start=3401, - serialized_end=3538, + serialized_start=3851, + serialized_end=3988, ) @@ -2074,8 +2276,8 @@ extension_ranges=[], oneofs=[ ], - serialized_start=3540, - serialized_end=3581, + serialized_start=3990, + serialized_end=4031, ) @@ -2119,8 +2321,8 @@ extension_ranges=[], oneofs=[ ], - serialized_start=3583, - serialized_end=3657, + serialized_start=4033, + serialized_end=4107, ) @@ -2143,8 +2345,8 @@ extension_ranges=[], oneofs=[ ], - serialized_start=3659, - serialized_end=3675, + serialized_start=4109, + serialized_end=4125, ) @@ -2188,8 +2390,8 @@ extension_ranges=[], oneofs=[ ], - serialized_start=3677, - serialized_end=3784, + serialized_start=4127, + serialized_end=4234, ) @@ -2212,8 +2414,8 @@ extension_ranges=[], oneofs=[ ], - serialized_start=3786, - serialized_end=3802, + serialized_start=4236, + serialized_end=4252, ) @@ -2236,8 +2438,8 @@ extension_ranges=[], oneofs=[ ], - serialized_start=3804, - serialized_end=3828, + serialized_start=4254, + serialized_end=4278, ) @@ -2267,8 +2469,8 @@ extension_ranges=[], oneofs=[ ], - serialized_start=3830, - serialized_end=3889, + serialized_start=4280, + serialized_end=4339, ) @@ -2298,8 +2500,8 @@ extension_ranges=[], oneofs=[ ], - serialized_start=3891, - serialized_end=3934, + serialized_start=4341, + serialized_end=4384, ) @@ -2329,8 +2531,8 @@ extension_ranges=[], oneofs=[ ], - serialized_start=3936, - serialized_end=3989, + serialized_start=4386, + serialized_end=4439, ) @@ -2367,8 +2569,8 @@ extension_ranges=[], oneofs=[ ], - serialized_start=3991, - serialized_end=4052, + serialized_start=4441, + serialized_end=4502, ) @@ -2398,8 +2600,8 @@ extension_ranges=[], oneofs=[ ], - serialized_start=4054, - serialized_end=4105, + serialized_start=4504, + serialized_end=4555, ) @@ -2450,8 +2652,8 @@ extension_ranges=[], oneofs=[ ], - serialized_start=4108, - serialized_end=4263, + serialized_start=4558, + serialized_end=4713, ) @@ -2481,8 +2683,8 @@ extension_ranges=[], oneofs=[ ], - serialized_start=4265, - serialized_end=4313, + serialized_start=4715, + serialized_end=4763, ) @@ -2512,8 +2714,8 @@ extension_ranges=[], oneofs=[ ], - serialized_start=4315, - serialized_end=4365, + serialized_start=4765, + serialized_end=4815, ) @@ -2543,8 +2745,8 @@ extension_ranges=[], oneofs=[ ], - serialized_start=4367, - serialized_end=4454, + serialized_start=4817, + serialized_end=4904, ) @@ -2574,8 +2776,8 @@ extension_ranges=[], oneofs=[ ], - serialized_start=4456, - serialized_end=4509, + serialized_start=4906, + serialized_end=4959, ) @@ -2619,8 +2821,8 @@ extension_ranges=[], oneofs=[ ], - serialized_start=4512, - serialized_end=4641, + serialized_start=4962, + serialized_end=5091, ) @@ -2650,8 +2852,8 @@ extension_ranges=[], oneofs=[ ], - serialized_start=4643, - serialized_end=4740, + serialized_start=5093, + serialized_end=5190, ) @@ -2681,8 +2883,8 @@ extension_ranges=[], oneofs=[ ], - serialized_start=4742, - serialized_end=4783, + serialized_start=5192, + serialized_end=5233, ) @@ -2705,8 +2907,8 @@ extension_ranges=[], oneofs=[ ], - serialized_start=4785, - serialized_end=4806, + serialized_start=5235, + serialized_end=5256, ) @@ -2757,8 +2959,8 @@ extension_ranges=[], oneofs=[ ], - serialized_start=4809, - serialized_end=4978, + serialized_start=5259, + serialized_end=5428, ) @@ -2788,8 +2990,8 @@ extension_ranges=[], oneofs=[ ], - serialized_start=4980, - serialized_end=5031, + serialized_start=5430, + serialized_end=5481, ) @@ -2819,8 +3021,8 @@ extension_ranges=[], oneofs=[ ], - serialized_start=5033, - serialized_end=5086, + serialized_start=5483, + serialized_end=5536, ) @@ -2850,8 +3052,8 @@ extension_ranges=[], oneofs=[ ], - serialized_start=5088, - serialized_end=5185, + serialized_start=5538, + serialized_end=5635, ) @@ -2881,8 +3083,8 @@ extension_ranges=[], oneofs=[ ], - serialized_start=5187, - serialized_end=5243, + serialized_start=5637, + serialized_end=5693, ) @@ -2926,8 +3128,8 @@ extension_ranges=[], oneofs=[ ], - serialized_start=5246, - serialized_end=5389, + serialized_start=5696, + serialized_end=5839, ) @@ -2957,8 +3159,8 @@ extension_ranges=[], oneofs=[ ], - serialized_start=5391, - serialized_end=5498, + serialized_start=5841, + serialized_end=5948, ) _PARAMETERCONFIG.fields_by_name['parameter_type'].enum_type = _PARAMETERTYPE @@ -2971,11 +3173,19 @@ _TRIAL.fields_by_name['tags'].message_type = _TAG _WORKER.fields_by_name['status'].enum_type = _STATE _WORKER.fields_by_name['tags'].message_type = _TAG +_NASCONFIG_OPERATIONS.fields_by_name['operation'].message_type = _OPERATION +_NASCONFIG_OPERATIONS.containing_type = _NASCONFIG +_NASCONFIG.fields_by_name['graph_config'].message_type = _GRAPHCONFIG +_NASCONFIG.fields_by_name['operations'].message_type = _NASCONFIG_OPERATIONS +_OPERATION_PARAMETERCONFIGS.fields_by_name['configs'].message_type = _PARAMETERCONFIG +_OPERATION_PARAMETERCONFIGS.containing_type = _OPERATION +_OPERATION.fields_by_name['parameter_configs'].message_type = _OPERATION_PARAMETERCONFIGS _STUDYCONFIG_PARAMETERCONFIGS.fields_by_name['configs'].message_type = _PARAMETERCONFIG _STUDYCONFIG_PARAMETERCONFIGS.containing_type = _STUDYCONFIG _STUDYCONFIG.fields_by_name['optimization_type'].enum_type = _OPTIMIZATIONTYPE _STUDYCONFIG.fields_by_name['parameter_configs'].message_type = _STUDYCONFIG_PARAMETERCONFIGS _STUDYCONFIG.fields_by_name['tags'].message_type = _TAG +_STUDYCONFIG.fields_by_name['nas_config'].message_type = _NASCONFIG _CREATESTUDYREQUEST.fields_by_name['study_config'].message_type = _STUDYCONFIG _GETSTUDYREPLY.fields_by_name['study_config'].message_type = _STUDYCONFIG _GETSTUDYLISTREPLY.fields_by_name['study_overviews'].message_type = _STUDYOVERVIEW @@ -3020,6 +3230,9 @@ DESCRIPTOR.message_types_by_name['StudyOverview'] = _STUDYOVERVIEW DESCRIPTOR.message_types_by_name['Trial'] = _TRIAL DESCRIPTOR.message_types_by_name['Worker'] = _WORKER +DESCRIPTOR.message_types_by_name['NasConfig'] = _NASCONFIG +DESCRIPTOR.message_types_by_name['GraphConfig'] = _GRAPHCONFIG +DESCRIPTOR.message_types_by_name['Operation'] = _OPERATION DESCRIPTOR.message_types_by_name['StudyConfig'] = _STUDYCONFIG DESCRIPTOR.message_types_by_name['CreateStudyRequest'] = _CREATESTUDYREQUEST DESCRIPTOR.message_types_by_name['CreateStudyReply'] = _CREATESTUDYREPLY @@ -3178,6 +3391,43 @@ )) _sym_db.RegisterMessage(Worker) +NasConfig = _reflection.GeneratedProtocolMessageType('NasConfig', (_message.Message,), dict( + + Operations = _reflection.GeneratedProtocolMessageType('Operations', (_message.Message,), dict( + DESCRIPTOR = _NASCONFIG_OPERATIONS, + __module__ = 'api_pb2' + # @@protoc_insertion_point(class_scope:api.NasConfig.Operations) + )) + , + DESCRIPTOR = _NASCONFIG, + __module__ = 'api_pb2' + # @@protoc_insertion_point(class_scope:api.NasConfig) + )) +_sym_db.RegisterMessage(NasConfig) +_sym_db.RegisterMessage(NasConfig.Operations) + +GraphConfig = _reflection.GeneratedProtocolMessageType('GraphConfig', (_message.Message,), dict( + DESCRIPTOR = _GRAPHCONFIG, + __module__ = 'api_pb2' + # @@protoc_insertion_point(class_scope:api.GraphConfig) + )) +_sym_db.RegisterMessage(GraphConfig) + +Operation = _reflection.GeneratedProtocolMessageType('Operation', (_message.Message,), dict( + + ParameterConfigs = _reflection.GeneratedProtocolMessageType('ParameterConfigs', (_message.Message,), dict( + DESCRIPTOR = _OPERATION_PARAMETERCONFIGS, + __module__ = 'api_pb2' + # @@protoc_insertion_point(class_scope:api.Operation.ParameterConfigs) + )) + , + DESCRIPTOR = _OPERATION, + __module__ = 'api_pb2' + # @@protoc_insertion_point(class_scope:api.Operation) + )) +_sym_db.RegisterMessage(Operation) +_sym_db.RegisterMessage(Operation.ParameterConfigs) + StudyConfig = _reflection.GeneratedProtocolMessageType('StudyConfig', (_message.Message,), dict( ParameterConfigs = _reflection.GeneratedProtocolMessageType('ParameterConfigs', (_message.Message,), dict( @@ -3628,8 +3878,8 @@ file=DESCRIPTOR, index=0, options=None, - serialized_start=5735, - serialized_end=8786, + serialized_start=6185, + serialized_end=9236, methods=[ _descriptor.MethodDescriptor( name='CreateStudy', @@ -3868,8 +4118,8 @@ file=DESCRIPTOR, index=1, options=None, - serialized_start=8788, - serialized_end=8872, + serialized_start=9238, + serialized_end=9322, methods=[ _descriptor.MethodDescriptor( name='GetSuggestions', @@ -3892,8 +4142,8 @@ file=DESCRIPTOR, index=2, options=None, - serialized_start=8874, - serialized_end=8979, + serialized_start=9324, + serialized_end=9429, methods=[ _descriptor.MethodDescriptor( name='GetShouldStopWorkers', diff --git a/pkg/controller/studyjob/const.go b/pkg/controller/studyjob/const.go index e3fc2cd9b6a..bce9bd15902 100644 --- a/pkg/controller/studyjob/const.go +++ b/pkg/controller/studyjob/const.go @@ -15,6 +15,8 @@ const ( DefaultJobWorker = "Job" TFJobWorker = "TFJob" PyTorchJobWorker = "PyTorchJob" + jobTypeNAS = "NAS" + jobTypeHP = "HP" ) var ValidWorkerKindList = [...]string{DefaultJobWorker, TFJobWorker, PyTorchJobWorker} diff --git a/pkg/controller/studyjob/katib_api_util.go b/pkg/controller/studyjob/katib_api_util.go index bf7aedd2d31..10fd19a79c8 100644 --- a/pkg/controller/studyjob/katib_api_util.go +++ b/pkg/controller/studyjob/katib_api_util.go @@ -49,7 +49,6 @@ func initializeStudy(instance *katibv1alpha1.StudyJob, ns string) error { if err != nil { return err } - log.Printf("Create Study %s", studyConfig.Name) //CreateStudy studyID, err := createStudy(c, studyConfig) @@ -79,12 +78,22 @@ func initializeStudy(instance *katibv1alpha1.StudyJob, ns string) error { } func getStudyConf(instance *katibv1alpha1.StudyJob) (*katibapi.StudyConfig, error) { - sconf := &katibapi.StudyConfig{ - Metrics: []string{}, - ParameterConfigs: &katibapi.StudyConfig_ParameterConfigs{ - Configs: []*katibapi.ParameterConfig{}, - }, + jobType := getJobType(instance) + if jobType == jobTypeNAS { + return populateConfigForNAS(instance) } + return populateConfigForHP(instance) +} + +func getJobType(instance *katibv1alpha1.StudyJob) string { + if instance.Spec.NasConfig != nil { + return jobTypeNAS + } + return jobTypeHP +} + +func populateCommonConfigFields(instance *katibv1alpha1.StudyJob, sconf *katibapi.StudyConfig) { + sconf.Name = instance.Spec.StudyName sconf.Owner = instance.Spec.Owner if instance.Spec.OptimizationGoal != nil { @@ -102,14 +111,35 @@ func getStudyConf(instance *katibv1alpha1.StudyJob) (*katibapi.StudyConfig, erro for _, m := range instance.Spec.MetricsNames { sconf.Metrics = append(sconf.Metrics, m) } + sconf.JobId = string(instance.UID) +} + +func populateConfigForHP(instance *katibv1alpha1.StudyJob) (*katibapi.StudyConfig, error) { + sconf := &katibapi.StudyConfig{ + Metrics: []string{}, + ParameterConfigs: &katibapi.StudyConfig_ParameterConfigs{ + Configs: []*katibapi.ParameterConfig{}, + }, + } + + populateCommonConfigFields(instance, sconf) + for _, pc := range instance.Spec.ParameterConfigs { p := &katibapi.ParameterConfig{ Feasible: &katibapi.FeasibleSpace{}, } p.Name = pc.Name - p.Feasible.Min = pc.Feasible.Min - p.Feasible.Max = pc.Feasible.Max - p.Feasible.List = pc.Feasible.List + if pc.Feasible.Min != "" && pc.Feasible.Max != "" { + p.Feasible.Min = pc.Feasible.Min + p.Feasible.Max = pc.Feasible.Max + } + if pc.Feasible.List != nil { + p.Feasible.List = pc.Feasible.List + } + + if pc.Feasible.Step != "" { + p.Feasible.Step = pc.Feasible.Step + } switch pc.ParameterType { case katibv1alpha1.ParameterTypeUnknown: p.ParameterType = katibapi.ParameterType_UNKNOWN_TYPE @@ -124,7 +154,74 @@ func getStudyConf(instance *katibv1alpha1.StudyJob) (*katibapi.StudyConfig, erro } sconf.ParameterConfigs.Configs = append(sconf.ParameterConfigs.Configs, p) } - sconf.JobId = string(instance.UID) + + sconf.JobType = jobTypeHP + return sconf, nil +} + +func populateConfigForNAS(instance *katibv1alpha1.StudyJob) (*katibapi.StudyConfig, error) { + sconf := &katibapi.StudyConfig{ + Metrics: []string{}, + NasConfig: &katibapi.NasConfig{ + GraphConfig: &katibapi.GraphConfig{}, + Operations: &katibapi.NasConfig_Operations{ + Operation: []*katibapi.Operation{}, + }, + }, + } + populateCommonConfigFields(instance, sconf) + + sconf.NasConfig.GraphConfig.NumLayers = instance.Spec.NasConfig.GraphConfig.NumLayers + for _, i := range instance.Spec.NasConfig.GraphConfig.InputSize { + sconf.NasConfig.GraphConfig.InputSize = append(sconf.NasConfig.GraphConfig.InputSize, i) + } + for _, o := range instance.Spec.NasConfig.GraphConfig.OutputSize { + sconf.NasConfig.GraphConfig.OutputSize = append(sconf.NasConfig.GraphConfig.OutputSize, o) + } + for _, op := range instance.Spec.NasConfig.Operations { + operation := &katibapi.Operation{ + ParameterConfigs: &katibapi.Operation_ParameterConfigs{ + Configs: []*katibapi.ParameterConfig{}, + }, + } + operation.OperationType = op.OperationType + for _, pc := range op.ParameterConfigs { + p := &katibapi.ParameterConfig{ + Feasible: &katibapi.FeasibleSpace{}, + } + + p.Name = pc.Name + if pc.Feasible.Min != "" && pc.Feasible.Max != "" { + p.Feasible.Min = pc.Feasible.Min + p.Feasible.Max = pc.Feasible.Max + } + if pc.Feasible.List != nil { + + p.Feasible.List = pc.Feasible.List + + } + if pc.Feasible.Step != "" { + p.Feasible.Step = pc.Feasible.Step + } + switch pc.ParameterType { + case katibv1alpha1.ParameterTypeUnknown: + p.ParameterType = katibapi.ParameterType_UNKNOWN_TYPE + case katibv1alpha1.ParameterTypeDouble: + p.ParameterType = katibapi.ParameterType_DOUBLE + case katibv1alpha1.ParameterTypeInt: + p.ParameterType = katibapi.ParameterType_INT + case katibv1alpha1.ParameterTypeDiscrete: + p.ParameterType = katibapi.ParameterType_DISCRETE + case katibv1alpha1.ParameterTypeCategorical: + p.ParameterType = katibapi.ParameterType_CATEGORICAL + } + + operation.ParameterConfigs.Configs = append(operation.ParameterConfigs.Configs, p) + } + sconf.NasConfig.Operations.Operation = append(sconf.NasConfig.Operations.Operation, operation) + } + + sconf.JobType = jobTypeNAS return sconf, nil } @@ -139,7 +236,7 @@ func deleteStudy(instance *katibv1alpha1.StudyJob) error { ctx := context.Background() studyID := instance.Status.StudyID if studyID == "" { - // in case that information for a studyjob is not created in DB + // in case that information for a studyjob is not created in DB return nil } deleteStudyreq := &katibapi.DeleteStudyRequest{ @@ -172,7 +269,7 @@ func createStudy(c katibapi.ManagerClient, studyConfig *katibapi.StudyConfig) (s log.Printf("Study: %s GetConfig Error %v", studyID, err) return "", err } - log.Printf("Study ID %s StudyConf%v", studyID, getStudyReply.StudyConfig) + log.Printf("Study ID %s StudyConf %v", studyID, getStudyReply.StudyConfig) return studyID, nil } diff --git a/pkg/controller/studyjob/studyjob_controller.go b/pkg/controller/studyjob/studyjob_controller.go index 245d1fc4742..9a9459275b8 100644 --- a/pkg/controller/studyjob/studyjob_controller.go +++ b/pkg/controller/studyjob/studyjob_controller.go @@ -46,8 +46,9 @@ import ( "sigs.k8s.io/controller-runtime/pkg/reconcile" "sigs.k8s.io/controller-runtime/pkg/source" ) + const ( - maxMsgSize = 1<<31 - 1 + maxMsgSize = 1<<31 - 1 cleanDataFinalizer = "clean-studyjob-data" ) @@ -211,8 +212,8 @@ func (r *ReconcileStudyJobController) Reconcile(request reconcile.Request) (reco switch instance.Status.Condition { case katibv1alpha1.ConditionCompleted, - katibv1alpha1.ConditionFailed, - katibv1alpha1.ConditionRunning: + katibv1alpha1.ConditionFailed, + katibv1alpha1.ConditionRunning: update, err = r.checkStatus(instance, request.Namespace) default: now := metav1.Now() @@ -291,7 +292,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) - goal = checkGoalAndUpdateObject(curValue, instance, mls.WorkerId ) + goal = checkGoalAndUpdateObject(curValue, instance, mls.WorkerId) } break } @@ -363,7 +364,7 @@ func (r *ReconcileStudyJobController) updateWorker(c katibapi.ManagerClient, ins } } } else { - // for some reason, metricsCollector for this worker cannot be found (deleted by anyone accidentally or even failed to be created) + // for some reason, metricsCollector for this worker cannot be found (deleted by anyone accidentally or even failed to be created) update = true instance.Status.Condition = katibv1alpha1.ConditionFailed } @@ -394,7 +395,7 @@ func (r *ReconcileStudyJobController) updateWorker(c katibapi.ManagerClient, ins context.Background(), &katibapi.UpdateWorkerStateRequest{ WorkerId: instance.Status.Trials[i].WorkerList[j].WorkerID, - Status: status.WorkerState, + Status: status.WorkerState, }) if err != nil { log.Printf("Fail to update worker info. ID %s", instance.Status.Trials[i].WorkerList[j].WorkerID) @@ -404,7 +405,7 @@ func (r *ReconcileStudyJobController) updateWorker(c katibapi.ManagerClient, ins return update, nil } -func(r *ReconcileStudyJobController) getJobWorkerStatus(w *katibv1alpha1.WorkerCondition, ns string) WorkerStatus { +func (r *ReconcileStudyJobController) getJobWorkerStatus(w *katibv1alpha1.WorkerCondition, ns string) WorkerStatus { runtimejob := createWorkerJobObj(w.Kind) nname := types.NamespacedName{Namespace: ns, Name: w.WorkerID} joberr := r.Client.Get(context.TODO(), nname, runtimejob) @@ -415,7 +416,7 @@ func(r *ReconcileStudyJobController) getJobWorkerStatus(w *katibv1alpha1.WorkerC var cpTime *metav1.Time switch w.Kind { case DefaultJobWorker: - job := runtimejob.(* batchv1.Job) + job := runtimejob.(*batchv1.Job) if job.Status.Active == 0 && job.Status.Succeeded > 0 { state = katibapi.State_COMPLETED } else if job.Status.Failed > 0 { @@ -423,7 +424,7 @@ func(r *ReconcileStudyJobController) getJobWorkerStatus(w *katibv1alpha1.WorkerC } cpTime = job.Status.CompletionTime case TFJobWorker: - job := runtimejob.(* tfjobv1beta1.TFJob) + job := runtimejob.(*tfjobv1beta1.TFJob) if len(job.Status.Conditions) > 0 { lc := job.Status.Conditions[len(job.Status.Conditions)-1] if lc.Type == commonv1beta1.JobSucceeded { @@ -434,7 +435,7 @@ func(r *ReconcileStudyJobController) getJobWorkerStatus(w *katibv1alpha1.WorkerC } cpTime = job.Status.CompletionTime case PyTorchJobWorker: - job := runtimejob.(* pytorchjobv1beta1.PyTorchJob) + job := runtimejob.(*pytorchjobv1beta1.PyTorchJob) if len(job.Status.Conditions) > 0 { lc := job.Status.Conditions[len(job.Status.Conditions)-1] if lc.Type == commonv1beta1.JobSucceeded { @@ -446,8 +447,8 @@ func(r *ReconcileStudyJobController) getJobWorkerStatus(w *katibv1alpha1.WorkerC cpTime = job.Status.CompletionTime } return WorkerStatus{ - CompletionTime: cpTime, - WorkerState: state, + CompletionTime: cpTime, + WorkerState: state, } } diff --git a/pkg/controller/studyjob/utils.go b/pkg/controller/studyjob/utils.go index 237ca102c33..b0fae6e6d9c 100644 --- a/pkg/controller/studyjob/utils.go +++ b/pkg/controller/studyjob/utils.go @@ -163,16 +163,16 @@ func validateStudy(instance *katibv1alpha1.StudyJob, namespace string) error { } 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}, + 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: +OuterLoop: for i := range instance.Status.Trials { for j := range instance.Status.Trials[i].WorkerList { if instance.Status.Trials[i].WorkerList[j].WorkerID == workerId { diff --git a/pkg/suggestion/hyperband_service.go b/pkg/suggestion/hyperband_service.go index f5f07cf03d1..74a2b81a490 100644 --- a/pkg/suggestion/hyperband_service.go +++ b/pkg/suggestion/hyperband_service.go @@ -142,7 +142,7 @@ func (h *HyperBandSuggestService) makeChildBracket(ctx context.Context, c api.Ma child := Bracket{} if sconf.OptimizationType == api.OptimizationType_MINIMIZE { - child = parent[len(parent) - n:] + child = parent[len(parent)-n:] } else if sconf.OptimizationType == api.OptimizationType_MAXIMIZE { child = parent[:n] } diff --git a/pkg/suggestion/nasrl_service.py b/pkg/suggestion/nasrl_service.py new file mode 100644 index 00000000000..f7e672a2276 --- /dev/null +++ b/pkg/suggestion/nasrl_service.py @@ -0,0 +1,22 @@ +import random +import string + +import grpc +import numpy as np + +from pkg.api.python import api_pb2 +from pkg.api.python import api_pb2_grpc +import logging +from logging import getLogger, StreamHandler, INFO, DEBUG + + +class NasrlService(api_pb2_grpc.SuggestionServicer): + def __init__(self, logger=None): + self.manager_addr = "vizier-core" + self.manager_port = 6789 + self.current_trial_id = "" + + def GetSuggestions(self, request, context): + trials = [] + + return api_pb2.GetSuggestionsReply(trials=trials) diff --git a/pkg/types.go b/pkg/types.go index eb3da64f689..7f0135d2001 100644 --- a/pkg/types.go +++ b/pkg/types.go @@ -5,12 +5,12 @@ import ( ) const ( - VizierServiceIPEnvName = "VIZIER_CORE_PORT_6789_TCP_ADDR" - VizierServicePortEnvName = "VIZIER_CORE_PORT_6789_TCP_PORT" + VizierServiceIPEnvName = "VIZIER_CORE_PORT_6789_TCP_ADDR" + VizierServicePortEnvName = "VIZIER_CORE_PORT_6789_TCP_PORT" VizierServiceNamespaceEnvName = "VIZIER_CORE_NAMESPACE" - VizierService = "vizier-core" - VizierPort = "6789" - ManagerAddr = VizierService + ":" + VizierPort + VizierService = "vizier-core" + VizierPort = "6789" + ManagerAddr = VizierService + ":" + VizierPort ) func GetManagerAddr() string { @@ -24,6 +24,6 @@ func GetManagerAddr() string { return ManagerAddr } } else { - return VizierService + "." + ns + ":"+ VizierPort + return VizierService + "." + ns + ":" + VizierPort } -} \ No newline at end of file +}