{"record":{"id":"2b919058a31e2162","repo":"exo-explore/exo","slug":"could-not-find-inner-transformer-embed-tokens-in","errorCode":null,"errorMessage":"Could not find inner transformer (embed_tokens) in {type(model).__name__}. Add a new pattern to _get_inner_model() for this architecture.","messagePattern":"Could not find inner transformer \\(embed_tokens\\) in (.+?)\\. Add a new pattern to _get_inner_model\\(\\) for this architecture\\.","errorType":"validation","errorClass":"ValueError","httpStatus":null,"severity":"error","filePath":"src/exo/worker/engines/mlx/vision.py","lineNumber":635,"sourceCode":"            image_features = hidden_states\n\n        # `create_vision_embeddings` expects a 2D (total_tokens, hidden) view,\n        # but fixed-token-budget models (gemma4) return (n_images, tokens, hidden).\n        if image_features.ndim == 3:\n            image_features = image_features.reshape(-1, image_features.shape[-1])\n\n        return image_features, n_tokens_per_image\n\n\ndef get_inner_model(model: nn.Module) -> Any:  # type: ignore\n    for candidate in (\n        getattr(model, \"model\", None),\n        getattr(getattr(model, \"language_model\", None), \"model\", None),\n    ):\n        if candidate is not None and hasattr(candidate, \"embed_tokens\"):  # type: ignore\n            return candidate  # type: ignore\n\n    raise ValueError(\n        f\"Could not find inner transformer (embed_tokens) in {type(model).__name__}. \"\n        \"Add a new pattern to _get_inner_model() for this architecture.\"\n    )\n\n\ndef create_vision_embeddings(\n    model: Model,\n    prompt_tokens: mx.array,\n    image_features: mx.array,\n    image_token_id: int,\n) -> mx.array:\n    inner = get_inner_model(model)  # type: ignore\n    embed_tokens = inner.embed_tokens  # type: ignore\n\n    input_embeddings: mx.array = embed_tokens(prompt_tokens[None])  # type: ignore\n\n    is_image: mx.array = mx.equal(prompt_tokens, image_token_id)\n    n_placeholders = int(mx.sum(is_image).item())","sourceCodeStart":617,"sourceCodeEnd":653,"githubUrl":"https://github.com/exo-explore/exo/blob/21a54c5ea0230a3bec1e1a786d200126c7e34ec6/src/exo/worker/engines/mlx/vision.py#L617-L653","documentation":"Error \"Could not find inner transformer (embed_tokens) in {type(model).__name__}. Add a new pattern to _get_inner_model() for this architecture.\" thrown in exo-explore/exo.","triggerScenarios":"Thrown at src/exo/worker/engines/mlx/vision.py:635 when the library encounters an invalid state.","commonSituations":"See trigger scenarios.","solutions":[],"exampleFix":null,"handlingStrategy":null,"validationCode":null,"typeGuard":null,"tryCatchPattern":null,"preventionTips":[],"tags":[],"backgroundTag":null,"analyzedSha":"21a54c5ea0230a3bec1e1a786d200126c7e34ec6","analyzedAt":"2026-08-26T00:02:16.033Z","schemaVersion":2},"datasetVersion":"2026-08-26T04:18:47.238Z"}