多模态语言模型#

这些模型接受多模态输入(例如图像和文本)并生成文本输出。它们通过多模态编码器增强了语言模型。

示例启动命令#

python3 -m sglang.launch_server \
  --model-path meta-llama/Llama-3.2-11B-Vision-Instruct \  # 示例 HF/本地路径
  --host 0.0.0.0 \
  --port 30000 \

有关如何发送多模态请求,请参阅 OpenAI API 部分

支持的模型#

以下是支持的模型汇总表。

如果您不确定特定架构是否已实现,可以通过 GitHub 搜索它。例如,要搜索 Qwen2_5_VLForConditionalGeneration,请在 GitHub 搜索栏中使用以下表达式:

repo:sgl-project/sglang path:/^python\/sglang\/srt\/models\// Qwen2_5_VLForConditionalGeneration

模型系列(变体)

示例 HuggingFace 标识符

描述

备注

Qwen-VL

Qwen/Qwen3-VL-235B-A22B-Instruct

阿里巴巴的 Qwen 视觉语言扩展;例如,Qwen2.5-VL(7B 及更大变体)可以分析和讨论图像内容。

DeepSeek-VL2

deepseek-ai/deepseek-vl2

DeepSeek 的视觉语言变体(配备专用图像处理器),能够在图像和文本输入上进行高级多模态推理。

Janus-Pro (1B, 7B)

deepseek-ai/Janus-Pro-7B

DeepSeek 的开源多模态模型,兼具图像理解和生成能力。Janus-Pro 采用解耦架构,用于独立的视觉编码路径,提高了两项任务的性能。

MiniCPM-V / MiniCPM-o

openbmb/MiniCPM-V-2_6

MiniCPM-V (2.6, ~8B) 支持图像输入,MiniCPM-o 添加了音频/视频;这些多模态 LLM 针对在移动/边缘设备上的端侧部署进行了优化。

Llama 3.2 Vision (11B)

meta-llama/Llama-3.2-11B-Vision-Instruct

Llama 3 (11B) 的视觉启用变体,接受图像输入进行视觉问答和其他多模态任务。

LLaVA (v1.5 & v1.6)

例如 liuhaotian/llava-v1.5-13b

开放视觉聊天模型,在 LLaMA/Vicuna(例如 LLaMA2 13B)上添加图像编码器,用于遵循多模态指令提示。

LLaVA-NeXT (8B, 72B)

lmms-lab/llava-next-72b

改进的 LLaVA 模型(包含 8B Llama3 版本和 72B 版本),提供增强的视觉指令遵循能力和多模态基准测试的准确性。

LLaVA-OneVision

lmms-lab/llava-onevision-qwen2-7b-ov

增强的 LLaVA 变体,集成了 Qwen 作为骨干网络;通过 OpenAI Vision API 兼容格式支持多个图像(甚至视频帧)作为输入。

Gemma 3 (Multimodal)

google/gemma-3-4b-it

Gemma 3 的更大模型(4B、12B、27B)接受图像(每个图像编码为 256 个 token)以及文本,在组合的 128K token 上下文中。

Kimi-VL (A3B)

moonshotai/Kimi-VL-A3B-Instruct

Kimi-VL 是一个多模态模型,可以理解图像并从中生成文本。

Mistral-Small-3.1-24B

mistralai/Mistral-Small-3.1-24B-Instruct-2503

Mistral 3.1 是一个多模态模型,可以从文本或图像输入生成文本。它还支持工具调用和结构化输出。

Phi-4-multimodal-instruct

microsoft/Phi-4-multimodal-instruct

Phi-4-multimodal-instruct 是 Phi-4-mini 模型的多模态变体,通过 LoRA 增强以提高多模态能力。它在 SGLang 中支持文本、视觉和音频模态。

MiMo-VL (7B)

XiaomiMiMo/MiMo-VL-7B-RL

小米公司的紧凑而强大的视觉语言模型,具有原生分辨率 ViT 编码器用于细粒度视觉细节、用于跨模态对齐的 MLP 投影器以及针对复杂推理任务优化的 MiMo-7B 语言模型。

GLM-4.5V (106B) / GLM-4.1V(9B)

zai-org/GLM-4.5V

GLM-4.5V 和 GLM-4.1V-Thinking:通过可扩展强化学习实现多功能多模态推理

