blob: 987b6e7fdc720ab92bae360e633f94a61d7ba5f0 [file]
// Copyright 2023 Google LLC
//
// Licensed under the Apache License, Version 2.0 (the "License");
// you may not use this file except in compliance with the License.
// You may obtain a copy of the License at
//
// http://www.apache.org/licenses/LICENSE-2.0
//
// Unless required by applicable law or agreed to in writing, software
// distributed under the License is distributed on an "AS IS" BASIS,
// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
// See the License for the specific language governing permissions and
// limitations under the License.
syntax = "proto3";
package google.ai.generativelanguage.v1beta;
import "google/api/field_behavior.proto";
import "google/api/resource.proto";
import "google/protobuf/timestamp.proto";
option go_package = "cloud.google.com/go/ai/generativelanguage/apiv1beta/generativelanguagepb;generativelanguagepb";
option java_multiple_files = true;
option java_outer_classname = "TunedModelProto";
option java_package = "com.google.ai.generativelanguage.v1beta";
// A fine-tuned model created using ModelService.CreateTunedModel.
message TunedModel {
option (google.api.resource) = {
type: "generativelanguage.googleapis.com/TunedModel"
pattern: "tunedModels/{tuned_model}"
plural: "tunedModels"
singular: "tunedModel"
};
// The state of the tuned model.
enum State {
// The default value. This value is unused.
STATE_UNSPECIFIED = 0;
// The model is being created.
CREATING = 1;
// The model is ready to be used.
ACTIVE = 2;
// The model failed to be created.
FAILED = 3;
}
// The model used as the starting point for tuning.
oneof source_model {
// Optional. TunedModel to use as the starting point for training the new
// model.
TunedModelSource tuned_model_source = 3
[(google.api.field_behavior) = OPTIONAL];
// Immutable. The name of the `Model` to tune.
// Example: `models/text-bison-001`
string base_model = 4 [
(google.api.field_behavior) = IMMUTABLE,
(google.api.resource_reference) = {
type: "generativelanguage.googleapis.com/Model"
}
];
}
// Output only. The tuned model name. A unique name will be generated on
// create. Example: `tunedModels/az2mb0bpw6i` If display_name is set on
// create, the id portion of the name will be set by concatenating the words
// of the display_name with hyphens and adding a random portion for
// uniqueness. Example:
// display_name = "Sentence Translator"
// name = "tunedModels/sentence-translator-u3b7m"
string name = 1 [(google.api.field_behavior) = OUTPUT_ONLY];
// Optional. The name to display for this model in user interfaces.
// The display name must be up to 40 characters including spaces.
string display_name = 5 [(google.api.field_behavior) = OPTIONAL];
// Optional. A short description of this model.
string description = 6 [(google.api.field_behavior) = OPTIONAL];
// Optional. Controls the randomness of the output.
//
// Values can range over `[0.0,1.0]`, inclusive. A value closer to `1.0` will
// produce responses that are more varied, while a value closer to `0.0` will
// typically result in less surprising responses from the model.
//
// This value specifies default to be the one used by the base model while
// creating the model.
optional float temperature = 11 [(google.api.field_behavior) = OPTIONAL];
// Optional. For Nucleus sampling.
//
// Nucleus sampling considers the smallest set of tokens whose probability
// sum is at least `top_p`.
//
// This value specifies default to be the one used by the base model while
// creating the model.
optional float top_p = 12 [(google.api.field_behavior) = OPTIONAL];
// Optional. For Top-k sampling.
//
// Top-k sampling considers the set of `top_k` most probable tokens.
// This value specifies default to be used by the backend while making the
// call to the model.
//
// This value specifies default to be the one used by the base model while
// creating the model.
optional int32 top_k = 13 [(google.api.field_behavior) = OPTIONAL];
// Output only. The state of the tuned model.
State state = 7 [(google.api.field_behavior) = OUTPUT_ONLY];
// Output only. The timestamp when this model was created.
google.protobuf.Timestamp create_time = 8
[(google.api.field_behavior) = OUTPUT_ONLY];
// Output only. The timestamp when this model was updated.
google.protobuf.Timestamp update_time = 9
[(google.api.field_behavior) = OUTPUT_ONLY];
// Required. The tuning task that creates the tuned model.
TuningTask tuning_task = 10 [(google.api.field_behavior) = REQUIRED];
}
// Tuned model as a source for training a new model.
message TunedModelSource {
// Immutable. The name of the `TunedModel` to use as the starting point for
// training the new model.
// Example: `tunedModels/my-tuned-model`
string tuned_model = 1 [
(google.api.field_behavior) = IMMUTABLE,
(google.api.resource_reference) = {
type: "generativelanguage.googleapis.com/TunedModel"
}
];
// Output only. The name of the base `Model` this `TunedModel` was tuned from.
// Example: `models/text-bison-001`
string base_model = 2 [
(google.api.field_behavior) = OUTPUT_ONLY,
(google.api.resource_reference) = {
type: "generativelanguage.googleapis.com/Model"
}
];
}
// Tuning tasks that create tuned models.
message TuningTask {
// Output only. The timestamp when tuning this model started.
google.protobuf.Timestamp start_time = 1
[(google.api.field_behavior) = OUTPUT_ONLY];
// Output only. The timestamp when tuning this model completed.
google.protobuf.Timestamp complete_time = 2
[(google.api.field_behavior) = OUTPUT_ONLY];
// Output only. Metrics collected during tuning.
repeated TuningSnapshot snapshots = 3
[(google.api.field_behavior) = OUTPUT_ONLY];
// Required. Input only. Immutable. The model training data.
Dataset training_data = 4 [
(google.api.field_behavior) = INPUT_ONLY,
(google.api.field_behavior) = REQUIRED,
(google.api.field_behavior) = IMMUTABLE
];
// Immutable. Hyperparameters controlling the tuning process. If not provided,
// default values will be used.
Hyperparameters hyperparameters = 5 [(google.api.field_behavior) = IMMUTABLE];
}
// Hyperparameters controlling the tuning process. Read more at
// https://ai.google.dev/docs/model_tuning_guidance
message Hyperparameters {
// Options for specifying learning rate during tuning.
oneof learning_rate_option {
// Optional. Immutable. The learning rate hyperparameter for tuning.
// If not set, a default of 0.001 or 0.0002 will be calculated based on the
// number of training examples.
float learning_rate = 16 [
(google.api.field_behavior) = IMMUTABLE,
(google.api.field_behavior) = OPTIONAL
];
// Optional. Immutable. The learning rate multiplier is used to calculate a
// final learning_rate based on the default (recommended) value. Actual
// learning rate := learning_rate_multiplier * default learning rate Default
// learning rate is dependent on base model and dataset size. If not set, a
// default of 1.0 will be used.
float learning_rate_multiplier = 17 [
(google.api.field_behavior) = IMMUTABLE,
(google.api.field_behavior) = OPTIONAL
];
}
// Immutable. The number of training epochs. An epoch is one pass through the
// training data. If not set, a default of 5 will be used.
optional int32 epoch_count = 14 [(google.api.field_behavior) = IMMUTABLE];
// Immutable. The batch size hyperparameter for tuning.
// If not set, a default of 4 or 16 will be used based on the number of
// training examples.
optional int32 batch_size = 15 [(google.api.field_behavior) = IMMUTABLE];
}
// Dataset for training or validation.
message Dataset {
// Inline data or a reference to the data.
oneof dataset {
// Optional. Inline examples.
TuningExamples examples = 1 [(google.api.field_behavior) = OPTIONAL];
}
}
// A set of tuning examples. Can be training or validation data.
message TuningExamples {
// Required. The examples. Example input can be for text or discuss, but all
// examples in a set must be of the same type.
repeated TuningExample examples = 1 [(google.api.field_behavior) = REQUIRED];
}
// A single example for tuning.
message TuningExample {
// The input to the model for this example.
oneof model_input {
// Optional. Text model input.
string text_input = 1 [(google.api.field_behavior) = OPTIONAL];
}
// Required. The expected model output.
string output = 3 [(google.api.field_behavior) = REQUIRED];
}
// Record for a single tuning step.
message TuningSnapshot {
// Output only. The tuning step.
int32 step = 1 [(google.api.field_behavior) = OUTPUT_ONLY];
// Output only. The epoch this step was part of.
int32 epoch = 2 [(google.api.field_behavior) = OUTPUT_ONLY];
// Output only. The mean loss of the training examples for this step.
float mean_loss = 3 [(google.api.field_behavior) = OUTPUT_ONLY];
// Output only. The timestamp when this metric was computed.
google.protobuf.Timestamp compute_time = 4
[(google.api.field_behavior) = OUTPUT_ONLY];
}