sglang 部署Qwen/Qwen2.5-VL-7B-Instruct
https://www.dong-blog.fun/post/2113
1. SGLang中Qwen2-VL的模板代码位置
SGLang中Qwen2-VL的模板代码主要在以下文件中:
聊天模板定义:
python/sglang/lang/chat_template.py
第148-157行定义了qwen2-vl模板:
register_chat_template(ChatTemplate(name="qwen2-vl",default_system_prompt="You are a helpful assistant.",role_prefix_and_suffix={"system": ("<|im_start|>system\n", "<|im_end|>\n"),"user": ("<|im_start|>user\n", "<|im_end|>\n"),"assistant": ("<|im_start|>assistant\n", "<|im_end|>\n"),},style=ChatTemplateStyle.PLAIN,stop_str=("<|im_end|>",),image_token="<|vision_start|><|image_pad|><|vision_end|>",)
)
会话模板定义:
python/sglang/srt/conversation.py
第773-787行定义了qwen2-vl会话模板:
register_conv_template(Conversation(name="qwen2-vl",system_message="You are a helpful assistant.",system_template="<|im_start|>system\n{system_message}",roles=("<|im_start|>user", "<|im_start|>assistant"),sep="<|im_end|>\n",sep_style=SeparatorStyle.ADD_NEW_LINE_SINGLE,stop_str=["<|im_end|>"],image_token="<|vision_start|><|image_pad|><|vision_end|>",)
)
多模态处理器:
python/sglang/srt/managers/multimodal_processors/qwen_vl.py
包含了Qwen2-VL的图像处理逻辑
2. SGLang对vLLM参数的支持情况
对比你提到的vLLM命令参数,SGLang的支持情况如下:
vLLM参数 | SGLang对应参数 | 支持情况 |
---|---|---|
--max-model-len 16384 | --context-length | ✅ 支持 |
--pipeline-parallel-size 2 | --pipeline-parallel-size 或 --pp-size | ✅ 支持 |
--gpu_memory_utilization 0.75 | --mem-fraction-static | ✅ 支持,但语义稍有不同 |
--mm-processor-kwargs '{"min_pixels": 784, "max_pixels": 2352000, "fps": 1}' | 无直接对应 | ❌ 不支持 |
--limit-mm-per-prompt "image=2,video=1" | 无直接对应 | ❌ 不支持 |
详细说明:
-
--mem-fraction-static
vs--gpu_memory_utilization
:- SGLang的
mem_fraction_static
控制静态内存分配(模型权重和KV缓存池)的比例 - vLLM的
gpu_memory_utilization
控制整体GPU内存使用比例 - 在
python/sglang/srt/server_args.py
中,SGLang根据并行度自动设置不同的默认值
- SGLang的
-
Pipeline并行支持:
- SGLang完全支持pipeline parallelism
- 参数:
--pipeline-parallel-size
或简写--pp-size
-
多模态参数:
- SGLang目前没有类似vLLM的
--mm-processor-kwargs
和--limit-mm-per-prompt
参数 - 多模态配置主要通过模型特定的处理器代码硬编码实现
- 在Qwen2-VL处理器中,像素限制等参数是在代码中预定义的
- SGLang目前没有类似vLLM的
建议的SGLang启动命令:
python -m sglang.launch_server \--model-path /Qwen2-VL-Any \--context-length 16384 \--pp-size 2 \--mem-fraction-static 0.75 \--chat-template qwen2-vl \--host 0.0.0.0 \--port 30000
3. SGLang Docker 部署项目
比如 sglang:v0.4.6.post1-cu121
docker run -d --gpus all \
--shm-size=32g \
-p 7860:7860 \
-p 8000:8000 \
-v /root/model/:/Qwen2-VL-Any \
sglang:v0.4.6.post1-cu121 python3 -m sglang.launch_server --host 0.0.0.0 --port 8000 --chat-template qwen2-vl --mem-fraction-static 0.75 --tensor-parallel-size 2 --context-length 4096 --model-path /Qwen2-VL-Any