Muse-Glimmer-30B-int4-ov

EXPERIMENTAL MODEL This model has not been fully validated with OpenVINO and currently requires development versions of Optimum Intel and OpenVINO. It may be fully supported and validated in future releases.

Description

This is the Muse-Glimmer-30B model converted to the OpenVINO™ IR (Intermediate Representation) format with weights compressed to INT4 by NNCF.

Muse Glimmer is a dense causal transformer with a dedicated perception encoder. It accepts text and image inputs and generates text. Video can be processed as a sequence of individual frames.

Quantization Parameters

Weight compression was performed using NNCF 3.3.0 and nncf.compress_weights with the following parameters:

  • mode: INT4_ASYM
  • group_size: 64
  • ratio: 1.0
  • group_size_fallback: ignore

For more information about weight compression, see the OpenVINO model optimization guide.

Compatibility

The provided OpenVINO IR model is compatible with:

  • OpenVINO 2026.3.1 or higher
  • The latest Optimum Intel main branch, or a release containing Muse Glimmer support
  • Transformers 5.15

Running Model Inference with Optimum Intel

Install the required packages:

pip install -U "git+https://github.com/huggingface/optimum-intel.git" --extra-index-url https://download.pytorch.org/whl/cpu
pip install -U "transformers==5.15" "opencv-python" "Pillow"
pip install --pre -U "openvino>=2026.3.1" --extra-index-url https://storage.openvinotoolkit.org/simple/wheels/nightly

Run image inference:

from optimum.intel.openvino import OVModelForVisualCausalLM
from transformers import AutoProcessor
from transformers.image_utils import load_image

model_id = "OpenVINO/Muse-Glimmer-30B-int4-ov"

processor = AutoProcessor.from_pretrained(model_id, padding_side="left")
model = OVModelForVisualCausalLM.from_pretrained(model_id)

image_url = (
    "https://huggingface.co/datasets/huggingface/documentation-images/"
    "resolve/main/p-blog/candy.JPG"
)
image = load_image(image_url)

messages = [
    {
        "role": "user",
        "content": [
            {"type": "image", "url": image_url},
            {"type": "text", "text": "What animal is on the candy?"},
        ],
    }
]

# OnyxProcessor expects rendered text and a flat list of PIL images.
text = processor.apply_chat_template(
    messages,
    tokenize=False,
    add_generation_prompt=True,
)
inputs = processor(
    text=[text],
    images=[image],
    padding=True,
    return_tensors="pt",
)

outputs = model.generate(**inputs, do_sample=False, max_new_tokens=100)
generated_ids = outputs[:, inputs["input_ids"].shape[1]:]
response = processor.batch_decode(generated_ids, skip_special_tokens=True)[0]
print(response)

Running Model Inference with OpenVINO GenAI

Install the required packages:

pip install -U "huggingface_hub" "Pillow" "requests"
pip install --pre -U openvino openvino-tokenizers openvino-genai --extra-index-url https://storage.openvinotoolkit.org/simple/wheels/nightly

Download the model from Hugging Face Hub:

import huggingface_hub as hf_hub

model_id = "OpenVINO/Muse-Glimmer-30B-int4-ov"
model_path = "Muse-Glimmer-30B-int4-ov"

hf_hub.snapshot_download(model_id, local_dir=model_path)

Run image inference:

import numpy as np
import openvino as ov
import openvino_genai as ov_genai
import requests
from PIL import Image

device = "CPU"
pipe = ov_genai.VLMPipeline(model_path, device)

image_url = (
    "https://huggingface.co/datasets/huggingface/documentation-images/"
    "resolve/main/p-blog/candy.JPG"
)
image = Image.open(requests.get(image_url, stream=True).raw).convert("RGB")
image_tensor = ov.Tensor(np.array(image))

response = pipe.generate(
    "What animal is on the candy?",
    image=image_tensor,
    max_new_tokens=100,
)
print(response)

Running Model with OpenAI client and OpenVINO Model Server

1a. Deploy model on Windows using binary package:

curl -o ovms.zip https://storage.openvinotoolkit.org/repositories/openvino_model_server/packages/weekly/latest/ovms_windows_2026.4.0_python_on.zip
tar -xzf ovms.zip
ovms\setupvars.bat
set OVMS_MEDIA_URL_ALLOW_REDIRECTS=1
ovms.exe --rest_port 8000 --source_model --source_model OpenVINO/Muse-Glimmer-30B-int4-ov --model_repository_path C:\models --allowed_media_domains all

1b. Deploy model in a Docker container:

export GPU_ARGS=$(if ls /dev/dri/render* >/dev/null 2>&1; then echo "--device /dev/dri --group-add $(stat -c '%g' /dev/dri/render* | head -n1)"; fi)
docker run -d ${GPU_ARGS} -e "OVMS_MEDIA_URL_ALLOW_REDIRECTS=1" -u $(id -u):$(id -g) --rm -p 8000:8000 -v ${HOME}/models:/models:rw openvino/model_server:weekly \
--rest_port 8000 --model_repository_path models --source_model OpenVINO/Muse-Glimmer-30B-int4-ov --allowed_media_domains all
  1. Install the client library:
pip install openai
  1. Run the client:
from openai import OpenAI

client = OpenAI(
  base_url="http://localhost:8000/v1",
  api_key="unused"
)

image_url = (
    "https://huggingface.co/datasets/huggingface/documentation-images/resolve/main/p-blog/candy.JPG"
)

stream = client.chat.completions.create(
    model="OpenVINO/Muse-Glimmer-30B-int4-ov",
    messages=[
    {
        "role": "user",
        "content": [
            {"type": "image_url", "image_url": {"url": image_url}},
            {"type": "text", "text": "What animal is on the candy?"},
        ],
    }
    ],
    stream=True,
    extra_body={"chat_template_kwargs": {"reasoning_strength": "medium"}},
    tools=[],
)

printing_reasoning_started = False
printing_content_started = False
for chunk in stream:
    if not chunk.choices:
        continue
    delta = chunk.choices[0].delta

    content = getattr(delta, "content", None)
    reasoning = getattr(delta, "reasoning_content", None)

    if content:
        if not printing_content_started:
            printing_content_started = True
            print("\ncontent:\n", end="", flush=True)
        print(content, end="", flush=True)
    if reasoning:
        if not printing_reasoning_started:
            printing_reasoning_started = True
            print("reasoning_content:\n", end="", flush=True)
        print(reasoning, end="", flush=True)

Limitations

The model may generate inaccurate, biased, or objectionable responses. Video is processed as individual frames and was not a primary optimization target of the original model. Quantized inference may show minor quality differences compared with BF16.

See the original Muse Glimmer model card for the complete intended-use, safety, and limitation information.

Legal Information

The original Muse-Glimmer-30B model is released under the Apache License 2.0.

Disclaimer

Intel is committed to respecting human rights and avoiding causing or contributing to adverse impacts on human rights. See Intel's Global Human Rights Principles. Intel's products and software are intended only to be used in applications that do not cause or contribute to adverse impacts on human rights.

Downloads last month
-
Inference Providers NEW
This model isn't deployed by any Inference Provider. 🙋 Ask for provider support

Model tree for OpenVINO/Muse-Glimmer-30B-int4-ov

Finetuned
(19)
this model