gpu-computing

GPU 运维面试题

·15 分钟阅读·5682 字

GPU 运维面试题 的详细笔记

📋 目录

GPU 运维面试题

核心概念 GPU 运维与 K8s GPU 调度全套面试题,涵盖 GPU 驱动、DCGM、虚拟化、调度策略等场景。

1. 基础概念题(初级必问)

  1. K8s 原生是否支持GPU?GPU资源实现依赖哪些组件?
    参考答案
    K8s 原生不支持GPU,GPU属于扩展异构资源,整套依赖4部分:
  2. nvidia-container-toolkit/runtime:容器内挂载显卡设备、注入CUDA环境;
  3. nvidia-device-plugin DaemonSet:扫描GPU,向kubelet注册nvidia.com/gpu扩展资源,分配物理卡号;
  4. kube-scheduler扩展资源调度逻辑,过滤满足GPU限额的节点;
  5. DCGM:监控GPU硬件指标(温度、显存、利用率、故障)。
  6. Pod 申请GPU资源为什么只能写在limits,request不生效?
    参考答案
    扩展资源设计规则:GPU属于独占型硬件资源,K8s规定requests会自动对齐limits,不支持超配;只写request、不写limits会被调度器忽略,容器看不到显卡。标准写法:

resources:

  limits:

    nvidia.com/gpu: 1
  1. CUDA_VISIBLE_DEVICES 是谁注入到Pod里的,作用是什么?
    参考答案
    由nvidia-device-plugin在Allocate分配阶段自动注入,值为分配到的物理GPU编号(如0,1)。作用:隔离容器可见显卡,一个Pod只能访问分配到的卡号,无法读取宿主机其他GPU。
  2. 简述 nvidia-device-plugin 完整工作流程?
    参考答案
    1. DaemonSet每个GPU节点运行实例;
    2. 启动扫描本机所有GPU/MIG虚拟卡;
    3. 向本机kubelet注册扩展资源,上报可用GPU数量;
    4. 调度器选中节点后,kubelet调用plugin.Allocate;
    5. plugin分配空闲GPU ID,返回CDI设备挂载配置;
    6. kubelet通过CRI将设备、驱动、环境变量注入容器;
    7. Pod销毁时回收GPU,资源计数恢复。
  3. 区分 MIG、Time-Slicing、HAMi vGPU 三种GPU共享方案,各自优缺点与适用场景?
    参考答案
    1. MIG(A100/H100硬件分片)
    • 优点:硬件强隔离,单实例OOM不影响同卡其他Pod;性能损耗极低;
    • 缺点:仅高端数据卡支持,分片规格固定,无法自定义显存;
    • 场景:线上稳定推理、生产Agent服务。
    1. Time-Slicing 官方分时切片
    • 优点:所有NVIDIA显卡通用,部署简单;
    • 缺点:无显存隔离,同卡一个Pod显存溢出整卡全部崩溃;
    • 场景:开发测试环境,低负载演示。
    1. HAMi 软件vGPU
    • 优点:全系列显卡兼容,可自定义申请MB显存,软件级显存硬隔离;
    • 缺点:少量CUDA劫持性能损耗(5%内);
    • 场景:线上轻量推理、多Agent混部集群。
  4. 什么是CDI,在GPU调度中起到什么作用?
    参考答案
    CDI(Container Device Interface)容器设备标准,device-plugin不直接操作容器挂载,而是返回标准化CDI配置,kubelet/containerd统一解析挂载GPU设备、驱动库,解耦设备插件与容器运行时。

2. K8s GPU调度进阶题(中高级核心)

  1. GPU节点如何隔离普通业务Pod,禁止抢占显卡资源?写出完整操作与Pod容忍配置。
    参考答案
  2. 节点打污点,禁止无容忍Pod调度:
    kubectl taint node gpu-node01 gpu=true:NoSchedule
  3. 训练/推理Pod增加容忍:

tolerations:

- key: gpu

  operator: Equal

  value: "true"

  effect: NoSchedule
  1. 搭配nodeAffinity筛选显卡型号,实现双重管控。
  2. 如何区分A100、3090、H100异构GPU节点,让推理Pod只调度A100节点?
    参考答案
  3. device-plugin自动给节点打标签:nvidia.com/gpu.product=A100-SXM4-80GB
  4. Pod使用nodeAffinity硬约束筛选机型:

