pub struct BertEncoder {
pub hp: BertHparams,
pub tok_embd: WeightMatrix,
pub type_embd_row0: Option<Vec<f32>>,
pub pos_embd: WeightMatrix,
pub tok_norm_w: Vec<f32>,
pub tok_norm_b: Vec<f32>,
pub layers: Vec<BertLayer>,
}Fields§
§hp: BertHparams§tok_embd: WeightMatrix§type_embd_row0: Option<Vec<f32>>Row 0 of token_types.weight — “Sentence A”. See the module docs.
pos_embd: WeightMatrix§tok_norm_w: Vec<f32>§tok_norm_b: Vec<f32>§layers: Vec<BertLayer>Implementations§
Source§impl BertEncoder
impl BertEncoder
pub fn vocab_size(&self) -> usize
Trait Implementations§
Source§impl TextEncoder for BertEncoder
impl TextEncoder for BertEncoder
Source§fn wrap_special(&self, pieces: &[u32]) -> Vec<u32>
fn wrap_special(&self, pieces: &[u32]) -> Vec<u32>
[CLS] … [SEP], which is what llama.cpp’s WPM branch adds when
add_special is set: it pushes special_bos_id before the
pieces and special_sep_id after, unconditionally — the
add_bos/add_eos flags are not consulted on that path
(llama-vocab.cpp, case LLAMA_VOCAB_TYPE_WPM).
Source§fn wrap_special_pair(&self, a: &[u32], b: &[u32]) -> Option<Vec<u32>>
fn wrap_special_pair(&self, a: &[u32], b: &[u32]) -> Option<Vec<u32>>
[CLS] a [SEP] b [SEP] — what HuggingFace’s
tokenizer(query, document) builds for a BERT cross-encoder,
which is the input these checkpoints were trained on.
The segment ids that pairing normally carries are not here,
and that is deliberate rather than forgotten: this graph adds
row 0 of token_types.weight to every position, because
llama.cpp does the same (token types are hardcoded to zero,
its bert.cpp; see BertEncoder::type_embd_row0). A reranker
scored here therefore differs from the HF reference by the
second segment’s type embedding, on both engines equally. It is
recorded in the ferrox rerank docs and is the first thing to
check if an ordering disagrees with transformers.
Source§fn n_ctx_train(&self) -> usize
fn n_ctx_train(&self) -> usize
Source§fn pooling_type(&self) -> PoolingType
fn pooling_type(&self) -> PoolingType
{arch}.pooling_type said.Source§fn encode_tokens(&self, tokens: &[u32]) -> Result<Vec<f32>, EncodeError>
fn encode_tokens(&self, tokens: &[u32]) -> Result<Vec<f32>, EncodeError>
n_tokens × n_embd hidden states, in row order.Source§fn embed_tokens(&self, tokens: &[u32]) -> Result<Vec<f32>, EncodeError>
fn embed_tokens(&self, tokens: &[u32]) -> Result<Vec<f32>, EncodeError>
Self::encode_tokens followed by the checkpoint’s own pooling.
Not L2-normalized — see crate::pooling::pool.Auto Trait Implementations§
impl Freeze for BertEncoder
impl RefUnwindSafe for BertEncoder
impl Send for BertEncoder
impl Sync for BertEncoder
impl Unpin for BertEncoder
impl UnsafeUnpin for BertEncoder
impl UnwindSafe for BertEncoder
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> 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