chromium/components/segmentation_platform/internal/proto/model_prediction.proto

// Copyright 2021 The Chromium Authors
// Use of this source code is governed by a BSD-style license that can be
// found in the LICENSE file.

syntax = "proto2";
option optimize_for = LITE_RUNTIME;

package segmentation_platform.proto;

import "components/segmentation_platform/public/proto/model_metadata.proto";
import "components/segmentation_platform/public/proto/prediction_result.proto";
import "components/segmentation_platform/public/proto/segmentation_platform.proto";

// Partial training data set with only inputs, used when observation period has
// not ended.
message TrainingData {
  // Input training data.
  repeated float inputs = 1;

  // The time at which inputs were recorded.
  optional int64 decision_timestamp = 2;

  // The training collection request id.
  optional int64 request_id = 3;

  // The time at which output should be ready to be recorded.
  optional int64 observation_trigger_timestamp = 4;
}

// Top level message for a segment. Contains both the model metadata and
// prediction results.
// Next tag: 6
message SegmentInfo {
  // Segment target.
  optional SegmentId segment_id = 1;

  // Cached copy of the segment metadata which is important in case the metadata
  // is temporarily not available in the future. It also contains the relevant
  // information regarding things like the TTL for a prediction result.
  optional SegmentationModelMetadata model_metadata = 2;

  // The last prediction result for this segment.
  optional PredictionResult prediction_result = 3;

  // The model version defined in ModeInfo in optimization guide, given by
  // optimization guide API after ModeInfo is fetched.
  optional int64 model_version = 4;

  // The time that a new version of model from optimization guide is available
  // and the metadta is persisted to this proto, in seconds since windows epoch.
  // Could be empty for data persisted before this field is added in M101.
  optional int64 model_update_time_s = 5;

  // Model source indicating if model is a client model or a server model.
  optional ModelSource model_source = 6;

  // Partial training data awaiting observation time to finish collection.
  repeated TrainingData training_data = 7;
}

// Used to test that the model evaluation score for given segment supports the
// new PredictionResult proto.
message LegacyPredictionResultForTesting {
  // The result is the confidence rating from the model evaluation.
  optional float result = 1;

  // The time when the prediction was made, in terms of the number of
  // microseconds since Windows epoch.
  optional int64 timestamp_us = 2;
}