affinity:

  nodeAffinity:

    requiredDuringSchedulingIgnoredDuringExecution:

      nodeSelectorTerms:

      - matchExpressions:

        - key: nvidia.com/gpu.product

          operator: In

          values: ["A100-SXM4-80GB"]
  1. Volcano调度器针对GPU分布式训练的核心能力是什么?解决原生调度什么痛点?
    参考答案
    核心能力:Gang调度、装箱优化、任务队列、优先级抢占、GPU拓扑亲和。
    原生调度痛点:
  2. 无gang调度:8卡训练任务容易拆分占用碎片资源,永远凑不齐8张卡,长期Pending;
  3. 无装箱算法,显卡碎片多、利用率低;
  4. 不支持任务排队、优先级,训练任务与推理混部资源争抢。
  5. 什么是GPU拓扑亲和、NVLink?多卡训练不做拓扑亲和会有什么问题?
    参考答案
    NVLink是GPU高速互联总线,同NVSwitch的显卡通信带宽远高于PCIe;
    拓扑亲和调度优先分配同NVLink组显卡给多卡训练任务。
    不做亲和后果:多卡分布式训练通信瓶颈,训练速度下降30%~60%,大模型Transformer训练耗时大幅增加。
  6. 生产GPU集群为什么必须部署DCGM Exporter?采集哪些核心GPU指标?
    参考答案
    作用:监控GPU硬件健康、负载,提前识别故障卡、显存打满、过热降频。
    核心指标:
    GPU利用率、显存使用量、GPU温度、功耗、PCIe错误、XID硬件错误、NVLink流量、显存溢出次数。

3. Pod Pending 专项排障(面试高频实操题)

  1. GPU训练Pod长期Pending,请列举至少6种根因+排查命令。
    参考答案
  2. GPU资源耗尽:节点nvidia.com/gpu已全部分配;
    排查:kubectl describe node gpu01 | grep nvidia.com/gpu
  3. GPU节点污点,Pod缺少对应tolerations;
    排查:kubectl describe node gpu01 | grep Taints
  4. nodeAffinity筛选显卡机型无匹配节点;
    排查:kubectl get nodes --show-labelskubectl describe pod xxx看事件didn't match node selector
  5. nvidia-device-plugin DaemonSet异常、Pod崩溃,节点不上报GPU资源;
    排查:kubectl get pods -n kube-system | grep nvidia-device-plugin
  6. Volcano Gang调度,集群凑不齐任务所需总GPU数量;
    排查:describe volcano Job事件提示资源不足
  7. HAMi vGPU模式,节点剩余显存小于Pod申请gpumem;
  8. 节点NotReady、磁盘满、kubelet异常,无法调度。
    通用排查入口:kubectl describe pod xxx 查看Events事件。
  9. Pod已经调度到GPU节点,状态ContainerCreating一直卡住,有哪些GPU相关原因?
    参考答案
  10. nvidia-container-runtime未配置,containerd默认runtime为runc;
  11. 宿主机NVIDIA驱动损坏、版本与CUDA镜像不兼容;
  12. device-plugin Allocate分配失败,权限不足;
  13. 宿主机/dev/nvidia*设备丢失,GPU硬件故障;
  14. CDI配置解析异常,无法挂载显卡设备。
  15. 容器内执行nvidia-smi提示命令不存在/找不到GPU,排查思路?
    参考答案
  16. Pod未声明limits.nvidia.com/gpu
  17. device-plugin未正常分配GPU卡号,CUDA_VISIBLE_DEVICES为空;
  18. 镜像未安装CUDA、nvidia驱动工具;
  19. 节点runtime未切换为nvidia;
  20. 宿主机驱动版本与容器CUDA版本不兼容。

