{"record":{"id":"22d7f75a3d41ad96","repo":"sgl-project/sglang","slug":"get-input-embeddings-is-not-available-in-encoder","errorCode":null,"errorMessage":"get_input_embeddings() is not available in encoder-only mode","messagePattern":"get_input_embeddings\\(\\) is not available in encoder-only mode","errorType":"exception","errorClass":"AttributeError","httpStatus":null,"severity":"error","filePath":"python/sglang/srt/models/kimi_k3.py","lineNumber":3311,"sourceCode":"            return\n        super().__setattr__(name, value)\n\n    def post_load_weights(self):\n        # Delegate so DummyModelLoader's post-load hook reaches the LM tower.\n        if self.language_model is not None:\n            self.language_model.post_load_weights()\n\n    def precompile_kernels_after_loading(self) -> None:\n        if self.config.language_only:\n            return\n        if self.vision_tower.precompile_fused_rope():\n            logger.info(\"Precompiled dynamic-token fused K3 vision RoPE kernel\")\n        if self.vision_tower.precompile_attention_backend():\n            logger.info(\"Precompiled Kimi-K3 vision FA4 kernel\")\n\n    def get_input_embeddings(self):\n        if self.language_model is None:\n            raise AttributeError(\n                \"get_input_embeddings() is not available in encoder-only mode\"\n            )\n        return self.language_model.model.embed_tokens\n\n    @property\n    def lm_head(self):\n        if self.language_model is None:\n            raise AttributeError(\"lm_head is not available in encoder-only mode\")\n        return self.language_model.lm_head\n\n    def set_dspark_layers_to_capture(self, layer_ids: list[int]) -> None:\n        if self.language_model is None:\n            raise AttributeError(\n                \"DSPARK layer capture is not available in encoder-only mode\"\n            )\n        self.language_model.set_dspark_layers_to_capture(layer_ids)\n\n    def preprocess_mm_for_encoder(","sourceCodeStart":3293,"sourceCodeEnd":3329,"githubUrl":"https://github.com/sgl-project/sglang/blob/0132848349585cfe6aae51c4941cbae872505f8a/python/sglang/srt/models/kimi_k3.py#L3293-L3329","documentation":"Kimi-K3 model wrapper raises AttributeError from get_input_embeddings() when the model was constructed in encoder-only mode (language_model is None). Encoder-only instances have no language model, hence no token embedding table to return. Any generic model-loading or weight-mapping code that unconditionally calls get_input_embeddings() will trip this.","triggerScenarios":"Instantiating the Kimi-K3 model in encoder-only mode (e.g. EPD encoder server without the language model) and then calling model.get_input_embeddings(), directly or via generic weight-loading/tied-embedding logic that assumes a decoder exists.","commonSituations":"Running the encoder side of encoder-prefill-decoder (EPD) disaggregation; reusing generic model utilities that probe embed_tokens for vocab size or tied weights on a vision-only instance.","solutions":["Check hasattr(model, 'language_model') / model.language_model is not None before calling get_input_embeddings()","Skip embedding probing for encoder-only model configs in generic tooling","If you expected a full VLM, verify the load config did not disable the language model"],"exampleFix":"// before\nembed = model.get_input_embeddings()\n\n// after\nif model.language_model is not None:\n    embed = model.get_input_embeddings()\nelse:\n    embed = None  # encoder-only mode","handlingStrategy":"type-guard","validationCode":"if model.language_model is None:\n    skip_embedding_related_setup(model)","typeGuard":"def has_language_model(m) -> bool:\n    return getattr(m, \"language_model\", None) is not None","tryCatchPattern":"try:\n    emb = model.get_input_embeddings()\nexcept AttributeError:\n    emb = None  # encoder-only instance","preventionTips":["Mark encoder-only instances at construction and branch generic model utilities on that flag","Never assume get_input_embeddings() exists on vision/encoder-only wrappers"],"tags":["kimi-k3","encoder-only","attribute-error","embeddings"],"backgroundTag":"attribute-not-available-in-mode","analyzedSha":"0132848349585cfe6aae51c4941cbae872505f8a","analyzedAt":"2026-08-28T05:10:05.995Z","schemaVersion":2},"datasetVersion":"2026-08-28T06:17:29.519Z"}