☰
NVIDIA MIG 与 MPS 混合部署架构:兼顾硬件强隔离与微内核极速共享
2026/10/15 8:07:25 网站建设 项目流程

在现代大型 AI 智算中心中,大语言模型与多模态模型的工作负载呈现出极度复杂的多样性。线上既有参数量达数百亿、单次生成消耗大量计算单元的重型聊天交互模型,又存在大量体量仅数百兆、单次计算耗时不足 5 毫秒的超轻量微任务(如敏感词安全审查分类器、多语言 Token 过滤器、Embedding 向量编码与语义重排 Reranker)。

在处理这类极端混合负载时,单一的 GPU 虚拟化技术往往会暴露出明显的工程短板:

  • 如果仅采用NVIDIA MIG(多实例 GPU)硬件切片,虽然提供了物理层级的显存与 SM 计算单元强隔离,但 MIG 的最小切片粒度(如 H100 上的1g.10gb)对于仅需 500MB 显存的微型过滤模型而言依然显得过于奢侈,且单张物理卡最多只能切分为 7 个硬件实例,难以支撑数十上百个微型租户的高密并发;
  • 如果仅采用NVIDIA MPS(Multi-Process Service,多进程服务),虽然允许多个 CUDA 进程在驱动层共享同一个 GPU 上下文、消除进程间上下文切换开销并支持细粒度线程协作,但由于所有进程运行在同一个共享内存地址空间与故障域内,一旦某个租户的算子触发了显存非法指针访问,整张卡上的所有 MPS 客户端进程将全军覆没。

为了打破这种“强隔离则密度不足,高密度则缺乏安全防线”的技术困局,我们将MIG 硬件级空间切片与 MPS 驱动级微内核并发共享进行了纵向融合,构建出“宏观硬件硬切片、微观容器软聚合”的二维混合部署架构。本文将深入拆解这一架构的底层实现与生产调优实战。


架构蓝图:MIG + MPS 的二维算力正交矩阵

在混合部署体系中,我们通过分层设计化解隔离与密度的矛盾:

  1. 第一层:MIG 物理硬件刚性分区(粗粒度物理切片):
    在物理 GPU(如 80GB H100 SXM5)层级开启 MIG 模式,将整卡划分为若干相互隔离的物理实例(例如 1 个3g.40gb专供核心大模型推理,4 个1g.10gb用于轻量级混部集群)。这一层通过物理硅片保证了不同业务域之间的故障绝对隔离与 L2 Cache 带宽独占。
  2. 第二层:MIG 实例内部挂载 MPS 守护服务(细粒度上下文共享):
    针对划分给微型任务的1g.10gb切片实例,在容器化 Pod 内部启动本地独立的 MPS Control Daemon。多个轻量级推理微容器(如 8 个并发的 Embedding 实例)同时挂载该切片并接入同一 MPS 控制进程,以极低的微秒级延迟共享该切片分配到的 SM 计算资源与 10GB 显存池。
flowchart TD PhysicalGPU["物理 H100 GPU (80GB VRAM)"] --> MIG1["MIG 实例 1: 3g.40gb (独占强隔离)"] PhysicalGPU --> MIG2["MIG 实例 2: 1g.10gb (轻量切片)"] MIG1 --> HeavyServing["核心 14B 对话模型服务 (独享 40GB)"] subgraph SliceMPS ["MIG 切片内部 MPS 共享池"] MIG2 --> MPSControl["本地 MPS Control Daemon"] MPSControl --> Micro1["微服务 A: 敏感词过滤 (500MB)"] MPSControl --> Micro2["微服务 B: Embedding 编码 (1.2GB)"] MPSControl --> Micro3["微服务 C: 跨语言翻译 (800MB)"] MPSControl --> Micro4["微服务 D: 向量重排 Reranker (1.5GB)"] end

生产部署实战:在 Kubernetes 中编排 MIG-MPS 节点

要在 Kubernetes 集群中优雅落地该架构,不能简单依赖外部脚本,而是通过标准化的 Pod 组合模式进行声明式编排。

1. 声明承载 MPS Daemon 的共享切片 Pod

我们创建一个基础共享 Pod,向 K8s 申请一个标准的 MIG 硬件切片(nvidia.com/mig-1g.10gb),在容器初始化阶段启动 MPS 守护进程,并将其控制通信管道暴露至共享内存卷(emptyDir: medium: Memory):

