跳到主要内容

多模态视觉大模型

DeepSeek-VL 私有化部署:6.7GB 到 55GB,三个尺寸对应三种卡

DeepSeek-VL2 是这条线上做通用视觉理解该部署的版本,DeepSeek-OCR 系列是它分出去的文档分支。下面是每个版本的真实权重体积、官方给出的显存门槛,以及在 NexGPU 上分别该租哪张卡。

搜「DeepSeek-VL 本地部署」的人,多半以为它还是那个 1.3B / 7B 的稠密模型。实际上这条线已经走了三步:初代 DeepSeek-VL 用 SigLIP-L 加 SAM-B 的混合视觉编码器,固定吃 1024×1024 输入;DeepSeek-VL2 换成 DeepSeekMoE 底座(配置里是 DeepseekV2ForCausalLM,72 个路由专家、top-6 激活)和 SigLIP-SO400M-384 动态切图,一次给出 tiny / small / 全量三个尺寸;再往后,官方的多模态发布集中到了文档方向,也就是 DeepSeek-OCR 和 DeepSeek-OCR-2。要做通用视觉理解,今天该部署的是 DeepSeek-VL2。

显存这件事上 DeepSeek-VL2 有个非常反直觉的地方。deepseek-vl2-small 的 bf16 权重只有 32.3GB,但官方 README 白纸黑字写着跑示例脚本需要 80GB 显存 —— 差出来的部分全在动态切图产生的图像 token 上:一张高分辨率图会被拆成一堆 384×384 的 tile(配置里列了 23 种候选分辨率,最大到 3456×384),prefill 阶段这些激活值同时驻留。仓库给的解法是 incremental_prefilling,chunk_size 设 512 分块喂进去,能压进 40GB,代价是首 token 明显变慢。按权重体积估卡,是这个模型最常见的翻车方式。

另一件要提前知道的事:量化生态很薄。Hugging Face 上搜不到 DeepSeek-VL2 的 GGUF,llama.cpp 那边的支持请求挂着 stale 标签就没了下文,所以 Ollama 和 LM Studio 这条路走不通。现成的低比特权重几乎都在 mlx-community(small 的 4bit 是 9.3GB),只跑 Apple Silicon。在 N 卡上要么老实上 bf16,要么用 bitsandbytes 的 load_in_4bit 或社区 AWQ 自己扛。这意味着省显存的余地比想象中小 —— 与其折腾量化,不如按小时租一张真的够用的卡。

01 —

DeepSeek-VL 全系版本与显存对照

权重体积取自各仓库 safetensors 元数据,显存门槛取自官方 README

版本参数量显存上下文说明
DeepSeek-VL227.5B-A4.5B(MoE)bf16 权重 55.0GB / 官方脚本 >80GB4096顶配版,DeepSeekMoE-27B 底座配 MLA 注意力。README 原话是 small 就要 80GB、全量「even larger」,单卡不开分块 prefill 时 A100 80GB 也吃紧。
DeepSeek-VL2-Small16.1B-A2.8B(MoE)bf16 权重 32.3GB / 原始脚本 80GB,分块 prefill 后 40GB4096自建评估和微调最常落的一档。40GB 卡靠 chunk_size=512 能跑但慢,80GB 卡才是顺手的选择。
DeepSeek-VL2-Tiny3.37B-A1.0B(MoE)bf16 权重 6.74GB4096唯一能舒服塞进 24GB 消费卡的尺寸,适合跑通链路、调 prompt 模板、做 LoRA 调试。mlx-community 有 3/4/6/8bit 量化,但只跑 Mac。
DeepSeek-VL-7B-Chat(初代)7.3B(稠密)fp16 权重 14.7GB4096第一代,SigLIP-L + SAM-B 混合编码器、固定 1024×1024 输入。同代还有 1.3B-chat(1.98B 参数、fp16 3.95GB)。只建议复现旧论文结果时用。
DeepSeek-OCR3.3B(DeepSeek3B-MoE-A570M 解码器)bf16 权重 6.71GBTiny 64 / Small 100 / Base 256 / Large 400 视觉 token文档分支的起点。DeepEncoder = SAM-base + 16× 卷积压缩 + CLIP-large。压缩比 10 倍以内解码精度约 97%,20 倍掉到约 60%。代码和权重都是 MIT。
DeepSeek-OCR-23.4Bbf16 权重 6.78GB(0-6)×144 + 256 视觉 token这条线最新的一代,架构标识 DeepseekOCR2ForCausalLM,主打 Visual Causal Flow。olmOCR-bench 总分 76.3%,arXiv 数学公式 OCR 到 82%,许可证放宽成 Apache-2.0。

02 —

在 NexGPU 上该租哪张卡

