1// Copyright 2020 Google LLC 2// 3// Licensed under the Apache License, Version 2.0 (the "License"); 4// you may not use this file except in compliance with the License. 5// You may obtain a copy of the License at 6// 7// http://www.apache.org/licenses/LICENSE-2.0 8// 9// Unless required by applicable law or agreed to in writing, software 10// distributed under the License is distributed on an "AS IS" BASIS, 11// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 12// See the License for the specific language governing permissions and 13// limitations under the License. 14 15// Code generated by protoc-gen-go. DO NOT EDIT. 16// versions: 17// protoc-gen-go v1.25.0 18// protoc v3.13.0 19// source: google/cloud/aiplatform/v1beta1/explanation.proto 20 21package aiplatform 22 23import ( 24 reflect "reflect" 25 sync "sync" 26 27 proto "github.com/golang/protobuf/proto" 28 _ "google.golang.org/genproto/googleapis/api/annotations" 29 protoreflect "google.golang.org/protobuf/reflect/protoreflect" 30 protoimpl "google.golang.org/protobuf/runtime/protoimpl" 31 structpb "google.golang.org/protobuf/types/known/structpb" 32) 33 34const ( 35 // Verify that this generated code is sufficiently up-to-date. 36 _ = protoimpl.EnforceVersion(20 - protoimpl.MinVersion) 37 // Verify that runtime/protoimpl is sufficiently up-to-date. 38 _ = protoimpl.EnforceVersion(protoimpl.MaxVersion - 20) 39) 40 41// This is a compile-time assertion that a sufficiently up-to-date version 42// of the legacy proto package is being used. 43const _ = proto.ProtoPackageIsVersion4 44 45// Explanation of a prediction (provided in [PredictResponse.predictions][google.cloud.aiplatform.v1beta1.PredictResponse.predictions]) 46// produced by the Model on a given [instance][google.cloud.aiplatform.v1beta1.ExplainRequest.instances]. 47type Explanation struct { 48 state protoimpl.MessageState 49 sizeCache protoimpl.SizeCache 50 unknownFields protoimpl.UnknownFields 51 52 // Output only. Feature attributions grouped by predicted outputs. 53 // 54 // For Models that predict only one output, such as regression Models that 55 // predict only one score, there is only one attibution that explains the 56 // predicted output. For Models that predict multiple outputs, such as 57 // multiclass Models that predict multiple classes, each element explains one 58 // specific item. [Attribution.output_index][google.cloud.aiplatform.v1beta1.Attribution.output_index] can be used to identify which 59 // output this attribution is explaining. 60 // 61 // If users set [ExplanationParameters.top_k][google.cloud.aiplatform.v1beta1.ExplanationParameters.top_k], the attributions are sorted 62 // by [instance_output_value][Attributions.instance_output_value] in 63 // descending order. If [ExplanationParameters.output_indices][google.cloud.aiplatform.v1beta1.ExplanationParameters.output_indices] is specified, 64 // the attributions are stored by [Attribution.output_index][google.cloud.aiplatform.v1beta1.Attribution.output_index] in the same 65 // order as they appear in the output_indices. 66 Attributions []*Attribution `protobuf:"bytes,1,rep,name=attributions,proto3" json:"attributions,omitempty"` 67} 68 69func (x *Explanation) Reset() { 70 *x = Explanation{} 71 if protoimpl.UnsafeEnabled { 72 mi := &file_google_cloud_aiplatform_v1beta1_explanation_proto_msgTypes[0] 73 ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) 74 ms.StoreMessageInfo(mi) 75 } 76} 77 78func (x *Explanation) String() string { 79 return protoimpl.X.MessageStringOf(x) 80} 81 82func (*Explanation) ProtoMessage() {} 83 84func (x *Explanation) ProtoReflect() protoreflect.Message { 85 mi := &file_google_cloud_aiplatform_v1beta1_explanation_proto_msgTypes[0] 86 if protoimpl.UnsafeEnabled && x != nil { 87 ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) 88 if ms.LoadMessageInfo() == nil { 89 ms.StoreMessageInfo(mi) 90 } 91 return ms 92 } 93 return mi.MessageOf(x) 94} 95 96// Deprecated: Use Explanation.ProtoReflect.Descriptor instead. 97func (*Explanation) Descriptor() ([]byte, []int) { 98 return file_google_cloud_aiplatform_v1beta1_explanation_proto_rawDescGZIP(), []int{0} 99} 100 101func (x *Explanation) GetAttributions() []*Attribution { 102 if x != nil { 103 return x.Attributions 104 } 105 return nil 106} 107 108// Aggregated explanation metrics for a Model over a set of instances. 109type ModelExplanation struct { 110 state protoimpl.MessageState 111 sizeCache protoimpl.SizeCache 112 unknownFields protoimpl.UnknownFields 113 114 // Output only. Aggregated attributions explaning the Model's prediction outputs over the 115 // set of instances. The attributions are grouped by outputs. 116 // 117 // For Models that predict only one output, such as regression Models that 118 // predict only one score, there is only one attibution that explains the 119 // predicted output. For Models that predict multiple outputs, such as 120 // multiclass Models that predict multiple classes, each element explains one 121 // specific item. [Attribution.output_index][google.cloud.aiplatform.v1beta1.Attribution.output_index] can be used to identify which 122 // output this attribution is explaining. 123 // 124 // The [baselineOutputValue][google.cloud.aiplatform.v1beta1.Attribution.baseline_output_value], 125 // [instanceOutputValue][google.cloud.aiplatform.v1beta1.Attribution.instance_output_value] and 126 // [featureAttributions][google.cloud.aiplatform.v1beta1.Attribution.feature_attributions] fields are 127 // averaged over the test data. 128 // 129 // NOTE: Currently AutoML tabular classification Models produce only one 130 // attribution, which averages attributions over all the classes it predicts. 131 // [Attribution.approximation_error][google.cloud.aiplatform.v1beta1.Attribution.approximation_error] is not populated. 132 MeanAttributions []*Attribution `protobuf:"bytes,1,rep,name=mean_attributions,json=meanAttributions,proto3" json:"mean_attributions,omitempty"` 133} 134 135func (x *ModelExplanation) Reset() { 136 *x = ModelExplanation{} 137 if protoimpl.UnsafeEnabled { 138 mi := &file_google_cloud_aiplatform_v1beta1_explanation_proto_msgTypes[1] 139 ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) 140 ms.StoreMessageInfo(mi) 141 } 142} 143 144func (x *ModelExplanation) String() string { 145 return protoimpl.X.MessageStringOf(x) 146} 147 148func (*ModelExplanation) ProtoMessage() {} 149 150func (x *ModelExplanation) ProtoReflect() protoreflect.Message { 151 mi := &file_google_cloud_aiplatform_v1beta1_explanation_proto_msgTypes[1] 152 if protoimpl.UnsafeEnabled && x != nil { 153 ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) 154 if ms.LoadMessageInfo() == nil { 155 ms.StoreMessageInfo(mi) 156 } 157 return ms 158 } 159 return mi.MessageOf(x) 160} 161 162// Deprecated: Use ModelExplanation.ProtoReflect.Descriptor instead. 163func (*ModelExplanation) Descriptor() ([]byte, []int) { 164 return file_google_cloud_aiplatform_v1beta1_explanation_proto_rawDescGZIP(), []int{1} 165} 166 167func (x *ModelExplanation) GetMeanAttributions() []*Attribution { 168 if x != nil { 169 return x.MeanAttributions 170 } 171 return nil 172} 173 174// Attribution that explains a particular prediction output. 175type Attribution struct { 176 state protoimpl.MessageState 177 sizeCache protoimpl.SizeCache 178 unknownFields protoimpl.UnknownFields 179 180 // Output only. Model predicted output if the input instance is constructed from the 181 // baselines of all the features defined in [ExplanationMetadata.inputs][google.cloud.aiplatform.v1beta1.ExplanationMetadata.inputs]. 182 // The field name of the output is determined by the key in 183 // [ExplanationMetadata.outputs][google.cloud.aiplatform.v1beta1.ExplanationMetadata.outputs]. 184 // 185 // If the Model's predicted output has multiple dimensions (rank > 1), this is 186 // the value in the output located by [output_index][google.cloud.aiplatform.v1beta1.Attribution.output_index]. 187 // 188 // If there are multiple baselines, their output values are averaged. 189 BaselineOutputValue float64 `protobuf:"fixed64,1,opt,name=baseline_output_value,json=baselineOutputValue,proto3" json:"baseline_output_value,omitempty"` 190 // Output only. Model predicted output on the corresponding [explanation 191 // instance][ExplainRequest.instances]. The field name of the output is 192 // determined by the key in [ExplanationMetadata.outputs][google.cloud.aiplatform.v1beta1.ExplanationMetadata.outputs]. 193 // 194 // If the Model predicted output has multiple dimensions, this is the value in 195 // the output located by [output_index][google.cloud.aiplatform.v1beta1.Attribution.output_index]. 196 InstanceOutputValue float64 `protobuf:"fixed64,2,opt,name=instance_output_value,json=instanceOutputValue,proto3" json:"instance_output_value,omitempty"` 197 // Output only. Attributions of each explained feature. Features are extracted from 198 // the [prediction instances][google.cloud.aiplatform.v1beta1.ExplainRequest.instances] according to 199 // [explanation metadata for inputs][google.cloud.aiplatform.v1beta1.ExplanationMetadata.inputs]. 200 // 201 // The value is a struct, whose keys are the name of the feature. The values 202 // are how much the feature in the [instance][google.cloud.aiplatform.v1beta1.ExplainRequest.instances] 203 // contributed to the predicted result. 204 // 205 // The format of the value is determined by the feature's input format: 206 // 207 // * If the feature is a scalar value, the attribution value is a 208 // [floating number][google.protobuf.Value.number_value]. 209 // 210 // * If the feature is an array of scalar values, the attribution value is 211 // an [array][google.protobuf.Value.list_value]. 212 // 213 // * If the feature is a struct, the attribution value is a 214 // [struct][google.protobuf.Value.struct_value]. The keys in the 215 // attribution value struct are the same as the keys in the feature 216 // struct. The formats of the values in the attribution struct are 217 // determined by the formats of the values in the feature struct. 218 // 219 // The [ExplanationMetadata.feature_attributions_schema_uri][google.cloud.aiplatform.v1beta1.ExplanationMetadata.feature_attributions_schema_uri] field, 220 // pointed to by the [ExplanationSpec][google.cloud.aiplatform.v1beta1.ExplanationSpec] field of the 221 // [Endpoint.deployed_models][google.cloud.aiplatform.v1beta1.Endpoint.deployed_models] object, points to the schema file that 222 // describes the features and their attribution values (if it is populated). 223 FeatureAttributions *structpb.Value `protobuf:"bytes,3,opt,name=feature_attributions,json=featureAttributions,proto3" json:"feature_attributions,omitempty"` 224 // Output only. The index that locates the explained prediction output. 225 // 226 // If the prediction output is a scalar value, output_index is not populated. 227 // If the prediction output has multiple dimensions, the length of the 228 // output_index list is the same as the number of dimensions of the output. 229 // The i-th element in output_index is the element index of the i-th dimension 230 // of the output vector. Indices start from 0. 231 OutputIndex []int32 `protobuf:"varint,4,rep,packed,name=output_index,json=outputIndex,proto3" json:"output_index,omitempty"` 232 // Output only. The display name of the output identified by [output_index][google.cloud.aiplatform.v1beta1.Attribution.output_index], e.g. the 233 // predicted class name by a multi-classification Model. 234 // 235 // This field is only populated iff the Model predicts display names as a 236 // separate field along with the explained output. The predicted display name 237 // must has the same shape of the explained output, and can be located using 238 // output_index. 239 OutputDisplayName string `protobuf:"bytes,5,opt,name=output_display_name,json=outputDisplayName,proto3" json:"output_display_name,omitempty"` 240 // Output only. Error of [feature_attributions][google.cloud.aiplatform.v1beta1.Attribution.feature_attributions] caused by approximation used in the 241 // explanation method. Lower value means more precise attributions. 242 // 243 // * For [Sampled Shapley 244 // attribution][ExplanationParameters.sampled_shapley_attribution], increasing 245 // [path_count][google.cloud.aiplatform.v1beta1.SampledShapleyAttribution.path_count] may reduce the error. 246 // * For [Integrated Gradients 247 // attribution][ExplanationParameters.integrated_gradients_attribution], 248 // increasing [step_count][google.cloud.aiplatform.v1beta1.IntegratedGradientsAttribution.step_count] may 249 // reduce the error. 250 // * For [XRAI 251 // attribution][ExplanationParameters.xrai_attribution], increasing 252 // [step_count][google.cloud.aiplatform.v1beta1.XraiAttribution.step_count] may reduce the error. 253 // 254 // Refer to AI Explanations Whitepaper for more details: 255 // 256 // https: 257 // //storage.googleapis.com/cloud-ai-whitep 258 // // apers/AI%20Explainability%20Whitepaper.pdf 259 ApproximationError float64 `protobuf:"fixed64,6,opt,name=approximation_error,json=approximationError,proto3" json:"approximation_error,omitempty"` 260 // Output only. Name of the explain output. Specified as the key in 261 // [ExplanationMetadata.outputs][google.cloud.aiplatform.v1beta1.ExplanationMetadata.outputs]. 262 OutputName string `protobuf:"bytes,7,opt,name=output_name,json=outputName,proto3" json:"output_name,omitempty"` 263} 264 265func (x *Attribution) Reset() { 266 *x = Attribution{} 267 if protoimpl.UnsafeEnabled { 268 mi := &file_google_cloud_aiplatform_v1beta1_explanation_proto_msgTypes[2] 269 ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) 270 ms.StoreMessageInfo(mi) 271 } 272} 273 274func (x *Attribution) String() string { 275 return protoimpl.X.MessageStringOf(x) 276} 277 278func (*Attribution) ProtoMessage() {} 279 280func (x *Attribution) ProtoReflect() protoreflect.Message { 281 mi := &file_google_cloud_aiplatform_v1beta1_explanation_proto_msgTypes[2] 282 if protoimpl.UnsafeEnabled && x != nil { 283 ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) 284 if ms.LoadMessageInfo() == nil { 285 ms.StoreMessageInfo(mi) 286 } 287 return ms 288 } 289 return mi.MessageOf(x) 290} 291 292// Deprecated: Use Attribution.ProtoReflect.Descriptor instead. 293func (*Attribution) Descriptor() ([]byte, []int) { 294 return file_google_cloud_aiplatform_v1beta1_explanation_proto_rawDescGZIP(), []int{2} 295} 296 297func (x *Attribution) GetBaselineOutputValue() float64 { 298 if x != nil { 299 return x.BaselineOutputValue 300 } 301 return 0 302} 303 304func (x *Attribution) GetInstanceOutputValue() float64 { 305 if x != nil { 306 return x.InstanceOutputValue 307 } 308 return 0 309} 310 311func (x *Attribution) GetFeatureAttributions() *structpb.Value { 312 if x != nil { 313 return x.FeatureAttributions 314 } 315 return nil 316} 317 318func (x *Attribution) GetOutputIndex() []int32 { 319 if x != nil { 320 return x.OutputIndex 321 } 322 return nil 323} 324 325func (x *Attribution) GetOutputDisplayName() string { 326 if x != nil { 327 return x.OutputDisplayName 328 } 329 return "" 330} 331 332func (x *Attribution) GetApproximationError() float64 { 333 if x != nil { 334 return x.ApproximationError 335 } 336 return 0 337} 338 339func (x *Attribution) GetOutputName() string { 340 if x != nil { 341 return x.OutputName 342 } 343 return "" 344} 345 346// Specification of Model explanation. 347type ExplanationSpec struct { 348 state protoimpl.MessageState 349 sizeCache protoimpl.SizeCache 350 unknownFields protoimpl.UnknownFields 351 352 // Required. Parameters that configure explaining of the Model's predictions. 353 Parameters *ExplanationParameters `protobuf:"bytes,1,opt,name=parameters,proto3" json:"parameters,omitempty"` 354 // Required. Metadata describing the Model's input and output for explanation. 355 Metadata *ExplanationMetadata `protobuf:"bytes,2,opt,name=metadata,proto3" json:"metadata,omitempty"` 356} 357 358func (x *ExplanationSpec) Reset() { 359 *x = ExplanationSpec{} 360 if protoimpl.UnsafeEnabled { 361 mi := &file_google_cloud_aiplatform_v1beta1_explanation_proto_msgTypes[3] 362 ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) 363 ms.StoreMessageInfo(mi) 364 } 365} 366 367func (x *ExplanationSpec) String() string { 368 return protoimpl.X.MessageStringOf(x) 369} 370 371func (*ExplanationSpec) ProtoMessage() {} 372 373func (x *ExplanationSpec) ProtoReflect() protoreflect.Message { 374 mi := &file_google_cloud_aiplatform_v1beta1_explanation_proto_msgTypes[3] 375 if protoimpl.UnsafeEnabled && x != nil { 376 ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) 377 if ms.LoadMessageInfo() == nil { 378 ms.StoreMessageInfo(mi) 379 } 380 return ms 381 } 382 return mi.MessageOf(x) 383} 384 385// Deprecated: Use ExplanationSpec.ProtoReflect.Descriptor instead. 386func (*ExplanationSpec) Descriptor() ([]byte, []int) { 387 return file_google_cloud_aiplatform_v1beta1_explanation_proto_rawDescGZIP(), []int{3} 388} 389 390func (x *ExplanationSpec) GetParameters() *ExplanationParameters { 391 if x != nil { 392 return x.Parameters 393 } 394 return nil 395} 396 397func (x *ExplanationSpec) GetMetadata() *ExplanationMetadata { 398 if x != nil { 399 return x.Metadata 400 } 401 return nil 402} 403 404// Parameters to configure explaining for Model's predictions. 405type ExplanationParameters struct { 406 state protoimpl.MessageState 407 sizeCache protoimpl.SizeCache 408 unknownFields protoimpl.UnknownFields 409 410 // Types that are assignable to Method: 411 // *ExplanationParameters_SampledShapleyAttribution 412 // *ExplanationParameters_IntegratedGradientsAttribution 413 // *ExplanationParameters_XraiAttribution 414 Method isExplanationParameters_Method `protobuf_oneof:"method"` 415 // If populated, returns attributions for top K indices of outputs 416 // (defaults to 1). Only applies to Models that predicts more than one outputs 417 // (e,g, multi-class Models). When set to -1, returns explanations for all 418 // outputs. 419 TopK int32 `protobuf:"varint,4,opt,name=top_k,json=topK,proto3" json:"top_k,omitempty"` 420 // If populated, only returns attributions that have 421 // [output_index][Attributions.output_index] contained in output_indices. It 422 // must be an ndarray of integers, with the same shape of the output it's 423 // explaining. 424 // 425 // If not populated, returns attributions for [top_k][google.cloud.aiplatform.v1beta1.ExplanationParameters.top_k] indices of outputs. 426 // If neither top_k nor output_indeices is populated, returns the argmax 427 // index of the outputs. 428 // 429 // Only applicable to Models that predict multiple outputs (e,g, multi-class 430 // Models that predict multiple classes). 431 OutputIndices *structpb.ListValue `protobuf:"bytes,5,opt,name=output_indices,json=outputIndices,proto3" json:"output_indices,omitempty"` 432} 433 434func (x *ExplanationParameters) Reset() { 435 *x = ExplanationParameters{} 436 if protoimpl.UnsafeEnabled { 437 mi := &file_google_cloud_aiplatform_v1beta1_explanation_proto_msgTypes[4] 438 ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) 439 ms.StoreMessageInfo(mi) 440 } 441} 442 443func (x *ExplanationParameters) String() string { 444 return protoimpl.X.MessageStringOf(x) 445} 446 447func (*ExplanationParameters) ProtoMessage() {} 448 449func (x *ExplanationParameters) ProtoReflect() protoreflect.Message { 450 mi := &file_google_cloud_aiplatform_v1beta1_explanation_proto_msgTypes[4] 451 if protoimpl.UnsafeEnabled && x != nil { 452 ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) 453 if ms.LoadMessageInfo() == nil { 454 ms.StoreMessageInfo(mi) 455 } 456 return ms 457 } 458 return mi.MessageOf(x) 459} 460 461// Deprecated: Use ExplanationParameters.ProtoReflect.Descriptor instead. 462func (*ExplanationParameters) Descriptor() ([]byte, []int) { 463 return file_google_cloud_aiplatform_v1beta1_explanation_proto_rawDescGZIP(), []int{4} 464} 465 466func (m *ExplanationParameters) GetMethod() isExplanationParameters_Method { 467 if m != nil { 468 return m.Method 469 } 470 return nil 471} 472 473func (x *ExplanationParameters) GetSampledShapleyAttribution() *SampledShapleyAttribution { 474 if x, ok := x.GetMethod().(*ExplanationParameters_SampledShapleyAttribution); ok { 475 return x.SampledShapleyAttribution 476 } 477 return nil 478} 479 480func (x *ExplanationParameters) GetIntegratedGradientsAttribution() *IntegratedGradientsAttribution { 481 if x, ok := x.GetMethod().(*ExplanationParameters_IntegratedGradientsAttribution); ok { 482 return x.IntegratedGradientsAttribution 483 } 484 return nil 485} 486 487func (x *ExplanationParameters) GetXraiAttribution() *XraiAttribution { 488 if x, ok := x.GetMethod().(*ExplanationParameters_XraiAttribution); ok { 489 return x.XraiAttribution 490 } 491 return nil 492} 493 494func (x *ExplanationParameters) GetTopK() int32 { 495 if x != nil { 496 return x.TopK 497 } 498 return 0 499} 500 501func (x *ExplanationParameters) GetOutputIndices() *structpb.ListValue { 502 if x != nil { 503 return x.OutputIndices 504 } 505 return nil 506} 507 508type isExplanationParameters_Method interface { 509 isExplanationParameters_Method() 510} 511 512type ExplanationParameters_SampledShapleyAttribution struct { 513 // An attribution method that approximates Shapley values for features that 514 // contribute to the label being predicted. A sampling strategy is used to 515 // approximate the value rather than considering all subsets of features. 516 // Refer to this paper for model details: https://arxiv.org/abs/1306.4265. 517 SampledShapleyAttribution *SampledShapleyAttribution `protobuf:"bytes,1,opt,name=sampled_shapley_attribution,json=sampledShapleyAttribution,proto3,oneof"` 518} 519 520type ExplanationParameters_IntegratedGradientsAttribution struct { 521 // An attribution method that computes Aumann-Shapley values taking 522 // advantage of the model's fully differentiable structure. Refer to this 523 // paper for more details: https://arxiv.org/abs/1703.01365 524 IntegratedGradientsAttribution *IntegratedGradientsAttribution `protobuf:"bytes,2,opt,name=integrated_gradients_attribution,json=integratedGradientsAttribution,proto3,oneof"` 525} 526 527type ExplanationParameters_XraiAttribution struct { 528 // An attribution method that redistributes Integrated Gradients 529 // attribution to segmented regions, taking advantage of the model's fully 530 // differentiable structure. Refer to this paper for 531 // more details: https://arxiv.org/abs/1906.02825 532 // 533 // XRAI currently performs better on natural images, like a picture of a 534 // house or an animal. If the images are taken in artificial environments, 535 // like a lab or manufacturing line, or from diagnostic equipment, like 536 // x-rays or quality-control cameras, use Integrated Gradients instead. 537 XraiAttribution *XraiAttribution `protobuf:"bytes,3,opt,name=xrai_attribution,json=xraiAttribution,proto3,oneof"` 538} 539 540func (*ExplanationParameters_SampledShapleyAttribution) isExplanationParameters_Method() {} 541 542func (*ExplanationParameters_IntegratedGradientsAttribution) isExplanationParameters_Method() {} 543 544func (*ExplanationParameters_XraiAttribution) isExplanationParameters_Method() {} 545 546// An attribution method that approximates Shapley values for features that 547// contribute to the label being predicted. A sampling strategy is used to 548// approximate the value rather than considering all subsets of features. 549type SampledShapleyAttribution struct { 550 state protoimpl.MessageState 551 sizeCache protoimpl.SizeCache 552 unknownFields protoimpl.UnknownFields 553 554 // Required. The number of feature permutations to consider when approximating the 555 // Shapley values. 556 // 557 // Valid range of its value is [1, 50], inclusively. 558 PathCount int32 `protobuf:"varint,1,opt,name=path_count,json=pathCount,proto3" json:"path_count,omitempty"` 559} 560 561func (x *SampledShapleyAttribution) Reset() { 562 *x = SampledShapleyAttribution{} 563 if protoimpl.UnsafeEnabled { 564 mi := &file_google_cloud_aiplatform_v1beta1_explanation_proto_msgTypes[5] 565 ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) 566 ms.StoreMessageInfo(mi) 567 } 568} 569 570func (x *SampledShapleyAttribution) String() string { 571 return protoimpl.X.MessageStringOf(x) 572} 573 574func (*SampledShapleyAttribution) ProtoMessage() {} 575 576func (x *SampledShapleyAttribution) ProtoReflect() protoreflect.Message { 577 mi := &file_google_cloud_aiplatform_v1beta1_explanation_proto_msgTypes[5] 578 if protoimpl.UnsafeEnabled && x != nil { 579 ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) 580 if ms.LoadMessageInfo() == nil { 581 ms.StoreMessageInfo(mi) 582 } 583 return ms 584 } 585 return mi.MessageOf(x) 586} 587 588// Deprecated: Use SampledShapleyAttribution.ProtoReflect.Descriptor instead. 589func (*SampledShapleyAttribution) Descriptor() ([]byte, []int) { 590 return file_google_cloud_aiplatform_v1beta1_explanation_proto_rawDescGZIP(), []int{5} 591} 592 593func (x *SampledShapleyAttribution) GetPathCount() int32 { 594 if x != nil { 595 return x.PathCount 596 } 597 return 0 598} 599 600// An attribution method that computes the Aumann-Shapley value taking advantage 601// of the model's fully differentiable structure. Refer to this paper for 602// more details: https://arxiv.org/abs/1703.01365 603type IntegratedGradientsAttribution struct { 604 state protoimpl.MessageState 605 sizeCache protoimpl.SizeCache 606 unknownFields protoimpl.UnknownFields 607 608 // Required. The number of steps for approximating the path integral. 609 // A good value to start is 50 and gradually increase until the 610 // sum to diff property is within the desired error range. 611 // 612 // Valid range of its value is [1, 100], inclusively. 613 StepCount int32 `protobuf:"varint,1,opt,name=step_count,json=stepCount,proto3" json:"step_count,omitempty"` 614 // Config for SmoothGrad approximation of gradients. 615 // 616 // When enabled, the gradients are approximated by averaging the gradients 617 // from noisy samples in the vicinity of the inputs. Adding 618 // noise can help improve the computed gradients. Refer to this paper for more 619 // details: https://arxiv.org/pdf/1706.03825.pdf 620 SmoothGradConfig *SmoothGradConfig `protobuf:"bytes,2,opt,name=smooth_grad_config,json=smoothGradConfig,proto3" json:"smooth_grad_config,omitempty"` 621} 622 623func (x *IntegratedGradientsAttribution) Reset() { 624 *x = IntegratedGradientsAttribution{} 625 if protoimpl.UnsafeEnabled { 626 mi := &file_google_cloud_aiplatform_v1beta1_explanation_proto_msgTypes[6] 627 ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) 628 ms.StoreMessageInfo(mi) 629 } 630} 631 632func (x *IntegratedGradientsAttribution) String() string { 633 return protoimpl.X.MessageStringOf(x) 634} 635 636func (*IntegratedGradientsAttribution) ProtoMessage() {} 637 638func (x *IntegratedGradientsAttribution) ProtoReflect() protoreflect.Message { 639 mi := &file_google_cloud_aiplatform_v1beta1_explanation_proto_msgTypes[6] 640 if protoimpl.UnsafeEnabled && x != nil { 641 ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) 642 if ms.LoadMessageInfo() == nil { 643 ms.StoreMessageInfo(mi) 644 } 645 return ms 646 } 647 return mi.MessageOf(x) 648} 649 650// Deprecated: Use IntegratedGradientsAttribution.ProtoReflect.Descriptor instead. 651func (*IntegratedGradientsAttribution) Descriptor() ([]byte, []int) { 652 return file_google_cloud_aiplatform_v1beta1_explanation_proto_rawDescGZIP(), []int{6} 653} 654 655func (x *IntegratedGradientsAttribution) GetStepCount() int32 { 656 if x != nil { 657 return x.StepCount 658 } 659 return 0 660} 661 662func (x *IntegratedGradientsAttribution) GetSmoothGradConfig() *SmoothGradConfig { 663 if x != nil { 664 return x.SmoothGradConfig 665 } 666 return nil 667} 668 669// An explanation method that redistributes Integrated Gradients 670// attributions to segmented regions, taking advantage of the model's fully 671// differentiable structure. Refer to this paper for more details: 672// https://arxiv.org/abs/1906.02825 673// 674// Only supports image Models ([modality][InputMetadata.modality] is IMAGE). 675type XraiAttribution struct { 676 state protoimpl.MessageState 677 sizeCache protoimpl.SizeCache 678 unknownFields protoimpl.UnknownFields 679 680 // Required. The number of steps for approximating the path integral. 681 // A good value to start is 50 and gradually increase until the 682 // sum to diff property is met within the desired error range. 683 // 684 // Valid range of its value is [1, 100], inclusively. 685 StepCount int32 `protobuf:"varint,1,opt,name=step_count,json=stepCount,proto3" json:"step_count,omitempty"` 686 // Config for SmoothGrad approximation of gradients. 687 // 688 // When enabled, the gradients are approximated by averaging the gradients 689 // from noisy samples in the vicinity of the inputs. Adding 690 // noise can help improve the computed gradients. Refer to this paper for more 691 // details: https://arxiv.org/pdf/1706.03825.pdf 692 SmoothGradConfig *SmoothGradConfig `protobuf:"bytes,2,opt,name=smooth_grad_config,json=smoothGradConfig,proto3" json:"smooth_grad_config,omitempty"` 693} 694 695func (x *XraiAttribution) Reset() { 696 *x = XraiAttribution{} 697 if protoimpl.UnsafeEnabled { 698 mi := &file_google_cloud_aiplatform_v1beta1_explanation_proto_msgTypes[7] 699 ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) 700 ms.StoreMessageInfo(mi) 701 } 702} 703 704func (x *XraiAttribution) String() string { 705 return protoimpl.X.MessageStringOf(x) 706} 707 708func (*XraiAttribution) ProtoMessage() {} 709 710func (x *XraiAttribution) ProtoReflect() protoreflect.Message { 711 mi := &file_google_cloud_aiplatform_v1beta1_explanation_proto_msgTypes[7] 712 if protoimpl.UnsafeEnabled && x != nil { 713 ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) 714 if ms.LoadMessageInfo() == nil { 715 ms.StoreMessageInfo(mi) 716 } 717 return ms 718 } 719 return mi.MessageOf(x) 720} 721 722// Deprecated: Use XraiAttribution.ProtoReflect.Descriptor instead. 723func (*XraiAttribution) Descriptor() ([]byte, []int) { 724 return file_google_cloud_aiplatform_v1beta1_explanation_proto_rawDescGZIP(), []int{7} 725} 726 727func (x *XraiAttribution) GetStepCount() int32 { 728 if x != nil { 729 return x.StepCount 730 } 731 return 0 732} 733 734func (x *XraiAttribution) GetSmoothGradConfig() *SmoothGradConfig { 735 if x != nil { 736 return x.SmoothGradConfig 737 } 738 return nil 739} 740 741// Config for SmoothGrad approximation of gradients. 742// 743// When enabled, the gradients are approximated by averaging the gradients from 744// noisy samples in the vicinity of the inputs. Adding noise can help improve 745// the computed gradients. Refer to this paper for more details: 746// https://arxiv.org/pdf/1706.03825.pdf 747type SmoothGradConfig struct { 748 state protoimpl.MessageState 749 sizeCache protoimpl.SizeCache 750 unknownFields protoimpl.UnknownFields 751 752 // Represents the standard deviation of the gaussian kernel 753 // that will be used to add noise to the interpolated inputs 754 // prior to computing gradients. 755 // 756 // Types that are assignable to GradientNoiseSigma: 757 // *SmoothGradConfig_NoiseSigma 758 // *SmoothGradConfig_FeatureNoiseSigma 759 GradientNoiseSigma isSmoothGradConfig_GradientNoiseSigma `protobuf_oneof:"GradientNoiseSigma"` 760 // The number of gradient samples to use for 761 // approximation. The higher this number, the more accurate the gradient 762 // is, but the runtime complexity increases by this factor as well. 763 // Valid range of its value is [1, 50]. Defaults to 3. 764 NoisySampleCount int32 `protobuf:"varint,3,opt,name=noisy_sample_count,json=noisySampleCount,proto3" json:"noisy_sample_count,omitempty"` 765} 766 767func (x *SmoothGradConfig) Reset() { 768 *x = SmoothGradConfig{} 769 if protoimpl.UnsafeEnabled { 770 mi := &file_google_cloud_aiplatform_v1beta1_explanation_proto_msgTypes[8] 771 ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) 772 ms.StoreMessageInfo(mi) 773 } 774} 775 776func (x *SmoothGradConfig) String() string { 777 return protoimpl.X.MessageStringOf(x) 778} 779 780func (*SmoothGradConfig) ProtoMessage() {} 781 782func (x *SmoothGradConfig) ProtoReflect() protoreflect.Message { 783 mi := &file_google_cloud_aiplatform_v1beta1_explanation_proto_msgTypes[8] 784 if protoimpl.UnsafeEnabled && x != nil { 785 ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) 786 if ms.LoadMessageInfo() == nil { 787 ms.StoreMessageInfo(mi) 788 } 789 return ms 790 } 791 return mi.MessageOf(x) 792} 793 794// Deprecated: Use SmoothGradConfig.ProtoReflect.Descriptor instead. 795func (*SmoothGradConfig) Descriptor() ([]byte, []int) { 796 return file_google_cloud_aiplatform_v1beta1_explanation_proto_rawDescGZIP(), []int{8} 797} 798 799func (m *SmoothGradConfig) GetGradientNoiseSigma() isSmoothGradConfig_GradientNoiseSigma { 800 if m != nil { 801 return m.GradientNoiseSigma 802 } 803 return nil 804} 805 806func (x *SmoothGradConfig) GetNoiseSigma() float32 { 807 if x, ok := x.GetGradientNoiseSigma().(*SmoothGradConfig_NoiseSigma); ok { 808 return x.NoiseSigma 809 } 810 return 0 811} 812 813func (x *SmoothGradConfig) GetFeatureNoiseSigma() *FeatureNoiseSigma { 814 if x, ok := x.GetGradientNoiseSigma().(*SmoothGradConfig_FeatureNoiseSigma); ok { 815 return x.FeatureNoiseSigma 816 } 817 return nil 818} 819 820func (x *SmoothGradConfig) GetNoisySampleCount() int32 { 821 if x != nil { 822 return x.NoisySampleCount 823 } 824 return 0 825} 826 827type isSmoothGradConfig_GradientNoiseSigma interface { 828 isSmoothGradConfig_GradientNoiseSigma() 829} 830 831type SmoothGradConfig_NoiseSigma struct { 832 // This is a single float value and will be used to add noise to all the 833 // features. Use this field when all features are normalized to have the 834 // same distribution: scale to range [0, 1], [-1, 1] or z-scoring, where 835 // features are normalized to have 0-mean and 1-variance. Refer to 836 // this doc for more details about normalization: 837 // 838 // https: 839 // //developers.google.com/machine-learning 840 // // /data-prep/transform/normalization. 841 // 842 // For best results the recommended value is about 10% - 20% of the standard 843 // deviation of the input feature. Refer to section 3.2 of the SmoothGrad 844 // paper: https://arxiv.org/pdf/1706.03825.pdf. Defaults to 0.1. 845 // 846 // If the distribution is different per feature, set 847 // [feature_noise_sigma][google.cloud.aiplatform.v1beta1.SmoothGradConfig.feature_noise_sigma] instead 848 // for each feature. 849 NoiseSigma float32 `protobuf:"fixed32,1,opt,name=noise_sigma,json=noiseSigma,proto3,oneof"` 850} 851 852type SmoothGradConfig_FeatureNoiseSigma struct { 853 // This is similar to [noise_sigma][google.cloud.aiplatform.v1beta1.SmoothGradConfig.noise_sigma], but 854 // provides additional flexibility. A separate noise sigma can be provided 855 // for each feature, which is useful if their distributions are different. 856 // No noise is added to features that are not set. If this field is unset, 857 // [noise_sigma][google.cloud.aiplatform.v1beta1.SmoothGradConfig.noise_sigma] will be used for all 858 // features. 859 FeatureNoiseSigma *FeatureNoiseSigma `protobuf:"bytes,2,opt,name=feature_noise_sigma,json=featureNoiseSigma,proto3,oneof"` 860} 861 862func (*SmoothGradConfig_NoiseSigma) isSmoothGradConfig_GradientNoiseSigma() {} 863 864func (*SmoothGradConfig_FeatureNoiseSigma) isSmoothGradConfig_GradientNoiseSigma() {} 865 866// Noise sigma by features. Noise sigma represents the standard deviation of the 867// gaussian kernel that will be used to add noise to interpolated inputs prior 868// to computing gradients. 869type FeatureNoiseSigma struct { 870 state protoimpl.MessageState 871 sizeCache protoimpl.SizeCache 872 unknownFields protoimpl.UnknownFields 873 874 // Noise sigma per feature. No noise is added to features that are not set. 875 NoiseSigma []*FeatureNoiseSigma_NoiseSigmaForFeature `protobuf:"bytes,1,rep,name=noise_sigma,json=noiseSigma,proto3" json:"noise_sigma,omitempty"` 876} 877 878func (x *FeatureNoiseSigma) Reset() { 879 *x = FeatureNoiseSigma{} 880 if protoimpl.UnsafeEnabled { 881 mi := &file_google_cloud_aiplatform_v1beta1_explanation_proto_msgTypes[9] 882 ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) 883 ms.StoreMessageInfo(mi) 884 } 885} 886 887func (x *FeatureNoiseSigma) String() string { 888 return protoimpl.X.MessageStringOf(x) 889} 890 891func (*FeatureNoiseSigma) ProtoMessage() {} 892 893func (x *FeatureNoiseSigma) ProtoReflect() protoreflect.Message { 894 mi := &file_google_cloud_aiplatform_v1beta1_explanation_proto_msgTypes[9] 895 if protoimpl.UnsafeEnabled && x != nil { 896 ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) 897 if ms.LoadMessageInfo() == nil { 898 ms.StoreMessageInfo(mi) 899 } 900 return ms 901 } 902 return mi.MessageOf(x) 903} 904 905// Deprecated: Use FeatureNoiseSigma.ProtoReflect.Descriptor instead. 906func (*FeatureNoiseSigma) Descriptor() ([]byte, []int) { 907 return file_google_cloud_aiplatform_v1beta1_explanation_proto_rawDescGZIP(), []int{9} 908} 909 910func (x *FeatureNoiseSigma) GetNoiseSigma() []*FeatureNoiseSigma_NoiseSigmaForFeature { 911 if x != nil { 912 return x.NoiseSigma 913 } 914 return nil 915} 916 917// Noise sigma for a single feature. 918type FeatureNoiseSigma_NoiseSigmaForFeature struct { 919 state protoimpl.MessageState 920 sizeCache protoimpl.SizeCache 921 unknownFields protoimpl.UnknownFields 922 923 // The name of the input feature for which noise sigma is provided. The 924 // features are defined in 925 // [explanation metadata inputs][google.cloud.aiplatform.v1beta1.ExplanationMetadata.inputs]. 926 Name string `protobuf:"bytes,1,opt,name=name,proto3" json:"name,omitempty"` 927 // This represents the standard deviation of the Gaussian kernel that will 928 // be used to add noise to the feature prior to computing gradients. Similar 929 // to [noise_sigma][google.cloud.aiplatform.v1beta1.SmoothGradConfig.noise_sigma] but represents the 930 // noise added to the current feature. Defaults to 0.1. 931 Sigma float32 `protobuf:"fixed32,2,opt,name=sigma,proto3" json:"sigma,omitempty"` 932} 933 934func (x *FeatureNoiseSigma_NoiseSigmaForFeature) Reset() { 935 *x = FeatureNoiseSigma_NoiseSigmaForFeature{} 936 if protoimpl.UnsafeEnabled { 937 mi := &file_google_cloud_aiplatform_v1beta1_explanation_proto_msgTypes[10] 938 ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) 939 ms.StoreMessageInfo(mi) 940 } 941} 942 943func (x *FeatureNoiseSigma_NoiseSigmaForFeature) String() string { 944 return protoimpl.X.MessageStringOf(x) 945} 946 947func (*FeatureNoiseSigma_NoiseSigmaForFeature) ProtoMessage() {} 948 949func (x *FeatureNoiseSigma_NoiseSigmaForFeature) ProtoReflect() protoreflect.Message { 950 mi := &file_google_cloud_aiplatform_v1beta1_explanation_proto_msgTypes[10] 951 if protoimpl.UnsafeEnabled && x != nil { 952 ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) 953 if ms.LoadMessageInfo() == nil { 954 ms.StoreMessageInfo(mi) 955 } 956 return ms 957 } 958 return mi.MessageOf(x) 959} 960 961// Deprecated: Use FeatureNoiseSigma_NoiseSigmaForFeature.ProtoReflect.Descriptor instead. 962func (*FeatureNoiseSigma_NoiseSigmaForFeature) Descriptor() ([]byte, []int) { 963 return file_google_cloud_aiplatform_v1beta1_explanation_proto_rawDescGZIP(), []int{9, 0} 964} 965 966func (x *FeatureNoiseSigma_NoiseSigmaForFeature) GetName() string { 967 if x != nil { 968 return x.Name 969 } 970 return "" 971} 972 973func (x *FeatureNoiseSigma_NoiseSigmaForFeature) GetSigma() float32 { 974 if x != nil { 975 return x.Sigma 976 } 977 return 0 978} 979 980var File_google_cloud_aiplatform_v1beta1_explanation_proto protoreflect.FileDescriptor 981 982var file_google_cloud_aiplatform_v1beta1_explanation_proto_rawDesc = []byte{ 983 0x0a, 0x31, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2f, 0x63, 0x6c, 0x6f, 0x75, 0x64, 0x2f, 0x61, 984 0x69, 0x70, 0x6c, 0x61, 0x74, 0x66, 0x6f, 0x72, 0x6d, 0x2f, 0x76, 0x31, 0x62, 0x65, 0x74, 0x61, 985 0x31, 0x2f, 0x65, 0x78, 0x70, 0x6c, 0x61, 0x6e, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x2e, 0x70, 0x72, 986 0x6f, 0x74, 0x6f, 0x12, 0x1f, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x63, 0x6c, 0x6f, 0x75, 987 0x64, 0x2e, 0x61, 0x69, 0x70, 0x6c, 0x61, 0x74, 0x66, 0x6f, 0x72, 0x6d, 0x2e, 0x76, 0x31, 0x62, 988 0x65, 0x74, 0x61, 0x31, 0x1a, 0x1f, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2f, 0x61, 0x70, 0x69, 989 0x2f, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x5f, 0x62, 0x65, 0x68, 0x61, 0x76, 0x69, 0x6f, 0x72, 0x2e, 990 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x1a, 0x3a, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2f, 0x63, 0x6c, 991 0x6f, 0x75, 0x64, 0x2f, 0x61, 0x69, 0x70, 0x6c, 0x61, 0x74, 0x66, 0x6f, 0x72, 0x6d, 0x2f, 0x76, 992 0x31, 0x62, 0x65, 0x74, 0x61, 0x31, 0x2f, 0x65, 0x78, 0x70, 0x6c, 0x61, 0x6e, 0x61, 0x74, 0x69, 993 0x6f, 0x6e, 0x5f, 0x6d, 0x65, 0x74, 0x61, 0x64, 0x61, 0x74, 0x61, 0x2e, 0x70, 0x72, 0x6f, 0x74, 994 0x6f, 0x1a, 0x1c, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2f, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 995 0x75, 0x66, 0x2f, 0x73, 0x74, 0x72, 0x75, 0x63, 0x74, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x1a, 996 0x1c, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2f, 0x61, 0x70, 0x69, 0x2f, 0x61, 0x6e, 0x6e, 0x6f, 997 0x74, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x22, 0x64, 0x0a, 998 0x0b, 0x45, 0x78, 0x70, 0x6c, 0x61, 0x6e, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x12, 0x55, 0x0a, 0x0c, 999 0x61, 0x74, 0x74, 0x72, 0x69, 0x62, 0x75, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x18, 0x01, 0x20, 0x03, 1000 0x28, 0x0b, 0x32, 0x2c, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x63, 0x6c, 0x6f, 0x75, 1001 0x64, 0x2e, 0x61, 0x69, 0x70, 0x6c, 0x61, 0x74, 0x66, 0x6f, 0x72, 0x6d, 0x2e, 0x76, 0x31, 0x62, 1002 0x65, 0x74, 0x61, 0x31, 0x2e, 0x41, 0x74, 0x74, 0x72, 0x69, 0x62, 0x75, 0x74, 0x69, 0x6f, 0x6e, 1003 0x42, 0x03, 0xe0, 0x41, 0x03, 0x52, 0x0c, 0x61, 0x74, 0x74, 0x72, 0x69, 0x62, 0x75, 0x74, 0x69, 1004 0x6f, 0x6e, 0x73, 0x22, 0x72, 0x0a, 0x10, 0x4d, 0x6f, 0x64, 0x65, 0x6c, 0x45, 0x78, 0x70, 0x6c, 1005 0x61, 0x6e, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x12, 0x5e, 0x0a, 0x11, 0x6d, 0x65, 0x61, 0x6e, 0x5f, 1006 0x61, 0x74, 0x74, 0x72, 0x69, 0x62, 0x75, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x18, 0x01, 0x20, 0x03, 1007 0x28, 0x0b, 0x32, 0x2c, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x63, 0x6c, 0x6f, 0x75, 1008 0x64, 0x2e, 0x61, 0x69, 0x70, 0x6c, 0x61, 0x74, 0x66, 0x6f, 0x72, 0x6d, 0x2e, 0x76, 0x31, 0x62, 1009 0x65, 0x74, 0x61, 0x31, 0x2e, 0x41, 0x74, 0x74, 0x72, 0x69, 0x62, 0x75, 0x74, 0x69, 0x6f, 0x6e, 1010 0x42, 0x03, 0xe0, 0x41, 0x03, 0x52, 0x10, 0x6d, 0x65, 0x61, 0x6e, 0x41, 0x74, 0x74, 0x72, 0x69, 1011 0x62, 0x75, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x22, 0x88, 0x03, 0x0a, 0x0b, 0x41, 0x74, 0x74, 0x72, 1012 0x69, 0x62, 0x75, 0x74, 0x69, 0x6f, 0x6e, 0x12, 0x37, 0x0a, 0x15, 0x62, 0x61, 0x73, 0x65, 0x6c, 1013 0x69, 0x6e, 0x65, 0x5f, 0x6f, 0x75, 0x74, 0x70, 0x75, 0x74, 0x5f, 0x76, 0x61, 0x6c, 0x75, 0x65, 1014 0x18, 0x01, 0x20, 0x01, 0x28, 0x01, 0x42, 0x03, 0xe0, 0x41, 0x03, 0x52, 0x13, 0x62, 0x61, 0x73, 1015 0x65, 0x6c, 0x69, 0x6e, 0x65, 0x4f, 0x75, 0x74, 0x70, 0x75, 0x74, 0x56, 0x61, 0x6c, 0x75, 0x65, 1016 0x12, 0x37, 0x0a, 0x15, 0x69, 0x6e, 0x73, 0x74, 0x61, 0x6e, 0x63, 0x65, 0x5f, 0x6f, 0x75, 0x74, 1017 0x70, 0x75, 0x74, 0x5f, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x01, 0x42, 1018 0x03, 0xe0, 0x41, 0x03, 0x52, 0x13, 0x69, 0x6e, 0x73, 0x74, 0x61, 0x6e, 0x63, 0x65, 0x4f, 0x75, 1019 0x74, 0x70, 0x75, 0x74, 0x56, 0x61, 0x6c, 0x75, 0x65, 0x12, 0x4e, 0x0a, 0x14, 0x66, 0x65, 0x61, 1020 0x74, 0x75, 0x72, 0x65, 0x5f, 0x61, 0x74, 0x74, 0x72, 0x69, 0x62, 0x75, 0x74, 0x69, 0x6f, 0x6e, 1021 0x73, 0x18, 0x03, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x16, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 1022 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x56, 0x61, 0x6c, 0x75, 0x65, 0x42, 1023 0x03, 0xe0, 0x41, 0x03, 0x52, 0x13, 0x66, 0x65, 0x61, 0x74, 0x75, 0x72, 0x65, 0x41, 0x74, 0x74, 1024 0x72, 0x69, 0x62, 0x75, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x12, 0x26, 0x0a, 0x0c, 0x6f, 0x75, 0x74, 1025 0x70, 0x75, 0x74, 0x5f, 0x69, 0x6e, 0x64, 0x65, 0x78, 0x18, 0x04, 0x20, 0x03, 0x28, 0x05, 0x42, 1026 0x03, 0xe0, 0x41, 0x03, 0x52, 0x0b, 0x6f, 0x75, 0x74, 0x70, 0x75, 0x74, 0x49, 0x6e, 0x64, 0x65, 1027 0x78, 0x12, 0x33, 0x0a, 0x13, 0x6f, 0x75, 0x74, 0x70, 0x75, 0x74, 0x5f, 0x64, 0x69, 0x73, 0x70, 1028 0x6c, 0x61, 0x79, 0x5f, 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x05, 0x20, 0x01, 0x28, 0x09, 0x42, 0x03, 1029 0xe0, 0x41, 0x03, 0x52, 0x11, 0x6f, 0x75, 0x74, 0x70, 0x75, 0x74, 0x44, 0x69, 0x73, 0x70, 0x6c, 1030 0x61, 0x79, 0x4e, 0x61, 0x6d, 0x65, 0x12, 0x34, 0x0a, 0x13, 0x61, 0x70, 0x70, 0x72, 0x6f, 0x78, 1031 0x69, 0x6d, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x5f, 0x65, 0x72, 0x72, 0x6f, 0x72, 0x18, 0x06, 0x20, 1032 0x01, 0x28, 0x01, 0x42, 0x03, 0xe0, 0x41, 0x03, 0x52, 0x12, 0x61, 0x70, 0x70, 0x72, 0x6f, 0x78, 1033 0x69, 0x6d, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x45, 0x72, 0x72, 0x6f, 0x72, 0x12, 0x24, 0x0a, 0x0b, 1034 0x6f, 0x75, 0x74, 0x70, 0x75, 0x74, 0x5f, 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x07, 0x20, 0x01, 0x28, 1035 0x09, 0x42, 0x03, 0xe0, 0x41, 0x03, 0x52, 0x0a, 0x6f, 0x75, 0x74, 0x70, 0x75, 0x74, 0x4e, 0x61, 1036 0x6d, 0x65, 0x22, 0xc5, 0x01, 0x0a, 0x0f, 0x45, 0x78, 0x70, 0x6c, 0x61, 0x6e, 0x61, 0x74, 0x69, 1037 0x6f, 0x6e, 0x53, 0x70, 0x65, 0x63, 0x12, 0x5b, 0x0a, 0x0a, 0x70, 0x61, 0x72, 0x61, 0x6d, 0x65, 1038 0x74, 0x65, 0x72, 0x73, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x36, 0x2e, 0x67, 0x6f, 0x6f, 1039 0x67, 0x6c, 0x65, 0x2e, 0x63, 0x6c, 0x6f, 0x75, 0x64, 0x2e, 0x61, 0x69, 0x70, 0x6c, 0x61, 0x74, 1040 0x66, 0x6f, 0x72, 0x6d, 0x2e, 0x76, 0x31, 0x62, 0x65, 0x74, 0x61, 0x31, 0x2e, 0x45, 0x78, 0x70, 1041 0x6c, 0x61, 0x6e, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x50, 0x61, 0x72, 0x61, 0x6d, 0x65, 0x74, 0x65, 1042 0x72, 0x73, 0x42, 0x03, 0xe0, 0x41, 0x02, 0x52, 0x0a, 0x70, 0x61, 0x72, 0x61, 0x6d, 0x65, 0x74, 1043 0x65, 0x72, 0x73, 0x12, 0x55, 0x0a, 0x08, 0x6d, 0x65, 0x74, 0x61, 0x64, 0x61, 0x74, 0x61, 0x18, 1044 0x02, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x34, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x63, 1045 0x6c, 0x6f, 0x75, 0x64, 0x2e, 0x61, 0x69, 0x70, 0x6c, 0x61, 0x74, 0x66, 0x6f, 0x72, 0x6d, 0x2e, 1046 0x76, 0x31, 0x62, 0x65, 0x74, 0x61, 0x31, 0x2e, 0x45, 0x78, 0x70, 0x6c, 0x61, 0x6e, 0x61, 0x74, 1047 0x69, 0x6f, 0x6e, 0x4d, 0x65, 0x74, 0x61, 0x64, 0x61, 0x74, 0x61, 0x42, 0x03, 0xe0, 0x41, 0x02, 1048 0x52, 0x08, 0x6d, 0x65, 0x74, 0x61, 0x64, 0x61, 0x74, 0x61, 0x22, 0xe4, 0x03, 0x0a, 0x15, 0x45, 1049 0x78, 0x70, 0x6c, 0x61, 0x6e, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x50, 0x61, 0x72, 0x61, 0x6d, 0x65, 1050 0x74, 0x65, 0x72, 0x73, 0x12, 0x7c, 0x0a, 0x1b, 0x73, 0x61, 0x6d, 0x70, 0x6c, 0x65, 0x64, 0x5f, 1051 0x73, 0x68, 0x61, 0x70, 0x6c, 0x65, 0x79, 0x5f, 0x61, 0x74, 0x74, 0x72, 0x69, 0x62, 0x75, 0x74, 1052 0x69, 0x6f, 0x6e, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x3a, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 1053 0x6c, 0x65, 0x2e, 0x63, 0x6c, 0x6f, 0x75, 0x64, 0x2e, 0x61, 0x69, 0x70, 0x6c, 0x61, 0x74, 0x66, 1054 0x6f, 0x72, 0x6d, 0x2e, 0x76, 0x31, 0x62, 0x65, 0x74, 0x61, 0x31, 0x2e, 0x53, 0x61, 0x6d, 0x70, 1055 0x6c, 0x65, 0x64, 0x53, 0x68, 0x61, 0x70, 0x6c, 0x65, 0x79, 0x41, 0x74, 0x74, 0x72, 0x69, 0x62, 1056 0x75, 0x74, 0x69, 0x6f, 0x6e, 0x48, 0x00, 0x52, 0x19, 0x73, 0x61, 0x6d, 0x70, 0x6c, 0x65, 0x64, 1057 0x53, 0x68, 0x61, 0x70, 0x6c, 0x65, 0x79, 0x41, 0x74, 0x74, 0x72, 0x69, 0x62, 0x75, 0x74, 0x69, 1058 0x6f, 0x6e, 0x12, 0x8b, 0x01, 0x0a, 0x20, 0x69, 0x6e, 0x74, 0x65, 0x67, 0x72, 0x61, 0x74, 0x65, 1059 0x64, 0x5f, 0x67, 0x72, 0x61, 0x64, 0x69, 0x65, 0x6e, 0x74, 0x73, 0x5f, 0x61, 0x74, 0x74, 0x72, 1060 0x69, 0x62, 0x75, 0x74, 0x69, 0x6f, 0x6e, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x3f, 0x2e, 1061 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x63, 0x6c, 0x6f, 0x75, 0x64, 0x2e, 0x61, 0x69, 0x70, 1062 0x6c, 0x61, 0x74, 0x66, 0x6f, 0x72, 0x6d, 0x2e, 0x76, 0x31, 0x62, 0x65, 0x74, 0x61, 0x31, 0x2e, 1063 0x49, 0x6e, 0x74, 0x65, 0x67, 0x72, 0x61, 0x74, 0x65, 0x64, 0x47, 0x72, 0x61, 0x64, 0x69, 0x65, 1064 0x6e, 0x74, 0x73, 0x41, 0x74, 0x74, 0x72, 0x69, 0x62, 0x75, 0x74, 0x69, 0x6f, 0x6e, 0x48, 0x00, 1065 0x52, 0x1e, 0x69, 0x6e, 0x74, 0x65, 0x67, 0x72, 0x61, 0x74, 0x65, 0x64, 0x47, 0x72, 0x61, 0x64, 1066 0x69, 0x65, 0x6e, 0x74, 0x73, 0x41, 0x74, 0x74, 0x72, 0x69, 0x62, 0x75, 0x74, 0x69, 0x6f, 0x6e, 1067 0x12, 0x5d, 0x0a, 0x10, 0x78, 0x72, 0x61, 0x69, 0x5f, 0x61, 0x74, 0x74, 0x72, 0x69, 0x62, 0x75, 1068 0x74, 0x69, 0x6f, 0x6e, 0x18, 0x03, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x30, 0x2e, 0x67, 0x6f, 0x6f, 1069 0x67, 0x6c, 0x65, 0x2e, 0x63, 0x6c, 0x6f, 0x75, 0x64, 0x2e, 0x61, 0x69, 0x70, 0x6c, 0x61, 0x74, 1070 0x66, 0x6f, 0x72, 0x6d, 0x2e, 0x76, 0x31, 0x62, 0x65, 0x74, 0x61, 0x31, 0x2e, 0x58, 0x72, 0x61, 1071 0x69, 0x41, 0x74, 0x74, 0x72, 0x69, 0x62, 0x75, 0x74, 0x69, 0x6f, 0x6e, 0x48, 0x00, 0x52, 0x0f, 1072 0x78, 0x72, 0x61, 0x69, 0x41, 0x74, 0x74, 0x72, 0x69, 0x62, 0x75, 0x74, 0x69, 0x6f, 0x6e, 0x12, 1073 0x13, 0x0a, 0x05, 0x74, 0x6f, 0x70, 0x5f, 0x6b, 0x18, 0x04, 0x20, 0x01, 0x28, 0x05, 0x52, 0x04, 1074 0x74, 0x6f, 0x70, 0x4b, 0x12, 0x41, 0x0a, 0x0e, 0x6f, 0x75, 0x74, 0x70, 0x75, 0x74, 0x5f, 0x69, 1075 0x6e, 0x64, 0x69, 0x63, 0x65, 0x73, 0x18, 0x05, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1a, 0x2e, 0x67, 1076 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x4c, 1077 0x69, 0x73, 0x74, 0x56, 0x61, 0x6c, 0x75, 0x65, 0x52, 0x0d, 0x6f, 0x75, 0x74, 0x70, 0x75, 0x74, 1078 0x49, 0x6e, 0x64, 0x69, 0x63, 0x65, 0x73, 0x42, 0x08, 0x0a, 0x06, 0x6d, 0x65, 0x74, 0x68, 0x6f, 1079 0x64, 0x22, 0x3f, 0x0a, 0x19, 0x53, 0x61, 0x6d, 0x70, 0x6c, 0x65, 0x64, 0x53, 0x68, 0x61, 0x70, 1080 0x6c, 0x65, 0x79, 0x41, 0x74, 0x74, 0x72, 0x69, 0x62, 0x75, 0x74, 0x69, 0x6f, 0x6e, 0x12, 0x22, 1081 0x0a, 0x0a, 0x70, 0x61, 0x74, 0x68, 0x5f, 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x18, 0x01, 0x20, 0x01, 1082 0x28, 0x05, 0x42, 0x03, 0xe0, 0x41, 0x02, 0x52, 0x09, 0x70, 0x61, 0x74, 0x68, 0x43, 0x6f, 0x75, 1083 0x6e, 0x74, 0x22, 0xa5, 0x01, 0x0a, 0x1e, 0x49, 0x6e, 0x74, 0x65, 0x67, 0x72, 0x61, 0x74, 0x65, 1084 0x64, 0x47, 0x72, 0x61, 0x64, 0x69, 0x65, 0x6e, 0x74, 0x73, 0x41, 0x74, 0x74, 0x72, 0x69, 0x62, 1085 0x75, 0x74, 0x69, 0x6f, 0x6e, 0x12, 0x22, 0x0a, 0x0a, 0x73, 0x74, 0x65, 0x70, 0x5f, 0x63, 0x6f, 1086 0x75, 0x6e, 0x74, 0x18, 0x01, 0x20, 0x01, 0x28, 0x05, 0x42, 0x03, 0xe0, 0x41, 0x02, 0x52, 0x09, 1087 0x73, 0x74, 0x65, 0x70, 0x43, 0x6f, 0x75, 0x6e, 0x74, 0x12, 0x5f, 0x0a, 0x12, 0x73, 0x6d, 0x6f, 1088 0x6f, 0x74, 0x68, 0x5f, 0x67, 0x72, 0x61, 0x64, 0x5f, 0x63, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x18, 1089 0x02, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x31, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x63, 1090 0x6c, 0x6f, 0x75, 0x64, 0x2e, 0x61, 0x69, 0x70, 0x6c, 0x61, 0x74, 0x66, 0x6f, 0x72, 0x6d, 0x2e, 1091 0x76, 0x31, 0x62, 0x65, 0x74, 0x61, 0x31, 0x2e, 0x53, 0x6d, 0x6f, 0x6f, 0x74, 0x68, 0x47, 0x72, 1092 0x61, 0x64, 0x43, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x52, 0x10, 0x73, 0x6d, 0x6f, 0x6f, 0x74, 0x68, 1093 0x47, 0x72, 0x61, 0x64, 0x43, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x22, 0x96, 0x01, 0x0a, 0x0f, 0x58, 1094 0x72, 0x61, 0x69, 0x41, 0x74, 0x74, 0x72, 0x69, 0x62, 0x75, 0x74, 0x69, 0x6f, 0x6e, 0x12, 0x22, 1095 0x0a, 0x0a, 0x73, 0x74, 0x65, 0x70, 0x5f, 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x18, 0x01, 0x20, 0x01, 1096 0x28, 0x05, 0x42, 0x03, 0xe0, 0x41, 0x02, 0x52, 0x09, 0x73, 0x74, 0x65, 0x70, 0x43, 0x6f, 0x75, 1097 0x6e, 0x74, 0x12, 0x5f, 0x0a, 0x12, 0x73, 0x6d, 0x6f, 0x6f, 0x74, 0x68, 0x5f, 0x67, 0x72, 0x61, 1098 0x64, 0x5f, 0x63, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x31, 1099 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x63, 0x6c, 0x6f, 0x75, 0x64, 0x2e, 0x61, 0x69, 1100 0x70, 0x6c, 0x61, 0x74, 0x66, 0x6f, 0x72, 0x6d, 0x2e, 0x76, 0x31, 0x62, 0x65, 0x74, 0x61, 0x31, 1101 0x2e, 0x53, 0x6d, 0x6f, 0x6f, 0x74, 0x68, 0x47, 0x72, 0x61, 0x64, 0x43, 0x6f, 0x6e, 0x66, 0x69, 1102 0x67, 0x52, 0x10, 0x73, 0x6d, 0x6f, 0x6f, 0x74, 0x68, 0x47, 0x72, 0x61, 0x64, 0x43, 0x6f, 0x6e, 1103 0x66, 0x69, 0x67, 0x22, 0xdf, 0x01, 0x0a, 0x10, 0x53, 0x6d, 0x6f, 0x6f, 0x74, 0x68, 0x47, 0x72, 1104 0x61, 0x64, 0x43, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x12, 0x21, 0x0a, 0x0b, 0x6e, 0x6f, 0x69, 0x73, 1105 0x65, 0x5f, 0x73, 0x69, 0x67, 0x6d, 0x61, 0x18, 0x01, 0x20, 0x01, 0x28, 0x02, 0x48, 0x00, 0x52, 1106 0x0a, 0x6e, 0x6f, 0x69, 0x73, 0x65, 0x53, 0x69, 0x67, 0x6d, 0x61, 0x12, 0x64, 0x0a, 0x13, 0x66, 1107 0x65, 0x61, 0x74, 0x75, 0x72, 0x65, 0x5f, 0x6e, 0x6f, 0x69, 0x73, 0x65, 0x5f, 0x73, 0x69, 0x67, 1108 0x6d, 0x61, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x32, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 1109 0x65, 0x2e, 0x63, 0x6c, 0x6f, 0x75, 0x64, 0x2e, 0x61, 0x69, 0x70, 0x6c, 0x61, 0x74, 0x66, 0x6f, 1110 0x72, 0x6d, 0x2e, 0x76, 0x31, 0x62, 0x65, 0x74, 0x61, 0x31, 0x2e, 0x46, 0x65, 0x61, 0x74, 0x75, 1111 0x72, 0x65, 0x4e, 0x6f, 0x69, 0x73, 0x65, 0x53, 0x69, 0x67, 0x6d, 0x61, 0x48, 0x00, 0x52, 0x11, 1112 0x66, 0x65, 0x61, 0x74, 0x75, 0x72, 0x65, 0x4e, 0x6f, 0x69, 0x73, 0x65, 0x53, 0x69, 0x67, 0x6d, 1113 0x61, 0x12, 0x2c, 0x0a, 0x12, 0x6e, 0x6f, 0x69, 0x73, 0x79, 0x5f, 0x73, 0x61, 0x6d, 0x70, 0x6c, 1114 0x65, 0x5f, 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x18, 0x03, 0x20, 0x01, 0x28, 0x05, 0x52, 0x10, 0x6e, 1115 0x6f, 0x69, 0x73, 0x79, 0x53, 0x61, 0x6d, 0x70, 0x6c, 0x65, 0x43, 0x6f, 0x75, 0x6e, 0x74, 0x42, 1116 0x14, 0x0a, 0x12, 0x47, 0x72, 0x61, 0x64, 0x69, 0x65, 0x6e, 0x74, 0x4e, 0x6f, 0x69, 0x73, 0x65, 1117 0x53, 0x69, 0x67, 0x6d, 0x61, 0x22, 0xbf, 0x01, 0x0a, 0x11, 0x46, 0x65, 0x61, 0x74, 0x75, 0x72, 1118 0x65, 0x4e, 0x6f, 0x69, 0x73, 0x65, 0x53, 0x69, 0x67, 0x6d, 0x61, 0x12, 0x68, 0x0a, 0x0b, 0x6e, 1119 0x6f, 0x69, 0x73, 0x65, 0x5f, 0x73, 0x69, 0x67, 0x6d, 0x61, 0x18, 0x01, 0x20, 0x03, 0x28, 0x0b, 1120 0x32, 0x47, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x63, 0x6c, 0x6f, 0x75, 0x64, 0x2e, 1121 0x61, 0x69, 0x70, 0x6c, 0x61, 0x74, 0x66, 0x6f, 0x72, 0x6d, 0x2e, 0x76, 0x31, 0x62, 0x65, 0x74, 1122 0x61, 0x31, 0x2e, 0x46, 0x65, 0x61, 0x74, 0x75, 0x72, 0x65, 0x4e, 0x6f, 0x69, 0x73, 0x65, 0x53, 1123 0x69, 0x67, 0x6d, 0x61, 0x2e, 0x4e, 0x6f, 0x69, 0x73, 0x65, 0x53, 0x69, 0x67, 0x6d, 0x61, 0x46, 1124 0x6f, 0x72, 0x46, 0x65, 0x61, 0x74, 0x75, 0x72, 0x65, 0x52, 0x0a, 0x6e, 0x6f, 0x69, 0x73, 0x65, 1125 0x53, 0x69, 0x67, 0x6d, 0x61, 0x1a, 0x40, 0x0a, 0x14, 0x4e, 0x6f, 0x69, 0x73, 0x65, 0x53, 0x69, 1126 0x67, 0x6d, 0x61, 0x46, 0x6f, 0x72, 0x46, 0x65, 0x61, 0x74, 0x75, 0x72, 0x65, 0x12, 0x12, 0x0a, 1127 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x04, 0x6e, 0x61, 0x6d, 1128 0x65, 0x12, 0x14, 0x0a, 0x05, 0x73, 0x69, 0x67, 0x6d, 0x61, 0x18, 0x02, 0x20, 0x01, 0x28, 0x02, 1129 0x52, 0x05, 0x73, 0x69, 0x67, 0x6d, 0x61, 0x42, 0x84, 0x01, 0x0a, 0x23, 0x63, 0x6f, 0x6d, 0x2e, 1130 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x63, 0x6c, 0x6f, 0x75, 0x64, 0x2e, 0x61, 0x69, 0x70, 1131 0x6c, 0x61, 0x74, 0x66, 0x6f, 0x72, 0x6d, 0x2e, 0x76, 0x31, 0x62, 0x65, 0x74, 0x61, 0x31, 0x42, 1132 0x10, 0x45, 0x78, 0x70, 0x6c, 0x61, 0x6e, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x50, 0x72, 0x6f, 0x74, 1133 0x6f, 0x50, 0x01, 0x5a, 0x49, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x67, 0x6f, 0x6c, 0x61, 1134 0x6e, 0x67, 0x2e, 0x6f, 0x72, 0x67, 0x2f, 0x67, 0x65, 0x6e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x2f, 1135 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x61, 0x70, 0x69, 0x73, 0x2f, 0x63, 0x6c, 0x6f, 0x75, 0x64, 1136 0x2f, 0x61, 0x69, 0x70, 0x6c, 0x61, 0x74, 0x66, 0x6f, 0x72, 0x6d, 0x2f, 0x76, 0x31, 0x62, 0x65, 1137 0x74, 0x61, 0x31, 0x3b, 0x61, 0x69, 0x70, 0x6c, 0x61, 0x74, 0x66, 0x6f, 0x72, 0x6d, 0x62, 0x06, 1138 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x33, 1139} 1140 1141var ( 1142 file_google_cloud_aiplatform_v1beta1_explanation_proto_rawDescOnce sync.Once 1143 file_google_cloud_aiplatform_v1beta1_explanation_proto_rawDescData = file_google_cloud_aiplatform_v1beta1_explanation_proto_rawDesc 1144) 1145 1146func file_google_cloud_aiplatform_v1beta1_explanation_proto_rawDescGZIP() []byte { 1147 file_google_cloud_aiplatform_v1beta1_explanation_proto_rawDescOnce.Do(func() { 1148 file_google_cloud_aiplatform_v1beta1_explanation_proto_rawDescData = protoimpl.X.CompressGZIP(file_google_cloud_aiplatform_v1beta1_explanation_proto_rawDescData) 1149 }) 1150 return file_google_cloud_aiplatform_v1beta1_explanation_proto_rawDescData 1151} 1152 1153var file_google_cloud_aiplatform_v1beta1_explanation_proto_msgTypes = make([]protoimpl.MessageInfo, 11) 1154var file_google_cloud_aiplatform_v1beta1_explanation_proto_goTypes = []interface{}{ 1155 (*Explanation)(nil), // 0: google.cloud.aiplatform.v1beta1.Explanation 1156 (*ModelExplanation)(nil), // 1: google.cloud.aiplatform.v1beta1.ModelExplanation 1157 (*Attribution)(nil), // 2: google.cloud.aiplatform.v1beta1.Attribution 1158 (*ExplanationSpec)(nil), // 3: google.cloud.aiplatform.v1beta1.ExplanationSpec 1159 (*ExplanationParameters)(nil), // 4: google.cloud.aiplatform.v1beta1.ExplanationParameters 1160 (*SampledShapleyAttribution)(nil), // 5: google.cloud.aiplatform.v1beta1.SampledShapleyAttribution 1161 (*IntegratedGradientsAttribution)(nil), // 6: google.cloud.aiplatform.v1beta1.IntegratedGradientsAttribution 1162 (*XraiAttribution)(nil), // 7: google.cloud.aiplatform.v1beta1.XraiAttribution 1163 (*SmoothGradConfig)(nil), // 8: google.cloud.aiplatform.v1beta1.SmoothGradConfig 1164 (*FeatureNoiseSigma)(nil), // 9: google.cloud.aiplatform.v1beta1.FeatureNoiseSigma 1165 (*FeatureNoiseSigma_NoiseSigmaForFeature)(nil), // 10: google.cloud.aiplatform.v1beta1.FeatureNoiseSigma.NoiseSigmaForFeature 1166 (*structpb.Value)(nil), // 11: google.protobuf.Value 1167 (*ExplanationMetadata)(nil), // 12: google.cloud.aiplatform.v1beta1.ExplanationMetadata 1168 (*structpb.ListValue)(nil), // 13: google.protobuf.ListValue 1169} 1170var file_google_cloud_aiplatform_v1beta1_explanation_proto_depIdxs = []int32{ 1171 2, // 0: google.cloud.aiplatform.v1beta1.Explanation.attributions:type_name -> google.cloud.aiplatform.v1beta1.Attribution 1172 2, // 1: google.cloud.aiplatform.v1beta1.ModelExplanation.mean_attributions:type_name -> google.cloud.aiplatform.v1beta1.Attribution 1173 11, // 2: google.cloud.aiplatform.v1beta1.Attribution.feature_attributions:type_name -> google.protobuf.Value 1174 4, // 3: google.cloud.aiplatform.v1beta1.ExplanationSpec.parameters:type_name -> google.cloud.aiplatform.v1beta1.ExplanationParameters 1175 12, // 4: google.cloud.aiplatform.v1beta1.ExplanationSpec.metadata:type_name -> google.cloud.aiplatform.v1beta1.ExplanationMetadata 1176 5, // 5: google.cloud.aiplatform.v1beta1.ExplanationParameters.sampled_shapley_attribution:type_name -> google.cloud.aiplatform.v1beta1.SampledShapleyAttribution 1177 6, // 6: google.cloud.aiplatform.v1beta1.ExplanationParameters.integrated_gradients_attribution:type_name -> google.cloud.aiplatform.v1beta1.IntegratedGradientsAttribution 1178 7, // 7: google.cloud.aiplatform.v1beta1.ExplanationParameters.xrai_attribution:type_name -> google.cloud.aiplatform.v1beta1.XraiAttribution 1179 13, // 8: google.cloud.aiplatform.v1beta1.ExplanationParameters.output_indices:type_name -> google.protobuf.ListValue 1180 8, // 9: google.cloud.aiplatform.v1beta1.IntegratedGradientsAttribution.smooth_grad_config:type_name -> google.cloud.aiplatform.v1beta1.SmoothGradConfig 1181 8, // 10: google.cloud.aiplatform.v1beta1.XraiAttribution.smooth_grad_config:type_name -> google.cloud.aiplatform.v1beta1.SmoothGradConfig 1182 9, // 11: google.cloud.aiplatform.v1beta1.SmoothGradConfig.feature_noise_sigma:type_name -> google.cloud.aiplatform.v1beta1.FeatureNoiseSigma 1183 10, // 12: google.cloud.aiplatform.v1beta1.FeatureNoiseSigma.noise_sigma:type_name -> google.cloud.aiplatform.v1beta1.FeatureNoiseSigma.NoiseSigmaForFeature 1184 13, // [13:13] is the sub-list for method output_type 1185 13, // [13:13] is the sub-list for method input_type 1186 13, // [13:13] is the sub-list for extension type_name 1187 13, // [13:13] is the sub-list for extension extendee 1188 0, // [0:13] is the sub-list for field type_name 1189} 1190 1191func init() { file_google_cloud_aiplatform_v1beta1_explanation_proto_init() } 1192func file_google_cloud_aiplatform_v1beta1_explanation_proto_init() { 1193 if File_google_cloud_aiplatform_v1beta1_explanation_proto != nil { 1194 return 1195 } 1196 file_google_cloud_aiplatform_v1beta1_explanation_metadata_proto_init() 1197 if !protoimpl.UnsafeEnabled { 1198 file_google_cloud_aiplatform_v1beta1_explanation_proto_msgTypes[0].Exporter = func(v interface{}, i int) interface{} { 1199 switch v := v.(*Explanation); i { 1200 case 0: 1201 return &v.state 1202 case 1: 1203 return &v.sizeCache 1204 case 2: 1205 return &v.unknownFields 1206 default: 1207 return nil 1208 } 1209 } 1210 file_google_cloud_aiplatform_v1beta1_explanation_proto_msgTypes[1].Exporter = func(v interface{}, i int) interface{} { 1211 switch v := v.(*ModelExplanation); i { 1212 case 0: 1213 return &v.state 1214 case 1: 1215 return &v.sizeCache 1216 case 2: 1217 return &v.unknownFields 1218 default: 1219 return nil 1220 } 1221 } 1222 file_google_cloud_aiplatform_v1beta1_explanation_proto_msgTypes[2].Exporter = func(v interface{}, i int) interface{} { 1223 switch v := v.(*Attribution); i { 1224 case 0: 1225 return &v.state 1226 case 1: 1227 return &v.sizeCache 1228 case 2: 1229 return &v.unknownFields 1230 default: 1231 return nil 1232 } 1233 } 1234 file_google_cloud_aiplatform_v1beta1_explanation_proto_msgTypes[3].Exporter = func(v interface{}, i int) interface{} { 1235 switch v := v.(*ExplanationSpec); i { 1236 case 0: 1237 return &v.state 1238 case 1: 1239 return &v.sizeCache 1240 case 2: 1241 return &v.unknownFields 1242 default: 1243 return nil 1244 } 1245 } 1246 file_google_cloud_aiplatform_v1beta1_explanation_proto_msgTypes[4].Exporter = func(v interface{}, i int) interface{} { 1247 switch v := v.(*ExplanationParameters); i { 1248 case 0: 1249 return &v.state 1250 case 1: 1251 return &v.sizeCache 1252 case 2: 1253 return &v.unknownFields 1254 default: 1255 return nil 1256 } 1257 } 1258 file_google_cloud_aiplatform_v1beta1_explanation_proto_msgTypes[5].Exporter = func(v interface{}, i int) interface{} { 1259 switch v := v.(*SampledShapleyAttribution); i { 1260 case 0: 1261 return &v.state 1262 case 1: 1263 return &v.sizeCache 1264 case 2: 1265 return &v.unknownFields 1266 default: 1267 return nil 1268 } 1269 } 1270 file_google_cloud_aiplatform_v1beta1_explanation_proto_msgTypes[6].Exporter = func(v interface{}, i int) interface{} { 1271 switch v := v.(*IntegratedGradientsAttribution); i { 1272 case 0: 1273 return &v.state 1274 case 1: 1275 return &v.sizeCache 1276 case 2: 1277 return &v.unknownFields 1278 default: 1279 return nil 1280 } 1281 } 1282 file_google_cloud_aiplatform_v1beta1_explanation_proto_msgTypes[7].Exporter = func(v interface{}, i int) interface{} { 1283 switch v := v.(*XraiAttribution); i { 1284 case 0: 1285 return &v.state 1286 case 1: 1287 return &v.sizeCache 1288 case 2: 1289 return &v.unknownFields 1290 default: 1291 return nil 1292 } 1293 } 1294 file_google_cloud_aiplatform_v1beta1_explanation_proto_msgTypes[8].Exporter = func(v interface{}, i int) interface{} { 1295 switch v := v.(*SmoothGradConfig); i { 1296 case 0: 1297 return &v.state 1298 case 1: 1299 return &v.sizeCache 1300 case 2: 1301 return &v.unknownFields 1302 default: 1303 return nil 1304 } 1305 } 1306 file_google_cloud_aiplatform_v1beta1_explanation_proto_msgTypes[9].Exporter = func(v interface{}, i int) interface{} { 1307 switch v := v.(*FeatureNoiseSigma); i { 1308 case 0: 1309 return &v.state 1310 case 1: 1311 return &v.sizeCache 1312 case 2: 1313 return &v.unknownFields 1314 default: 1315 return nil 1316 } 1317 } 1318 file_google_cloud_aiplatform_v1beta1_explanation_proto_msgTypes[10].Exporter = func(v interface{}, i int) interface{} { 1319 switch v := v.(*FeatureNoiseSigma_NoiseSigmaForFeature); i { 1320 case 0: 1321 return &v.state 1322 case 1: 1323 return &v.sizeCache 1324 case 2: 1325 return &v.unknownFields 1326 default: 1327 return nil 1328 } 1329 } 1330 } 1331 file_google_cloud_aiplatform_v1beta1_explanation_proto_msgTypes[4].OneofWrappers = []interface{}{ 1332 (*ExplanationParameters_SampledShapleyAttribution)(nil), 1333 (*ExplanationParameters_IntegratedGradientsAttribution)(nil), 1334 (*ExplanationParameters_XraiAttribution)(nil), 1335 } 1336 file_google_cloud_aiplatform_v1beta1_explanation_proto_msgTypes[8].OneofWrappers = []interface{}{ 1337 (*SmoothGradConfig_NoiseSigma)(nil), 1338 (*SmoothGradConfig_FeatureNoiseSigma)(nil), 1339 } 1340 type x struct{} 1341 out := protoimpl.TypeBuilder{ 1342 File: protoimpl.DescBuilder{ 1343 GoPackagePath: reflect.TypeOf(x{}).PkgPath(), 1344 RawDescriptor: file_google_cloud_aiplatform_v1beta1_explanation_proto_rawDesc, 1345 NumEnums: 0, 1346 NumMessages: 11, 1347 NumExtensions: 0, 1348 NumServices: 0, 1349 }, 1350 GoTypes: file_google_cloud_aiplatform_v1beta1_explanation_proto_goTypes, 1351 DependencyIndexes: file_google_cloud_aiplatform_v1beta1_explanation_proto_depIdxs, 1352 MessageInfos: file_google_cloud_aiplatform_v1beta1_explanation_proto_msgTypes, 1353 }.Build() 1354 File_google_cloud_aiplatform_v1beta1_explanation_proto = out.File 1355 file_google_cloud_aiplatform_v1beta1_explanation_proto_rawDesc = nil 1356 file_google_cloud_aiplatform_v1beta1_explanation_proto_goTypes = nil 1357 file_google_cloud_aiplatform_v1beta1_explanation_proto_depIdxs = nil 1358} 1359