GPU算力集群调度与MIG分区虚拟化实战配置

GPU算力集群调度的工程需求

GPU算力集群调度是企业AI基础设施从单卡开发走向多团队协作生产时必须解决的核心问题。裸金属分配模式下,一个8卡A100服务器只能服务一个训练任务,8张GPU中可能只有2-3张满载,其余资源闲置浪费。MIG(Multi-Instance GPU)技术允许将单张A100/H100物理GPU划分为多个隔离实例,每个实例拥有独立的显存和计算单元,实现GPU资源的精细化分配。

GPU算力调度涉及三个层级:单卡MIG分区实现物理隔离、节点级调度器分配GPU实例给容器、集群级调度器在多节点间平衡负载。三者配合才能实现请求来了自动分配、任务结束自动回收的弹性GPU云。

NVIDIA MIG分区配置实操

MIG是Ampere架构(A100/A30)及Hopper架构(H100)GPU的硬件级虚拟化方案。每个MIG实例拥有独立的SM流多处理器和显存带宽,实例之间硬件隔离,不会出现一个实例的显存泄漏影响其他实例的情况。

# 查看GPU MIG能力
nvidia-smi -i 0 --query-gpu=mig.mode --format=csv

# 开启MIG模式
sudo nvidia-smi -i 0 -mig 1

# 查看支持的MIG配置
nvidia-smi mig -cgi all -lg
# A100-80G支持的配置:
# 1g.10gb  - 1个SM组, 10GB显存(最多7个实例)
# 2g.20gb  - 2个SM组, 20GB显存(最多3个实例)
# 3g.40gb  - 3个SM组, 40GB显存(最多2个实例)
# 4g.40gb  - 4个SM组, 40GB显存(最多1个实例)
# 7g.80gb  - 全部SM, 80GB显存(不分区)

# 创建MIG实例
sudo nvidia-smi mig -cgi 2g.20gb,2g.20gb,3g.40gb -C

# 查看已创建的MIG实例
nvidia-smi mig -lgi

# 为每个GI创建计算实例
sudo nvidia-smi mig -ci -gi 1 -css 2g.20gb
sudo nvidia-smi mig -ci -gi 2 -css 2g.20gb
sudo nvidia-smi mig -ci -gi 3 -css 3g.40gb

# 销毁MIG实例
sudo nvidia-smi mig -dgi -gi 1
sudo nvidia-smi mig -dgi -gi 2
sudo nvidia-smi mig -dgi -gi 3

MIG分区策略需要根据业务负载合理规划。推理服务通常选择1g.10gb或2g.20gb实例,单实例处理一个模型的batch推理请求。训练任务中的小规模微调可以使用3g.40gb实例,全参数训练则需要7g.80gb完整GPU。分区一旦创建,实例间无法动态调整显存配额,必须销毁重建。

容器化MIG调度与K8s集成

Kubernetes集群中调度MIG实例需要NVIDIA设备插件支持。从K8s 1.26开始,原生支持MIG拓扑发现和实例分配。

apiVersion: apps/v1
kind: DaemonSet
metadata:
  name: nvidia-device-plugin-daemonset
  namespace: kube-system
spec:
  selector:
    matchLabels:
      name: nvidia-device-plugin-ds
  template:
    metadata:
      labels:
        name: nvidia-device-plugin-ds
    spec:
      containers:
      - name: nvidia-device-plugin
        image: nvcr.io/nvidia/k8s-device-plugin:v0.16.2
        env:
        - name: MIG_STRATEGY
          value: "mixed"
        volumeMounts:
        - name: device-plugin
          mountPath: /var/lib/kubelet/device-plugins
      volumes:
      - name: device-plugin
        hostPath:
          path: /var/lib/kubelet/device-plugins

---
apiVersion: v1
kind: Pod
metadata:
  name: llm-inference
spec:
  containers:
  - name: inference
    image: nvcr.io/nvidia/pytorch:24.07-py3
    resources:
      limits:
        nvidia.com/mig-2g.20gb: 1
    command: ["python", "serve.py"]

MIG策略选择mixed模式时,调度器既能看到完整GPU资源,也能看到MIG实例资源。当Pod申请完整GPU时,调度器会确保该GPU上没有MIG实例被占用;申请MIG实例时,调度器会找到有空闲MIG实例的GPU节点。

GPU显存监控与碎片治理

MIG分区在实际运行中会产生显存碎片问题——不同规格实例的创建和销毁可能导致GPU上剩余资源无法组成任何有效实例。需要部署监控和自动治理方案。

import subprocess
import time

def get_mig_topology():
    result = subprocess.run(
        ['nvidia-smi', '--query-gpu=index,mig.mode,gpu_name',
         '--format=csv,noheader,nounits'],
        capture_output=True, text=True
    )
    topology = {}
    for line in result.stdout.strip().split('\n'):
        parts = [p.strip() for p in line.split(',')]
        gpu_id = parts[0]
        topology[gpu_id] = {'mig_mode': parts[1], 'gpu_name': parts[2]}
    return topology

def auto_defrag(interval=300):
    while True:
        topology = get_mig_topology()
        for gpu_id, info in topology.items():
            if info['mig_mode'] == 'Enabled':
                print(f"GPU {gpu_id} MIG已启用,检查碎片率")
        time.sleep(interval)

碎片治理的核心矛盾在于:重建分区需要销毁所有实例并重新创建,如果GPU上还有运行中的任务则无法执行。生产环境中建议将MIG分区规划与业务调度绑定——推理高峰期以1g.10gb小实例为主,最大化并发数;训练高峰期销毁小实例重建3g.40gb/4g.40gb大实例。

多租户GPU配额与优先级调度

企业GPU集群往往有多个团队共用,需要建立配额和优先级机制防止资源抢占。

apiVersion: v1
kind: ResourceQuota
metadata:
  name: gpu-quota-team-a
  namespace: team-a
spec:
  hard:
    nvidia.com/mig-2g.20gb: 4
    nvidia.com/gpu: 2

---
apiVersion: scheduling.k8s.io/v1
kind: PriorityClass
metadata:
  name: gpu-training-high
value: 1000000
globalDefault: false
description: "高优先级训练任务,可抢占推理实例"
preemptionPolicy: PreemptLowerPriority

---
apiVersion: scheduling.k8s.io/v1
kind: PriorityClass
metadata:
  name: gpu-inference-low
value: 100000
globalDefault: false
description: "低优先级推理服务,可被训练任务抢占"

多租户场景下的核心调度策略:训练任务设为高优先级,推理服务设为低优先级。当GPU资源不足且训练任务等待时,调度器可以抢占低优先级推理Pod占用的MIG实例。被抢占的推理服务通过Deployment自动重建,调度到其他有空闲MIG实例的节点上。

原创文章,作者:小编,如若转载,请注明出处:https://www.yunthe.com/gpu-suan-li-ji-qun-diao-du-yu-mig-fen-qu-xu-ni-hua-shi-zhan/

(0)
小编小编
上一篇 1天前
下一篇 1天前

相关推荐