{"record":{"id":"c486f78a6690211d","repo":"huggingface/candle","slug":"input-size-is-too-large-for-the-position-embedding","errorCode":null,"errorMessage":"Input size is too large for the position embedding","messagePattern":"Input size is too large for the position embedding","errorType":"exception","errorClass":null,"httpStatus":null,"severity":"error","filePath":"candle-transformers/src/models/mmdit/embedding.rs","lineNumber":103,"sourceCode":"        pos_embed_max_size: usize,\n        vb: nn::VarBuilder,\n    ) -> Result<Self> {\n        let pos_embed = vb.get(\n            (1, pos_embed_max_size * pos_embed_max_size, hidden_size),\n            \"pos_embed\",\n        )?;\n        Ok(Self {\n            pos_embed,\n            patch_size,\n            pos_embed_max_size,\n        })\n    }\n    pub fn get_cropped_pos_embed(&self, h: usize, w: usize) -> Result<Tensor> {\n        let h = (h + 1) / self.patch_size;\n        let w = (w + 1) / self.patch_size;\n\n        if h > self.pos_embed_max_size || w > self.pos_embed_max_size {\n            bail!(\"Input size is too large for the position embedding\")\n        }\n\n        let top = (self.pos_embed_max_size - h) / 2;\n        let left = (self.pos_embed_max_size - w) / 2;\n\n        let pos_embed =\n            self.pos_embed\n                .reshape((1, self.pos_embed_max_size, self.pos_embed_max_size, ()))?;\n        let pos_embed = pos_embed.narrow(1, top, h)?.narrow(2, left, w)?;\n        pos_embed.reshape((1, h * w, ()))\n    }\n}\n\npub struct TimestepEmbedder {\n    mlp: nn::Sequential,\n    frequency_embedding_size: usize,\n}\n","sourceCodeStart":85,"sourceCodeEnd":121,"githubUrl":"https://github.com/huggingface/candle/blob/d5fee525bfde3273eb7c9b75fd2bc4937be867ca/candle-transformers/src/models/mmdit/embedding.rs#L85-L121","documentation":"PatchEmbed's get_cropped_pos_embed crops the learned positional embedding grid to (h,w) patch coords, but the grid has a fixed maximum size (pos_embed_max_size). If the requested height or width in patches exceeds that size, there is no positional embedding available and it bails.","triggerScenarios":"Calling get_cropped_pos_embed(h, w) (via PatchEmbed forward) where ceil(h/patch_size) or ceil(w/patch_size) exceeds pos_embed_max_size, i.e. generating images larger than the model's trained resolution.","commonSituations":"Requesting SD3/Stable Diffusion 3 mmdit generation at resolutions above the max the positional embedding grid supports (e.g. 1024x1024 for max_size 128 with patch_size 8); mis-set height/width values.","solutions":["Reduce height/width so that ceil(dim/patch_size) <= pos_embed_max_size","Load/construct the model with a larger pos_embed_max_size matching your checkpoint","Interpolate or fine-tune positional embeddings for larger resolutions"],"exampleFix":"// before\nlet h = 2048; // h/8 = 256 > pos_embed_max_size 128\nlet x = patch_embed.forward(&xs, h, w)?; // bails\n// after\nlet h = 1024; // 1024/8 = 128 <= 128\nlet x = patch_embed.forward(&xs, h, w)?;","handlingStrategy":"validation","validationCode":"let (ph, pw) = ((h + 1) / patch_size, (w + 1) / patch_size);\nif ph > pos_embed_max_size || pw > pos_embed_max_size {\n    return Err(anyhow::anyhow!(\"requested {h}x{w} exceeds max {}\", pos_embed_max_size * patch_size));\n}","typeGuard":"fn fits_pos_embed(h: usize, w: usize, patch_size: usize, max_size: usize) -> bool {\n    (h + 1) / patch_size <= max_size && (w + 1) / patch_size <= max_size\n}","tryCatchPattern":"let xs = match patch_embed.forward(&latents, h, w) {\n    Ok(x) => x,\n    Err(e) if e.to_string().contains(\"Input size is too large\") => {\n        return Err(anyhow::anyhow!(\"reduce resolution; max is pos_embed_max_size * patch_size\"))\n    }\n    Err(e) => return Err(e.into()),\n};","preventionTips":["Clamp requested height/width to pos_embed_max_size * patch_size before generation","Compute patch coords from latents, not pixels, to avoid off-by-size errors","Use models whose positional embedding grid matches your target resolutions"],"tags":["rust","candle","mmdit","diffusion","resolution-limit"],"backgroundTag":"input-exceeds-size-limit","analyzedSha":"d5fee525bfde3273eb7c9b75fd2bc4937be867ca","analyzedAt":"2026-09-02T00:15:47.023Z","contentChangedAt":null,"schemaVersion":2},"datasetVersion":"2026-09-09T06:17:21.866Z"}