GPU算力调度是大模型推理服务部署的关键环节。NVIDIA MIG(Multi-Instance GPU)技术将单块A100/H100 GPU划分为多个隔离实例,每个实例拥有独立的计算核心和显存,适合多租户场景下的推理服务共享。本文介绍MIG分区配置、容器化部署和资源隔离监控的完整方案。
NVIDIA MIG技术原理与GPU分区策略
MIG在硬件层面将GPU切分为多个实例,各实例间实现显存和计算资源的完全隔离。以A100 80GB为例,最多可创建7个1g.10gb实例或2个3g.40gb实例。分区策略需根据模型显存需求和推理并发量综合权衡。
| 实例类型 | SM数量 | 显存 | 适用场景 |
|---|---|---|---|
| 1g.10gb | 1/7 | 10GB | 小模型推理、轻量API |
| 2g.20gb | 2/7 | 20GB | 中型模型、中等并发 |
| 3g.40gb | 3/7 | 40GB | 7B-13B模型推理 |
| 7g.80gb | 7/7 | 80GB | 70B大模型、全卡独占 |
MIG实例创建与配置操作
启用MIG需要在GPU驱动和GPU实例两个层面配置。操作前确认显卡型号支持MIG(A100、H100、A30及以上)。
# 1. 启用MIG模式(需要root权限)
sudo nvidia-smi -i 0 -mig 1
# 2. 创建GPU实例和计算实例
# 在GPU 0上创建一个3g.40gb实例
sudo nvidia-smi mig -cgi 19,1 -C
# 参数说明:
# -cgi: 创建GPU实例,19是3g.40gb的profile ID
# -C: 同时创建计算实例
# 3. 查看MIG实例状态
nvidia-smi mig -lgi # 列出GPU实例
nvidia-smi mig -lci # 列出计算实例
# 4. 获取MIG设备UUID(容器配置用)
nvidia-smi --query-gpu=mig.uuid --format=csv
# 5. 销毁实例(释放GPU资源)
sudo nvidia-smi mig -dci # 删除计算实例
sudo nvidia-smi mig -dgi # 删除GPU实例
sudo nvidia-smi -i 0 -mig 0 # 关闭MIG模式
容器化GPU推理服务部署
容器使用MIG实例时,通过NVIDIA Container Toolkit将MIG设备映射到容器内部。Docker直接挂载MIG实例:
# 使用MIG UUID指定设备
docker run --gpus '"device=MIG-ded4cd8a-8c2a-5a3e-9f01-2b3c4d5e6f01"' \
-v /models:/models \
-p 8000:8000 \
vllm/vllm-openai:latest \
--model /models/qwen-7b-chat \
--gpu-memory-utilization 0.9 \
--max-model-len 4096
Kubernetes通过Device Plugin调度MIG实例。single策略每个Pod绑定一个MIG实例:
# nvidia-device-plugin ConfigMap(single策略)
apiVersion: v1
kind: ConfigMap
metadata:
name: nvidia-device-plugin-config
data:
config.yaml: |
version: v1
sharing:
mig:
strategy: single
flags:
migStrategy: single
---
# Pod声明MIG资源
apiVersion: v1
kind: Pod
metadata:
name: inference-service
spec:
containers:
- name: vllm
image: vllm/vllm-openai:latest
args:
- --model=/models/qwen-7b-chat
- --gpu-memory-utilization=0.9
resources:
limits:
nvidia.com/mig-3g.40gb: 1
volumeMounts:
- name: models
mountPath: /models
volumes:
- name: models
hostPath:
path: /data/models
多租户GPU资源隔离与监控
MIG实例在硬件层面隔离了计算和显存,但宿主机层面的监控仍需覆盖每个实例的利用率。通过DCGM Exporter采集细粒度指标。
# DCGM Exporter配置,启用MIG级别指标
apiVersion: v1
kind: ConfigMap
metadata:
name: dcgm-exporter-config
data:
dcgm-exporter.yaml: |
metrics:
- DCGM_FI_DEV_GPU_UTIL
- DCGM_FI_DEV_MEM_COPY_UTIL
- DCGM_FI_DEV_FB_USED
mig:
enabled: true
strategy: single
Prometheus采集的MIG指标配合Grafana面板,可以展示每个MIG实例的利用率折线图和显存使用量。关键告警规则:
# MIG实例显存使用率超过90%
DCGM_FI_DEV_FB_USED{mig_instance=~".+"} /
on(gpu, mig_instance) group_left
DCGM_FI_DEV_FB_TOTAL{mig_instance=~".+"} > 0.9
# MIG实例GPU利用率持续5分钟低于5%
avg_over_time(DCGM_FI_DEV_GPU_UTIL{mig_instance=~".+"}[5m]) < 5
低利用率告警帮助识别资源浪费的MIG实例,及时回收重新分配。高显存告警防止OOM导致推理服务崩溃。结合HPA(Horizontal Pod Autoscaler),可以根据请求队列深度自动扩缩MIG实例上的推理Pod副本数,实现算力的弹性调度。
原创文章,作者:小编,如若转载,请注明出处:https://www.yunthe.com/fu-wu-qi-gpu-suan-li-diao-du-shi-zhan-nvidiamig-fen-qu-yu/