推理 GPU 的碎片化治理:小模型合卡与大模型独占策略
推理 GPU 的碎片化治理小模型合卡与大模型独占策略一、你的 8×A100 集群 GPU 利用率 35%但新任务调度不上去——全是碎片GPU 集群的碎片化问题比 CPU 集群更严重因为 GPU 的资源粒度是整卡。你不能把 0.3 张 A100 分配给一个小模型——最小的分配单元就是 1 张卡。结果就是集群中每个节点都有 1-2 张空闲卡但加起来够跑一个新任务却没有任何单节点有足够的连续空闲卡。GPU 碎片化的本质是 bin-packing 问题的恶化版。你的集群里混跑了多种规格的推理任务有的模型只要 1 张 A100如 7B 参数的 LLaMA有的要 8 张如 70B 参数模型做 tensor parallelism。当这些小任务和大任务混在一个集群里碎片化是必然结果。治理策略分两个方向对小模型用合卡调度——多个小模型共享一张 GPU 卡利用显存隔离和 MIG 机制。对大模型用独占节点——通过节点亲和性和 taint/toleration 把大模型调度到专用节点不和任何小模型混跑。二、底层机制与原理剖析GPU 碎片化治理的核心是在两个方向发力合卡提高利用率减少浪费独占消除碎片防止切割关键技术手段MIG (Multi-Instance GPU)NVIDIA A100/H100 支持的最强合卡工具。一张 A100-80GB 可以被切割为最多 7 个独立的 GPU InstanceGI每个 GI 有独立的显存、缓存和计算单元。这意味着 7 个 7B 模型可以共享一张 A100每个使用 ~10GB 显存互不干扰。MPS (Multi-Process Service)比 MIG 更老的共享方案允许多个 CUDA 进程共享同一张 GPU 的计算资源。缺点是进程间没有显存隔离——一个进程 OOM 会影响同卡的其他进程。MPS 适合已知资源需求稳定的小模型。节点独占池大模型需要 2-8 张卡做 tensor parallelism调度到专用节点节点上不调度任何其他 Pod。通过 K8s 的nodeSelectortolerationpodAntiAffinity实现。三、生产级代码实现# 1. MIG 分区配置在 GPU 节点上执行 # 将 A100-80GB 切割为 3 个 20GB 2 个 10GB 的分区 # # 生产环境建议在节点初始化时通过 MIG Manager 自动化配置 apiVersion: v1 kind: ConfigMap metadata: name: mig-config namespace: kube-system data: config.yaml: | version: v1 mig-configs: all-1g.10gb: - devices: all mig-enabled: true mig-devices: 1g.10gb: 7 # 7 个 10GB 分区适合 7B 模型 mixed: - devices: [0,1,2,3] mig-enabled: true mig-devices: 3g.40gb: 1 # 1 个 40GB 分区70B 模型量化版 2g.20gb: 2 # 2 个 20GB 分区13B 模型 --- # 2. 小模型 Pod——使用 MIG 分区 apiVersion: v1 kind: Pod metadata: name: llama-7b-inference labels: app: llama-7b gpu-pool: shared # 标记为共享池 spec: nodeSelector: gpu-pool: shared # 只调度到共享池节点 containers: - name: inference image: vllm/vllm-openai:latest resources: limits: nvidia.com/mig-1g.10gb: 1 # 使用 1 个 MIG 10GB 分区 env: - name: CUDA_VISIBLE_DEVICES value: 0 --- # 3. 大模型 Pod——独占节点 apiVersion: apps/v1 kind: Deployment metadata: name: llama-70b-inference spec: replicas: 1 selector: matchLabels: app: llama-70b template: metadata: labels: app: llama-70b gpu-pool: dedicated # 标记为独占池 spec: # 强制调度到大模型专用节点 nodeSelector: gpu-pool: dedicated nvidia.com/gpu.product: NVIDIA-A100-SXM4-80GB # 反亲和不与其他大模型共享节点 affinity: podAntiAffinity: requiredDuringSchedulingIgnoredDuringExecution: - labelSelector: matchExpressions: - key: gpu-pool operator: In values: - dedicated topologyKey: kubernetes.io/hostname # 容忍专用节点的 taint tolerations: - key: gpu-dedicated operator: Equal value: true effect: NoSchedule containers: - name: inference image: vllm/vllm-openai:latest resources: limits: nvidia.com/gpu: 8 # 独占全部 8 张卡 env: - name: TENSOR_PARALLEL_SIZE value: 8 # 8 卡 Tensor Parallelism节点池管理配置# 节点标签和 taint 配置 # 共享池节点 apiVersion: v1 kind: Node metadata: name: gpu-shared-01 labels: gpu-pool: shared nvidia.com/mig.config: all-1g.10gb spec: taints: [] --- # 独占池节点 apiVersion: v1 kind: Node metadata: name: gpu-dedicated-01 labels: gpu-pool: dedicated spec: taints: - key: gpu-dedicated value: true effect: NoScheduleGPU 碎片整理 Descheduler 配置# 使用 Descheduler 定期整理 GPU 节点碎片 apiVersion: deskcheduler/v1alpha2 kind: DeschedulerPolicy profiles: - name: gpu-defrag pluginConfig: - name: RemovePodsViolatingNodeAffinity args: nodeAffinityType: - requiredDuringSchedulingIgnoredDuringExecution - name: LowNodeUtilization args: thresholds: nvidia.com/gpu: 20 # GPU 利用率 20% cpu: 30 memory: 30 targetThresholds: nvidia.com/gpu: 70 cpu: 70 memory: 70 # 只驱逐低优先级的 Pod # 高优先级生产服务不受影响Go 代码片段——GPU 调度策略决策package gpu // GpuSchedulingStrategy 模型到 GPU 池的分配策略 type GpuSchedulingStrategy struct { ModelSize string // small / medium / large VramRequiredGB int // 显存需求 GpuCount int // 需要的 GPU 数量 UseTensorParallelism bool // 是否使用张量并行 } func (s *GpuSchedulingStrategy) RecommendPool() string { // 判断1: 需要多卡 - 独占池 if s.GpuCount 1 || s.UseTensorParallelism { return dedicated } // 判断2: 显存需求 MIG 分区大小 - 共享池 if s.VramRequiredGB 10 { return shared } if s.VramRequiredGB 20 { return shared // 使用 2g.20gb 分区 } // 判断3: 显存需求超过 MIG 最大分区 - 标准池 return standard }四、边界分析与架构权衡MIG 的限制MIG 分区后 GPU 的 CUDA cores、显存带宽、缓存被分割每个分区的性能不是线性均分的。1g.10gb 分区的 SM流处理器数量是全卡的 1/7某些对 cache 敏感的操作如大 batch size 的 GEMM性能下降可能超过 7 倍。另一个限制是MIG 不支持 P2PGPU 间直连如果你的模型需要跨卡通信不能用 MIG。节点独占的成本独占节点本质上是用一部分 GPU 空闲换取调度确定性和性能隔离。8 卡独占跑一个 70B 模型如果这个模型的请求不均匀如夜间低负载这 8 张卡在低负载时段就是浪费的。需要结合 HPA水平伸缩做动态的节点回收——低负载时把备用节点释放回共享池。适用边界最适合 GPU 数量 8 的集群模型种类 3 种且模型规格差异大有的 1 卡、有的 8 卡的场景。也适合多团队共享 GPU 集群的场景——每个团队的模型可以被分配到不同的节点池。禁用场景不适合 GPU 数量 4 的小集群——池化后的调度灵活性不够。如果所有模型规格相似如全都跑 7B 模型池化的收益不大。NVIDIA A100 以下架构V100、T4不支持 MIG只能用 MPS 做共享。五、结语GPU 碎片化治理的核心是分级池化MIG 分区让多个小模型共享一张卡节点独占让大模型享有完整的卡间通信带宽。关键约束是 MIG 不支持跨卡通信——需要多卡 tensor parallelism 的模型不能用 MIG必须独占节点。治理不是一次性的配置是持续的组合优化——节点池的容量需要根据模型规模和流量模式动态调整。

