Skip to content

Add EximiusLabs/fusion-embedding-2-2b-preview (multimodal embedding: text, image, video, audio) - #741

Open
abtonmoy wants to merge 2 commits into
vllm-project:mainfrom
abtonmoy:add-fusion-embedding-2
Open

Add EximiusLabs/fusion-embedding-2-2b-preview (multimodal embedding: text, image, video, audio)#741
abtonmoy wants to merge 2 commits into
vllm-project:mainfrom
abtonmoy:add-fusion-embedding-2

Conversation

@abtonmoy

@abtonmoy abtonmoy commented Aug 4, 2026

Copy link
Copy Markdown

Adds a recipe for EximiusLabs/fusion-embedding-2-2b-preview, a 2.8B multimodal embedding model that places text, images, video and audio in one 2048-d space (frozen Qwen3-VL-Embedding-2B base + frozen Qwen2.5-Omni audio tower + token-gated adapters).

The model serves through an out-of-tree plugin registered via the vllm.general_plugins entry point; it ships inside the fusion-embedding PyPI package, so the install is uv pip install 'vllm[audio]==0.26.0' fusion-embedding and the launch is a plain vllm serve EximiusLabs/fusion-embedding-2-2b-preview --runner pooling (no trust-remote-code, no extra flags). Smoke-tested against vllm==0.26.0.

Notes for review:

  • node scripts/build-recipes-api.mjs passes and renders public/EximiusLabs/fusion-embedding-2-2b-preview.json.
  • Every number in the recipe is measured: parameter counts summed from safetensors metadata, context length from the base config, parity figures from executed comparison runs against the reference implementation (fp32 text cosine 0.999998+, image 0.999986+, audio 0.999999+; the served HTTP endpoint verified end to end).
  • Single-GPU, single_node_tp with tp: 1, eager execution forced by the plugin (documented in the guide).

Happy to adjust tags, difficulty, or guide structure to fit conventions.

@vercel

vercel Bot commented Aug 4, 2026

Copy link
Copy Markdown
Contributor

The latest updates on your projects. Learn more about Vercel for GitHub.

Project Deployment Actions Updated (UTC)
vllm-recipes Ready Ready Preview Aug 9, 2026 8:46am

Request Review

@gemini-code-assist gemini-code-assist Bot left a comment

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Code Review

This pull request introduces a configuration file and guide for the fusion-embedding-2-2b-preview multimodal embedding model. The feedback recommends replacing uv pip install with standard pip install for broader compatibility, increasing the minimum VRAM requirement to 8 GB to match standard hardware tiers, and wrapping the offline API input in a list to prevent potential type validation errors in vLLM.

min_vllm_version: "0.26.0"
install:
pip:
command: "uv pip install 'vllm[audio]==0.26.0' fusion-embedding"

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

medium

Using pip install instead of uv pip install as the primary command is recommended for general compatibility, as uv is an external tool that is not pre-installed in most Python environments.

      command: "pip install 'vllm[audio]==0.26.0' fusion-embedding"

variants:
default:
precision: bf16
vram_minimum_gb: 7

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

medium

Increasing vram_minimum_gb to 8 aligns with standard hardware tiers (such as 8 GB GPUs) and the guide's recommendation of 'roughly 8 GB VRAM or more'. A 7 GB limit is not a standard GPU size and is extremely tight for loading ~5.7 GB of weights plus the CUDA context and vLLM overhead.

    vram_minimum_gb: 8

## Install

```bash
uv pip install 'vllm[audio]==0.26.0' fusion-embedding

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

medium

Using standard pip install in the guide's installation instructions provides better out-of-the-box compatibility for users who do not have uv installed.

  pip install 'vllm[audio]==0.26.0' fusion-embedding

Comment on lines +145 to +146
out = llm.embed({"prompt": "<|vision_pad|><|im_end|>",
"multi_modal_data": {"audio": (wav, sr)}})

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

medium

Wrapping the multi-modal input dictionary in a list is the standard and most robust way to pass inputs to llm.embed in vLLM, preventing potential type validation errors in certain vLLM versions.

  out = llm.embed([{"prompt": "<|vision_pad|><|im_end|>",
                    "multi_modal_data": {"audio": (wav, sr)}}])

@abtonmoy

abtonmoy commented Aug 4, 2026

Copy link
Copy Markdown
Author

Addressed the review: bumped vram_minimum_gb to 8 (matches the guide's prerequisites line and real hardware tiers) and wrapped the offline llm.embed input in a list, both in 3e50af9. Kept uv pip install for the install commands since that is the dominant convention across the existing recipes (285 occurrences vs 11 plain pip install); happy to switch if maintainers prefer otherwise. Validator still passes.

Signed-off-by: Abdul Basit Tonmoy <abdulbasittonmoy@gmail.com>
Signed-off-by: Abdul Basit Tonmoy <abdulbasittonmoy@gmail.com>
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant