Skip to main content

Worker

Struct Worker 

Source
pub struct Worker {
    pub id: WorkerId,
    pub capabilities: Capabilities,
    /* private fields */
}
Expand description

Worker state: manages execution of plans received from a coordinator.

Fields§

§id: WorkerId

The identity this worker registers and reports under.

§capabilities: Capabilities

What this worker can run, announced to the coordinator at registration.

Implementations§

Source§

impl Worker

Source

pub fn new(id: impl Into<String>, capabilities: Capabilities) -> Self

A worker with an in-memory cache, an empty catalog, and per-worker temp/env directories derived from id. Filters arrive later, with the plans; the interpreter defaults to $SOMA_PYTHON, then python3 — see Worker::with_python for why that matters.

Source

pub fn with_python(self, python: impl Into<String>) -> Self

Run filters in this interpreter rather than whatever python3 resolves to.

An embedding process should pass its own sys.executable: it is the interpreter that pickled the filters, so it is the only one certain to unpickle them.

Source

pub fn with_cache(self, cache: Arc<dyn CacheStore>) -> Self

Set a custom cache store (e.g. tiered or shared).

Source

pub fn with_data_store(self, store: Arc<dyn DataStore>) -> Self

Set a persistent DataStore (S3, Zarr, etc.) for large data references.

Source

pub fn with_temp_dir(self, path: PathBuf) -> Self

Set a custom temp directory for HTTP bulk uploads.

Source

pub fn temp_store(&self) -> &Arc<LocalDataStore>

Get the temp store (for HTTP upload endpoint).

Source

pub fn register_filter( &mut self, node_id: impl Into<String>, filter: Box<dyn Filter>, )

Register a filter that this worker can execute.

Source

pub fn get_filter(&self, node_id: &str) -> Option<Arc<dyn Filter>>

Get a filter by node_id.

Source

pub fn catalog(&self) -> &NodeCatalog

The node catalog — what a stream driver is built over.

Source

pub fn event_bus(&self) -> &Arc<EventBus>

The worker’s event bus.

Source

pub fn cache(&self) -> &Arc<dyn CacheStore>

The worker’s cache store.

Source

pub fn get_filter_state(&self, node_id: &str) -> Arc<Value>

Get trained state for a filter.

Source

pub fn read_states(&self, node_ids: &[String]) -> Result<HashMap<String, Value>>

Trained state of one or more nodes, read from the Python process.

The four methods below back the wire messages of the same names. They existed on PythonProcess and in the daemon script from the start; what was missing was anything calling them, so soma-worker/src/server.rs answered all four with “not implemented for SubprocessFilter” and DataParallel could not run.

Source

pub fn write_states(&mut self, states: &HashMap<String, Value>) -> Result<()>

Load states into the Python process (and the catalog beside it).

Source

pub fn read_gradients( &self, node_ids: &[String], ) -> Result<HashMap<String, Value>>

Gradients currently held by each node’s parameters.

Source

pub fn write_gradients(&self, gradients: &HashMap<String, Value>) -> Result<()>

Apply aggregated gradients to each node’s parameters.

Source

pub fn set_filter_state(&mut self, node_id: &str, state: Value)

Set trained state for a filter.

Source

pub fn wrap_output(&self, output: Value) -> OutputDelivery

Wrap output in the right delivery: inline for small, DataRef for large.

Source

pub fn subscribe(&self) -> Receiver<Event>

Subscribe to execution events.

Source

pub fn registration_message(&self) -> WorkerToCoordinator

Build a registration message.

Source

pub fn execute_plan(&mut self, plan: &SerializedPlan) -> PlanResult

Execute a serialized plan.

If the plan contains serialized filter definitions, they are registered temporarily for this execution (alongside any pre-registered filters).

In Fit mode: fits each filter (topological order), stores trained states, then forwards to propagate outputs. Returns states so the client can cache them.

In Forward mode: executes the compiled plan directly.

Source

pub fn matches_target(&self, target: &RemoteTarget) -> bool