相关新闻

电商大促的 JVM 调优复盘——一次 Full GC 频繁触发的完整排查与根治

电商大促的 JVM 调优复盘——一次 Full GC 频繁触发的完整排查与根治

电商大促的 JVM 调优复盘——一次 Full GC 频繁触发的完整排查与根治 一、故障现场:双十一流量洪峰下的 Full GC 风暴 2025 年双十一大促的零点刚过 8 分钟,监控大盘突然告警:订单服务的 P99 响应时间从日常的 80ms 飙升到 3200ms&#xff0c…

2026/7/23 19:45:38 阅读更多 →
营销推荐系统的大模型化——从协同过滤到生成式推荐的架构转型

营销推荐系统的大模型化——从协同过滤到生成式推荐的架构转型

营销推荐系统的大模型化——从协同过滤到生成式推荐的架构转型 一、协同过滤在电商推荐中的"天花板效应" 某中型电商平台的推荐系统基于 Item-CF(基于物品的协同过滤)已经运行了 3 年。算法逻辑是:找到与用户最近购买/浏览商品相似…

2026/7/23 19:45:39 阅读更多 →
支付系统的分布式事务:两阶段提交与 TCC 的落地对比

支付系统的分布式事务:两阶段提交与 TCC 的落地对比

支付系统的分布式事务:两阶段提交与 TCC 的落地对比 一、一笔支付,背后可能涉及三个服务、两个数据库和一个第三方 在电商支付链路中,一笔典型的支付操作涉及以下步骤:扣减用户账户余额、创建支付订单、调用第三方支付渠道、增加商…

