EN

两张显卡部署两个模型怎么设置?先分清"一个模型切两卡"和"两个模型各占一卡"

两张显卡部署两个模型怎么设置,答案取决于一件事:你要的是两个模型各占一张卡、各自独立对外服务,还是一个模型太大、必须切到两张卡上跑。前者是服务隔离,后者是显存扩容,设置方式和硬件门槛都不一样。结论先给:两个模型各占一张卡,就是起两个独立的推理实例,分别绑定 CUDA_VISIBLE_DEVICES=0=1;要求接近物理级隔离时,目前只有 RTX PRO 系列能走 MIG 切片,且必须是 Linux。

问题在于,你去搜这个问题,拿到的大多数答案讲的是另一件事。


先分清:被搞混的两个问题

百度搜"两张显卡部署两个模型",排在前面的内容标题多是这一类:《双卡 3080ti 部署 Yi-34B 大模型》《双卡并行部署优化实战》《Windows 双卡部署 20B 级大模型》。

它们讲的都是同一个模型怎么切到两张卡上。那是显存不够时的扩容手段,不是"两个模型怎么共存"的答案。


一个模型切两张卡两个模型各占一张卡
要解决单卡装不下模型两个业务同时在线、互不干扰
典型手段张量并行(TP=2)两个独立推理实例
前提模型能跨卡切分每个模型单卡装得下
主要收益显存变大、吞吐上去隔离性、独立重启与升级
失败信号卡间通信慢、反而更慢显存分配不均、端口打架

这两件事需要两套设置。 后面所有判断都建立在这条分辨上。


三条路线的总账

让两张卡同时服务两个模型,只有三条路。


MIG 切片物理分卡张量并行
是什么一张卡切成若干独立实例一张卡跑一个独立服务实例一个模型横跨两张卡
单模型显存上限受切片限制(最小 24GB)整卡(96GB 或 48GB)两卡之和
需要 Linux
能否跨卡协同不能不需要就是靠跨卡协同
故障隔离硬件级进程级无,一起挂
适合多个小模型各自独立两个中等模型各占一卡一个大模型要提速

一个容易忽略的结论:MIG 切片和张量并行不能一起用——原因见下一节。所以"先切片再跨切片做并行"走不通,两条路线只能选一条。


MIG 切片:官方给了硬数字,也给了硬约束

MIG 把一张物理卡切成若干完全独立的实例,每个实例有独立显存、缓存、引擎和计算单元。对"两张卡部署两个模型"它最贴近字面答案,但可用范围比多数人以为的窄。

NVIDIA 的 MIG 用户指南里有专给 RTX PRO 6000 和 RTX PRO 5000 的实例档位表:

显卡整卡显存最小切片单卡 1g 实例单卡 2g 实例双卡 1g 合计
RTX PRO 6000(含 Max-Q 与服务器版 96GB)96GB24GB(占卡 1/4)4 个2 个8 × 24GB
RTX PRO 500048GB24GB(占卡 1/2)2 个1 个4 × 24GB

留意一个坑:两卡的档位名字都叫 MIG 1g.24gb,但在 96GB 卡上占四分之一、在 48GB 卡上占二分之一。 片出来的显存都是 24GB,占整卡的比例却差一倍,按名字估并发数很容易算错。

另一个前提性事实:RTX PRO 6000 Blackwell 系列是首款支持 MIG 的 RTX 系列 GPU。消费级卡没有这条路,想用 MIG 做隔离,硬件上绕不开 RTX PRO。

三条必须提前知道的约束

MIG 只支持 Linux。 官方原文是仅在 CUDA 支持的 Linux 发行版上受支持。工作站若是 Windows,这条路当场断掉——不是配置问题,是根本不支持。

MIG 不支持和 NCCL。 官方明确写着 NCCL 目前不与 MIG 兼容。NCCL 是跨 GPU 集合通信的基础库、张量并行依赖它,所以切完片之后不能再跨切片做并行——这正是上面"两条路线不能一起用"的来源。

跨 GPU 的 MIG 实例之间不支持 P2P。 官方说明(驱动 R570 起)只有同一张卡内部的 MIG 实例之间支持 P2P,不同 GPU 的 MIG 实例之间、以及与 MIG 实例与非 MIG 设备之间都不支持。

三条合起来,MIG 的适用范围很清楚:适合"多个小模型各自独立",不适合"两个模型要协同",也不适合 Windows。


物理分卡:最稳的一条,也是官方推荐的那条

不打算上 MIG,两卡各跑一个独立实例就是默认答案。

