ParameterServer

Trait ParameterServer 

Source
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§

Source

type Parameters: Serialize + for<'de> Deserialize<'de>

Associated type for parameters

Required Methods§

Source

fn initialize( &mut self, initial_params: Self::Parameters, ) -> BoxFuture<'_, Result<()>>

Initialize the parameter server

Source

fn get_parameters(&self) -> BoxFuture<'_, Result<Self::Parameters>>

Get current parameters

Source

fn update_parameters( &mut self, gradients: Vec<Self::Parameters>, ) -> BoxFuture<'_, Result<()>>

Update parameters with gradients

Source

fn push_parameters( &self, cluster: &dyn DistributedCluster, ) -> BoxFuture<'_, Result<()>>

Push parameters to all worker nodes

Source

fn pull_parameters( &mut self, cluster: &dyn DistributedCluster, ) -> BoxFuture<'_, Result<()>>

Pull parameters from worker nodes

Source

fn aggregate_gradients( &mut self, gradients: Vec<Self::Parameters>, ) -> BoxFuture<'_, Result<Self::Parameters>>

Aggregate gradients from worker nodes

Source

fn apply_optimization( &mut self, aggregated_gradients: Self::Parameters, ) -> BoxFuture<'_, Result<()>>

Apply learning rate and optimization

Implementors§