2026/7/24 5:40:30 阅读更多 →

最新新闻

AI模型优化与部署实战:工业质检案例解析

AI模型优化与部署实战:工业质检案例解析

1. 项目概述在AI工程化落地的过程中,模型优化与部署是决定项目成败的关键环节。去年我们团队接手了一个工业质检项目,原始模型在测试集上准确率高达98%,但实际产线部署时却出现了严重的性能问题——单张图片推理耗时超过800ms,根本…

2026/7/25 4:00:01 阅读更多 →
对话状态跟踪技术:AI原生应用中的协同优化实践

对话状态跟踪技术:AI原生应用中的协同优化实践

1. 对话状态跟踪在AI原生应用中的核心价值对话状态跟踪(Dialogue State Tracking, DST)作为对话系统的核心组件,其本质是实时维护对话过程中用户意图和关键信息的结构化表示。在AI原生应用场景下,DST模块需要处理多模态输入、理解…

2026/7/25 4:00:01 阅读更多 →
QingClaw无代码AI工作台:企业办公自动化实战解析

QingClaw无代码AI工作台:企业办公自动化实战解析

1. 项目概述:QingClaw的定位与核心价值QingClaw是轻流团队推出的AI办公自动化解决方案,定位为"无代码AI工作台"。这个Beta版本主要面向企业用户解决三个核心痛点:重复性工作自动化、跨系统数据整合困难、非技术人员难以使用AI工具。…

2026/7/25 4:00:01 阅读更多 →
混合专家模型(MoE)原理与工程实践解析

混合专家模型(MoE)原理与工程实践解析

1. 混合专家模型(MoE)的核心设计理念混合专家模型(Mixture of Experts,简称MoE)本质上是一种"分而治之"的机器学习架构。它的核心思想是将一个复杂问题拆解成多个子问题,由不同的专家网络&#x…

2026/7/25 4:00:01 阅读更多 →
深度学习在胰腺肿瘤EUS图像自动分段中的应用与优化

深度学习在胰腺肿瘤EUS图像自动分段中的应用与优化

