metrale_model_engine/model/trait_impl/
impl_vision.rs

1// SPDX-License-Identifier: MIT OR Apache-2.0
2
3//! 2026-09-26: `impl ModelVision for TransformerModel`, mostly delegating to `<method>_dispatch`
4//! helpers in the sibling modules.
5//!
6//! Owner: model-engine.
7//! Invariants: the ones in `trait_impl/mod.rs`.
8
9use anyhow::Result;
10
11use crate::model::types::TransformerModel;
12use crate::traits::ModelVision;
13
14impl ModelVision for TransformerModel {
15    fn prepare_vision_embed(&self, images: &[metrale_model_layers::VisionItem]) -> Result<()> {
16        self.prepare_vision_embed_dispatch(images)
17    }
18
19    fn prepare_vision_embed_batched(
20        &self,
21        per_request: &[Vec<metrale_model_layers::VisionItem>],
22    ) -> Result<Vec<(usize, usize, usize, usize)>> {
23        self.prepare_vision_embed_batched_dispatch(per_request)
24    }
25
26    fn ep_sync_vision_embeds(&self, tokens: &[u32]) -> Result<()> {
27        TransformerModel::ep_sync_vision_embeds(self, tokens)
28    }
29
30    fn set_vision_slice_base(&self, row_base: usize, grid_base: usize, owned_images: usize) {
31        *self.vision_row_base.lock() = row_base;
32        *self.vision_grid_base.lock() = grid_base;
33        *self.vision_owned_images.lock() = owned_images;
34    }
35
36    fn tokens_contain_vision_pad(&self, tokens: &[u32]) -> bool {
37        self.tokens_have_vision_pad(tokens)
38    }
39}