尧图网站设计 尧图网站设计YAOTU DESIGN
ARTICLE DETAIL

资讯详情

深耕网站设计与一线实操的经验洞察。

27届大模型面试准备(七十一):多租户 GPU 虚拟化与推理隔离工程——MIG、MPS 与噪声邻居治理

27届大模型面试准备(七十一):多租户 GPU 虚拟化与推理隔离工程——MIG、MPS 与噪声邻居治理 27届大模型面试准备七十一多租户 GPU 虚拟化与推理隔离工程——MIG、MPS 与噪声邻居治理引言上篇六十九讲 Prefill-Decode 分离把单卡算力按阶段拆开调度七十讲网关层如何把请求路由到不同实例。本篇把视角再抬一层当一张 A100/H100 要同时服务多个业务方多租户时怎么在显存、算力、延迟三个维度做隔离与复用既把卡利用率榨干又不让某个租户的突发流量把别人的 P99 拖垮。这是华为云、大模型推理平台岗的高频题也是面试里最容易区分只会调 API和真做过平台的分水岭。前文链接A70 推理服务负载均衡与智能请求路由、A69 Prefill-Decode 分离式推理架构、A66 推理调度与弹性扩缩容工程。┌──────────────────────────────────────────┐ │ 推理网关 / 多租户调度器 │ │ 租户标识 → 路由 → 配额 → 优先级队列 → 限流 │ └───────────────────┬──────────────────────┘ │ ┌─────────────────────────────┼─────────────────────────────┐ │ 租户A(高优/SLA) │ 租户B(中优) │ 租户C(best-effort) ▼ ▼ ▼ ┌───────────┐ ┌───────────┐ ┌──────────────┐ │ MIG slice │ │ MIG slice │ │ 共享 MPS 时间片│ │ 1g.10gb │ │ 3g.40gb │ │ (无硬隔离) │ └───────────┘ └───────────┘ └──────────────┘ │ │ │ └─────────────────────────────┴─────────────────────────────┘ ▼ ┌────────────────────────────────────┐ │ NVIDIA A100 80GB 单卡 │ │ SM 阵列 / HBM / NVLink 物理资源 │ └────────────────────────────────────┘表四种隔离手段对比手段隔离粒度算力隔离显存隔离切换开销典型适用场景MIG硬件物理切片强独占 SM 子集强独占 HBM 分区中需重建 slice稳定多租户、强 SLA 合同MPS进程级共享引擎中按 CUDA context 分时弱共享显存池低同信任域、提利用率时间片调度调度器级弱时分复用整卡无低best-effort 错峰复用容器Cgroup主机级依赖驱动/MPS依赖驱动低物理机多实例混部一、为什么推理平台必须做多租户隔离云上推理的两个矛盾(1) 单卡跑一个小模型太浪费7B/13B 模型 decode 阶段显存占用可能只有 8GB剩下 70GB 空转(2) 把多个模型塞一张卡某个租户来一波长上下文突发就会把共享的 HBM 带宽和 SM 占满别人的 TTFT 从 200ms 飙到 3s。不做隔离利用率和公平性只能二选一。面试常问你们线上一张卡跑几个模型怎么保证互不干扰标准答案不是用 Docker而是分层硬件切片MIG→ 驱动级共享MPS→ 调度器配额K8s/Volcano→ 应用级限流网关。二、硬件级 MIG把一张卡切成多张小卡MIGMulti-Instance GPU在 A100/H100 上把 SM 阵列、L2 Cache、HBM 带宽、显存做物理分区。一个 7g.40gb 的 slice 就是一张逻辑 GPU有独立的显存和算力一个 slice 的故障不影响其他 slice。# 创建 1 个 1g.10gb 1 个 3g.40gb 的组合需先置 admin 模式sudonvidia-smi-i0-mig1sudonvidia-smimig-i0-cgi1g.10gb,3g.40gb-C# 查看 slicenvidia-smimig-lgi# 输出示例# GI ID CI ID Profile# 9 0 1g.10gb# 10 1 3g.40gb# 应用侧用 CUDA_VISIBLE_DEVICES 绑定到具体 GICUDA_VISIBLE_DEVICES9python-mvllm.entrypoints.openai.api_server--modelqwen2.5-7bMIG 的代价slice 之间不能共享 KV Cache跨 slice 不能做张量并行且创建/销毁 slice 需要短暂中断整卡。所以它适合长期稳定、SLA 不同的租户组合不适合频繁变配。三、驱动级 MPS同信任域提利用率MPSMulti-Process Service让多个进程共用同一个 CUDA contextkernel 在 SM 上并发调度显存仍共享。它没有硬隔离但能把两张卡各跑 30% 利用率的两个小模型合并到一张卡跑 60%省一张卡的钱。# 启动 MPS 服务端按用户/按卡exportCUDA_VISIBLE_DEVICES0nvidia-cuda-mps-control-d# 之后该卡上的所有 CUDA 进程都走 MPS 共享引擎# 限制单进程可用 SM 比例需 MPS 配置 配合 cgroupsechoset_default_active_thread_percentage 50|nvidia-cuda-mps-control注意 MPS 下的故障传染一个进程显存越界可能拖垮同 context 的其他进程。所以 MPS 只在同团队、同信任等级的内部租户间用对外售卖必须用 MIG。四、显存配额与上下文隔离即使不用 MIG也要防止某个租户申请超大 KV Cache 把整卡 OOM。做法是在调度器层给每个模型实例设显存预算并在推理引擎里做硬性上限。# 伪代码按租户维度限制 KV Cache 预算classTenantGPUScheduler:def__init__(self,total_hbm_gb80):self.budget{}# tenant - 显存配额(GB)self.used{}# tenant - 已用(GB)defadmit(self,tenant,need_gb):ifself.used.get(tenant,0)need_gbself.budget.get(tenant,0):returnFalse,tenant_gpu_quota_exceededifsum(self.used.values())need_gbself.total_hbm_gb*0.92:returnFalse,node_hbm_pressureself.used[tenant]self.used.get(tenant,0)need_gbreturnTrue,okdefrelease(self,tenant,free_gb):self.used[tenant]max(0,self.used.get(tenant,0)-free_gb)五、噪声邻居Noisy Neighbor治理噪声邻居指同卡其他租户的突发把你的延迟拖垮。治理三板斧优先级抢占高优租户到来时低优租户的长 decode 被挂起或限速。带宽隔离MIG 天然隔离 HBM 带宽非 MIG 场景用 MPS thread percentage 限流近似。延迟 SLO 监控每个租户独立打 P99越界自动触发扩容或迁移。# 优先级队列 加权公平调度WRRimportheapqclassPriorityAdmitter:def__init__(self):self.queues{0:[],1:[],2:[]}# 0高 1中 2低defschedule(self):# 高优先发中优按权重低优有空才发forlevelin(0,1,2):ifself.queues[level]:returnself.queues[level].pop(0)returnNone六、调度器层K8s Device Plugin 与公平性在 K8s 上MIG 通过nvidia.com/mig-1g.10gb这类扩展资源暴露Volcano / 自研调度器按租户 namespace 做配额ResourceQuota和优先级PriorityClass。避免一个租户 Pod 占满节点 MIG slice 导致别人 Pending。面试速答问MIG 和 MPS 有什么区别什么时候用哪个答MIG 是硬件物理切片算力和显存都硬隔离故障不传染适合对外多租户强 SLAMPS 是驱动级共享引擎提利用率但不隔离故障可能传染适合内部同信任域复用。对外卖算力用 MIG内部提效用 MPS。问一张卡跑多个模型怎么防止 OOM 互相影响答三层——硬件用 MIG 物理隔离显存驱动/调度层给每实例设显存预算和 KV Cache 上限节点层保留 8% HBM 余量防整卡 OOM。问噪声邻居怎么治答优先级抢占 带宽/算力配额 每租户独立 P99 SLO 监控越界自动限速、扩容或迁移。高频追问清单MIG slice 之间能共享 KV Cache 吗跨 slice 张量并行有什么限制MPS 故障传染的根因是什么生产上怎么规避best-effort 租户和 SLA 租户混部调度器怎么做加权公平显存预算按 tenant 还是按 model instance 计量更合理长上下文突发怎么处理K8s 上 MIG 资源如何暴露和做 namespace 配额节点 HBM 压力时应该拒绝新请求还是抢占低优请求怎么选租户级限流QPS/并发和 GPU 配额怎么联动单卡多模型场景下NVLink 带宽争用怎么观测和隔离
返回列表