Check if this worker matches a remote target.

Auto Trait Implementations§

Blanket Implementations§

Source§

impl<T> Any for T
where T: 'static + ?Sized,

Source§

fn type_id(&self) -> TypeId

Gets the TypeId of self. Read more
§

impl<T> AsAny for T
where T: Any,

§

fn as_any(&self) -> &(dyn Any + 'static)

The receiver as &dyn Any, ready for downcast_ref.
Source§

impl<T> Borrow<T> for T
where T: ?Sized,

Source§

fn borrow(&self) -> &T

Immutably borrows from an owned value. Read more
Source§

impl<T> BorrowMut<T> for T
where T: ?Sized,

Source§

fn borrow_mut(&mut self) -> &mut T

Mutably borrows from an owned value. Read more
Source§

impl<T> From<T> for T

Source§

fn from(t: T) -> T

Returns the argument unchanged.

§

impl<T> Instrument for T

§

fn instrument(self, span: Span) -> Instrumented<Self>

Instruments this type with the provided [Span], returning an Instrumented wrapper. Read more
§

fn in_current_span(self) -> Instrumented<Self>

Instruments this type with the current Span, returning an Instrumented wrapper. Read more
Source§

impl<T, U> Into<U> for T
where U: From<T>,

Source§

fn into(self) -> U

Calls U::from(self).

That is, this conversion is whatever the implementation of From<T> for U chooses to do.

Source§

impl<T> IntoEither for T

Source§

fn into_either(self, into_left: bool) -> Either<Self, Self>

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

fn into_either_with<F>(self, into_left: F) -> Either<Self, Self>
where F: FnOnce(&Self) -> bool,

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

impl<T> Pointable for T

§

const ALIGN: usize

The alignment of pointer.
§

type Init = T

The type for initializers.
§

unsafe fn init(init: <T as Pointable>::Init) -> usize

Initializes a with the given initializer. Read more
§

unsafe fn deref<'a>(ptr: usize) -> &'a T

Dereferences the given pointer. Read more
§

unsafe fn deref_mut<'a>(ptr: usize) -> &'a mut T

Mutably dereferences the given pointer. Read more
§

unsafe fn drop(ptr: usize)

Drops the object pointed to by the given pointer. Read more
§

impl<T> PolicyExt for T
where T: ?Sized,

§

fn and<P, B, E>(self, other: P) -> And<T, P>
where T: Policy<B, E>, P: Policy<B, E>,

Create a new Policy that returns [Action::Follow] only if self and other return Action::Follow. Read more
§

fn or<P, B, E>(self, other: P) -> Or<T, P>
where T: Policy<B, E>, P: Policy<B, E>,

Create a new Policy that returns [Action::Follow] if either self or other returns Action::Follow. Read more
Source§

impl<T> Same for T

Source§

type Output = T

Should always be Self
Source§

impl<T, U> TryFrom<U> for T
where U: Into<T>,

Source§

type Error = Infallible

The type returned in the event of a conversion error.
Source§

fn try_from(value: U) -> Result<T, <T as TryFrom<U>>::Error>

Performs the conversion.
Source§

impl<T, U> TryInto<U> for T
where U: TryFrom<T>,

Source§

type Error = <U as TryFrom<T>>::Error

The type returned in the event of a conversion error.
Source§

fn try_into(self) -> Result<U, <U as TryFrom<T>>::Error>

Performs the conversion.
§

impl<V, T> VZip<V> for T
where V: MultiLane<T>,

§

fn vzip(self) -> V

§

impl<T> WithSubscriber for T

§

fn with_subscriber<S>(self, subscriber: S) -> WithDispatch<Self>
where S: Into<Dispatch>,

Attaches the provided Subscriber to this type, returning a [WithDispatch] wrapper. Read more
§

fn with_current_subscriber(self) -> WithDispatch<Self>

Attaches the current default Subscriber to this type, returning a [WithDispatch] wrapper. Read more
§

impl<A, B, T> HttpServerConnExec<A, B> for T
where B: Body,