76 lines
2.1 KiB
Rust
76 lines
2.1 KiB
Rust
//! Configuration for elastic training.
|
|
|
|
use serde::{Deserialize, Serialize};
|
|
|
|
/// Scaling policy for elastic training
|
|
#[derive(Debug, Clone, Copy, PartialEq, Eq, Serialize, Deserialize)]
|
|
pub enum ScalingPolicy {
|
|
/// Manual scaling only
|
|
Manual,
|
|
/// Scale based on resource availability
|
|
ResourceBased,
|
|
/// Scale based on training throughput
|
|
ThroughputBased,
|
|
/// Scale based on cost efficiency
|
|
CostBased,
|
|
}
|
|
|
|
/// Worker state in elastic cluster
|
|
#[derive(Debug, Clone, Copy, PartialEq, Eq, Serialize, Deserialize)]
|
|
pub enum WorkerState {
|
|
/// Worker is initializing
|
|
Initializing,
|
|
/// Worker is active and training
|
|
Active,
|
|
/// Worker is draining (preparing to leave)
|
|
Draining,
|
|
/// Worker is paused
|
|
Paused,
|
|
/// Worker has failed
|
|
Failed,
|
|
/// Worker is being removed
|
|
Removing,
|
|
}
|
|
|
|
/// Configuration for elastic training
|
|
#[derive(Debug, Clone, Serialize, Deserialize)]
|
|
pub struct ElasticConfig {
|
|
/// Minimum number of workers
|
|
pub min_workers: usize,
|
|
/// Maximum number of workers
|
|
pub max_workers: usize,
|
|
/// Initial number of workers
|
|
pub initial_workers: usize,
|
|
/// Scaling policy
|
|
pub scaling_policy: ScalingPolicy,
|
|
/// Heartbeat interval (ms)
|
|
pub heartbeat_interval_ms: u64,
|
|
/// Failure detection timeout (ms)
|
|
pub failure_timeout_ms: u64,
|
|
/// Enable automatic checkpointing before scale events
|
|
pub checkpoint_on_scale: bool,
|
|
/// Enable automatic state redistribution
|
|
pub redistribute_state: bool,
|
|
/// Cooldown period between scale events (ms)
|
|
pub scale_cooldown_ms: u64,
|
|
/// Maximum pending scale operations
|
|
pub max_pending_scales: usize,
|
|
}
|
|
|
|
impl Default for ElasticConfig {
|
|
fn default() -> Self {
|
|
Self {
|
|
min_workers: 1,
|
|
max_workers: 64,
|
|
initial_workers: 4,
|
|
scaling_policy: ScalingPolicy::Manual,
|
|
heartbeat_interval_ms: 1000,
|
|
failure_timeout_ms: 30000,
|
|
checkpoint_on_scale: true,
|
|
redistribute_state: true,
|
|
scale_cooldown_ms: 60000,
|
|
max_pending_scales: 4,
|
|
}
|
|
}
|
|
}
|