Compare commits

...

5 Commits

Author SHA1 Message Date
avelichk 152ec0797c Katib official release v0.12.0 2021-10-05 17:13:30 +01:00
avelichk dfe8efec0e Katib official release v0.12.0-rc.1 2021-09-07 14:09:16 +01:00
Kimonas Sotirchos 93168628f6
cherry-pick: UI fix for handling missing params (#1657)
* Use YAML input if TrialParams are missing

Signed-off-by: Kimonas Sotirchos <kimwnasptd@arrikto.com>

* review: Separate TrialTemplates in two words

Co-authored-by: Andrey Velichkevich <andrey.velichkevich@gmail.com>

Co-authored-by: Andrey Velichkevich <andrey.velichkevich@gmail.com>

Co-authored-by: Andrey Velichkevich <andrey.velichkevich@gmail.com>
2021-09-06 19:21:38 -07:00
Johnu George 698a9c6421
CherryPick: Reconcile semantics for Suggestion Algorithms (#1633) (#1644)
* Reuse suggestions

* Fix tests
2021-08-27 07:31:06 -07:00
avelichk bfae181429 Katib official release v0.12.0-rc.0 2021-08-19 16:46:32 +01:00
20 changed files with 247 additions and 192 deletions

View File

@ -7,13 +7,13 @@ data:
metrics-collector-sidecar: |-
{
"StdOut": {
"image": "docker.io/kubeflowkatib/file-metrics-collector:latest"
"image": "docker.io/kubeflowkatib/file-metrics-collector:v0.12.0"
},
"File": {
"image": "docker.io/kubeflowkatib/file-metrics-collector:latest"
"image": "docker.io/kubeflowkatib/file-metrics-collector:v0.12.0"
},
"TensorFlowEvent": {
"image": "docker.io/kubeflowkatib/tfevent-metrics-collector:latest",
"image": "docker.io/kubeflowkatib/tfevent-metrics-collector:v0.12.0",
"resources": {
"limits": {
"memory": "1Gi"
@ -24,31 +24,31 @@ data:
suggestion: |-
{
"random": {
"image": "docker.io/kubeflowkatib/suggestion-hyperopt:latest"
"image": "docker.io/kubeflowkatib/suggestion-hyperopt:v0.12.0"
},
"tpe": {
"image": "docker.io/kubeflowkatib/suggestion-hyperopt:latest"
"image": "docker.io/kubeflowkatib/suggestion-hyperopt:v0.12.0"
},
"grid": {
"image": "docker.io/kubeflowkatib/suggestion-chocolate:latest"
"image": "docker.io/kubeflowkatib/suggestion-chocolate:v0.12.0"
},
"hyperband": {
"image": "docker.io/kubeflowkatib/suggestion-hyperband:latest"
"image": "docker.io/kubeflowkatib/suggestion-hyperband:v0.12.0"
},
"bayesianoptimization": {
"image": "docker.io/kubeflowkatib/suggestion-skopt:latest"
"image": "docker.io/kubeflowkatib/suggestion-skopt:v0.12.0"
},
"cmaes": {
"image": "docker.io/kubeflowkatib/suggestion-goptuna:latest"
"image": "docker.io/kubeflowkatib/suggestion-goptuna:v0.12.0"
},
"sobol": {
"image": "docker.io/kubeflowkatib/suggestion-goptuna:latest"
"image": "docker.io/kubeflowkatib/suggestion-goptuna:v0.12.0"
},
"multivariate-tpe": {
"image": "docker.io/kubeflowkatib/suggestion-optuna:latest"
"image": "docker.io/kubeflowkatib/suggestion-optuna:v0.12.0"
},
"enas": {
"image": "docker.io/kubeflowkatib/suggestion-enas:latest",
"image": "docker.io/kubeflowkatib/suggestion-enas:v0.12.0",
"resources": {
"limits": {
"memory": "200Mi"
@ -56,12 +56,12 @@ data:
}
},
"darts": {
"image": "docker.io/kubeflowkatib/suggestion-darts:latest"
"image": "docker.io/kubeflowkatib/suggestion-darts:v0.12.0"
}
}
early-stopping: |-
{
"medianstop": {
"image": "docker.io/kubeflowkatib/earlystopping-medianstop:latest"
"image": "docker.io/kubeflowkatib/earlystopping-medianstop:v0.12.0"
}
}

View File

@ -21,13 +21,13 @@ resources:
images:
- name: docker.io/kubeflowkatib/katib-controller
newName: docker.io/kubeflowkatib/katib-controller
newTag: latest
newTag: v0.12.0
- name: docker.io/kubeflowkatib/katib-db-manager
newName: docker.io/kubeflowkatib/katib-db-manager
newTag: latest
newTag: v0.12.0
- name: docker.io/kubeflowkatib/katib-ui
newName: docker.io/kubeflowkatib/katib-ui
newTag: latest
newTag: v0.12.0
patchesStrategicMerge:
- patches/katib-cert-injection.yaml

View File

@ -19,16 +19,16 @@ resources:
images:
- name: docker.io/kubeflowkatib/katib-controller
newName: docker.io/kubeflowkatib/katib-controller
newTag: latest
newTag: v0.12.0
- name: docker.io/kubeflowkatib/katib-db-manager
newName: docker.io/kubeflowkatib/katib-db-manager
newTag: latest
newTag: v0.12.0
- name: docker.io/kubeflowkatib/katib-ui
newName: docker.io/kubeflowkatib/katib-ui
newTag: latest
newTag: v0.12.0
- name: docker.io/kubeflowkatib/cert-generator
newName: docker.io/kubeflowkatib/cert-generator
newTag: latest
newTag: v0.12.0
patchesStrategicMerge:
- patches/db-manager.yaml
# Modify katib-mysql-secrets with parameters for the DB.

View File

@ -30,13 +30,13 @@ resources:
images:
- name: docker.io/kubeflowkatib/katib-controller
newName: docker.io/kubeflowkatib/katib-controller
newTag: latest
newTag: v0.12.0
- name: docker.io/kubeflowkatib/katib-db-manager
newName: docker.io/kubeflowkatib/katib-db-manager
newTag: latest
newTag: v0.12.0
- name: docker.io/kubeflowkatib/katib-ui
newName: docker.io/kubeflowkatib/katib-ui
newTag: latest
newTag: v0.12.0
patchesJson6902:
# Annotate Service to delegate TLS-secret generation to OpenShift service controller

View File

@ -21,13 +21,13 @@ resources:
images:
- name: docker.io/kubeflowkatib/katib-controller
newName: docker.io/kubeflowkatib/katib-controller
newTag: latest
newTag: v0.12.0
- name: docker.io/kubeflowkatib/katib-db-manager
newName: docker.io/kubeflowkatib/katib-db-manager
newTag: latest
newTag: v0.12.0
- name: docker.io/kubeflowkatib/katib-ui
newName: docker.io/kubeflowkatib/katib-ui
newTag: latest
newTag: v0.12.0
- name: docker.io/kubeflowkatib/cert-generator
newName: docker.io/kubeflowkatib/cert-generator
newTag: latest
newTag: v0.12.0

View File

@ -9,13 +9,13 @@ resources:
images:
- name: docker.io/kubeflowkatib/katib-controller
newName: docker.io/kubeflowkatib/katib-controller
newTag: latest
newTag: v0.12.0
- name: docker.io/kubeflowkatib/katib-db-manager
newName: docker.io/kubeflowkatib/katib-db-manager
newTag: latest
newTag: v0.12.0
- name: docker.io/kubeflowkatib/katib-ui
newName: docker.io/kubeflowkatib/katib-ui
newTag: latest
newTag: v0.12.0
patchesStrategicMerge:
- patches/remove-namespace.yaml

View File

@ -991,9 +991,10 @@ func (*DeleteObservationLogReply) ProtoMessage() {}
func (*DeleteObservationLogReply) Descriptor() ([]byte, []int) { return fileDescriptor0, []int{25} }
type GetSuggestionsRequest struct {
Experiment *Experiment `protobuf:"bytes,1,opt,name=experiment" json:"experiment,omitempty"`
Trials []*Trial `protobuf:"bytes,2,rep,name=trials" json:"trials,omitempty"`
RequestNumber int32 `protobuf:"varint,3,opt,name=request_number,json=requestNumber" json:"request_number,omitempty"`
Experiment *Experiment `protobuf:"bytes,1,opt,name=experiment" json:"experiment,omitempty"`
Trials []*Trial `protobuf:"bytes,2,rep,name=trials" json:"trials,omitempty"`
RequestNumber int32 `protobuf:"varint,3,opt,name=request_number,json=requestNumber" json:"request_number,omitempty"`
TotalRequestNumber int32 `protobuf:"varint,4,opt,name=total_request_number,json=totalRequestNumber" json:"total_request_number,omitempty"`
}
func (m *GetSuggestionsRequest) Reset() { *m = GetSuggestionsRequest{} }
@ -1022,6 +1023,13 @@ func (m *GetSuggestionsRequest) GetRequestNumber() int32 {
return 0
}
func (m *GetSuggestionsRequest) GetTotalRequestNumber() int32 {
if m != nil {
return m.TotalRequestNumber
}
return 0
}
type GetSuggestionsReply struct {
ParameterAssignments []*GetSuggestionsReply_ParameterAssignments `protobuf:"bytes,1,rep,name=parameter_assignments,json=parameterAssignments" json:"parameter_assignments,omitempty"`
Algorithm *AlgorithmSpec `protobuf:"bytes,2,opt,name=algorithm" json:"algorithm,omitempty"`
@ -1618,117 +1626,118 @@ var _EarlyStopping_serviceDesc = grpc.ServiceDesc{
func init() { proto.RegisterFile("api.proto", fileDescriptor0) }
var fileDescriptor0 = []byte{
// 1786 bytes of a gzipped FileDescriptorProto
0x1f, 0x8b, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0xff, 0xbc, 0x58, 0x4f, 0x73, 0x1b, 0x49,
0x15, 0xcf, 0xe8, 0x8f, 0x9d, 0x79, 0xb2, 0xe4, 0x49, 0x5b, 0xde, 0x95, 0x9d, 0x65, 0xe3, 0x0c,
0x90, 0x0d, 0x49, 0x4a, 0x6c, 0x4c, 0x91, 0x0a, 0xb5, 0xa1, 0x40, 0x91, 0x26, 0x2e, 0x65, 0x65,
0xc9, 0x69, 0xc9, 0x90, 0x65, 0xa9, 0x9a, 0x6a, 0x49, 0x1d, 0xed, 0x84, 0xf9, 0xc7, 0x4c, 0x2b,
0x15, 0xc1, 0x91, 0x5a, 0x6e, 0xdc, 0x38, 0x71, 0xe7, 0xc4, 0x91, 0x2f, 0xc0, 0x89, 0x0f, 0x40,
0x71, 0xe0, 0xca, 0x07, 0xe0, 0x3b, 0x50, 0xdd, 0x33, 0x9a, 0x7f, 0x1a, 0x29, 0xb6, 0x03, 0x7b,
0x9b, 0x7e, 0xef, 0xf7, 0xba, 0xdf, 0x7b, 0xfd, 0xfe, 0xf5, 0x80, 0x4c, 0x5c, 0xa3, 0xe9, 0x7a,
0x0e, 0x73, 0xd0, 0x0e, 0xff, 0x7c, 0xf3, 0xb0, 0x39, 0xa6, 0x8c, 0x3c, 0x54, 0x31, 0x80, 0xf6,
0xd6, 0xa5, 0x9e, 0x61, 0x51, 0x9b, 0x21, 0x04, 0x25, 0x9b, 0x58, 0xb4, 0x21, 0x1d, 0x49, 0x77,
0x65, 0x2c, 0xbe, 0xd1, 0xa7, 0x50, 0xf2, 0x5d, 0x3a, 0x69, 0x14, 0x8e, 0xa4, 0xbb, 0x95, 0xe3,
0x8f, 0x9a, 0x49, 0xf1, 0x66, 0x2c, 0x3b, 0x74, 0xe9, 0x04, 0x0b, 0xa4, 0xfa, 0x75, 0x09, 0x6a,
0x69, 0x06, 0x1a, 0xc1, 0xae, 0x4b, 0x3c, 0x62, 0x51, 0x46, 0x3d, 0x9d, 0x83, 0x7c, 0x71, 0x46,
0xe5, 0xf8, 0xfe, 0xa6, 0xfd, 0x9a, 0x67, 0x4b, 0x19, 0xbe, 0xf2, 0x71, 0xcd, 0x4d, 0xad, 0xd1,
0x8f, 0x40, 0x76, 0xc6, 0xaf, 0xe9, 0x84, 0x19, 0x6f, 0x68, 0xa8, 0xdf, 0xcd, 0xf4, 0x7e, 0x83,
0x25, 0x5b, 0xa8, 0x17, 0xa3, 0xb9, 0x28, 0x31, 0x67, 0x8e, 0x67, 0xb0, 0xaf, 0xac, 0x46, 0x31,
0x4f, 0xb4, 0xb5, 0x64, 0x07, 0xa2, 0x11, 0x1a, 0x3d, 0x83, 0x1a, 0x25, 0x9e, 0xb9, 0xd0, 0x7d,
0xe6, 0xb8, 0xae, 0x61, 0xcf, 0x1a, 0x25, 0x21, 0x7f, 0x2b, 0x63, 0x0a, 0xc7, 0x0c, 0x43, 0x88,
0xd8, 0xa3, 0x4a, 0x93, 0x24, 0xf4, 0x29, 0xd4, 0xb9, 0x3d, 0xa6, 0x49, 0x4d, 0x9d, 0x79, 0x06,
0x31, 0xf5, 0x89, 0x33, 0xb7, 0x59, 0xa3, 0x7c, 0x24, 0xdd, 0x2d, 0x63, 0xb4, 0xe4, 0x8d, 0x38,
0xab, 0xcd, 0x39, 0xe8, 0x0e, 0xec, 0x5a, 0xe4, 0x6d, 0x0a, 0xbc, 0x25, 0xc0, 0x55, 0x8b, 0xbc,
0x4d, 0xe0, 0x1e, 0x01, 0xd8, 0xc4, 0xd7, 0x27, 0x8e, 0xfd, 0xca, 0x98, 0x35, 0xb6, 0x85, 0x76,
0x1f, 0xa6, 0xb5, 0xeb, 0x13, 0xbf, 0x2d, 0xd8, 0x58, 0xb6, 0x97, 0x9f, 0x87, 0xa7, 0x50, 0x4b,
0x7b, 0x1c, 0x7d, 0x06, 0x10, 0xf9, 0x9c, 0x5f, 0x59, 0x71, 0xd5, 0x4f, 0x29, 0x09, 0x9c, 0x80,
0xab, 0x7f, 0x91, 0xa0, 0x9a, 0xe2, 0xe6, 0xc6, 0xd7, 0x53, 0x88, 0xaf, 0x55, 0x67, 0x0b, 0x37,
0xb8, 0xc9, 0xda, 0xda, 0x63, 0x46, 0x0b, 0x97, 0xe2, 0xaa, 0x9b, 0x5c, 0xf2, 0x3d, 0x5e, 0x51,
0xe2, 0x1b, 0x63, 0x93, 0xea, 0xbe, 0x4b, 0x26, 0x34, 0xff, 0x4a, 0x9f, 0x85, 0x98, 0x21, 0x87,
0xe0, 0xea, 0xab, 0xe4, 0x52, 0xfd, 0x12, 0xaa, 0x29, 0x3e, 0x52, 0xa0, 0x68, 0x91, 0xb7, 0xa1,
0xae, 0xfc, 0x53, 0x50, 0x0c, 0x5b, 0xe8, 0xc7, 0x29, 0x86, 0xcd, 0x0d, 0x32, 0x0d, 0x9f, 0x35,
0x8a, 0x47, 0x45, 0x6e, 0x10, 0xff, 0xe6, 0x34, 0x9f, 0x51, 0x57, 0x44, 0x85, 0x8c, 0xc5, 0xb7,
0xfa, 0x37, 0x09, 0xaa, 0xa9, 0x58, 0x44, 0xdf, 0x87, 0x92, 0x30, 0x56, 0xca, 0x33, 0x36, 0x82,
0x0a, 0x63, 0x05, 0x90, 0x6f, 0x3b, 0x73, 0x88, 0x29, 0x4e, 0x97, 0xb0, 0xf8, 0x46, 0xc7, 0xb0,
0x1f, 0x85, 0xb4, 0x6e, 0x51, 0xe6, 0x19, 0x13, 0x5d, 0x38, 0xb8, 0x28, 0xce, 0xde, 0x8b, 0x98,
0xa7, 0x82, 0xd7, 0xe7, 0xfe, 0x7e, 0x04, 0x1f, 0x92, 0xe9, 0xd4, 0x60, 0x86, 0x63, 0x13, 0x33,
0x29, 0xe4, 0x37, 0x4a, 0xc2, 0x8a, 0xfd, 0x98, 0x1d, 0x8b, 0xf9, 0xea, 0xd7, 0x12, 0x54, 0x53,
0x39, 0x81, 0xbe, 0x0b, 0xb5, 0x28, 0x2b, 0xf4, 0xc4, 0xbd, 0x56, 0x23, 0xaa, 0x38, 0xf0, 0x14,
0x50, 0x0c, 0xf3, 0x29, 0x63, 0x86, 0x3d, 0xf3, 0x1b, 0x05, 0x11, 0x4b, 0x1f, 0xaf, 0xcb, 0xb9,
0x00, 0x86, 0x6f, 0x90, 0x0c, 0xc5, 0x57, 0x9f, 0x80, 0x92, 0x85, 0xe5, 0xc6, 0x55, 0x1d, 0xca,
0x6f, 0x88, 0x39, 0xa7, 0xe1, 0x75, 0x05, 0x0b, 0xf5, 0x0f, 0x12, 0xdc, 0x58, 0xc9, 0xcc, 0x8b,
0x5a, 0xf2, 0x62, 0x83, 0x25, 0xea, 0xa6, 0xec, 0x5f, 0x6f, 0xcd, 0x4f, 0xa1, 0x9e, 0x07, 0xbd,
0x84, 0x45, 0xff, 0x90, 0x40, 0x8e, 0xb2, 0x19, 0x3d, 0x81, 0x9d, 0x99, 0x47, 0xdc, 0xaf, 0x96,
0xc9, 0x1f, 0x54, 0xd9, 0x83, 0xb4, 0x72, 0x27, 0x1c, 0x11, 0xa6, 0x7f, 0x65, 0x16, 0x2f, 0xd0,
0x53, 0x00, 0xc7, 0xa5, 0x1e, 0xe1, 0xb7, 0xef, 0x87, 0x15, 0x55, 0x5d, 0x53, 0x38, 0x9a, 0x83,
0x08, 0x89, 0x13, 0x52, 0x87, 0x6d, 0x80, 0x98, 0x83, 0x7e, 0x08, 0x72, 0xc4, 0x0b, 0xeb, 0x47,
0xa6, 0x12, 0x45, 0x60, 0x1c, 0x23, 0x55, 0x17, 0x2a, 0x09, 0x25, 0xd1, 0xb7, 0x00, 0xec, 0xb9,
0xa5, 0x9b, 0x64, 0x11, 0x94, 0x21, 0x5e, 0xf3, 0x64, 0x7b, 0x6e, 0xf5, 0x04, 0x01, 0xdd, 0x82,
0x8a, 0x61, 0xbb, 0x73, 0xa6, 0xfb, 0xc6, 0x6f, 0x68, 0x70, 0x21, 0x65, 0x0c, 0x82, 0x34, 0xe4,
0x14, 0x74, 0x1b, 0x76, 0x9c, 0x39, 0x8b, 0x11, 0x45, 0x81, 0xa8, 0x04, 0x34, 0x01, 0x11, 0x6e,
0x8c, 0x54, 0xe1, 0x01, 0x11, 0x29, 0xa3, 0x47, 0x79, 0x2a, 0xe3, 0x6a, 0x44, 0x15, 0x75, 0x67,
0xb0, 0xda, 0xd6, 0x02, 0xa7, 0xdd, 0x59, 0x63, 0xe3, 0x3b, 0x3a, 0xda, 0xff, 0xba, 0x02, 0xff,
0x16, 0xca, 0xa2, 0x2d, 0xe4, 0x86, 0xd3, 0xfd, 0x54, 0x63, 0xcf, 0xdc, 0x8a, 0x10, 0x8b, 0x7b,
0x3a, 0x7a, 0x08, 0x5b, 0x3e, 0x23, 0x6c, 0xee, 0x87, 0x95, 0xf5, 0x20, 0x0f, 0x2e, 0x00, 0x38,
0x04, 0xaa, 0xbf, 0x2f, 0x80, 0x1c, 0x6d, 0xf3, 0x3e, 0xbd, 0x9a, 0xc0, 0x7e, 0xec, 0x65, 0xe2,
0xfb, 0xc6, 0xcc, 0xe6, 0x13, 0xc2, 0x52, 0x95, 0x07, 0x6b, 0x34, 0x8f, 0xfd, 0xd2, 0x8a, 0x65,
0x70, 0xdd, 0xcd, 0xa1, 0x1e, 0x7e, 0x09, 0xf5, 0x3c, 0x34, 0x6a, 0x43, 0x25, 0x79, 0x60, 0xe0,
0xfe, 0xdb, 0x6b, 0xdc, 0x1f, 0x0b, 0xe2, 0xa4, 0x94, 0xfa, 0x13, 0xd8, 0xcb, 0xc1, 0x5c, 0x22,
0xc5, 0xff, 0x59, 0x80, 0x4a, 0xc2, 0xc3, 0x3c, 0x1d, 0x7c, 0x46, 0x3c, 0xa6, 0x33, 0x23, 0x92,
0x97, 0x05, 0x65, 0x64, 0x58, 0x14, 0x7d, 0x02, 0xbb, 0x13, 0xc7, 0x72, 0x4d, 0x1a, 0x44, 0x2f,
// 1802 bytes of a gzipped FileDescriptorProto
0x1f, 0x8b, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0xff, 0xbc, 0x58, 0xdd, 0x72, 0x1b, 0x49,
0x15, 0xce, 0xe8, 0xc7, 0xce, 0x1c, 0x59, 0xf2, 0xa4, 0x2d, 0xef, 0xca, 0xce, 0xb2, 0x71, 0x06,
0xc8, 0x86, 0x24, 0x25, 0x36, 0xa6, 0x48, 0x85, 0xda, 0x50, 0xa0, 0x48, 0x13, 0x97, 0xb2, 0xb2,
0xe4, 0xb4, 0x64, 0xc8, 0xb2, 0x54, 0x4d, 0xb5, 0xa4, 0x8e, 0x76, 0xc2, 0xfc, 0x31, 0xd3, 0x4a,
0x45, 0x70, 0x49, 0x2d, 0x77, 0xdc, 0x71, 0xc5, 0x2b, 0x70, 0xc9, 0x0b, 0x70, 0xc5, 0x03, 0x50,
0x54, 0xc1, 0x2d, 0x0f, 0xc0, 0x3b, 0x50, 0xdd, 0x33, 0x9a, 0x3f, 0x8d, 0x14, 0xdb, 0x81, 0xbd,
0x9b, 0x3e, 0xe7, 0x3b, 0xdd, 0xe7, 0xaf, 0xcf, 0x39, 0x3d, 0x20, 0x13, 0xd7, 0x68, 0xba, 0x9e,
0xc3, 0x1c, 0xb4, 0xc3, 0x3f, 0xdf, 0x3c, 0x6c, 0x8e, 0x29, 0x23, 0x0f, 0x55, 0x0c, 0xa0, 0xbd,
0x75, 0xa9, 0x67, 0x58, 0xd4, 0x66, 0x08, 0x41, 0xc9, 0x26, 0x16, 0x6d, 0x48, 0x47, 0xd2, 0x5d,
0x19, 0x8b, 0x6f, 0xf4, 0x29, 0x94, 0x7c, 0x97, 0x4e, 0x1a, 0x85, 0x23, 0xe9, 0x6e, 0xe5, 0xf8,
0xa3, 0x66, 0x52, 0xbc, 0x19, 0xcb, 0x0e, 0x5d, 0x3a, 0xc1, 0x02, 0xa9, 0x7e, 0x5d, 0x82, 0x5a,
0x9a, 0x81, 0x46, 0xb0, 0xeb, 0x12, 0x8f, 0x58, 0x94, 0x51, 0x4f, 0xe7, 0x20, 0x5f, 0x9c, 0x51,
0x39, 0xbe, 0xbf, 0x69, 0xbf, 0xe6, 0xd9, 0x52, 0x86, 0xaf, 0x7c, 0x5c, 0x73, 0x53, 0x6b, 0xf4,
0x23, 0x90, 0x9d, 0xf1, 0x6b, 0x3a, 0x61, 0xc6, 0x1b, 0x1a, 0xea, 0x77, 0x33, 0xbd, 0xdf, 0x60,
0xc9, 0x16, 0xea, 0xc5, 0x68, 0x2e, 0x4a, 0xcc, 0x99, 0xe3, 0x19, 0xec, 0x2b, 0xab, 0x51, 0xcc,
0x13, 0x6d, 0x2d, 0xd9, 0x81, 0x68, 0x84, 0x46, 0xcf, 0xa0, 0x46, 0x89, 0x67, 0x2e, 0x74, 0x9f,
0x39, 0xae, 0x6b, 0xd8, 0xb3, 0x46, 0x49, 0xc8, 0xdf, 0xca, 0x98, 0xc2, 0x31, 0xc3, 0x10, 0x22,
0xf6, 0xa8, 0xd2, 0x24, 0x09, 0x7d, 0x0a, 0x75, 0x6e, 0x8f, 0x69, 0x52, 0x53, 0x67, 0x9e, 0x41,
0x4c, 0x7d, 0xe2, 0xcc, 0x6d, 0xd6, 0x28, 0x1f, 0x49, 0x77, 0xcb, 0x18, 0x2d, 0x79, 0x23, 0xce,
0x6a, 0x73, 0x0e, 0xba, 0x03, 0xbb, 0x16, 0x79, 0x9b, 0x02, 0x6f, 0x09, 0x70, 0xd5, 0x22, 0x6f,
0x13, 0xb8, 0x47, 0x00, 0x36, 0xf1, 0xf5, 0x89, 0x63, 0xbf, 0x32, 0x66, 0x8d, 0x6d, 0xa1, 0xdd,
0x87, 0x69, 0xed, 0xfa, 0xc4, 0x6f, 0x0b, 0x36, 0x96, 0xed, 0xe5, 0xe7, 0xe1, 0x29, 0xd4, 0xd2,
0x1e, 0x47, 0x9f, 0x01, 0x44, 0x3e, 0xe7, 0x21, 0x2b, 0xae, 0xfa, 0x29, 0x25, 0x81, 0x13, 0x70,
0xf5, 0xcf, 0x12, 0x54, 0x53, 0xdc, 0xdc, 0xfc, 0x7a, 0x0a, 0x71, 0x58, 0x75, 0xb6, 0x70, 0x83,
0x48, 0xd6, 0xd6, 0x1e, 0x33, 0x5a, 0xb8, 0x14, 0x57, 0xdd, 0xe4, 0x92, 0xef, 0xf1, 0x8a, 0x12,
0xdf, 0x18, 0x9b, 0x54, 0xf7, 0x5d, 0x32, 0xa1, 0xf9, 0x21, 0x7d, 0x16, 0x62, 0x86, 0x1c, 0x82,
0xab, 0xaf, 0x92, 0x4b, 0xf5, 0x4b, 0xa8, 0xa6, 0xf8, 0x48, 0x81, 0xa2, 0x45, 0xde, 0x86, 0xba,
0xf2, 0x4f, 0x41, 0x31, 0x6c, 0xa1, 0x1f, 0xa7, 0x18, 0x36, 0x37, 0xc8, 0x34, 0x7c, 0xd6, 0x28,
0x1e, 0x15, 0xb9, 0x41, 0xfc, 0x9b, 0xd3, 0x7c, 0x46, 0x5d, 0x91, 0x15, 0x32, 0x16, 0xdf, 0xea,
0x5f, 0x25, 0xa8, 0xa6, 0x72, 0x11, 0x7d, 0x1f, 0x4a, 0xc2, 0x58, 0x29, 0xcf, 0xd8, 0x08, 0x2a,
0x8c, 0x15, 0x40, 0xbe, 0xed, 0xcc, 0x21, 0xa6, 0x38, 0x5d, 0xc2, 0xe2, 0x1b, 0x1d, 0xc3, 0x7e,
0x94, 0xd2, 0xba, 0x45, 0x99, 0x67, 0x4c, 0x74, 0xe1, 0xe0, 0xa2, 0x38, 0x7b, 0x2f, 0x62, 0x9e,
0x0a, 0x5e, 0x9f, 0xfb, 0xfb, 0x11, 0x7c, 0x48, 0xa6, 0x53, 0x83, 0x19, 0x8e, 0x4d, 0xcc, 0xa4,
0x90, 0xdf, 0x28, 0x09, 0x2b, 0xf6, 0x63, 0x76, 0x2c, 0xe6, 0xab, 0x5f, 0x4b, 0x50, 0x4d, 0xdd,
0x09, 0xf4, 0x5d, 0xa8, 0x45, 0xb7, 0x42, 0x4f, 0xc4, 0xb5, 0x1a, 0x51, 0xc5, 0x81, 0xa7, 0x80,
0x62, 0x98, 0x4f, 0x19, 0x33, 0xec, 0x99, 0xdf, 0x28, 0x88, 0x5c, 0xfa, 0x78, 0xdd, 0x9d, 0x0b,
0x60, 0xf8, 0x06, 0xc9, 0x50, 0x7c, 0xf5, 0x09, 0x28, 0x59, 0x58, 0x6e, 0x5e, 0xd5, 0xa1, 0xfc,
0x86, 0x98, 0x73, 0x1a, 0x86, 0x2b, 0x58, 0xa8, 0x7f, 0x90, 0xe0, 0xc6, 0xca, 0xcd, 0xbc, 0xa8,
0x25, 0x2f, 0x36, 0x58, 0xa2, 0x6e, 0xba, 0xfd, 0xeb, 0xad, 0xf9, 0x29, 0xd4, 0xf3, 0xa0, 0x97,
0xb0, 0xe8, 0xef, 0x12, 0xc8, 0xd1, 0x6d, 0x46, 0x4f, 0x60, 0x67, 0xe6, 0x11, 0xf7, 0xab, 0xe5,
0xe5, 0x0f, 0xaa, 0xec, 0x41, 0x5a, 0xb9, 0x13, 0x8e, 0x08, 0xaf, 0x7f, 0x65, 0x16, 0x2f, 0xd0,
0x53, 0x00, 0xc7, 0xa5, 0x1e, 0xe1, 0xd1, 0xf7, 0xc3, 0x8a, 0xaa, 0xae, 0x29, 0x1c, 0xcd, 0x41,
0x84, 0xc4, 0x09, 0xa9, 0xc3, 0x36, 0x40, 0xcc, 0x41, 0x3f, 0x04, 0x39, 0xe2, 0x85, 0xf5, 0x23,
0x53, 0x89, 0x22, 0x30, 0x8e, 0x91, 0xaa, 0x0b, 0x95, 0x84, 0x92, 0xe8, 0x5b, 0x00, 0xf6, 0xdc,
0xd2, 0x4d, 0xb2, 0x08, 0xca, 0x10, 0xaf, 0x79, 0xb2, 0x3d, 0xb7, 0x7a, 0x82, 0x80, 0x6e, 0x41,
0xc5, 0xb0, 0xdd, 0x39, 0xd3, 0x7d, 0xe3, 0x37, 0x34, 0x08, 0x48, 0x19, 0x83, 0x20, 0x0d, 0x39,
0x05, 0xdd, 0x86, 0x1d, 0x67, 0xce, 0x62, 0x44, 0x51, 0x20, 0x2a, 0x01, 0x4d, 0x40, 0x84, 0x1b,
0x23, 0x55, 0x78, 0x42, 0x44, 0xca, 0xe8, 0xd1, 0x3d, 0x95, 0x71, 0x35, 0xa2, 0x8a, 0xba, 0x33,
0x58, 0x6d, 0x6b, 0x81, 0xd3, 0xee, 0xac, 0xb1, 0xf1, 0x1d, 0x1d, 0xed, 0x7f, 0x5d, 0x81, 0x7f,
0x0b, 0x65, 0xd1, 0x16, 0x72, 0xd3, 0xe9, 0x7e, 0xaa, 0xb1, 0x67, 0xa2, 0x22, 0xc4, 0xe2, 0x9e,
0x8e, 0x1e, 0xc2, 0x96, 0xcf, 0x08, 0x9b, 0xfb, 0x61, 0x65, 0x3d, 0xc8, 0x83, 0x0b, 0x00, 0x0e,
0x81, 0xea, 0xef, 0x0b, 0x20, 0x47, 0xdb, 0xbc, 0x4f, 0xaf, 0x26, 0xb0, 0x1f, 0x7b, 0x99, 0xf8,
0xbe, 0x31, 0xb3, 0xf9, 0x84, 0xb0, 0x54, 0xe5, 0xc1, 0x1a, 0xcd, 0x63, 0xbf, 0xb4, 0x62, 0x19,
0x5c, 0x77, 0x73, 0xa8, 0x87, 0x5f, 0x42, 0x3d, 0x0f, 0x8d, 0xda, 0x50, 0x49, 0x1e, 0x18, 0xb8,
0xff, 0xf6, 0x1a, 0xf7, 0xc7, 0x82, 0x38, 0x29, 0xa5, 0xfe, 0x04, 0xf6, 0x72, 0x30, 0x97, 0xb8,
0xe2, 0xff, 0x28, 0x40, 0x25, 0xe1, 0x61, 0x7e, 0x1d, 0x7c, 0x46, 0x3c, 0xa6, 0x33, 0x23, 0x92,
0x97, 0x05, 0x65, 0x64, 0x58, 0x14, 0x7d, 0x02, 0xbb, 0x13, 0xc7, 0x72, 0x4d, 0x1a, 0x64, 0x2f,
0xc7, 0x04, 0xdb, 0xd5, 0x62, 0xb2, 0x00, 0x3e, 0x07, 0x79, 0xe2, 0xd8, 0x41, 0xb1, 0x17, 0xce,
0xac, 0xe5, 0x3b, 0x53, 0x9c, 0xda, 0x0c, 0x07, 0x8c, 0x10, 0x2f, 0x3a, 0x53, 0x2c, 0x8e, 0x3e,
0x83, 0x8a, 0x33, 0xf6, 0xa9, 0xf7, 0x26, 0x48, 0xf5, 0x52, 0x5e, 0x94, 0x0c, 0x62, 0x00, 0x4e,
0xa2, 0x55, 0x06, 0x68, 0x75, 0x77, 0x54, 0x81, 0xed, 0x36, 0xd6, 0x5a, 0x23, 0xad, 0xa3, 0x5c,
0xe3, 0x0b, 0x7c, 0xde, 0xef, 0x77, 0xfb, 0x27, 0x8a, 0x84, 0xaa, 0x20, 0x0f, 0xcf, 0xdb, 0x6d,
0x4d, 0xeb, 0x68, 0x1d, 0xa5, 0x80, 0x00, 0xb6, 0x3e, 0xef, 0xf6, 0x7a, 0x5a, 0x47, 0x29, 0xf2,
0xef, 0x67, 0xad, 0x2e, 0xff, 0x2e, 0x21, 0x05, 0x76, 0xb4, 0x16, 0xee, 0x7d, 0x31, 0x1c, 0x0d,
0xce, 0xce, 0xb4, 0x8e, 0x52, 0xe6, 0xbb, 0x9c, 0xf7, 0x3f, 0xef, 0x0f, 0x7e, 0xde, 0x57, 0xb6,
0xd4, 0x1f, 0x43, 0x25, 0xa1, 0x11, 0x6a, 0xc2, 0x76, 0xd0, 0x0d, 0x97, 0xf7, 0x5c, 0x4f, 0x6b,
0x1f, 0x34, 0x43, 0xbc, 0x04, 0xa9, 0xc7, 0xb0, 0x15, 0x90, 0x2e, 0x71, 0x93, 0xbf, 0x93, 0xe0,
0x26, 0xa6, 0xae, 0xe3, 0xb1, 0xc4, 0xc9, 0x3d, 0x67, 0x86, 0xe9, 0xaf, 0xe7, 0xd4, 0x67, 0xfc,
0x66, 0x83, 0xe9, 0x2e, 0xb1, 0x9f, 0x2c, 0x28, 0xa2, 0x01, 0x69, 0xb0, 0x9b, 0x70, 0x9b, 0x6e,
0x3a, 0xb3, 0xfc, 0xb1, 0x3c, 0xb3, 0x79, 0xcd, 0x49, 0xad, 0xd5, 0x9b, 0x70, 0x90, 0xaf, 0x84,
0x6b, 0x2e, 0xd4, 0xe7, 0x50, 0x4b, 0x93, 0xd1, 0x63, 0xa8, 0x84, 0x63, 0x82, 0xe9, 0xcc, 0xfc,
0xfc, 0x2a, 0x1e, 0x78, 0x82, 0x6f, 0x02, 0xd6, 0xf2, 0xd3, 0x57, 0x5f, 0x82, 0x1c, 0x31, 0x84,
0x6d, 0x86, 0x45, 0x75, 0x9f, 0x11, 0xcb, 0x8d, 0x6c, 0x33, 0x2c, 0x3a, 0xe4, 0x04, 0xf4, 0x00,
0xb6, 0x02, 0xc9, 0xd0, 0xa4, 0x7c, 0xef, 0x87, 0x18, 0xf5, 0x8f, 0x12, 0x34, 0x4e, 0xe8, 0xd5,
0xbc, 0x78, 0x2b, 0xb2, 0x47, 0xf0, 0x83, 0x0b, 0x0a, 0xd5, 0x16, 0x80, 0x74, 0x7e, 0x15, 0xb3,
0xf9, 0x75, 0x00, 0xd7, 0xa9, 0x3d, 0x0d, 0x98, 0xc1, 0x90, 0xb7, 0x4d, 0xed, 0x29, 0x67, 0xa9,
0x3a, 0x7c, 0x90, 0xa3, 0x95, 0x6b, 0x2e, 0xf2, 0xae, 0x4e, 0xba, 0xc2, 0xd5, 0x3d, 0x81, 0x9b,
0x1d, 0x6a, 0x52, 0x46, 0xaf, 0x62, 0x39, 0xbf, 0xf8, 0x7c, 0x69, 0x7e, 0xf1, 0x7f, 0x96, 0x60,
0xff, 0x84, 0xb2, 0xe1, 0x7c, 0x36, 0xa3, 0x7e, 0xd0, 0xd7, 0xc3, 0x5d, 0x1f, 0x03, 0xd0, 0xe8,
0x61, 0x16, 0xaa, 0xdd, 0x58, 0xf7, 0x70, 0xc3, 0x09, 0x2c, 0xba, 0x0f, 0x5b, 0xe2, 0xf4, 0xe5,
0x94, 0xb4, 0x97, 0x53, 0x5e, 0x70, 0x08, 0xe1, 0x4d, 0xd7, 0x0b, 0x4e, 0xd4, 0xed, 0xb9, 0x35,
0xa6, 0x9e, 0x70, 0x7d, 0x19, 0x57, 0x43, 0x6a, 0x5f, 0x10, 0xd5, 0xff, 0x14, 0x60, 0x2f, 0xab,
0x27, 0xf7, 0xf0, 0xaf, 0xd6, 0xb5, 0x89, 0x20, 0x60, 0x1f, 0x65, 0x66, 0xa0, 0xd5, 0x1d, 0x2e,
0xd1, 0x30, 0xd2, 0xef, 0xc7, 0xc2, 0xa5, 0xde, 0x8f, 0x2f, 0xa0, 0x9e, 0x7e, 0x3f, 0xea, 0xde,
0xdc, 0x0c, 0x87, 0x92, 0xcd, 0xaf, 0x48, 0x3c, 0x37, 0x29, 0x46, 0x34, 0x4b, 0xfa, 0x3f, 0xb7,
0xaf, 0x5f, 0xc2, 0xd1, 0xcf, 0x88, 0x69, 0x4c, 0x09, 0xa3, 0xd9, 0xc1, 0xfb, 0xfd, 0x23, 0x44,
0x3d, 0x82, 0x8f, 0x37, 0xec, 0xce, 0xe3, 0xf2, 0xaf, 0x12, 0x7c, 0x74, 0x42, 0xd9, 0x8a, 0x27,
0xbe, 0xe9, 0xf0, 0x7c, 0x00, 0x68, 0x3a, 0xd6, 0x2d, 0x62, 0x93, 0x19, 0x0f, 0xb0, 0xe9, 0xd4,
0xa3, 0xbe, 0x1f, 0x56, 0x07, 0x65, 0x3a, 0x3e, 0x0d, 0x18, 0xad, 0x80, 0xae, 0x3a, 0x70, 0xb8,
0x46, 0x69, 0x1e, 0xab, 0xeb, 0x62, 0x40, 0xba, 0x72, 0x0c, 0xa8, 0x7f, 0xca, 0xbe, 0x6c, 0x38,
0xf9, 0xe2, 0xad, 0x09, 0x3d, 0x01, 0xe0, 0xe3, 0x01, 0xf1, 0x0c, 0x3f, 0x9a, 0x06, 0x32, 0xb5,
0xa9, 0x1d, 0xf1, 0x45, 0xf7, 0x4f, 0xe0, 0xe3, 0x92, 0x19, 0x3d, 0x7d, 0xcb, 0x61, 0xc9, 0x1c,
0xf2, 0xf7, 0xef, 0x23, 0xd8, 0x1f, 0x52, 0x96, 0x9c, 0x12, 0x2f, 0x56, 0xb0, 0xf6, 0x61, 0x2f,
0x2b, 0xe7, 0x9a, 0x8b, 0x7b, 0xe7, 0x89, 0x1f, 0x0b, 0x62, 0x54, 0x50, 0x60, 0x27, 0xec, 0xeb,
0xfa, 0xe8, 0x8b, 0x33, 0x4d, 0xb9, 0xc6, 0xe7, 0x80, 0xce, 0xe0, 0xfc, 0x69, 0x4f, 0x53, 0x24,
0xb4, 0x0d, 0xc5, 0x6e, 0x7f, 0xa4, 0x14, 0xd0, 0x0e, 0x5c, 0xef, 0x74, 0x87, 0x6d, 0xac, 0x8d,
0x34, 0xa5, 0x88, 0x76, 0xa1, 0xd2, 0x6e, 0x8d, 0xb4, 0x93, 0x01, 0xee, 0xb6, 0x5b, 0x3d, 0xa5,
0x74, 0xef, 0x71, 0xe2, 0x91, 0xbe, 0x9c, 0x40, 0x96, 0xe3, 0xc2, 0x35, 0x2e, 0x7c, 0xda, 0xed,
0x77, 0x4f, 0xbb, 0xbf, 0xe0, 0x7b, 0xf2, 0x55, 0xeb, 0x65, 0xb0, 0x2a, 0xdc, 0x7b, 0x0e, 0xb5,
0xb4, 0x73, 0xd0, 0x07, 0x80, 0x96, 0x1a, 0xb5, 0x07, 0xa7, 0x67, 0x2d, 0xdc, 0x1d, 0x0e, 0xf8,
0x2e, 0x32, 0x94, 0xb5, 0x17, 0xe7, 0xad, 0x9e, 0x22, 0xa1, 0xeb, 0x50, 0xea, 0x69, 0xc3, 0xa1,
0x52, 0xe0, 0xe7, 0x9c, 0x88, 0x49, 0x07, 0x2b, 0xc5, 0xe3, 0xbf, 0x17, 0x40, 0xee, 0x3c, 0x0d,
0xc3, 0x09, 0xbd, 0x86, 0x7a, 0x5e, 0xaf, 0x46, 0xdf, 0x4b, 0x5f, 0xcd, 0x86, 0xa1, 0xe2, 0xf0,
0x93, 0x8b, 0x40, 0x79, 0x54, 0x12, 0xb8, 0xb1, 0xd2, 0xbd, 0xd0, 0x9d, 0x95, 0xba, 0x99, 0x7f,
0xca, 0x77, 0xde, 0x89, 0xe3, 0x47, 0xbc, 0x86, 0x7a, 0x5e, 0x07, 0xca, 0x9a, 0xb3, 0xa1, 0xc7,
0x65, 0xcd, 0x59, 0xdb, 0xd0, 0x8e, 0xff, 0x2d, 0x01, 0xc4, 0x35, 0x1e, 0xbd, 0x84, 0x5a, 0xba,
0xe8, 0xa3, 0x6f, 0x6f, 0x6e, 0x09, 0xc1, 0x71, 0xb7, 0xdf, 0xd9, 0x37, 0xd0, 0x02, 0x0e, 0xd6,
0xd6, 0x30, 0xd4, 0x4c, 0xcb, 0xbf, 0xab, 0x94, 0x1e, 0x3e, 0xb8, 0x30, 0x9e, 0xdb, 0xf8, 0x2f,
0x09, 0xaa, 0xa9, 0xac, 0x47, 0x96, 0xe8, 0xe2, 0xab, 0x85, 0x07, 0xdd, 0x5b, 0x31, 0x64, 0x6d,
0x49, 0x3d, 0xbc, 0x7b, 0x21, 0x2c, 0xb7, 0xfd, 0x25, 0xd4, 0xd2, 0x19, 0x9a, 0xf5, 0x6a, 0x6e,
0xde, 0x67, 0xbd, 0x9a, 0x93, 0xe4, 0xe3, 0x2d, 0xf1, 0xbf, 0xfa, 0x07, 0xff, 0x0d, 0x00, 0x00,
0xff, 0xff, 0xa9, 0x26, 0x35, 0x4f, 0xbc, 0x16, 0x00, 0x00,
0x83, 0x8a, 0x33, 0xf6, 0xa9, 0xf7, 0x26, 0xb8, 0xea, 0xa5, 0xbc, 0x2c, 0x19, 0xc4, 0x00, 0x9c,
0x44, 0xab, 0x0c, 0xd0, 0xea, 0xee, 0xa8, 0x02, 0xdb, 0x6d, 0xac, 0xb5, 0x46, 0x5a, 0x47, 0xb9,
0xc6, 0x17, 0xf8, 0xbc, 0xdf, 0xef, 0xf6, 0x4f, 0x14, 0x09, 0x55, 0x41, 0x1e, 0x9e, 0xb7, 0xdb,
0x9a, 0xd6, 0xd1, 0x3a, 0x4a, 0x01, 0x01, 0x6c, 0x7d, 0xde, 0xed, 0xf5, 0xb4, 0x8e, 0x52, 0xe4,
0xdf, 0xcf, 0x5a, 0x5d, 0xfe, 0x5d, 0x42, 0x0a, 0xec, 0x68, 0x2d, 0xdc, 0xfb, 0x62, 0x38, 0x1a,
0x9c, 0x9d, 0x69, 0x1d, 0xa5, 0xcc, 0x77, 0x39, 0xef, 0x7f, 0xde, 0x1f, 0xfc, 0xbc, 0xaf, 0x6c,
0xa9, 0x3f, 0x86, 0x4a, 0x42, 0x23, 0xd4, 0x84, 0xed, 0xa0, 0x1b, 0x2e, 0xe3, 0x5c, 0x4f, 0x6b,
0x1f, 0x34, 0x43, 0xbc, 0x04, 0xa9, 0xc7, 0xb0, 0x15, 0x90, 0x2e, 0x11, 0xc9, 0xdf, 0x49, 0x70,
0x13, 0x53, 0xd7, 0xf1, 0x58, 0xe2, 0xe4, 0x9e, 0x33, 0xc3, 0xf4, 0xd7, 0x73, 0xea, 0x33, 0x1e,
0xd9, 0x60, 0xba, 0x4b, 0xec, 0x27, 0x0b, 0x8a, 0x68, 0x40, 0x1a, 0xec, 0x26, 0xdc, 0xa6, 0x9b,
0xce, 0x2c, 0x7f, 0x2c, 0xcf, 0x6c, 0x5e, 0x73, 0x52, 0x6b, 0xf5, 0x26, 0x1c, 0xe4, 0x2b, 0xe1,
0x9a, 0x0b, 0xf5, 0x39, 0xd4, 0xd2, 0x64, 0xf4, 0x18, 0x2a, 0xe1, 0x98, 0x60, 0x3a, 0x33, 0x3f,
0xbf, 0x8a, 0x07, 0x9e, 0xe0, 0x9b, 0x80, 0xb5, 0xfc, 0xf4, 0xd5, 0x97, 0x20, 0x47, 0x0c, 0x61,
0x9b, 0x61, 0x51, 0xdd, 0x67, 0xc4, 0x72, 0x23, 0xdb, 0x0c, 0x8b, 0x0e, 0x39, 0x01, 0x3d, 0x80,
0xad, 0x40, 0x32, 0x34, 0x29, 0xdf, 0xfb, 0x21, 0x46, 0xfd, 0xa3, 0x04, 0x8d, 0x13, 0x7a, 0x35,
0x2f, 0xde, 0x8a, 0xec, 0x11, 0xfc, 0x20, 0x40, 0xa1, 0xda, 0x02, 0x90, 0xbe, 0x5f, 0xc5, 0xec,
0xfd, 0x3a, 0x80, 0xeb, 0xd4, 0x9e, 0x06, 0xcc, 0x60, 0xc8, 0xdb, 0xa6, 0xf6, 0x94, 0xb3, 0x54,
0x1d, 0x3e, 0xc8, 0xd1, 0xca, 0x35, 0x17, 0x79, 0xa1, 0x93, 0xae, 0x10, 0xba, 0x27, 0x70, 0xb3,
0x43, 0x4d, 0xca, 0xe8, 0x55, 0x2c, 0xe7, 0x81, 0xcf, 0x97, 0xe6, 0x81, 0xff, 0xa7, 0x04, 0xfb,
0x27, 0x94, 0x0d, 0xe7, 0xb3, 0x19, 0xf5, 0x83, 0xbe, 0x1e, 0xee, 0xfa, 0x18, 0x80, 0x46, 0x0f,
0xb3, 0x50, 0xed, 0xc6, 0xba, 0x87, 0x1b, 0x4e, 0x60, 0xd1, 0x7d, 0xd8, 0x12, 0xa7, 0x2f, 0xa7,
0xa4, 0xbd, 0x9c, 0xf2, 0x82, 0x43, 0x08, 0x6f, 0xba, 0x5e, 0x70, 0xa2, 0x6e, 0xcf, 0xad, 0x31,
0xf5, 0x84, 0xeb, 0xcb, 0xb8, 0x1a, 0x52, 0xfb, 0x82, 0xc8, 0xdf, 0x4d, 0xcc, 0x61, 0xc4, 0xd4,
0x33, 0xe0, 0x52, 0xf0, 0x6e, 0x12, 0x3c, 0x9c, 0x94, 0x50, 0xff, 0x53, 0x80, 0xbd, 0xac, 0x65,
0x3c, 0x26, 0xbf, 0x5a, 0xd7, 0x58, 0x82, 0x14, 0x7f, 0x94, 0x99, 0x9a, 0x56, 0x77, 0xb8, 0x44,
0x8b, 0x49, 0xbf, 0x38, 0x0b, 0x97, 0x7a, 0x71, 0xbe, 0x80, 0x7a, 0xfa, 0xc5, 0xa9, 0x7b, 0x73,
0x33, 0x1c, 0x63, 0x36, 0xbf, 0x3b, 0xf1, 0xdc, 0xa4, 0x18, 0xd1, 0x2c, 0xe9, 0xff, 0xdc, 0xf0,
0x7e, 0x09, 0x47, 0x3f, 0x23, 0xa6, 0x31, 0x25, 0x8c, 0x66, 0x47, 0xf5, 0xf7, 0xcf, 0x29, 0xf5,
0x08, 0x3e, 0xde, 0xb0, 0x3b, 0xcf, 0xe4, 0xbf, 0x48, 0xf0, 0xd1, 0x09, 0x65, 0x2b, 0x9e, 0xf8,
0xa6, 0x13, 0xfa, 0x01, 0xa0, 0xe9, 0x58, 0xb7, 0x88, 0x4d, 0x66, 0x3c, 0xc1, 0xa6, 0x53, 0x8f,
0xfa, 0x7e, 0x58, 0x4f, 0x94, 0xe9, 0xf8, 0x34, 0x60, 0xb4, 0x02, 0xba, 0xea, 0xc0, 0xe1, 0x1a,
0xa5, 0x79, 0xae, 0xae, 0xcb, 0x01, 0xe9, 0xca, 0x39, 0xa0, 0xfe, 0x29, 0xfb, 0x16, 0xe2, 0xe4,
0x8b, 0x37, 0x33, 0xf4, 0x04, 0x80, 0x0f, 0x14, 0xc4, 0x33, 0xfc, 0x68, 0x7e, 0xc8, 0x54, 0xb3,
0x76, 0xc4, 0x17, 0xf3, 0x42, 0x02, 0x1f, 0x17, 0xd9, 0xe8, 0xb1, 0x5c, 0x0e, 0x8b, 0xec, 0x90,
0xbf, 0x98, 0x1f, 0xc1, 0xfe, 0x90, 0xb2, 0xe4, 0x5c, 0x79, 0xb1, 0x12, 0xb7, 0x0f, 0x7b, 0x59,
0x39, 0xd7, 0x5c, 0xdc, 0x3b, 0x4f, 0xfc, 0x8a, 0x10, 0xc3, 0x85, 0x02, 0x3b, 0xe1, 0x24, 0xa0,
0x8f, 0xbe, 0x38, 0xd3, 0x94, 0x6b, 0x7c, 0x72, 0xe8, 0x0c, 0xce, 0x9f, 0xf6, 0x34, 0x45, 0x42,
0xdb, 0x50, 0xec, 0xf6, 0x47, 0x4a, 0x01, 0xed, 0xc0, 0xf5, 0x4e, 0x77, 0xd8, 0xc6, 0xda, 0x48,
0x53, 0x8a, 0x68, 0x17, 0x2a, 0xed, 0xd6, 0x48, 0x3b, 0x19, 0xe0, 0x6e, 0xbb, 0xd5, 0x53, 0x4a,
0xf7, 0x1e, 0x27, 0x9e, 0xf5, 0xcb, 0x99, 0x65, 0x39, 0x60, 0x5c, 0xe3, 0xc2, 0xa7, 0xdd, 0x7e,
0xf7, 0xb4, 0xfb, 0x0b, 0xbe, 0x27, 0x5f, 0xb5, 0x5e, 0x06, 0xab, 0xc2, 0xbd, 0xe7, 0x50, 0x4b,
0x3b, 0x07, 0x7d, 0x00, 0x68, 0xa9, 0x51, 0x7b, 0x70, 0x7a, 0xd6, 0xc2, 0xdd, 0xe1, 0x80, 0xef,
0x22, 0x43, 0x59, 0x7b, 0x71, 0xde, 0xea, 0x29, 0x12, 0xba, 0x0e, 0xa5, 0x9e, 0x36, 0x1c, 0x2a,
0x05, 0x7e, 0xce, 0x89, 0x98, 0x8d, 0xb0, 0x52, 0x3c, 0xfe, 0x5b, 0x01, 0xe4, 0xce, 0xd3, 0x30,
0x9d, 0xd0, 0x6b, 0xa8, 0xe7, 0x75, 0x77, 0xf4, 0xbd, 0x74, 0x68, 0x36, 0x8c, 0x21, 0x87, 0x9f,
0x5c, 0x04, 0xca, 0xb3, 0x92, 0xc0, 0x8d, 0x95, 0x7e, 0x87, 0xee, 0xac, 0xd4, 0xcd, 0xfc, 0x53,
0xbe, 0xf3, 0x4e, 0x1c, 0x3f, 0xe2, 0x35, 0xd4, 0xf3, 0x7a, 0x56, 0xd6, 0x9c, 0x0d, 0x5d, 0x31,
0x6b, 0xce, 0xda, 0x16, 0x78, 0xfc, 0x6f, 0x09, 0x20, 0xae, 0xf1, 0xe8, 0x25, 0xd4, 0xd2, 0x45,
0x1f, 0x7d, 0x7b, 0x73, 0x4b, 0x08, 0x8e, 0xbb, 0xfd, 0xce, 0xbe, 0x81, 0x16, 0x70, 0xb0, 0xb6,
0x86, 0xa1, 0x66, 0x5a, 0xfe, 0x5d, 0xa5, 0xf4, 0xf0, 0xc1, 0x85, 0xf1, 0xdc, 0xc6, 0x7f, 0x49,
0x50, 0x4d, 0xdd, 0x7a, 0x64, 0x89, 0xbe, 0xbf, 0x5a, 0x78, 0xd0, 0xbd, 0x15, 0x43, 0xd6, 0x96,
0xd4, 0xc3, 0xbb, 0x17, 0xc2, 0x72, 0xdb, 0x5f, 0x42, 0x2d, 0x7d, 0x43, 0xb3, 0x5e, 0xcd, 0xbd,
0xf7, 0x59, 0xaf, 0xe6, 0x5c, 0xf2, 0xf1, 0x96, 0xf8, 0xc3, 0xfd, 0x83, 0xff, 0x06, 0x00, 0x00,
0xff, 0xff, 0xaf, 0xad, 0x46, 0x49, 0xee, 0x16, 0x00, 0x00,
}

View File

@ -290,6 +290,7 @@ message GetSuggestionsRequest {
Experiment experiment = 1;
repeated Trial trials = 2; // all completed trials owned by the experiment.
int32 request_number = 3; ///The number of Suggestion you request at one time. When you set 3 to request_number, you can get three Suggestions at one time.
int32 total_request_number = 4;//The number of Suggestions requested till now
}
message GetSuggestionsReply {

View File

@ -354,6 +354,7 @@ Discrete and Categorical type use List.
| experiment | [Experiment](#api.v1.beta1.Experiment) | | |
| trials | [Trial](#api.v1.beta1.Trial) | repeated | all completed trials owned by the experiment. |
| request_number | [int32](#int32) | | The number of Suggestion you request at one time. When you set 3 to request_number, you can get three Suggestions at one time. |
| total_request_number | [int32](#int32) | | The number of Suggestions requested till now |

View File

@ -975,6 +975,13 @@ If start step is empty, rule is applied from the first recorded metric. </p></td
<td><p>The number of Suggestion you request at one time. When you set 3 to request_number, you can get three Suggestions at one time. </p></td>
</tr>
<tr>
<td>total_request_number</td>
<td><a href="#int32">int32</a></td>
<td></td>
<td><p>The number of Suggestions requested till now </p></td>
</tr>
</tbody>
</table>

File diff suppressed because one or more lines are too long

View File

@ -102,9 +102,10 @@ func (g *General) SyncAssignments(
instance.Status.AlgorithmSettings)
requestSuggestion := &suggestionapi.GetSuggestionsRequest{
Experiment: g.ConvertExperiment(filledE),
Trials: g.ConvertTrials(ts),
RequestNumber: int32(requestNum),
Experiment: g.ConvertExperiment(filledE),
Trials: g.ConvertTrials(ts),
RequestNumber: int32(requestNum),
TotalRequestNumber: int32(instance.Spec.Requests),
}
// Get new suggestions
@ -112,11 +113,10 @@ func (g *General) SyncAssignments(
if err != nil {
return err
}
logger.Info("Getting suggestions", "endpoint", endpoint, "response", responseSuggestion,
"request", requestSuggestion)
logger.Info("Getting suggestions", "endpoint", endpoint, "Number of request parameters", requestNum, "Number of response parameters", len(responseSuggestion.ParameterAssignments))
if len(responseSuggestion.ParameterAssignments) != requestNum {
err := fmt.Errorf("The response contains unexpected trials")
logger.Error(err, "The response contains unexpected trials", "requestNum", requestNum, "response", responseSuggestion)
logger.Error(err, "The response contains unexpected trials")
return err
}

View File

@ -910,6 +910,7 @@ func newFakeRequest() *suggestionapi.GetSuggestionsRequest {
},
},
},
RequestNumber: 2,
RequestNumber: 2,
TotalRequestNumber: 6,
}
}

View File

@ -37,7 +37,13 @@
<mat-form-field appearance="outline" class="fit-content">
<mat-label>Source Type</mat-label>
<mat-select formControlName="type">
<mat-option value="configmap">ConfigMap</mat-option>
<mat-option
[disabled]="!templates.length"
[matTooltip]="!templates.length ? 'No Trial templates found' : ''"
value="configmap"
>
ConfigMap
</mat-option>
<mat-option value="yaml">YAML</mat-option>
</mat-select>
</mat-form-field>
@ -90,7 +96,7 @@
<mat-divider class="margin-bottom margin-top"></mat-divider>
<app-trial-parameter
*ngFor="let ctrl of trialParameters.controls"
*ngFor="let ctrl of trialParameters?.controls"
[formGroup]="ctrl"
></app-trial-parameter>
</div>

View File

@ -18,7 +18,7 @@ export class FormTrialTemplateComponent implements OnInit, OnDestroy {
public templates: ConfigMapResponse[] = [];
public configmaps: ConfigMapBody[] = [];
public paths: string[] = [];
public trialParameters: FormArray;
public trialParameters = new FormArray([]);
private selectedConfigMap: ConfigMapBody;
private subs = new Subscription();
private yamlPrv = '';
@ -53,6 +53,12 @@ export class FormTrialTemplateComponent implements OnInit, OnDestroy {
this.backend.getTrialTemplates('').subscribe(templates => {
this.templates = templates.Data;
this.formGroup.get('cmNamespace').setValue('kubeflow');
// Use the ConfigMap option if the TrialTemplates were successfully
// fetched
if (this.templates && this.templates.length) {
this.formGroup.get('type').setValue('configmap');
}
}),
);

View File

@ -212,7 +212,7 @@ export class ExperimentFormService {
createTrialTemplateForm(): FormGroup {
return this.builder.group({
type: 'configmap',
type: 'yaml',
podLabels: this.builder.array([]),
containerName: 'training-container',
successCond: 'status.conditions.#(type=="Complete")#|#(status=="True")#',

View File

@ -103,12 +103,12 @@ class BaseChocolateService(object):
raise Exception(
'"Failed to create Chocolate optimizer for the algorithm: {}'.format(algorithm_name))
def getSuggestions(self, trials, request_number):
def getSuggestions(self, trials, request_number, total_request_number):
"""
Get the new suggested trials with chocolate algorithm.
"""
logger.info("-" * 100 + "\n")
logger.info("New GetSuggestions call\n")
logger.info("New GetSuggestions call with total requested {} and currently requesting {} \n".format(total_request_number, request_number))
for _, trial in enumerate(trials):
if trial.name not in self.recorded_trials_names:
loss_for_choco = float(trial.target_metric.value)
@ -157,9 +157,25 @@ class BaseChocolateService(object):
logger.info("New record in sqlite DB is updated")
logger.info("{}\n".format(
self.created_trials[new_trial_loss_idx]))
# Assuming that created_trials are already populated
# TODO: Handle Restart of algorithm pod
logger.info("{} Trials created in DB".format(len(self.created_trials)))
if total_request_number != len(self.created_trials) + request_number:
logger.info("Mismatch in generated trials with k8s suggestions trials")
new_actual_requested_no = total_request_number - len(self.created_trials)
prev_generated_no = request_number - new_actual_requested_no
logger.info("In this call, New {} Trials will be generated, {} Trials will be reused from previously generated".format(new_actual_requested_no, prev_generated_no))
list_of_assignments = []
for i in range(request_number):
if prev_generated_no > 0:
for params in self.created_trials[-prev_generated_no:]:
if DB_FIELD_TRIAL_NAME in params:
logger.error("Trial already updated in selected assignment {}".format(params))
new_assignment = BaseChocolateService.convert(
self.search_space, params)
list_of_assignments.append(new_assignment)
for i in range(new_actual_requested_no):
try:
token, chocolate_params = self.chocolate_optimizer.next()
new_assignment = BaseChocolateService.convert(
@ -182,7 +198,7 @@ class BaseChocolateService(object):
if len(list_of_assignments) > 0:
logger.info(
"GetSuggestions returns {} new Trials\n\n".format(request_number))
"GetSuggestions returns {} Trials from requested {} Trials\n\n".format(len(list_of_assignments),request_number))
return list_of_assignments

View File

@ -84,7 +84,7 @@ class ChocolateService(api_pb2_grpc.SuggestionServicer, HealthServicer):
trials = Trial.convert(request.trials)
new_assignments = self.base_service.getSuggestions(
trials, request.request_number)
trials, request.request_number, request.total_request_number)
return api_pb2.GetSuggestionsReply(
parameter_assignments=Assignment.generate(new_assignments)
)

View File

@ -19,7 +19,7 @@ with open('requirements.txt') as f:
setuptools.setup(
name='kubeflow-katib',
version='0.10.1',
version='0.12.0',
author="Kubeflow Authors",
author_email='premnath.vel@gmail.com',
license="Apache License Version 2.0",

View File

@ -169,6 +169,7 @@ class TestChocolate(unittest.TestCase):
experiment=experiment,
trials=trials,
request_number=2,
total_request_number=2,
)
get_suggestion = self.test_server.invoke_unary_unary(