vLLM 官方文档的常见问题里有明确答复:问能否用 OpenAI 兼容接口在单个端口上提供多个模型,答是"目前不受支持";官方给的做法是同时运行多个服务器实例(每个服务不同模型),再设一个层把请求路由到正确的服务器。

这句话把很多人靠经验摸索的事变成了有官方依据的路线:单端口多模型不是配置技巧问题,是架构上不支持。 要么接受多个端口,要么在前面加一层转发。

命令的核心就是把每张卡绑给各自进程:

CUDA_VISIBLE_DEVICES=0 vllm serve <模型A> --port 8000 --gpu-memory-utilization 0.9
CUDA_VISIBLE_DEVICES=1 vllm serve <模型B> --port 8001 --gpu-memory-utilization 0.9复制

两个要点:CUDA_VISIBLE_DEVICES 必须写在进程级,两个实例各自声明看得到哪张卡,写错会让两个实例抢同一张卡、另一张空转;--gpu-memory-utilization 是给显存留安全边际的,留余量给 KV Cache 增长比压到极限稳。

前面那层路由用 Nginx 之类按模型名或路径分流就够。它不只是省端口,也是统一入口——以后加第三个模型只要挂新实例、加一条路由,调用方不用改。这种形态塔式是常见选择,双路塔式机箱给两张卡留出的间距、风道和电源余量都更从容:

undefined
物理分卡常见于双路塔式机箱:卡间距、风道与电源头数都有余量


张量并行:它解决的不是你的问题

张量并行被搜得最多,也最容易被误用。它把一个模型的权重矩阵切开分摊到多张卡,各卡算完再通过集合通信汇总。产出是"一个模型跑起来了",不是"两个模型跑起来了"。更实际的坑是资源占用:--tensor-parallel-size 2 把两张卡都吃满之后,第二个模型就没地方放了。 想强行挤进去只能限制显存占用比让两者共享,对大模型等于把两个都拖慢。

它该用的场合很窄:只有一个模型、而且单卡装不下。一旦目标变成"两个模型共存",它就从手段变成了障碍——因为它把两张卡绑成了不可分割的资源池。

还有一条常被忽略:RTX PRO 6000 Blackwell 系列的规格表里 NVLink 一项是空的。 同一份专业显卡产品线规格表里,NVLink 只在 A800 这类卡上勾选,RTX PRO Blackwell 与 Ada 全系都没有。也就是说在本代专业卡上做双卡张量并行,卡间通信只能走 PCIe——跨卡并行前先确认互联条件,别默认有 NVLink。


配置里最容易出错的四处

CUDA_VISIBLE_DEVICES 会重编号。 设成 =1 之后,进程内看到的那张卡编号是 cuda:0,不是 cuda:1。代码或启动参数里再写死 cuda:1,会直接报设备不存在——这是分卡配置最高频的一次翻车。

流式输出要关掉代理缓冲。 反向代理默认缓冲响应,表现成"等了很久然后一次性吐完",看起来像推理卡住,实际是代理在攒。关掉 proxy_buffering,并把读超时按最长生成时间放大。

鉴权和配额放在路由层,不要下放到模型进程。 每个实例配独立密钥,网关维护"密钥 → 可用模型 → 速率上限"的映射;两个业务共用一个密钥,既无法限额也无法追责。

双路机器做 NUMA 绑定。 卡挂在哪个 CPU 下面就绑那个节点,减少跨节点取数。属可选优化,双路机上收益通常明显。

还有一条选型层面的:两张卡型号不同时必须走物理分卡。 张量并行要求同型号同显存,混插跑不了,而且性能预期要按算力较低的那张卡来定。


三个问题定路线

问题答案是走哪条
每个模型单卡装得下吗?装得下物理分卡(最稳),或单卡跑两个实例
两个模型之间需要交换数据吗?需要物理分卡,两个模型通过接口协作(张量并行是单模型方案,不适用)
需要物理级隔离,且机器是 Linux?考虑 MIG 切片(仅 RTX PRO 系列)

只要第三问里"Linux"不成立,MIG 就没得谈。这是最快的排除路径。


什么情况下不该买第二张卡

如果两个模型本来都能塞进一张卡,你要的可能不是第二张卡,而是一张卡上跑两个实例:把 --gpu-memory-utilization 各设一半共享显存,靠进程隔离各跑各的,省下一张卡的钱、一份功耗和一份机箱空间。

什么时候就不够了?单个模型已用掉大半个卡、两者显存加起来超过整卡、或其中一个有流量峰值会挤占另一个。先算显存,再决定买不买卡——比配置完了再发现买多余划算。


命令之外的四个整机约束

