HiHuo
首页
博客
手册
工具
关于
首页
博客
手册
工具
关于

AI Infra 面试会问什么

想转 AI Infra,面试会遇到什么问题?

这篇整理常见面试题和参考答案。


GPU 基础

Q: nvidia-smi 各字段什么意思?

参考答案:

  • GPU-Util:SM 利用率,反映计算负载
  • Memory-Usage:显存使用,关注是否接近上限
  • Temp:温度,过高会降频
  • Power:功耗,反映实际工作状态
  • Processes:占用 GPU 的进程

加分:知道 nvidia-smi dmon、nvitop 等工具。

Q: 显存、算力、带宽的关系?

参考答案:

  • 显存决定能装多大模型
  • 算力决定计算速度
  • 带宽决定数据搬运速度
  • 通过算术强度判断瓶颈:大模型推理是带宽瓶颈,训练更接近算力瓶颈

加分:能画 Roofline 模型解释。

Q: H100 和 A100 主要区别?

参考答案:

  • 算力:H100 FP16 约 2000 TFLOPS,A100 约 312 TFLOPS
  • 带宽:H100 3.35 TB/s,A100 2 TB/s
  • 互联:H100 NVLink 4.0(900 GB/s),A100 NVLink 3.0(600 GB/s)
  • 新特性:H100 支持 FP8、Transformer Engine

加分:知道 H20 的特点(算力被阉割但显存大带宽高)。


分布式训练

Q: 数据并行和模型并行的区别?

参考答案:

  • 数据并行:每张卡存完整模型,处理不同数据,同步梯度
  • 模型并行:模型切分到多张卡,包括张量并行和流水线并行
  • 数据并行简单但受限于单卡显存,模型并行可以训练超大模型

加分:能解释 ZeRO 的三个 Stage。

Q: 什么是 AllReduce?为什么重要?

参考答案:

  • AllReduce 是把所有节点的数据汇总并返回给所有节点
  • 用于梯度同步:所有 GPU 的梯度求和取平均
  • Ring AllReduce 算法通信量和节点数无关

加分:知道 NCCL、能解释 Ring AllReduce 的两个阶段。

Q: 分布式训练为什么需要高速网络?

参考答案:

  • 梯度同步需要大量通信
  • 通信时间长,GPU 在等待,利用率低
  • NVLink 比 PCIe 快一个数量级
  • 跨机器需要 InfiniBand,比以太网快

加分:能算出通信带宽需求。


推理优化

Q: 什么是 KV Cache?为什么重要?

参考答案:

  • KV Cache 缓存历史 token 的 Key 和 Value,避免重复计算
  • 每生成一个 token 只需计算新 token 的 KV
  • 是推理的主要显存消耗,和上下文长度成正比

加分:能算出 KV Cache 大小,知道 GQA/MQA。

Q: vLLM 为什么快?

参考答案:

  • PagedAttention:KV Cache 分页管理,按需分配,无碎片
  • Continuous Batching:动态调度请求,不等凑批
  • 显存利用率从 ~50% 提升到 ~95%
  • 吞吐提升 2-4 倍

加分:能解释 PagedAttention 的页表管理机制。

Q: 推理和训练的主要区别?

参考答案:

  • 训练:前向+反向,算力瓶颈,要存梯度和优化器状态
  • 推理:只有前向,带宽瓶颈,要存 KV Cache
  • 推理关注延迟和吞吐,训练关注收敛和效率

加分:能解释 Prefill 和 Decode 两个阶段。


K8s 调度

Q: K8s 怎么管理 GPU?

参考答案:

  • 通过 Device Plugin 机制
  • NVIDIA Device Plugin 注册到 Kubelet
  • 上报 GPU 数量,分配时返回设备路径和环境变量
  • Pod 用 nvidia.com/gpu 请求 GPU

加分:知道 GPU Operator、MIG 配置。

Q: 什么是 Gang Scheduling?为什么需要?

参考答案:

  • Gang Scheduling 是要么全部调度,要么一个都不调度
  • 分布式训练需要所有 Pod 同时启动
  • K8s 原生不支持,需要 Volcano 等调度器
  • 避免部分调度导致的资源浪费

