FixedBatchInferer

Struct FixedBatchInferer 

Source
pub struct FixedBatchInferer { /* private fields */ }
Expand description

A reliable batched inferer that is a good fit if you know how much data you’ll have and want stable performance.

As an added bonus, it’ll subdivide your data into minibatches if the batching doesn’t fit perfectly. To make this work, it’ll add a single-element mode as well to ensure all data is consumed - such as if you feed it 9 elements with a configured batch size of 8.

You can configure a wide number of different batch sizes, and the largest one will be used. Note that the overhead for execution still is fairly large, but this helps amortize some of that cost away. For example; if you use a setup of [1, 2, 4, 8] as your supported batch sizes a batch of 15 elements would run each plan once.

§Pros

  • Good and predictable performance if you know amount of data
  • Flexible if you sometimes get extra data to deal with

§Cons

  • Mini-batches add overhead
  • Diminishing returns on each supported batch size.

Implementations§

Source§

impl FixedBatchInferer

Source

pub fn from_model(model: InferenceModel, sizes: &[usize]) -> TractResult<Self>

Create an inferer for the provided inference model.

§Errors

Will only forward errors from the tract_core::model::Graph optimization and graph building steps.

Source

pub fn from_typed(model: TypedModel, sizes: &[usize]) -> TractResult<Self>

Create an inferer for the provided typed model.

§Errors

Will only forward errors from the tract_core::model::Graph optimization and graph building steps.

Trait Implementations§

Source§

impl Inferer for FixedBatchInferer

Source§

fn infer_raw(&self, batch: &mut ScratchPadView<'_>) -> Result<(), Error>

Execute the model on the provided pre-batched data.
Source§

fn select_batch_size(&self, max_count: usize) -> usize

Query the inferer for how many elements it can deal with in a single batch.
Source§

fn raw_input_shapes(&self) -> &[(String, Vec<usize>)]

Retrieve the name and shapes of the model inputs.
Source§

fn raw_output_shapes(&self) -> &[(String, Vec<usize>)]

Retrieve the name and shapes of the model outputs.
Source§

fn begin_agent(&self, _id: u64)

Source§

fn end_agent(&self, _id: u64)

Source§

fn input_shapes(&self) -> &[(String, Vec<usize>)]

Retrieve the name and shapes of the model inputs. This API only contains the external API, so code-based transforms outside the model are hidden.
Source§

fn output_shapes(&self) -> &[(String, Vec<usize>)]

Retrieve the name and shapes of the model outputs. This API only contains the external API, so code-based transforms outside the model are hidden.
Source§

impl IntoStateful for FixedBatchInferer

Source§

fn into_stateful<WrapStack: InfererWrapper>( self, wrapper_stack: WrapStack, ) -> StatefulInferer<WrapStack, Self>

Construct a StatefulInferer by wrapping this concrete inferer with the given wrapper stack.

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
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> Downcast for T
where T: Any,

Source§

fn into_any(self: Box<T>) -> Box<dyn Any>

Convert Box<dyn Trait> (where Trait: Downcast) to Box<dyn Any>. Box<dyn Any> can then be further downcast into Box<ConcreteType> where ConcreteType implements Trait.
Source§

fn into_any_rc(self: Rc<T>) -> Rc<dyn Any>

Convert Rc<Trait> (where Trait: Downcast) to Rc<Any>. Rc<Any> can then be further downcast into Rc<ConcreteType> where ConcreteType implements Trait.
Source§

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

Convert &Trait (where Trait: Downcast) to &Any. This is needed since Rust cannot generate &Any’s vtable from &Trait’s.
Source§

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

Convert &mut Trait (where Trait: Downcast) to &Any. This is needed since Rust cannot generate &mut Any’s vtable from &mut Trait’s.
Source§

impl<T> DowncastSync for T
where T: Any + Send + Sync,

Source§

fn into_any_arc(self: Arc<T>) -> Arc<dyn Any + Send + Sync>

Convert Arc<Trait> (where Trait: Downcast) to Arc<Any>. Arc<Any> can then be further downcast into Arc<ConcreteType> where ConcreteType implements Trait.
Source§

impl<T> From<T> for T

Source§

fn from(t: T) -> T

Returns the argument unchanged.

Source§

impl<T> InfererExt for T
where T: Inferer,

Source§

fn with_default_epsilon(self, key: &str) -> Result<EpsilonInjector<Self>>

Add an epsilon injector using the default noise kind.
Source§

fn with_epsilon<G: NoiseGenerator>( self, generator: G, key: &str, ) -> Result<EpsilonInjector<Self, G>>

Add an epsilon injector with a specific noise generator.
Source§

fn into_batched(self) -> Batched<Self>

Wrap in a batching interface.
Source§

fn infer( &mut self, observations: HashMap<u64, State<'_>>, ) -> Result<HashMap<u64, Response<'_>>, Error>

👎Deprecated since 0.3.0: Please use the more explicit ‘infer_batch’ instead.
Execute the model on the provided batch of elements.
Source§

fn infer_batch<'this>( &'this self, batch: HashMap<u64, State<'_>>, ) -> Result<HashMap<u64, Response<'this>>, Error>

Execute the model on the provided pre-batched data.
Source§

fn infer_single<'this>( &'this self, input: State<'_>, ) -> Result<Response<'this>, Error>

Execute the model on the provided pre-batched data.
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
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.
Source§

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

Source§

fn vzip(self) -> V