4. 生产运维、稳定性、资源优化题(资深运维/AI平台岗)

  1. 如何提升GPU集群整体利用率,减少资源碎片?
    参考答案
  2. 推理业务使用HAMi vGPU/MIG分片,单卡跑多个轻量Agent推理实例;
  3. 使用Volcano bin-packing装箱调度,优先填满节点显卡;
  4. 区分训练/推理任务优先级,低优推理可被高优训练任务抢占;
  5. 异构机型分流:轻量推理3090,大模型训练A100;
  6. 定时清理僵死、异常占用GPU的Pod;
  7. 监控显卡碎片,扩容补充对应规格节点。
  8. 大模型分布式训练(多机多卡)运维需要关注哪些关键点?
    参考答案
  9. Volcano Gang调度,保证一次性分配全部GPU;
  10. GPU拓扑亲和,优先NVLink互联显卡;
  11. 网络高速RDMA/IB,多机通信带宽;
  12. 镜像CUDA、NCCL版本统一;
  13. DCGM监控XID硬件错误,防止训练中途崩溃;
  14. 开启FlashAttention优化显存占用;
  15. 存储高速共享盘存放数据集,避免IO瓶颈。
  16. GPU节点硬件故障如何快速处理?
    参考答案
  17. DCGM告警检测XID错误、硬件离线、温度超标;
  18. 标记节点不可调度 kubectl cordon node,驱逐现有Pod;
  19. 故障GPU会被device-plugin自动剔除,资源不再对外调度;
  20. 下线服务器维修显卡,修复后重启节点、device-plugin恢复调度。
  21. 解释GPU Operator,为什么生产环境推荐使用,手动部署驱动有什么弊端?
    参考答案
    NVIDIA GPU Operator是一站式CRD运维组件,自动完成:驱动安装、containerd runtime配置、device-plugin、DCGM、MIG/分时配置管理、版本升级。
    手动部署弊端:
  22. 多节点驱动版本不一致,运维成本高;
  23. 内核升级后驱动失效,需要重新编译;
  24. device-plugin、监控组件分散部署,统一升级困难;
  25. MIG、vGPU分片配置无法批量统一管理。
  26. 线上推理Agent服务GPU隔离方案怎么选型?
  • 自研轻量RAG Agent(显存需求2~6G)
  • 7B大模型稳定推理,要求故障隔离
    参考答案
  1. 轻量小Agent集群:HAMi软件vGPU,自定义切分显存,成本最优;
  2. 7B线上稳定推理:A100 MIG硬件分片,硬件级隔离,单个实例崩溃不影响其他业务。

5. 结合Transformer/LLM Agent场景综合面试题(贴合你的Vibe Coding Agent项目)

  1. 训练Transformer大模型时,GPU运维层面常见瓶颈有哪些?
    参考答案
  2. 显存不足:序列过长、batch过大,触发OOM;解决方案:梯度累积、FlashAttention、KV缓存、MIG分片;
  3. 多卡通信瓶颈:未使用NVLink、NCCL配置错误,训练速度慢;
  4. GPU资源碎片,Gang任务长期Pending;
  5. 数据集存储IO低速,GPU空闲等待数据加载;
  6. 单卡XID硬件错误,整轮训练失败;
  7. 调度无优先级,推理业务抢占训练GPU。
  8. 你自研LLM Agent部署在K8s GPU集群,会做哪些调度约束保障高可用?
    参考答案
  9. GPU节点打污点,Pod配置容忍,隔离普通业务;
  10. nodeAffinity筛选对应规格GPU(A100/H100);
  11. topologySpreadConstraints拓扑分散约束,多副本均匀打散到不同节点/可用区;
  12. podAntiAffinity反亲和,避免多副本堆同一台GPU服务器;
  13. 使用MIG/HAMi实现多Agent共享单卡提升利用率;
  14. DCGM监控显存、利用率,OOM自动重启Pod并告警。
  15. 什么是KV Cache,推理阶段GPU运维需要关注什么?
    参考答案
    KV Cache是LLM推理缓存历史注意力K/V向量,大幅减少重复矩阵计算,提升推理速度;
    运维关注点:
  16. KV Cache占用大量显存,并发过高直接OOM;
  17. 监控显存水位,限制单卡并发推理实例数;
  18. 分片vGPU场景预留足够显存给缓存;
  19. 推理Pod重启自动释放缓存占用。

6. 实操手写题(现场上机/手写YAML)

  1. 写出标准GPU推理Deployment模板,包含:污点容忍、A100机型亲和、拓扑分散、GPU资源限制。
  2. 写出命令:给节点添加GPU污点、删除污点、查看节点GPU资源总量。
  3. 简单描述HAMi调度整体三层架构(Webhook + Scheduler Extender + 设备插件)。

7. 开放性问答(资深岗)

  1. 如果让你从零搭建一套支持LLM训练+Agent推理混合的K8s GPU集群,你的实施步骤?
  2. GPU集群成本优化方案,如何平衡算力利用率与业务稳定性?
  3. 训练任务经常出现GPU OOM,从运维调度、资源分配层面可以做哪些优化?
  4. 区分训练任务与推理任务的调度策略,为什么两者不能混部无管控?

关联文档

Yanche Blog

记录云原生、Linux、数据库等技术领域的学习心得,以及日常生活的思考与感悟。

© 2026 Yanche Blog. All rights reserved.

Powered by Astro