pub struct NeuralMoE { /* private fields */ }Expand description
Streaming Neural Mixture of Experts.
Polymorphic MoE where each expert can be any StreamingLearner.
Implements StreamingLearner itself for composability.
§Example
use irithyll::moe::NeuralMoE;
use irithyll::{sgbt, esn, StreamingLearner};
let mut moe = NeuralMoE::builder()
.expert(sgbt(50, 0.01))
.expert(sgbt(100, 0.005))
.expert_with_warmup(esn(50, 0.9), 50)
.top_k(2)
.build();
moe.train(&[1.0, 2.0, 3.0], 4.0);
let pred = moe.predict(&[1.0, 2.0, 3.0]);Implementations§
Source§impl NeuralMoE
impl NeuralMoE
Sourcepub fn builder() -> NeuralMoEBuilder
pub fn builder() -> NeuralMoEBuilder
Start building a NeuralMoE with the builder pattern.
Source§impl NeuralMoE
impl NeuralMoE
Sourcepub fn utilization(&self) -> Vec<f64>
pub fn utilization(&self) -> Vec<f64>
Per-expert utilization (EWMA of routing probability).
Sourcepub fn expert_samples(&self) -> Vec<u64>
pub fn expert_samples(&self) -> Vec<u64>
Per-expert samples trained.
Sourcepub fn n_dead_experts(&self) -> usize
pub fn n_dead_experts(&self) -> usize
Number of dead experts (utilization below threshold).
Sourcepub fn load_distribution(&self) -> &[f64]
pub fn load_distribution(&self) -> &[f64]
Load distribution from the router.
Sourcepub fn expert_disagreement(&self, features: &[f64]) -> f64
pub fn expert_disagreement(&self, features: &[f64]) -> f64
Expert disagreement: std dev of all expert predictions.
High disagreement indicates the experts have divergent views on this input — a real uncertainty signal. Returns 0.0 when fewer than 2 experts exist or predictions are uniform.
Sourcepub fn cached_disagreement(&self) -> f64
pub fn cached_disagreement(&self) -> f64
Cached expert disagreement from the most recent train_one call.
This avoids recomputing disagreement in config_diagnostics(), which
only has &self (no features available). Updated every train_one.
Sourcepub fn expert_predictions(&self, features: &[f64]) -> Vec<f64>
pub fn expert_predictions(&self, features: &[f64]) -> Vec<f64>
Get predictions from all experts (for inspection).
Sourcepub fn routing_probabilities(&self, features: &[f64]) -> Vec<f64>
pub fn routing_probabilities(&self, features: &[f64]) -> Vec<f64>
Get current routing probabilities (for inspection).
Trait Implementations§
Source§impl DiagnosticSource for NeuralMoE
impl DiagnosticSource for NeuralMoE
Source§fn config_diagnostics(&self) -> Option<ConfigDiagnostics>
fn config_diagnostics(&self) -> Option<ConfigDiagnostics>
None if not supported.Source§impl StreamingLearner for NeuralMoE
impl StreamingLearner for NeuralMoE
Source§fn train_one(&mut self, features: &[f64], target: f64, weight: f64)
fn train_one(&mut self, features: &[f64], target: f64, weight: f64)
Source§fn predict(&self, features: &[f64]) -> f64
fn predict(&self, features: &[f64]) -> f64
Source§fn n_samples_seen(&self) -> u64
fn n_samples_seen(&self) -> u64
Source§fn train(&mut self, features: &[f64], target: f64)
fn train(&mut self, features: &[f64], target: f64)
Source§fn predict_batch(&self, feature_matrix: &[&[f64]]) -> Vec<f64>
fn predict_batch(&self, feature_matrix: &[&[f64]]) -> Vec<f64>
Source§fn adjust_config(&mut self, _lr_multiplier: f64, _lambda_delta: f64)
fn adjust_config(&mut self, _lr_multiplier: f64, _lambda_delta: f64)
Source§fn apply_structural_change(&mut self, _depth_delta: i32, _steps_delta: i32)
fn apply_structural_change(&mut self, _depth_delta: i32, _steps_delta: i32)
Source§fn replacement_count(&self) -> u64
fn replacement_count(&self) -> u64
Source§fn check_proactive_prune(&mut self) -> bool
fn check_proactive_prune(&mut self) -> bool
Source§fn set_prune_half_life(&mut self, _hl: usize)
fn set_prune_half_life(&mut self, _hl: usize)
Auto Trait Implementations§
impl Freeze for NeuralMoE
impl !RefUnwindSafe for NeuralMoE
impl Send for NeuralMoE
impl Sync for NeuralMoE
impl Unpin for NeuralMoE
impl UnsafeUnpin for NeuralMoE
impl !UnwindSafe for NeuralMoE
Blanket Implementations§
Source§impl<T> BorrowMut<T> for Twhere
T: ?Sized,
impl<T> BorrowMut<T> for Twhere
T: ?Sized,
Source§fn borrow_mut(&mut self) -> &mut T
fn borrow_mut(&mut self) -> &mut T
Source§impl<T> Instrument for T
impl<T> Instrument for T
Source§fn instrument(self, span: Span) -> Instrumented<Self>
fn instrument(self, span: Span) -> Instrumented<Self>
Source§fn in_current_span(self) -> Instrumented<Self>
fn in_current_span(self) -> Instrumented<Self>
Source§impl<T> IntoEither for T
impl<T> IntoEither for T
Source§fn into_either(self, into_left: bool) -> Either<Self, Self>
fn into_either(self, into_left: bool) -> Either<Self, Self>
self into a Left variant of Either<Self, Self>
if into_left is true.
Converts self into a Right variant of Either<Self, Self>
otherwise. Read moreSource§fn into_either_with<F>(self, into_left: F) -> Either<Self, Self>
fn into_either_with<F>(self, into_left: F) -> Either<Self, Self>
self into a Left variant of Either<Self, Self>
if into_left(&self) returns true.
Converts self into a Right variant of Either<Self, Self>
otherwise. Read more