use nebulous::models::{V1ResourceMeta, V1ResourceMetaRequest};
use nebulous::resources::v1::containers::models::{V1ContainerRequest, V1EnvVar};
use serde::{Deserialize, Serialize};
#[derive(Deserialize, Serialize, Clone, Default, Debug)]
pub struct V1ReplayBufferRequest {
pub metadata: V1ResourceMetaRequest,
pub train_every: Option<i32>,
#[serde(default = "default_sample_n")]
pub sample_n: i32,
#[serde(default = "default_sample_strategy")]
pub sample_strategy: String,
pub train_job: V1ContainerRequest,
pub num_epochs: i32,
}
#[derive(Deserialize, Serialize, Clone, Default, Debug)]
pub struct V1UpdateReplayBufferRequest {
pub train_every: Option<i32>,
pub sample_n: Option<i32>,
pub sample_strategy: Option<String>,
pub train_job: Option<V1ContainerRequest>,
pub num_epochs: i32,
}
#[derive(Deserialize, Serialize, Clone, Default, Debug)]
pub struct V1ReplayBufferStatus {
pub num_records: Option<i32>,
pub train_idx: Option<i32>,
pub num_train_jobs: Option<i32>,
pub last_train_job: Option<String>,
pub num_epochs: Option<i32>,
}
#[derive(Deserialize, Serialize, Clone, Default, Debug)]
pub struct V1ReplayBuffer {
pub metadata: V1ResourceMeta,
pub train_every: Option<i32>,
pub sample_n: i32,
pub sample_strategy: String,
pub status: V1ReplayBufferStatus,
pub train_job: V1ContainerRequest,
pub num_epochs: i32,
}
fn default_sample_n() -> i32 {
100
}
fn default_sample_strategy() -> String {
"Random".to_string()
}
#[derive(Deserialize, Serialize, Clone, Default, Debug)]
pub struct V1ReplayBuffersResponse {
pub buffers: Vec<V1ReplayBuffer>,
}
#[derive(Deserialize, Serialize, Clone, Default, Debug)]
pub struct V1ReplayBufferData {
pub examples: Vec<serde_json::Value>,
pub train: Option<bool>,
}