pub struct BatchInputs<T> {
pub input_ids: T,
pub attention_mask: T,
pub token_type_ids: T,
pub position_ids: T,
pub float_mask: T,
pub pooling_mask: T,
pub batch: usize,
pub max_seq: usize,
pub total_tokens: usize,
pub seq_lengths: Vec<usize>,
pub cu_seqlens: Option<Vec<usize>>,
}Expand description
Batch input tensors on device, produced by Driver::prepare_batch.
Supports both padded and unpadded modes:
- Padded: all sequences padded to
max_seq.cu_seqlensisNone. - Unpadded: sequences concatenated without padding.
cu_seqlenscontains cumulative lengths[0, len0, len0+len1, ...]so attention knows where each sequence starts. Eliminates ALL padding compute.
Fields§
§input_ids: TToken IDs — [batch * max_seq] (padded) or [total_tokens] (unpadded).
attention_mask: TAttention mask [batch * max_seq] as int32 (0 or 1). Unused in unpadded mode.
token_type_ids: TToken type IDs — same layout as input_ids.
position_ids: TPosition IDs — same layout as input_ids.
float_mask: TFloat attention bias mask [batch * max_seq] (0.0 or -1e9) for softmax.
pooling_mask: TFloat pooling mask [batch * max_seq] (1.0 or 0.0) for mean pooling.
batch: usizeNumber of sequences in this batch.
max_seq: usizeMaximum sequence length (all sequences padded to this). In unpadded mode, this is the longest sequence (used for workspace sizing, not padding).
total_tokens: usizeTotal actual tokens across all sequences (no padding).
seq_lengths: Vec<usize>Per-sequence lengths: [batch] — each element is the actual token count.
cu_seqlens: Option<Vec<usize>>Cumulative sequence lengths for unpadded attention: [batch + 1].
cu_seqlens[i]..cu_seqlens[i+1] is the token range for sequence i.
None in padded mode (all sequences padded to max_seq).
Auto Trait Implementations§
impl<T> Freeze for BatchInputs<T>where
T: Freeze,
impl<T> RefUnwindSafe for BatchInputs<T>where
T: RefUnwindSafe,
impl<T> Send for BatchInputs<T>where
T: Send,
impl<T> Sync for BatchInputs<T>where
T: Sync,
impl<T> Unpin for BatchInputs<T>where
T: Unpin,
impl<T> UnsafeUnpin for BatchInputs<T>where
T: UnsafeUnpin,
impl<T> UnwindSafe for BatchInputs<T>where
T: UnwindSafe,
Blanket Implementations§
Source§impl<T> ArchivePointee for T
impl<T> ArchivePointee for T
Source§type ArchivedMetadata = ()
type ArchivedMetadata = ()
Source§fn pointer_metadata(
_: &<T as ArchivePointee>::ArchivedMetadata,
) -> <T as Pointee>::Metadata
fn pointer_metadata( _: &<T as ArchivePointee>::ArchivedMetadata, ) -> <T as Pointee>::Metadata
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> Downcast for Twhere
T: Any,
impl<T> Downcast for Twhere
T: Any,
Source§fn into_any(self: Box<T>) -> Box<dyn Any>
fn into_any(self: Box<T>) -> Box<dyn Any>
Box<dyn Trait> (where Trait: Downcast) to Box<dyn Any>, which can then be
downcast into Box<dyn ConcreteType> where ConcreteType implements Trait.Source§fn into_any_rc(self: Rc<T>) -> Rc<dyn Any>
fn into_any_rc(self: Rc<T>) -> Rc<dyn Any>
Rc<Trait> (where Trait: Downcast) to Rc<Any>, which can then be further
downcast into Rc<ConcreteType> where ConcreteType implements Trait.Source§fn as_any(&self) -> &(dyn Any + 'static)
fn as_any(&self) -> &(dyn Any + 'static)
&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)
fn as_any_mut(&mut self) -> &mut (dyn Any + 'static)
&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> DowncastSend for T
impl<T> DowncastSend for T
Source§impl<T> DowncastSync for T
impl<T> DowncastSync for 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 moreSource§impl<T> LayoutRaw for T
impl<T> LayoutRaw for T
Source§fn layout_raw(_: <T as Pointee>::Metadata) -> Result<Layout, LayoutError>
fn layout_raw(_: <T as Pointee>::Metadata) -> Result<Layout, LayoutError>
Source§impl<T, N1, N2> Niching<NichedOption<T, N1>> for N2
impl<T, N1, N2> Niching<NichedOption<T, N1>> for N2
Source§unsafe fn is_niched(niched: *const NichedOption<T, N1>) -> bool
unsafe fn is_niched(niched: *const NichedOption<T, N1>) -> bool
Source§fn resolve_niched(out: Place<NichedOption<T, N1>>)
fn resolve_niched(out: Place<NichedOption<T, N1>>)
out indicating that a T is niched.