服务器GPU算力调度实战:NVIDIA MIG分区与容器化推理服务部署

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/

(0)
小编小编
上一篇 7小时前
下一篇 7小时前

相关推荐