DeepSeek-VL2-Tiny 是由深度求索(DeepSeek-AI)推出的轻量级视觉语言模型。它将 SigLIP 视觉编码器与 DeepSeek-V2 MoE 语言骨干网络相结合。tiny 变体包含 12 层、1280 隐藏维度、10 个注意力头以及 64 个路由专家(每个 token 激活 6 个专家),使其适合在单 NPU 昇腾设备上进行高效的多模态推理。
本仓库包含 deepseek-ai/deepseek-vl2-tiny 在 vLLM-Ascend 上的昇腾 NPU 适配结果。
完整的适配补丁以 deepseek-vl2-tiny-adapt.patch 形式提供。其中包括:
DeepSeek-VL2-Tiny.md,作为 vLLM-Ascend 的部署指南DeepseekVL2Tiny.yaml 端到端测试配置rope_dim=0 时 Triton RoPE 内核崩溃的问题(由 tiny 配置中的 qk_rope_head_dim=0 导致)| 特性 | 状态 |
|---|---|
| ACLGraph | 已验证 |
| 文本推理 | 已验证 |
| 图文推理 | 已验证 |
| 专家并行(EP) | 支持 MoE,EP 在 tiny 变体上未明确验证 |
| 多节点 | 不适用(单 NPU 足够) |
export VLLM_USE_MODELSCOPE=True
export PYTORCH_NPU_ALLOC_CONF=max_split_size_mb:256
vllm serve deepseek-ai/deepseek-vl2-tiny \
--dtype bfloat16 \
--trust-remote-code \
--max-model-len 4096 \
--gpu-memory-utilization 0.7 \
--port 8000rope_dim=0 时崩溃:deepseek-vl2-tiny 配置将 qk_rope_head_dim 设置为 0,这导致 vllm-ascend Triton RoPE 内核崩溃,因为 tl.arange(0, 0) 是无效的。通过在 vllm_ascend/ops/triton/rope.py 中添加提前返回保护(if rope_dim <= 0: return ...)已修复此问题。from vllm import LLM, SamplingParams
MODEL_PATH = "deepseek-ai/deepseek-vl2-tiny"
llm = LLM(
model=MODEL_PATH,
trust_remote_code=True,
max_model_len=4096,
limit_mm_per_prompt={"image": 1},
)
sampling_params = SamplingParams(max_tokens=32, temperature=0)
messages = [
{"role": "system", "content": "You are a helpful assistant."},
{"role": "user", "content": [
{"type": "image_url", "image_url": {"url": "https://modelscope.oss-cn-beijing.aliyuncs.com/resource/qwen.png"}},
{"type": "text", "text": "What is in the image?"}
]}
]
outputs = llm.chat(messages, sampling_params=sampling_params)
print(outputs[0].outputs[0].text)@article{deepseekvl2,
title={DeepSeek-VL2: Mixture-of-Experts Vision-Language Models for Advanced Multimodal Understanding},
author={DeepSeek-AI},
journal={arXiv preprint arXiv:2412.10302},
year={2024}
}