metrale_model_layers/layers/qwen3_ssm/
init_sequential.rs1use anyhow::Result;
10use metrale_gpu_runtime::gpu::GpuBackend;
11
12use super::super::Qwen3SsmLayer;
13use crate::layers::FfnComponent;
14use crate::weight_map::{DenseWeight, QuantizedWeight, SsmWeights};
15
16impl Qwen3SsmLayer {
17 pub fn new_sequential(
22 input_norm: DenseWeight,
23 ssm: SsmWeights,
24 post_attn_norm: DenseWeight,
25 ffn: FfnComponent,
26 qkvz_nvfp4: Option<QuantizedWeight>,
27 qkvz_nvfp4_t: Option<QuantizedWeight>,
28 out_proj_nvfp4_t: Option<QuantizedWeight>,
29 config: &metrale_config::ModelConfig,
30 gpu: &dyn GpuBackend,
31 ) -> Result<Self> {
32 let mut layer = Self::new(
33 input_norm,
34 ssm,
35 post_attn_norm,
36 ffn,
37 qkvz_nvfp4,
38 config,
39 gpu,
40 )?;
41 layer.sequential_qkvz = true;
42 layer.qkvz_nvfp4_t = qkvz_nvfp4_t;
43 layer.out_proj_nvfp4_t = out_proj_nvfp4_t;
44 Ok(layer)
45 }
46}