pub trait ParameterServer: Send + Sync {
type Parameters: Serialize + for<'de> Deserialize<'de>;
// Required methods
fn initialize(
&mut self,
initial_params: Self::Parameters,
) -> BoxFuture<'_, Result<()>>;
fn get_parameters(&self) -> BoxFuture<'_, Result<Self::Parameters>>;
fn update_parameters(
&mut self,
gradients: Vec<Self::Parameters>,
) -> BoxFuture<'_, Result<()>>;
fn push_parameters(
&self,
cluster: &dyn DistributedCluster,
) -> BoxFuture<'_, Result<()>>;
fn pull_parameters(
&mut self,
cluster: &dyn DistributedCluster,
) -> BoxFuture<'_, Result<()>>;
fn aggregate_gradients(
&mut self,
gradients: Vec<Self::Parameters>,
) -> BoxFuture<'_, Result<Self::Parameters>>;
fn apply_optimization(
&mut self,
aggregated_gradients: Self::Parameters,
) -> BoxFuture<'_, Result<()>>;
}Expand description
Parameter server for coordinating distributed machine learning
Required Associated Types§
Sourcetype Parameters: Serialize + for<'de> Deserialize<'de>
type Parameters: Serialize + for<'de> Deserialize<'de>
Associated type for parameters
Required Methods§
Sourcefn initialize(
&mut self,
initial_params: Self::Parameters,
) -> BoxFuture<'_, Result<()>>
fn initialize( &mut self, initial_params: Self::Parameters, ) -> BoxFuture<'_, Result<()>>
Initialize the parameter server
Sourcefn get_parameters(&self) -> BoxFuture<'_, Result<Self::Parameters>>
fn get_parameters(&self) -> BoxFuture<'_, Result<Self::Parameters>>
Get current parameters
Sourcefn update_parameters(
&mut self,
gradients: Vec<Self::Parameters>,
) -> BoxFuture<'_, Result<()>>
fn update_parameters( &mut self, gradients: Vec<Self::Parameters>, ) -> BoxFuture<'_, Result<()>>
Update parameters with gradients
Sourcefn push_parameters(
&self,
cluster: &dyn DistributedCluster,
) -> BoxFuture<'_, Result<()>>
fn push_parameters( &self, cluster: &dyn DistributedCluster, ) -> BoxFuture<'_, Result<()>>
Push parameters to all worker nodes
Sourcefn pull_parameters(
&mut self,
cluster: &dyn DistributedCluster,
) -> BoxFuture<'_, Result<()>>
fn pull_parameters( &mut self, cluster: &dyn DistributedCluster, ) -> BoxFuture<'_, Result<()>>
Pull parameters from worker nodes
Sourcefn aggregate_gradients(
&mut self,
gradients: Vec<Self::Parameters>,
) -> BoxFuture<'_, Result<Self::Parameters>>
fn aggregate_gradients( &mut self, gradients: Vec<Self::Parameters>, ) -> BoxFuture<'_, Result<Self::Parameters>>
Aggregate gradients from worker nodes
Sourcefn apply_optimization(
&mut self,
aggregated_gradients: Self::Parameters,
) -> BoxFuture<'_, Result<()>>
fn apply_optimization( &mut self, aggregated_gradients: Self::Parameters, ) -> BoxFuture<'_, Result<()>>
Apply learning rate and optimization