apiVersion: apps/v1 kind: Deployment metadata: name: mps-shared-slice-broker namespace: ai-microservices spec: replicas: 2 selector: matchLabels: app: mps-broker template: metadata: labels: app: mps-broker spec: volumes: - name: mps-pipe emptyDir: medium: Memory # 使用 RAM 内存文件系统加速 IPC 通信管道 containers: - name: mps-daemon image: nvidia/cuda:12.6.0-base-ubuntu24.04 command: ["/bin/bash", "-c"] args: - | export CUDA_VISIBLE_DEVICES=0 export CUDA_MPS_PIPE_DIRECTORY=/mps/pipe export CUDA_MPS_LOG_DIRECTORY=/mps/log # 启动 MPS 控制守护进程 nvidia-cuda-mps-control -d echo "MIG 切片内部 MPS 守护服务已启动..." # 限制单客户端默认最大占用切片内 50% 的 SM 线程数 echo "set_default_active_thread_percentage 50" | nvidia-cuda-mps-control trap "echo quit | nvidia-cuda-mps-control; exit 0" SIGTERM sleep infinity volumeMounts: - name: mps-pipe mountPath: /mps/pipe resources: limits: nvidia.com/mig-1g.10gb: "1" # 申请底座 MIG 物理切片

2. 业务客户端接入 MPS 管道

轻量级模型微服务容器通过挂载同一个 IPC 共享目录,注入 MPS 客户端环境变量,即可无缝透明接入该切片:

apiVersion: apps/v1 kind: Deployment metadata: name: text-guard-filter namespace: ai-microservices spec: replicas: 4 template: spec: volumes: - name: mps-pipe hostPath: path: /var/run/mps/mig-slice-01 # 挂载共享管道 containers: - name: filter-worker image: harbor.internal.corp/ai/text-guard:v1.4 env: - name: CUDA_MPS_PIPE_DIRECTORY value: /mps/pipe - name: CUDA_MPS_PINNED_DEVICE_MEM_LIMIT value: "0=1024M" # 强制限制单微服务显存硬上限为 1GB volumeMounts: - name: mps-pipe mountPath: /mps/pipe

深度调校:规避 MPS 混部陷阱的三大准则

在享受极高资源密度的同时,混合架构对运维精细度提出了极高要求:

1. 显存硬配额限制(Pinned Device Memory Limit)

默认情况下,MPS 客户端进程可能会毫无节制地申请显存,直到将切片的 10GB 显存全部耗尽导致后来的任务崩溃。通过在客户端环境变量中强制设置CUDA_MPS_PINNED_DEVICE_MEM_LIMIT="0=1024M",能够在 CUDA 驱动层硬性拦截超额cudaMalloc请求,防止单个租户拖垮共享切片。

2. 活动线程百分比调控(Active Thread Percentage)

不同的微服务对计算密度的需求不同。通过向 MPS 控制器下发set_active_thread_percentage <PID> <Percentage>,可以对不同业务赋予不同的算力权重。例如给高吞吐向量检索赋予 60% 的线程执行权,而给低频后台分析任务赋予 20% 的算力上限,实现纯硬件级别的软 QoS 调度。

3. 故障隔离范围精准收敛

在纯 MPS 环境下,单卡崩盘会波及全机。而在“MIG + MPS”架构中,即使挂载在切片 2 上的某个 MPS 客户端发生了严重段错误导致切片 2 的 MPS 守护进程退出,受影响的也仅是切片 2 内部的轻量级微服务;而在切片 1 上独占运行的 40GB 核心大模型推理 Pod 则受到 MIG 物理硅片的坚固保护,其计算管线与显存数据毫发无损。


压测实效与 ROI 收益对比

在 8 卡 H100 生产集群中,我们对原本采用“单一轻量任务独占 1g.10gb 切片”与“MIG 内部嵌套 MPS 混部”进行了吞吐与成本对比:

指标维度纯 MIG 独占方案MIG + MPS 混合部署方案优化提升幅度
单卡容纳微任务数最多 7 个(受物理切片上限硬锁)高达 35 个(单切片聚合 5 个微任务)算力部署密度提升 500%
微任务冷启动耗时1.8 秒(需重新初始化硬件上下文)120 毫秒(直接复用预热 MPS 上下文)启动耗时缩短 93.3%
轻量推理 P99 时延6.8 ms4.1 ms(消除跨进程调度延迟)请求响应提速 39.7%
GPU 平均显存利用率22.4%(大部分切片显存空转)78.6%(显存与算力被充分压榨)硬件利用率提升 3.5 倍

结语

在构建下一代大模型基础设施时,优秀的技术架构从不在“非黑即白”的二选一中妥协。通过创造性地将 NVIDIA MIG 的硬件级刚性隔离与 MPS 的驱动级微内核高效共享深度融合,我们既守住了核心业务稳定性与故障隔离的底线,又将边缘长尾微服务的部署密度推向了物理极致,为大模型全面微服务化提供了一条兼具安全与性价比的进阶坦途。

需要专业的网站建设服务?

联系我们获取免费的网站建设咨询和方案报价,让我们帮助您实现业务目标

立即咨询