pub struct Glm5NextTextSkeleton {
pub hidden_size: usize,
pub hc_mult: usize,
pub layers: Vec<SkeletonLayer>,
pub mtp: Option<SkeletonLayer>,
}Fields§
§hc_mult: usize§layers: Vec<SkeletonLayer>Text stack, indices 0..=44. Length is num_hidden_layers and never includes MTP.
mtp: Option<SkeletonLayer>Layer 45. Held separately so every “iterate the text stack” loop keeps meaning what it
says — the same discipline ModelConfig::mtp_layer_types established in Slice 8.
Implementations§
Source§impl Glm5NextTextSkeleton
impl Glm5NextTextSkeleton
Sourcepub fn from_config(cfg: &ModelConfig) -> Result<Self>
pub fn from_config(cfg: &ModelConfig) -> Result<Self>
Derive the topology from a parsed config. Every kind is read, never defaulted: an
unexpected LayerType is a hard error, because a sparse layer silently bound as dense
attends the whole cache and produces plausible output.
Sourcepub fn all_layers(&self) -> Vec<SkeletonLayer>
pub fn all_layers(&self) -> Vec<SkeletonLayer>
Text stack plus the MTP layer, in checkpoint index order.
Sourcepub fn structural_tensors(&self, l: &SkeletonLayer) -> Vec<String>
pub fn structural_tensors(&self, l: &SkeletonLayer) -> Vec<String>
The structural (non-MLP, non-MoE) tensors this layer needs, fully qualified.
Sourcepub fn structural_tensor_set(&self) -> BTreeSet<String>
pub fn structural_tensor_set(&self) -> BTreeSet<String>
Every structural tensor the whole skeleton needs, including the three non-layer ones.
Sourcepub fn residual_plan(&self, l: &SkeletonLayer) -> Vec<ResidualStep>
pub fn residual_plan(&self, l: &SkeletonLayer) -> Vec<ResidualStep>
The residual/norm/mHC wiring for one layer, in execution order.
The MTP layer has no hyper-connection, so its residual path is the ordinary
x = x + sublayer(norm(x)) shape and the mHC steps drop out entirely.
Sourcepub fn final_plan(&self) -> [FinalStep; 3]
pub fn final_plan(&self) -> [FinalStep; 3]
What runs after the last text layer.
Sourcepub fn state_plan(&self) -> BTreeMap<usize, StateKind>
pub fn state_plan(&self) -> BTreeMap<usize, StateKind>
Per-layer cache requirement. Admission needs every kind satisfied at once.
Sourcepub fn kda_state_layers(&self) -> Vec<usize>
pub fn kda_state_layers(&self) -> Vec<usize>
Layers whose recurrent state must be carried between steps.
Sourcepub fn kv_cache_layers(&self) -> Vec<usize>
pub fn kv_cache_layers(&self) -> Vec<usize>
Layers that consume paged KV blocks.
Sourcepub fn state_budget(&self, cfg: &ModelConfig, num_spec: usize) -> StateBudget
pub fn state_budget(&self, cfg: &ModelConfig, num_spec: usize) -> StateBudget
The per-sequence state contract, from the config’s real geometry.
🪤 kda_recurrent is fp32 and not negotiable: HF casts the recurrent state to
float32 and vLLM hardcodes kda_state_dtype, so --ssm-h-dtype f16 is unavailable.
Sizing it as bf16 halves the number and is wrong.
Sourcepub fn account(&self, available: &BTreeSet<String>) -> StructuralAccounting
pub fn account(&self, available: &BTreeSet<String>) -> StructuralAccounting
Account the skeleton’s structural contract against a checkpoint’s tensor names.
available is the FULL name list; MLP/MoE and vision names are expected to be present
and are reported as deferred, not as errors — this slice does not bind them. Anything
structural that is missing, and any non-MLP text tensor the skeleton did not ask for,
is a hard failure. Zero unknown, zero silent skips.
Trait Implementations§
Source§impl Clone for Glm5NextTextSkeleton
impl Clone for Glm5NextTextSkeleton
Source§fn clone(&self) -> Glm5NextTextSkeleton
fn clone(&self) -> Glm5NextTextSkeleton
1.0.0 · Source§fn clone_from(&mut self, source: &Self)
fn clone_from(&mut self, source: &Self)
source. Read more