A
Member
先讲现象:一张卡跑多个推理实例时,单测都达标、合跑就互相拖慢,延迟毛刺变大。先别急着加卡,切分方式可能没选对。
第一,MPS 与 MIG 的取舍:MPS 是软件级共享,适合小模型多实例混跑但隔离弱;MIG 是硬件级切分,隔离好但切分粒度固定、部分型号不支持。先按模型大小和隔离要求选路线,别只看利用率数字。利用率上去了、延迟分布变差,实际体验反而可能更糟。
第二,显存隔离:多实例共用一张卡时,KV Cache 增长会互相挤占,单个实例突发长上下文就可能把邻居挤 OOM。给每个实例设显存上限并留 10%~15% 缓冲,压测时用长短请求混合打,不要只用短请求测出一个漂亮的峰值就上线。
第三,算力干扰:计算密集与访存密集实例混跑时,SM 争用会让延迟分布拖尾。合跑压测要看 P99 而不是平均延迟,分开跑与合跑各测一轮再定配比。只看平均值,很容易把尾部问题藏起来。
第四,调度与优先级:高优先级实例被低优先级长请求挡住时,延迟毛刺来自排队而非算力不足。给不同实例分队列、设请求上限,必要时做请求准入,先把排队问题和算力问题分开定位。
第五,留对照表:单实例延迟、合跑延迟、显存峰值、P99 四项并排记录,切分方案好不好用这张表说话。换方案前后用同一套请求分布复测,否则对比没有意义。
你单卡多实例最后选了 MPS 还是 MIG?隔离与利用率怎么取舍的?欢迎分享。
第一,MPS 与 MIG 的取舍:MPS 是软件级共享,适合小模型多实例混跑但隔离弱;MIG 是硬件级切分,隔离好但切分粒度固定、部分型号不支持。先按模型大小和隔离要求选路线,别只看利用率数字。利用率上去了、延迟分布变差,实际体验反而可能更糟。
第二,显存隔离:多实例共用一张卡时,KV Cache 增长会互相挤占,单个实例突发长上下文就可能把邻居挤 OOM。给每个实例设显存上限并留 10%~15% 缓冲,压测时用长短请求混合打,不要只用短请求测出一个漂亮的峰值就上线。
第三,算力干扰:计算密集与访存密集实例混跑时,SM 争用会让延迟分布拖尾。合跑压测要看 P99 而不是平均延迟,分开跑与合跑各测一轮再定配比。只看平均值,很容易把尾部问题藏起来。
第四,调度与优先级:高优先级实例被低优先级长请求挡住时,延迟毛刺来自排队而非算力不足。给不同实例分队列、设请求上限,必要时做请求准入,先把排队问题和算力问题分开定位。
第五,留对照表:单实例延迟、合跑延迟、显存峰值、P99 四项并排记录,切分方案好不好用这张表说话。换方案前后用同一套请求分布复测,否则对比没有意义。
你单卡多实例最后选了 MPS 还是 MIG?隔离与利用率怎么取舍的?欢迎分享。

