GPU算力集群多租户隔离的需求与MIG技术原理
在GPU算力集群中,多个AI训练和推理任务共享同一批GPU是常见场景。传统方案是每张GPU只跑一个任务,导致算力碎片化严重——一个7B参数模型推理任务只用到A100的30%算力,剩余70%白白闲置。NVIDIA MIG(Multi-Instance GPU)技术允许将一张A100/H100物理GPU划分为多个独立实例,每个实例拥有隔离的显存和SM流式多处理器,租户间互不干扰。
MIG支持在A100 80GB上划分最多7个实例(1c.7g/2c.14g/3c.20g/4c.28g配置),在H100 80GB上划分最多7个实例。每个MIG实例对上层应用呈现为独立GPU,CUDA应用无需修改即可运行。这种方式相比vGPU方案(需要License和特殊驱动),MIG在硬件层面完成隔离,无额外软件成本。
A100/H100 MIG实例划分与创建操作
MIG实例的创建和管理依赖nvidia-smi命令。操作前需确认GPU计算模式为Exclusive Process模式:
# 查看当前MIG状态
nvidia-smi -i 0 --query-gpu=mig.mode --format=csv
# 启用MIG模式(需重启)
nvidia-smi -i 0 --mig-mode=exclusive
# 查看可用MIG配置文件
nvidia-smi mig -lcip
# 输出示例:
# GPU 0: A100-SXM4-80GB (ID 0x20B0)
# Profile ID Name Instances SM Memory
# 0 1g.5gb 7 14 5184MB
# 1 1g.10gb 7 14 9984MB
# 2 2g.10gb 3 28 9984MB
# 3 3g.20gb 2 42 20256MB
# 4 4g.20gb 1 56 20256MB
# 5 7g.40gb 1 98 40320MB
创建MIG实例时需指定GPU ID和配置文件。混合划分场景:一张A100划分为1个3g.20gb实例和2个2g.10gb实例,兼顾大模型推理和小任务并发:
# 创建混合MIG实例
nvidia-smi mig -cgi 3,2,2 -C 0 # GPU 0上创建1个3g.20gb + 2个2g.10gb
# 查看已创建实例
nvidia-smi mig -lgip
# 删除MIG实例
nvidia-smi mig -dgi -i GPU_ID/MIG_ID
Kubernetes集成MIG的调度策略配置
在K8s集群中使用MIG实例,需要NVIDIA Device Plugin暴露MIG资源。配置策略分两种:
策略一:Single模式。每个MIG实例对应一个Pod,节点上所有MIG实例以独立资源形式注册。Pod定义中通过resource limits请求特定规格的MIG实例:
# K8s Device Plugin MIG配置(single策略)
version: v1
flags:
migStrategy: single
failRequestsInit: false
# Pod声明MIG资源
resources:
limits:
nvidia.com/mig-3g.20gb: 1 # 请求一个3g.20gb实例
策略二:Mixed模式。同一节点可混合不同规格MIG实例,调度器根据Pod请求自动匹配。适合异构工作负载(推理用大实例,训练用小实例)混跑的集群。Mixed模式需要K8s 1.26+和NVIDIA GPU Operator 23.3+。
MIG实例的监控指标与故障排查
MIG实例的监控数据通过DCGM Exporter采集,每个实例独立输出GPU利用率、显存使用量、温度等指标。Prometheus抓取后可按MIG实例维度聚合告警:
# DCGM Exporter MIG指标示例
DCGM_FI_DEV_GPU_UTIL{gpu="0", mig="0"} 85.3
DCGM_FI_DEV_GPU_UTIL{gpu="0", mig="1"} 42.1
DCGM_FI_DEV_FB_USED{gpu="0", mig="0"} 18240 # 单位MB
DCGM_FI_DEV_GPU_TEMP{gpu="0", mig="0"} 68
常见故障及排查思路:MIG实例创建失败返回”Insufficient resources”——说明GPU已有实例占用了部分SM或显存,需先删除现有实例重新规划;MIG实例内CUDA程序报”invalid device ordinal”——Device Plugin未正确注册MIG实例,检查nvidia-device-plugin的migStrategy配置是否与实际一致;MIG实例间出现显存越界——MIG的显存隔离是硬件级的,此问题通常由CUDA统一内存(UM)穿透MIG边界导致,禁用UM或确保分配落在实例显存范围内即可。
MIG与时分复用方案的成本对比
GPU多租户隔离还有MPS(Multi-Process Service)和时分复用(Time-Slicing)两种方案。MPS适用于协作型多任务(同一用户的多个进程),缺乏隔离性;Time-Slicing在驱动层以时间片轮转方式切换GPU上下文,隔离性最弱但兼容性最好。三者的适用场景:MIG用于强隔离多租户(云服务商、企业AI平台);MPS用于协作加速(单用户多进程);Time-Slicing用于低优先级批处理(无法使用MIG的老型号GPU)。
实测数据:在A100 80GB上,3个MIG 2g.10gb实例并行推理Llama-3-8B,单实例吞吐约850 Token/s,总计2550 Token/s;同样3个任务用Time-Slicing,单实例吞吐降至约380 Token/s,总计1140 Token/s。MIG方案吞吐高出2.2倍,延迟标准差从Time-Slicing的180ms降至45ms,尾部延迟改善显著。
原创文章,作者:小编,如若转载,请注明出处:https://www.yunthe.com/linux-fu-wu-qi-gpu-suan-li-ji-qun-mig-fen-qu-yu-duo-shi-li/