多模态语言模型#
这些模型接受多模态输入(如图像和文本)并生成文本输出。它们通过多模态编码器增强了语言模型的能力。
启动命令示例#
python3 -m sglang.launch_server \
--model-path meta-llama/Llama-3.2-11B-Vision-Instruct \ # example HF/local path
--host 0.0.0.0 \
--port 30000 \
有关如何发送多模态请求的信息,请参阅 OpenAI APIs 章节。
支持的模型#
下表总结了支持的模型。
如果您不确定是否已实现特定的架构,可以通过 GitHub 进行搜索。例如,要搜索 Qwen2_5_VLForConditionalGeneration,请在
repo:sgl-project/sglang path:/^python\/sglang\/srt\/models\// Qwen2_5_VLForConditionalGeneration
GitHub 搜索栏中使用该表达式。
模型家族(变体) |
HuggingFace 标识符示例 |
描述 |
注意事项 |
|---|---|---|---|
Qwen-VL |
|
阿里巴巴 Qwen 的视觉语言扩展;例如,Qwen2.5-VL(7B 及更大变体)可以分析图像内容并进行对话。 |
|
DeepSeek-VL2 |
|
DeepSeek 的视觉语言变体(带有专用图像处理器),能够对图像和文本输入进行高级多模态推理。 |
|
Janus-Pro (1B, 7B) |
|
DeepSeek 的开源多模态模型,具备图像理解和生成能力。Janus-Pro 采用解耦架构,拥有独立的视觉编码路径,从而提升了在这两项任务中的性能。 |
|
MiniCPM-V / MiniCPM-o |
|
MiniCPM-V (2.6, ~8B) 支持图像输入,MiniCPM-o 增加了音频/视频支持;这些多模态大模型针对移动端/边缘设备的部署进行了优化。 |
|
Llama 3.2 Vision (11B) |
|
Llama 3 (11B) 的视觉增强变体,接受图像输入以进行视觉问答和其他多模态任务。 |
|
LLaVA (v1.5 & v1.6) |
例如 |
开源视觉对话模型,在 LLaMA/Vicuna(如 LLaMA2 13B)基础上添加了图像编码器,用于遵循多模态指令提示。 |
|
LLaVA-NeXT (8B, 72B) |
|
改进的 LLaVA 模型(包含 8B Llama3 版本和 72B 版本),在多模态基准测试上提供更强的视觉指令遵循能力和准确性。 |
|
LLaVA-OneVision |
|
增强的 LLaVA 变体,集成了 Qwen 作为骨干网络;通过兼容 OpenAI Vision API 的格式支持多图(甚至视频帧)输入。 |
|
Gemma 3 (多模态) |
|
Gemma 3 的较大模型(4B, 12B, 27B)可在总计 128K 令牌的上下文中,将图像(每张图像编码为 256 令牌)与文本一同接受。 |
|
Kimi-VL (A3B) |
|
Kimi-VL 是一款多模态模型,能够根据图像理解并生成文本。 |
|
Mistral-Small-3.1-24B |
|
Mistral 3.1 是一款多模态模型,可以根据文本或图像输入生成文本。它还支持工具调用和结构化输出。 |
|
Phi-4-multimodal-instruct |
|
Phi-4-multimodal-instruct 是 Phi-4-mini 模型的多模态变体,通过 LoRA 增强了多模态能力。它在 SGLang 中支持文本、视觉和音频模态。 |
|
MiMo-VL (7B) |
|
小米开发的紧凑且强大的视觉语言模型,采用原生分辨率 ViT 编码器以捕捉精细视觉细节,使用 MLP 投影器进行跨模态对齐,并搭载针对复杂推理任务优化的 MiMo-7B 语言模型。 |
|
GLM-4.5V (106B) / GLM-4.1V(9B) |
|
GLM-4.5V 与 GLM-4.1V-Thinking:通过可扩展强化学习实现通用的多模态推理。 |
使用 |
DotsVLM (通用/OCR) |
|
小红书开发的视觉语言模型,基于 1.2B 视觉编码器和 DeepSeek V3 语言模型构建,采用从零训练的 NaViT 视觉编码器,支持动态分辨率,并通过结构化图像数据训练增强了 OCR 能力。 |
|
DotsVLM-OCR |
|
DotsVLM 的专用 OCR 变体,针对光学字符识别任务进行了优化,具备增强的文本提取和文档理解能力。 |
请勿使用 |
NVILA (8B, 15B, Lite-2B, Lite-8B, Lite-15B) |
|
|
NVILA 探索了多模态设计的全栈效率,实现了更廉价的训练、更快的部署和更好的性能。 |
NVIDIA Nemotron Nano 2.0 VL |
|
NVIDIA Nemotron Nano v2 VL 支持多图推理和视频理解,以及强大的文档智能、视觉问答和摘要能力。它构建在 Nemotron Nano V2(一种混合 Mamba-Transformer 语言模型)之上,旨在长文档和视频场景中实现更高的推理吞吐量。 |
使用 |
JetVLM |
JetVLM 是一个视觉语言模型,旨在处理高性能多模态理解和生成任务,基于 Jet-Nemotron 构建。 |
即将推出 |
视频输入支持#
SGLang 支持视觉语言模型 (VLM) 的视频输入,从而能够执行时间推理任务,如视频问答、字幕生成和整体场景理解。视频剪辑被解码、关键帧被采样,生成的张量与文本提示符一起批处理,从而使多模态推理能够整合视觉和语言上下文。
模型家族 |
示例标识符 |
视频说明 |
|---|---|---|
Qwen-VL (Qwen2-VL, Qwen2.5-VL, Qwen3-VL, Qwen3-Omni) |
|
处理器收集 |
GLM-4v (4.5V, 4.1V, MOE) |
|
视频剪辑使用 Decord 读取,转换为张量,并与元数据一起传递给模型以进行旋转位置处理。 |
NVILA (完整版 & 轻量版) |
|
当存在 |
LLaVA 视频变体 (LLaVA-NeXT-Video, LLaVA-OneVision) |
|
处理器将视频提示路由到启用了视频的 LlavaVid 架构,提供的示例展示了如何使用 |
NVIDIA Nemotron Nano 2.0 VL |
|
对于视频,处理器配置为以 2 FPS 采样,最高 128 帧,符合模型训练标准。 |
JetVLM |
当存在 |
在构建提示时使用 sgl.video(path, num_frames) 从您的 SGLang 程序中附加视频剪辑。
发送视频剪辑的兼容 OpenAI 的请求示例
import requests
url = "https://:30000/v1/chat/completions"
data = {
"model": "Qwen/Qwen3-VL-30B-A3B-Instruct",
"messages": [
{
"role": "user",
"content": [
{"type": "text", "text": "What’s happening in this video?"},
{
"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}}':设置image(图像)、video(视频) 和audio(音频) 的输入限制。
这可以减少 GPU 显存使用,提高推理速度,并有助于避免 OOM(显存溢出),但可能会影响模型性能,因此请根据您的具体使用场景设置合适的值。目前,仅 qwen_vl 支持此配置。请参阅 qwen_vl 处理器 以了解各参数的含义。