1. 项目背景与临床意义胰腺肿瘤的早期精准诊断一直是消化系统疾病诊疗中的重大挑战。传统内镜超声(EUS)图像分析高度依赖医师经验,不同医疗机构间的诊断一致性往往不足60%。我们团队开发的这个深度学习模型,正是要解决EUS图像中胰…

2026/7/25 4:00:01 阅读更多 →
Codex实战指南:用AI生成自动化脚本,提升开发效率

Codex实战指南:用AI生成自动化脚本,提升开发效率

最近在尝试自动化一些重复性工作时,发现手动编写脚本既耗时又容易出错。如果你也遇到过类似情况,或者对“让AI帮你写代码”感到好奇,那么这篇关于Codex的实战指南正是为你准备的。本文将从一个开发者的实际应用视角出发,带你从零开始,一步步掌握如何利用Codex将自然语言描…

2026/7/25 3:58:59 阅读更多 →

日新闻

突破文档下载限制:kill-doc让你看到的都能保存

突破文档下载限制:kill-doc让你看到的都能保存

突破文档下载限制:kill-doc让你看到的都能保存 【免费下载链接】kill-doc 看到经常有小伙伴们需要下载一些免费文档,但是相关网站浏览体验不好各种广告,各种登录验证,需要很多步骤才能下载文档,该脚本就是为了解决您的…

2026/7/25 0:00:35 阅读更多 →
C++ string类模拟实现:从深拷贝到内存管理的完整指南

C++ string类模拟实现:从深拷贝到内存管理的完整指南

1. 项目概述:为什么我们要“手撕”string类?在C的学习道路上,尤其是从C语言过渡到C的“初阶”阶段,string类绝对是一个绕不开的核心。标准库里的std::string用起来太方便了,、find、substr,几个操作符和函数…

2026/7/25 0:00:35 阅读更多 →
三角洲寻宝鼠工具:高效文件搜索与资源管理实战指南

三角洲寻宝鼠工具:高效文件搜索与资源管理实战指南

1. 先搞清楚“三角洲寻宝鼠”到底是什么工具从名称来看,“三角洲寻宝鼠”更像是一个资源查找或文件检索类工具,而不是游戏或娱乐软件。这类工具的核心价值在于帮助用户快速定位特定资源,比如文档、图片、压缩包或特定格式的文件。如果你经常需…

2026/7/25 0:00:35 阅读更多 →

周新闻

Go语言静态资源打包方案对比与实践指南

Go语言静态资源打包方案对比与实践指南

1. 项目背景与核心需求在Go语言开发中,我们经常需要处理静态资源文件的打包问题。无论是Web应用的模板文件、前端资源,还是配置文件、证书等,都需要随程序一起分发。传统做法是将这些文件与编译后的二进制文件放在同一目录下,但这…

2026/7/24 3:59:20 阅读更多 →
Go语言实现高性能LDAP认证服务的架构与实践

Go语言实现高性能LDAP认证服务的架构与实践

1. 项目背景与核心价值LDAP(轻量级目录访问协议)作为企业级身份认证的黄金标准,已经服务了超过80%的财富500强公司。我在金融科技领域实施统一认证体系时,发现传统Java方案存在启动慢、内存占用高等痛点。而Go语言凭借其协程并发模…

2026/7/24 1:23:39 阅读更多 →
【AI面试官实战指南】:用ChatGPT模拟10类高频技术岗面试,3天提升应答精准度92%

【AI面试官实战指南】:用ChatGPT模拟10类高频技术岗面试,3天提升应答精准度92%

更多请点击: https://intelliparadigm.com 第一章:AI面试官实战指南的核心价值与适用场景 AI面试官并非替代人类HR的“黑箱工具”,而是以可解释、可审计、可迭代的方式,赋能招聘全链路的关键基础设施。其核心价值在于将主观经验沉…

2026/7/24 18:52:18 阅读更多 →

月新闻