Skip to content

smollm3

smollm3

SmolLM3 on vLLM, through its transformers backend (SmolLM3ForCausalLM -> TransformersForCausalLM).

vLLM has no SmolLM3 of its own: it runs transformers' modules, so the tree and the block are transformers' (see nnterp.components.vllm.transformers_backend), with Llama's names, the stream [1, tokens, hidden_size] and the engine's attention layer mounted as the attention's attn child. The block is Llama's, pre-norm with the residual added in the block, so the contributions are the modules' outputs. Every fourth block's attention skips the rotary embedding (no_rope_layers); the queries and keys are served as the attention layer receives them, rotated or not.

RENAME module-attribute

RENAME = {'model.embed_tokens': 'embed_tokens', 'model.layers': 'layers', 'model.norm': 'norm'}

ENVOYS module-attribute

ENVOYS = {SmolLM3DecoderLayer: Layer, SmolLM3Attention: Attention, SmolLM3MLP: Mlp}