按尺寸和场景对号入座,价格为每卡每小时列表价

  • 跑通 deepseek-vl2-tiny,验证 prompt 与 grounding 输出

    RTX 3090 24GB$0.193/卡·时

    6.74GB 权重加动态切图的图像 token 在 24GB 里绰绰有余,而且 Ampere 能直接吃仓库钉死的 torch 2.0.1,不用先跟 CUDA 版本打一架。

  • DeepSeek-OCR / OCR-2 批量 PDF 转 Markdown 流水线

    RTX 4090 24GB$0.540/卡·时

    6.7GB 的模型完全塞得下,Ada 架构跑得动官方那套 torch 2.6.0 + flash-attn 2.7.3 环境;用 vLLM 时记得按模型卡建议关掉 prefix caching。

  • deepseek-vl2-small 全精度评估或 LoRA 微调

    A100 PCIE 80GB$0.824/卡·时

    官方 README 明写这个尺寸的原始脚本要 80GB。RTX A6000 48GB 是 $0.817,多花 $0.007 就多拿 32GB,没有理由去 48GB 卡上折腾分块 prefill。

  • 27.5B 全量 + 多图交错长会话 / 并发服务

    A100 SXM4 80GB$1.088/卡·时

    55GB 权重再叠上 prefill 激活,80GB 是底线;SXM4 的显存带宽和 NVLink 让 MoE 专家路由和多卡张量并行都不憋着。

03 —

四步把 DeepSeek-VL2 跑起来

从开卡到 OpenAI 兼容接口,把已知的坑都标出来

  1. 01

    开卡,先确认 torch 和 GPU 架构对得上

    在控制台选一张匹配尺寸的卡,直接用 2,000+ 预置镜像里的 PyTorch 或 vLLM 镜像开机,SSH、Jupyter、Web 终端随便进。第一件事是核对 torch:DeepSeek-VL2 的 requirements.txt 钉死了 torch==2.0.1 和 transformers==4.38.2,这在 Ampere(3090 / A100)上还能直接跑,但 RTX 5090 是 Blackwell sm_120,必须换成 torch 2.7 以上,那两个 pin 就得手动放掉。

    nvidia-smi && python -c "import torch; print(torch.__version__, torch.cuda.get_device_capability(0))"
  2. 02

    拉源码和权重

    官方推理代码在 deepseek-ai/DeepSeek-VL2,pip install -e . 就装好。注意 requirements 里的 attrdict 在 Python 3.10 以上会因为 collections 的导入方式直接报错,换成 attrdict3 即可 —— 这个坑一代二代都有。权重从 Hugging Face 拉,small 有 32.3GB,先看一眼实例的磁盘配额再下。

    git clone https://github.com/deepseek-ai/DeepSeek-VL2.git && cd DeepSeek-VL2 && pip install -e . && pip install attrdict3 && hf download deepseek-ai/deepseek-vl2-small --local-dir /workspace/deepseek-vl2-small
  3. 03

    显存不够就开分块 prefill

    只有 40GB 级别的卡时,用仓库自带的 incremental_prefilling 把图像 embedding 分块喂进去,chunk_size 取 512。这是官方唯一给出的、把 deepseek-vl2-small 压进 40GB 的办法,首 token 延迟会明显变高,吞吐场景不建议这么干 —— 直接上 80GB 卡更省心。

    inputs_embeds, past_key_values = vl_gpt.incremental_prefilling(input_ids=prepare_inputs.input_ids, images=prepare_inputs.images, images_seq_mask=prepare_inputs.images_seq_mask, images_spatial_crop=prepare_inputs.images_spatial_crop, attention_mask=prepare_inputs.attention_mask, chunk_size=512)
  4. 04

    上 vLLM,换成 OpenAI 兼容接口

    官方 README 自己写了那套 demo 「没有任何部署优化」,生产该走 vLLM、SGLang 或 LMDeploy。vLLM 已经内置 DeepseekVLV2ForCausalLM,LoRA 和流水线并行都支持,max-model-len 顶到 4096 就是模型上限。换成 DeepSeek-OCR / OCR-2 时,按模型卡建议补上 --no-enable-prefix-caching 和 --mm-processor-cache-gb 0。

    vllm serve deepseek-ai/deepseek-vl2-small --trust-remote-code --max-model-len 4096

一笔真实的账

拿 DeepSeek-OCR 跑 5 万页 PDF:论文给的吞吐是单张 A100-40G 每天 20 万页以上(约 2,500 token/s),5 万页大约四分之一天,按 6 小时算。NexGPU 的 A100 PCIE 80GB 是 $0.824/卡·时,6 × $0.824 = $4.94;结果导出 3GB,出网按 $0.0081/GB 中位价是 $0.02,合计 $4.96 就把整批文档转成了 Markdown。换成 deepseek-vl2-small 的 bf16 评估:32.3GB 权重在同一张卡上加载几分钟,一轮 1,000 张图的 benchmark 按 2 小时算,2 × $0.824 = $1.65。如果只是先在 tiny 上跑通链路,RTX 3090 24GB 是 $0.193/卡·时,一下午 4 小时 = $0.77。计费按秒计量、按小时定价,没有最低消费、没有开通费、不用提配额申请;实例一停算力立刻不计费,只有你留着的存储按 $0.414/GB·月 中位价继续走,销毁即止。

