pub struct RaggedBatch {
pub token_ids: Vec<u32>,
pub cumulative_offsets: Vec<u32>,
pub max_seq_len: usize,
}Expand description
A ragged (unpadded) batch for efficient ModernBERT inference.
ModernBERT achieves its speed advantage by avoiding padding tokens entirely.
Instead of [batch, max_seq_len], it uses a single contiguous 1D sequence
with offset indices to track document boundaries.
§Memory Layout
Traditional (padded):
[doc1_tok1, doc1_tok2, PAD, PAD, PAD] <- wasted compute
[doc2_tok1, doc2_tok2, doc2_tok3, PAD, PAD]
Ragged (unpadded):
[doc1_tok1, doc1_tok2, doc2_tok1, doc2_tok2, doc2_tok3]
cumulative_offsets: [0, 2, 5] <- doc1 is [0..2], doc2 is [2..5]Fields§
§token_ids: Vec<u32>Token IDs flattened into a single contiguous array.
Shape: [total_tokens] (1D, no padding)
cumulative_offsets: Vec<u32>Cumulative sequence lengths. Length: batch_size + 1 Document i spans tokens [offsets[i]..offsets[i+1])
max_seq_len: usizeMaximum sequence length in this batch (for kernel bounds).
Implementations§
Source§impl RaggedBatch
impl RaggedBatch
Sourcepub fn from_sequences(sequences: &[Vec<u32>]) -> Self
pub fn from_sequences(sequences: &[Vec<u32>]) -> Self
Create a new ragged batch from sequences.
Sourcepub fn batch_size(&self) -> usize
pub fn batch_size(&self) -> usize
Get the number of documents in this batch.
Sourcepub fn total_tokens(&self) -> usize
pub fn total_tokens(&self) -> usize
Get the total number of tokens (no padding).
Sourcepub fn doc_range(&self, doc_idx: usize) -> Option<Range<usize>>
pub fn doc_range(&self, doc_idx: usize) -> Option<Range<usize>>
Get token range for a specific document.
Sourcepub fn doc_tokens(&self, doc_idx: usize) -> Option<&[u32]>
pub fn doc_tokens(&self, doc_idx: usize) -> Option<&[u32]>
Get tokens for a specific document.
Sourcepub fn padding_savings(&self) -> f64
pub fn padding_savings(&self) -> f64
Calculate memory saved vs padded batch.
Trait Implementations§
Source§impl Clone for RaggedBatch
impl Clone for RaggedBatch
Source§fn clone(&self) -> RaggedBatch
fn clone(&self) -> RaggedBatch
1.0.0 · Source§fn clone_from(&mut self, source: &Self)
fn clone_from(&mut self, source: &Self)
source. Read more