with one click
vlm-model-enabler
Enables VLM models for GenAI VLM pipelines.
Install with Codex or Claude Copy this prompt, paste it into Codex, Claude, or another assistant, and let it review the skill page and install it for you.
Menu
Enables VLM models for GenAI VLM pipelines.
Install with Codex or Claude Copy this prompt, paste it into Codex, Claude, or another assistant, and let it review the skill page and install it for you.
Based on SOC occupation classification
| name | vlm-model-enabler |
| description | Enables VLM models for GenAI VLM pipelines. |
| argument-hint | HuggingFace model_id and task (e.g. google/gemma-3n-E2B-it image-text-to-text), or a path to an already converted OpenVINO IR model directory (model_dir). |
Enables a new VLM model in the GenAI VLM pipeline. Follows a strict 4-step workflow with checkpoints.
model_id and task (e.g. google/gemma-3n-E2B-it image-text-to-text), or path to an already exported OpenVINO IR directory..model_analysis/<model_type>_analysis.md produced by the model-analysis agent. If absent, the caller (or the user, if running this skill standalone) should invoke model-analysis first to avoid duplicating upstream inspection here. This skill does not invoke other agents itself.All intermediate assets go in .model_enabler/. Create it if it does not exist.
.py files for all experiments — avoid inline multi-line Python snippets; keep shell commands minimal and only for build/run steps.Goal: Map the model into the GenAI VLM pipeline using the upstream analysis report.
Read .model_analysis/<model_type>_analysis.md.
If it does not exist, prefer asking the caller to invoke the model-analysis agent first (it is the canonical source for upstream facts). If that is not possible — e.g. running this skill standalone without the agent available — produce an equivalent report yourself by following the procedure in .github/agents/model-analysis.agent.md and write the result to the same path. Do not skip this artifact; later steps depend on it.
Using the report, decide:
src/cpp/src/visual_language/*/classes.hpp. Pick the closest one as the reference.vlm_config.hpp, new <model_type>/classes.{hpp,cpp}, factory registrations, etc.). Use genai-vlm-architecture.md "Adding a New Model — Checklist" as the structure.Append a ## GenAI Enablement Design section to .model_analysis/<model_type>_analysis.md:
## GenAI Enablement Design
- Closest GenAI model: <name> — because <reason>
- Required changes:
- <file>: <what changes>
- Gaps: <items needing new infrastructure>
Do not proceed to Step 2 until this section exists.
Goal: VLMPipeline generates correct text with text-only input, matching optimum-intel exactly.
Follow the checklist in genai-vlm-architecture.md "Adding a New Model":
vlm_config.hpp, string mapping to vlm_config.cpp<model_type>/classes.hpp and <model_type>/classes.cppvision_encoder.cpp and inputs_embedder.cpp factoriesfriend class to inputs_embedder.hppVisionEncoder::encode() throws, get_inputs_embeds() handles text-only pathpip install --pre -U . --extra-index-url https://storage.openvinotoolkit.org/simple/wheels/nightly
Fix all compilation errors.
Create and run .model_enabler/test_text_only_compare.py — compare GenAI vs optimum-intel with do_sample=False on 3 prompts.
.model_enabler/test_text_only_compare.py shows exact match on all promptsDo not proceed to Step 3 until text-only output matches optimum-intel exactly.
Goal: VLMPipeline generates correct text with image input, semantically close to optimum-intel.
Replace the VisionEncoder stub. Key references:
preprocessor_config.json for resize/normalization paramsclip.hpp/clip.cpp for available resize utilities (bilinear_resize, bicubic_resize, etc.)Update get_inputs_embeds() to handle the non-empty images case: insert vision embeddings at placeholder token positions.
Rebuild, then create and run:
.model_enabler/test_image_text_compare.py — compare GenAI vs optimum-intel on 3 image prompts.model_enabler/test_image_text_compare.py shows semantically similar outputsBefore declaring the model enabled:
.model_analysis/<model_type>_analysis.md exists with the ## GenAI Enablement Design section.model_enabler/Validate a newly supported optimum-intel model with OpenVINO GenAI. Use when: checking new model support, verifying model export to OpenVINO IR, running GenAI inference test with llm_bench, benchmarking model accuracy with who-what-benchmark.
Analyze failed llm_bench execution results for a model. Use when: checking llm_bench log, troubleshooting llm_bench fails.
Analyze results of WWB execution with a specific model with all possible backends. Use when: checking wwb logs, troubleshooting wwb fails.
Open a pull request to openvinotoolkit/openvino.genai. Use when: submitting changes, creating PR, opening pull request, pushing work for review, finalizing a task with a PR.
Update OpenVINO GenAI site documentation for API or feature changes. Use when: new pipelines, models, or use-cases are introduced; site docs need to reflect new capabilities.