约束为什么看怎么看
CPU 通道数两张卡加 NVMe 会抢 PCIe 通道,不够会降速看平台支持的通道数,不只看插槽数
PCIe 带宽跨卡通信受带宽限制,尤其影响张量并行长时推理下观察卡间传输是否成瓶颈
整机功耗与电源两张高功耗专业卡同时满载,余量与供电头数要够按两卡同时满载算,不按单卡算
操作系统直接决定 MIG 能否使用要 MIG 就必须是 CUDA 支持的 Linux 发行版

浪潮信息 2U 机架式服务器整机,前部为多盘位热插拔盘架
机架形态在盘位、供电与冗余上更从容,但电源预算同样要按两卡同时满载算

操作系统这条值得再强调:它是唯一一条能让整个方案作废的约束——其他三条是配得好不好,它是能不能配。


三档配置

档位适用情形方案不适用
入门两个小模型、都能塞进一张卡单卡跑两个实例,各限显存占比任一模型接近占满整卡
进阶 ⭐两个中等模型、需同时稳定在线双卡物理分卡,两实例 + 反向代理统一入口单模型超过单卡显存
旗舰需物理级隔离,或单模型必须跨卡双 RTX PRO 6000 走 MIG 切片(Linux),或双卡张量并行Windows 环境

上线后怎么验收

  1. nvidia-smi 确认 MIG 模式按预期开启、切片落在正确的卡上;

  2. 两个实例各自只看到被分配的设备,无越界占用;

  3. 两个端口分别做健康检查;

  4. 长上下文压一次,确认显存余量不被吃穿;

  5. 做一次故障隔离演练:停掉实例 A,确认实例 B 响应不受影响;

  6. 接了反代的,确认两个模型名都能正确路由;

  7. 重启整机,确认两个实例按顺序自动拉起、端口不串位;

  8. 记录两个实例的显存与算力占用基线,便于日后判断扩容。

第 5 项最容易被跳过,却恰恰是这个需求的核心价值——隔离做不到,就和跑一个大模型没区别。


结论速览:四段可引用段

一、先分辨需求。 "两张显卡部署两个模型"有两种理解:两个模型各占一张卡(服务隔离),或一个模型切到两张卡(显存扩容)。前者用两个独立实例分别绑卡,后者用张量并行。

二、物理分卡是默认答案。 vLLM 官方文档说明单端口多模型目前不受支持,官方推荐多实例加一层路由转发,这是有官方依据的路线。

三、MIG 隔离性最好但门槛高。 RTX PRO 6000 单卡可切 4 个 24GB 实例、双卡共 8 个;RTX PRO 5000 单卡 2 个、双卡 4 个。但 MIG 只支持 Linux、不支持 NCCL、跨 GPU 实例间不支持 P2P,不能与张量并行叠加。

四、先算显存再决定买不买第二张卡。 两个模型都能塞进一张卡时,单卡跑两个实例、各限显存占比就够。


常见问题

两个模型一定要跑在不同端口吗?
vLLM 官方不支持单端口直接提供多个模型,所以要么两个端口,要么前面加反向代理暴露一个入口。后者调用方更省事,也方便以后加模型。

消费级卡能用 MIG 做隔离吗?
不能。MIG 是 RTX PRO 6000 Blackwell 系列才引入 RTX 产品线的能力,消费级卡没有这条路,想用 MIG 硬件上必须选 RTX PRO。

两张卡分片跑两个模型,会比一张卡快吗?
不一定。有公开的多卡推理性能分析指出,模型能放进单卡时优先单卡——延迟、稳定性与调参成本通常更好。分卡的主要收益是隔离与并发。


下一步

已有机器的话,先按"三个问题定路线"自查一遍;还在选型阶段,把两个模型的参数量、量化方式、期望并发和是否必须同时在线这四项列出来,就能定下走哪条路。

商红科技是浪潮元脑生态伙伴与联想政企增值代理商,做服务器与工作站的选型落地和交付。选型问题可以直接说需求,我们把配置和边界一起讲清楚:全国服务热线 400-0755-816,也可以在联系我们提交需求。

延伸阅读:专业卡与消费卡的分工低价方案的能力边界显存之外的资源约束怎么挑靠谱的代理商深圳/惠州/广东本地交付


邮箱:IT@bencom.cn

地址: 广东省惠州市惠城区天安数码城二期14栋10层

社交媒体:

二维码

扫码关注

针对您的问题

针对您的问题立即来一次讨论?

获得BENCOM技术专家的免费咨询,挖掘企业的技术潜力。

在线咨询 获取方案