使用 --chat-template glm-4v

DotsVLM (General/OCR)

rednote-hilab/dots.vlm1.inst

红书的视觉语言模型,基于 1.2B 视觉编码器和 DeepSeek V3 LLM 构建,采用从头训练的动态分辨率支持的 NaViT 视觉编码器,并通过结构化图像数据训练增强了 OCR 能力。

不要使用 --trust-remote-code

DotsVLM-OCR

rednote-hilab/dots.ocr

DotsVLM 的专用 OCR 变体,针对光学字符识别任务进行了优化,具有增强的文本提取和文档理解能力。

NVILA (8B, 15B, Lite-2B, Lite-8B, Lite-15B)

Efficient-Large-Model/NVILA-8B

chatml

NVILA 探索了多模态设计的全栈效率,实现了更便宜的训练、更快的部署和更好的性能。

JetVLM

JetVLM 是一个基于 Jet-Nemotron 构建的视觉语言模型,专为高性能多模态理解和生成任务设计。

即将推出

视频输入支持#

SGLang 支持视觉语言模型(VLM)的视频输入, enabling temporal reasoning tasks such as video question answering, captioning, and holistic scene understanding. Video clips are decoded, key frames are sampled, and the resulting tensors are batched together with the text prompt, allowing multimodal inference to integrate visual and linguistic context.

模型系列

示例标识符

视频备注

Qwen-VL (Qwen2-VL, Qwen2.5-VL, Qwen3-VL, Qwen3-Omni)

Qwen/Qwen3-VL-235B-A22B-Instruct

处理器收集 video_data,运行 Qwen 的帧采样器,并在推理前将生成的特征与文本 token 合并。

GLM-4v (4.5V, 4.1V, MOE)

zai-org/GLM-4.5V

视频片段使用 Decord 读取,转换为张量,并与旋转位置处理的元数据一起传递给模型。

NVILA (Full & Lite)

Efficient-Large-Model/NVILA-8B

运行时每个片段采样八帧,并在存在 video_data 时将它们附加到多模态请求中。

LLaVA video variants (LLaVA-NeXT-Video, LLaVA-OneVision)

lmms-lab/LLaVA-NeXT-Video-7B

处理器将视频提示路由到 LlavaVid 启用视频的架构,提供的示例显示了如何使用 sgl.video(...) 片段查询它。

JetVLM

运行时每个片段采样八帧,并在存在 video_data 时将它们附加到多模态请求中。

在构建提示时使用 sgl.video(path, num_frames) 从您的 SGLang 程序附加片段。

发送视频片段的兼容 OpenAI 的示例请求:

import requests

url = "http://localhost:30000/v1/chat/completions"

data = {
    "model": "Qwen/Qwen3-VL-30B-A3B-Instruct",
    "messages": [
        {
            "role": "user",
            "content": [
                {"type": "text", "text": "这个视频里发生了什么?"},
                {
                    "type": "video_url",
                    "video_url": {
                        "url": "https://github.com/sgl-project/sgl-test-files/raw/refs/heads/main/videos/jobs_presenting_ipod.mp4"
                    },
                },
            ],
        }
    ],
    "max_tokens": 300,
}

response = requests.post(url, json=data)
print(response.text)

使用说明#

性能优化#

对于多模态模型,您可以使用 --keep-mm-feature-on-device 标志来优化延迟,但代价是增加 GPU 内存使用:

  • 默认行为:多模态特征张量在处理后移动到 CPU 以节省 GPU 内存

  • 使用 --keep-mm-feature-on-device:特征张量保留在 GPU 上,减少设备到主机的复制开销并提高延迟,但会消耗更多 GPU 内存

当您有足够的 GPU 内存并希望最小化多模态推理的延迟时,请使用此标志。

多模态输入限制#

  • 使用 --mm-process-config '{"image":{"max_pixels":1048576},"video":{"fps":3,"max_pixels":602112,"max_frames":60}}':设置 imagevideoaudio 输入限制。

这可以减少 GPU 内存使用,提高推理速度,并帮助避免 OOM,但可能会影响模型性能,因此请根据您的具体用例设置适当的值。目前,只有 qwen_vl 支持此配置。请参考 qwen_vl processor 了解每个参数的含义。