加分:知道 Volcano 的 minAvailable、Queue 等概念。

Q: GPU 调度有哪些常见问题?

参考答案:

  • GPU 资源不显示:检查 Device Plugin
  • 调度失败:资源不足或 nodeSelector 不匹配
  • 容器内没有 GPU:检查环境变量和设备挂载
  • 利用率低:数据加载、batch size、推理特性

加分:有实际排查经验。


系统设计

Q: 设计一个大模型推理服务

参考答案:

用户请求 → 负载均衡 → 请求队列 → 推理引擎集群 → 返回结果
                           ↓
                     模型存储(S3/本地)

关键组件:
1. 负载均衡:按 GPU 利用率分发
2. 请求队列:限流、排队
3. 推理引擎:vLLM,Continuous Batching
4. 监控告警:延迟、错误率、GPU 利用率
5. 自动扩缩容:基于队列长度

加分:考虑到缓存、多模型管理、灰度发布。

Q: 设计一个分布式训练平台

参考答案:

用户提交任务 → 任务队列 → 调度器 → GPU 集群 → 训练 → 模型存储

关键组件:
1. 任务定义:支持 PyTorch/DeepSpeed 等框架
2. 调度器:Volcano,支持 Gang Scheduling
3. 资源管理:队列、配额、优先级
4. 存储:分布式文件系统(Lustre/GPFS)
5. 监控:训练 loss、GPU 利用率、进度
6. 容错:checkpoint、自动重启

加分:考虑到多租户隔离、成本计量。


实战问题

Q: GPU 利用率只有 20%,怎么排查?

参考答案:

  1. 看是训练还是推理
  2. 训练:检查数据加载(DataLoader workers)、batch size、CPU-GPU 同步
  3. 推理:可能是正常的(带宽瓶颈),看并发是否够
  4. 用 Nsight/PyTorch Profiler 分析时间分布

Q: 分布式训练卡住不动,怎么排查?

参考答案:

  1. 开启 NCCL_DEBUG=INFO 看日志
  2. 检查网络连通性(IB 状态、NCCL P2P)
  3. 检查是否某张卡故障
  4. 检查 rank 配置是否正确
  5. 增加 NCCL 超时时间定位问题

Q: 推理服务 P99 延迟突然升高,怎么排查?

参考答案:

  1. 看是否并发增加导致排队
  2. 检查 GPU 显存是否满(KV Cache)
  3. 看是否有长请求(长上下文/长输出)
  4. 检查是否有其他进程占用 GPU
  5. 看监控指标趋势,定位变化时间点

软技能

Q: 为什么想转 AI Infra?

参考答案(真诚版):

  • 看好大模型方向的发展
  • 之前做后端/运维,技能可迁移
  • 喜欢解决复杂的工程问题
  • 薪资和职业发展空间

Q: 你觉得 AI Infra 最大的挑战是什么?

参考答案:

  • 技术栈更新太快,需要持续学习
  • 硬件资源昂贵,容错和效率要求高
  • 需要同时懂 AI 算法和系统工程
  • 规模化带来的复杂性

准备建议

必须掌握

  • GPU 基础指标和监控
  • 分布式训练原理(数据并行、模型并行)
  • 推理优化(KV Cache、vLLM)
  • K8s 基础和 GPU 调度

加分项

  • 有实际项目经验
  • 熟悉 DeepSpeed/Megatron
  • 了解最新技术(FP8、Speculative Decoding)
  • 能做系统设计

面试技巧

  • 先说结论,再展开
  • 不会的坦诚说不太了解
  • 结合实际经验举例
  • 主动提问展示思考深度

小结

面试重点:

领域必问加分
GPU 基础nvidia-smi、显存/算力/带宽Roofline、H100 vs A100
分布式训练数据并行 vs 模型并行ZeRO、NCCL
推理优化KV Cache、vLLMPagedAttention 原理
K8s 调度Device PluginVolcano、MIG
系统设计基本架构细节和权衡

下一篇讲后端转 AI Infra 的学习路径。