pub struct GptOssLayer {
pub attn_sinks: Vec<f32>,
pub o_bias: Vec<f32>,
pub router_bias: Vec<f32>,
pub expert_bias: Vec<ExpertBias>,
}Expand description
The per-layer weights the gpt-oss graph carries and the generic GQA layer structs do not.
Held as a side table on Decoder rather than as new Option
fields on AttnWeights/MoeWeights for two reasons. The first
is mechanical: those two structs have thirty construction sites
across seven loaders and every dedicated engine, and none of them
will ever set these. The second is the point of the exercise — a
checkpoint either has the whole gpt-oss graph or none of it, so
Decoder::gpt_oss.is_some() is a single, checkable predicate for
“this model needs the gpt-oss path”, which is what the CPU-only and
paged-attention refusals below key off. Scattering five independent
Options would make “half the graph is wired” representable, and
that state is precisely the silent-wrong-answer bug this work exists
to remove.
Fields§
§attn_sinks: Vec<f32>blk.N.attn_sinks.weight, one learned logit per query head.
o_bias: Vec<f32>blk.N.attn_output.bias, added after the output projection.
router_bias: Vec<f32>blk.N.ffn_gate_inp.bias, added to the router logits.
expert_bias: Vec<ExpertBias>blk.N.ffn_{gate,up,down}_exps.bias, one entry per expert.
Auto Trait Implementations§
impl Freeze for GptOssLayer
impl RefUnwindSafe for GptOssLayer
impl Send for GptOssLayer
impl Sync for GptOssLayer
impl Unpin for GptOssLayer
impl UnsafeUnpin for GptOssLayer
impl UnwindSafe for GptOssLayer
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