04 —

常见问题

DeepSeek-VL 和 DeepSeek-VL2 有什么区别?现在该用哪个?

初代 DeepSeek-VL 是 1.3B 和 7B 两档稠密模型,混合视觉编码器是 SigLIP-L 加 SAM-B,固定吃 1024×1024 输入。DeepSeek-VL2 换成了 DeepSeekMoE 架构加 MLA 注意力,视觉侧改用 SigLIP-SO400M-384 加动态切图,配置里列了 23 种候选分辨率、最大到 3456×384,还加了 <|grounding|> 和 <|ref|> 这套目标定位 token。做新项目直接上 VL2,初代只在你要复现旧论文结果时才有意义。两代在 NexGPU 上都有现成的 PyTorch 镜像,起一台 RTX 3090 24GB($0.193/卡·时)就能把 tiny 和 7B 摆在一起对比完。

deepseek-vl2-small 权重只有 32.3GB,为什么官方说要 80GB 显存?

因为吃显存的不是权重,是图像 token 的一次性 prefill。动态切图会把一张高分辨率图拆成多块 384×384 的 tile,每块过完 SigLIP 都变成序列里的一段,注意力的激活值在 prefill 阶段同时驻留,所以峰值远高于权重体积。官方 README 直接写了跑 small 的示例脚本需要 80GB。解法是仓库自带的 incremental_prefilling,chunk_size 设 512 分块喂,能压进 40GB,代价是首 token 明显变慢。在 NexGPU 上这题其实不用绕:A100 PCIE 80GB 是 $0.824/卡·时,RTX A6000 48GB 是 $0.817/卡·时,差 $0.007 就多 32GB,直接开 80GB 卡按原始脚本跑更省事。

DeepSeek-VL2 有 GGUF 吗?能塞进 Ollama 或 llama.cpp 吗?

不能。llama.cpp 的 deepseek-vl2 支持请求挂着 stale 标签就没了下文,Hugging Face 上到现在也搜不到一个 GGUF 权重。现成的量化只有两类:mlx-community 的 3/4/6/8bit(只跑 Apple Silicon,small 的 4bit 是 9.3GB),以及零星的社区 AWQ 和 bitsandbytes 4bit。想在 N 卡上省显存,路子是 load_in_4bit 或社区 AWQ,不是 GGUF。既然量化生态这么薄,租一张显存本来就够的卡通常比折腾更划算 —— NexGPU 从 RTX 3090 24GB $0.193 到 H200 141GB $6.660 全部按秒计费,跑完就停。

DeepSeek-VL2 上下文只有 4096,多图交错对话够用吗?

三个尺寸的 max_position_embeddings 都是 4096,这个数字在今天确实偏短,而且关键在于图像 token 也占这 4096 —— 动态切图之后一张高分辨率图很容易吃掉上千 token,所以多图交错能撑的轮数相当有限。工程上的做法是压低切图档位、把历史图片摘要成文本、或者一次只喂两张图。如果你的场景是长文档而不是长对话,换到 DeepSeek-OCR 分支会更对路。想知道自己的 prompt 到底能塞几轮,在 NexGPU 上开一台 RTX 4090 24GB($0.540/卡·时)拿 tiny 实测一遍最快。

DeepSeek-VL2 能商用吗?许可证怎么算?

代码仓库是 MIT,模型权重走 DeepSeek Model License,官方明确写了支持商用。要注意的是代码许可和权重许可是分开的两份,合规审查时得各看一遍。OCR 分支反而更宽松:DeepSeek-OCR 的权重是 MIT,DeepSeek-OCR-2 是 Apache-2.0,法务对自定义许可有顾虑的话,这条线基本没有争议。把权重放在自己租的机器上、数据不出实例,是绕开这类顾虑最直接的方式;NexGPU 覆盖 51 个国家和地区、1,175 个已验证可租节点,可以按数据合规要求挑地域。

只做 PDF 转 Markdown,该选 DeepSeek-VL2 还是 DeepSeek-OCR?

选 OCR 分支,没有悬念。DeepSeek-OCR 是 3.3B、bf16 权重 6.71GB,论文里单张 A100-40G 一天能产出 20 万页以上;OmniDocBench 上它用 100 个视觉 token 就压过了每页 256 token 的 GOT-OCR2.0,用不到 800 token 压过每页 6,000+ token 的 MinerU2.0。DeepSeek-OCR-2 把默认档位改成 (0-6)×768×768 加 1×1024×1024,也就是 (0-6)×144 + 256 个视觉 token,olmOCR-bench 总分 76.3%、arXiv 数学公式 OCR 到 82%,而且是 Apache-2.0。6.7GB 的模型在 NexGPU 一张 RTX 4090 24GB($0.540/卡·时)上就能把流水线跑满,Telegram 上有中英文双语支持,不用排工单。

开始使用 NexGPU

无论你是企业研发团队还是独立开发者,都可以在几分钟内跑起第一个任务。

注册即可浏览全网实时价格,无需绑定支付方式。