Glm5NextRouterMode

Enum Glm5NextRouterMode 

Source
pub enum Glm5NextRouterMode {
    HfFp32,
    VllmBf16,
}
Expand description

Which dtype ladder GLM-5.3’s MoE router runs in.

🔴 This is a SEMANTIC switch, not a precision preference. Slice 10 measured the two ladders selecting a different top-8 expert set on ~89–95 % of tokens (layers 3/23/44, T=2048), moving 20–26 % of routed weight mass onto experts the other ladder did not pick. Treating it as a harmless rounding choice is how a “faster router” silently becomes a different model.

Deliberately its OWN field, not derived from the quantization config or from PrecisionSchedule::router_dtype (which is a weight-STORAGE schedule with no compute meaning, and no consumers). Inferring a semantic from an unrelated knob is the defect this avoids.

GLM-scoped on purpose: no other Atlas model has a contested router ladder, and widening this into a cross-model routing refactor would be scope Atlas has not asked for.

Variants§

§

HfFp32

CANONICAL / REFERENCE. HF transformers 5.16.1 semantics: F.linear(hidden.type(float32), weight.type(float32)), and sigmoid / correction bias / top-k / renormalisation all in fp32. This is the production default and must not change without review.

§

VllmBf16

COMPATIBILITY / ORACLE REPRODUCTION. Reproduces what vLLM currently does for glm5_next_text: GateLinear.out_dtype resolves to None (the fp32 special case in _get_moe_router_dtype fires only for glm_moe_dsa or an explicit moe_router_dtype), so the gate GEMM runs in the model dtype and grouped_topk does no upcast.

Exists so Atlas can reproduce the frozen vLLM oracle’s routing for A/B work. Never a production default.

Implementations§

Source§

impl Glm5NextRouterMode

Source

pub fn from_config_str(s: &str) -> Option<Self>

Parse the moe_router_dtype config field — the same name vLLM reads.

Absent ⇒ Self::HfFp32. That is the opposite of vLLM’s fallthrough, and deliberately so: absent means “the checkpoint did not say”, and the reference implementation’s answer for that case is fp32.

Source

pub fn is_fp32(self) -> bool

True when router math must be carried in fp32.

Trait Implementations§

Source§

impl Clone for Glm5NextRouterMode

Source§

fn clone(&self) -> Glm5NextRouterMode

Returns a duplicate of the value. Read more
1.0.0 · Source§

fn clone_from(&mut self, source: &Self)

Performs copy-assignment from source. Read more
Source§

impl Debug for Glm5NextRouterMode

Source§

fn fmt(&self, f: &mut Formatter<'_>) -> Result

Formats the value using the given formatter. Read more
Source§

impl Default for Glm5NextRouterMode

Source§

fn default() -> Glm5NextRouterMode

Returns the “default value” for a type. Read more
Source§

impl<'de> Deserialize<'de> for Glm5NextRouterMode

Source§

fn deserialize<__D>(__deserializer: __D) -> Result<Self, __D::Error>
where __D: Deserializer<'de>,

Deserialize this value from the given Serde deserializer. Read more
Source§

impl PartialEq for Glm5NextRouterMode

Source§

fn eq(&self, other: &Glm5NextRouterMode) -> bool

Tests for self and other values to be equal, and is used by ==.
1.0.0 · Source§

fn ne(&self, other: &Rhs) -> bool

Tests for !=. The default implementation is almost always sufficient, and should not be overridden without very good reason.
Source§

impl Copy for Glm5NextRouterMode

Source§

impl Eq for Glm5NextRouterMode

Source§

impl StructuralPartialEq for Glm5NextRouterMode

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> CloneToUninit for T
where T: Clone,

Source§

unsafe fn clone_to_uninit(&self, dest: *mut u8)

🔬This is a nightly-only experimental API. (clone_to_uninit)
Performs copy-assignment from self to dest. Read more
§

impl<Q, K> Equivalent<K> for Q
where Q: Eq + ?Sized, K: Borrow<Q> + ?Sized,

§

fn equivalent(&self, key: &K) -> bool

Compare self to key and return true if they are equal.
Source§

impl<T> From<T> for T

Source§

fn from(t: T) -> T

Returns the argument unchanged.

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> ToOwned for T
where T: Clone,

Source§

type Owned = T

The resulting type after obtaining ownership.
Source§

fn to_owned(&self) -> T

Creates owned data from borrowed data, usually by cloning. Read more
Source§

fn clone_into(&self, target: &mut T)

Uses borrowed data to replace owned data, usually by cloning. 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<T> DeserializeOwned for T
where T: for<'de> Deserialize<'de>,