Appearance
AI Infra 八股题库(近三年面经高频整理)
这份文档把近三年公开 AI Infra 面经中反复出现的基础题,按主题重新整理为可复习的八股清单。只列问题;原始面经来源见文末。
一、Transformer 与模型结构
- 请完整描述 Transformer 从输入 token 到输出 logits 的计算流程。
- Self-Attention 的 Q、K、V 分别表示什么?为什么不能省略 K?
- 为什么注意力分数要除以
sqrt(d_k)? - MHA、MQA、GQA 的结构和推理阶段 KV Cache 差异是什么?
- 为什么 Decoder-only 架构成为主流?与 Encoder-only、Encoder-Decoder 有何区别?
- FFN 为什么采用先升维再降维?SwiGLU 与标准 FFN 有什么区别?
- RoPE 的核心原理是什么?长上下文下有哪些局限?
- LayerNorm、RMSNorm、BatchNorm 的区别是什么?
- Causal Mask 的作用是什么?训练和推理时如何使用?
- MoE 专家路由按 token 还是按序列?如何避免负载不均?
二、LLM 推理与服务化
- Prefill 和 Decode 的计算特征分别是什么?为什么一个偏 Compute-bound、一个偏 Memory-bound?
- KV Cache 为什么只缓存 K、V,不缓存 Q?显存占用如何计算?
- KV Cache 有哪些压缩、量化、分页和淘汰策略?
- PagedAttention 解决了什么问题?物理 block 和逻辑序列如何映射?
- Continuous Batching 的调度流程是什么?
- Prefix Cache / RadixAttention 如何判断和复用相同前缀?
- Chunked Prefill 解决什么问题?会带来哪些调度权衡?
- PD 分离和 AF 分离分别解决什么问题?为什么需要两者?
- 如何定义并测量 TTFT、TPOT、吞吐、并发和 P99?
- vLLM、SGLang、TensorRT-LLM、fastllm.cpp 的定位和差异是什么?
- 大模型推理部署常见的端到端优化手段有哪些?
- 推理服务如何做动态批处理、限流、优先级、路由和弹性伸缩?
三、量化与模型压缩
- FP32、BF16、FP16、FP8、INT8、INT4 的表示范围、精度和适用场景是什么?
- PTQ 与 QAT 的区别是什么?量化流程如何设计?
- 对称量化与非对称量化有什么区别?zero-point 会带来什么开销?
- per-tensor、per-channel、per-group 量化如何选择?
- AWQ、GPTQ、SmoothQuant 的核心思路和适用场景是什么?
- 量化增加反量化步骤后,为什么整体推理仍可能加速?
- 如何评估量化后的精度、延迟、吞吐、显存和长上下文表现?
- KV Cache 量化与权重量化有什么不同?
- 剪枝、蒸馏、稀疏化和低秩适配如何组合?
四、CUDA 与 GPU 架构
- CUDA 的 grid、block、warp、thread 如何组织和调度?
- GPU 的寄存器、Shared Memory、L1/L2 Cache、Global Memory、HBM 各有什么特点?
- CUDA Core、Tensor Core、MMA/WMMA 分别适合什么计算?
- SIMT、Warp Divergence、Warp Shuffle 的原理和性能影响是什么?
- Occupancy 是什么?受哪些资源因素影响?Occupancy 越高是否一定越快?
- Global Memory 合并访问的条件是什么?如何判断访存是否对齐?
- Shared Memory Bank Conflict 是什么?常见规避方法有哪些?
- 为什么
float4等向量化加载可能提升性能?有哪些对齐前提? - H2D、D2H、Kernel 之间如何实现异步和重叠?
- 一个 Block 是否可能在多个 SM 间迁移执行?
- CUDA stream、event、同步和 memory fence 分别解决什么问题?
- 如何用 Nsight Systems、Nsight Compute、PyTorch Profiler 定位 GPU 瓶颈?
五、算子优化与 Kernel
- 如何判断算子是 Compute-bound、Memory-bound、Launch-bound 还是同步受限?
- Roofline 模型中的算术强度如何计算和使用?
- GEMM 的 tiling、寄存器复用、Shared Memory、Warp-level 分块如何设计?
- 为什么沿 K 维度分块能提高 GEMM 的计算访存比?
- 双缓冲、
cp.async、TMA 和流水线如何隐藏访存延迟? - 算子融合为什么能加速?什么情况下融合反而变慢?
- Online Softmax 如何保证数值稳定?
- FlashAttention V1 与 V2 的核心改进分别是什么?
- Reduce 算子如何做线程内、Warp 内和 Block 内分层归约?
- 什么时候可以使用
atomicAdd?如何降低原子操作冲突? - 多 shape、不同 dtype 和不同硬件如何做 Kernel dispatch?
- 如何做算子正确性、数值误差和性能回归?
六、分布式训练与通信
- 数据并行、张量并行、流水线并行、序列并行和专家并行分别解决什么问题?
- DDP 的梯度同步和 bucket 机制如何工作?
- FSDP 与 DeepSpeed ZeRO-1/2/3 的分片对象和通信流程有什么区别?
- AllReduce、AllGather、ReduceScatter、Broadcast、AllToAll 的语义是什么?
- Ring 和 Tree AllReduce 如何选择?通信量和延迟如何比较?
- NCCL 如何利用 NVLink、PCIe、InfiniBand 或 RoCE?
- 如何实现通信与计算 overlap?为什么可能出现 NCCL Timeout?
- 训练过程中参数、梯度、优化器状态和激活分别占多少显存?
- 梯度累积、混合精度、Loss Scaling 和 Activation Checkpointing 如何配合?
- Pipeline Parallel 的 bubble 如何估算和降低?
- 多机多卡训练如何处理故障、重试、checkpoint 和一致性?
七、PyTorch、C++ 与运行时
- PyTorch Autograd 计算图和反向模式自动微分如何工作?
torch.compile、AOTAutograd、Inductor 和 Triton 的关系是什么?- PyTorch 如何通过 dispatch、operator schema 和 backend 接入自研硬件?
- 动态图为什么常转静态图?图优化和 Kernel 优化如何分工?
- C++ 虚函数表、对象布局和多态调用是怎样的?
- C++ 内存对齐、RAII、移动语义和智能指针在框架中有什么作用?
- 静态库与动态库如何选择?符号解析和 ABI 要注意什么?
- Python GIL 对 CPU 密集和 I/O 密集任务有什么影响?
- 线程、进程、协程如何选择?线程池参数如何设置?
- 如何设计 GPU 内存池、workspace、显存碎片和异步回收?
八、集群、系统与工程排障
- Kubernetes 中 Pod、Deployment、StatefulSet、Service、Ingress、HPA 分别解决什么问题?
- Kubernetes 如何调度 GPU?requests/limits、MIG、优先级和抢占如何配合?
- 容器和虚拟机的隔离边界有什么区别?namespace、cgroup、overlayfs 分别做什么?
- Ray、Slurm、Volcano 等调度系统的定位和核心机制是什么?
- 模型服务出现 OOM、P99 飙升、吞吐下降时,如何建立排障路径?
- 如何设计模型服务的健康检查、熔断、限流、灰度和回滚?
- 如何建立训练和推理的 SLO、指标、日志、trace 与告警体系?
- 分布式 checkpoint 如何做到快速保存、恢复和容错?
九、RAG、对齐与 Agent
- RAG 知识库的数据清洗、切分、索引和召回链路如何设计?
- 召回不到正确文档时,如何区分数据、Embedding、检索和排序问题?
- 召回正确但生成错误时,如何定位检索模块还是生成模块?
- PPO、DPO、GRPO 的目标、数据和训练流程有何区别?
- GAE、importance sampling 和 PPO clip 分别解决什么问题?
- SFT 后通用能力下降或模型过度拒答,如何调整训练?
- Agent、Workflow、Skill 的边界是什么?
- Agent 的记忆模块如何设计?如何评估记忆质量?
十、算法与手撕题
- 如何实现 LRU Cache?
- 如何实现环形队列或 Ring Buffer?
- 如何实现 CUDA 向量加法、Reduce、Softmax、GEMM 或 Conv2D?
- 如何实现链表反转、判断链表有环、合并 K 个有序链表?
- 如何实现二叉树层序遍历、镜像翻转或拓扑排序?
- 如何实现最长公共子序列、最大子数组和或单词接龙?
- 如何在不依赖库函数的情况下完成字符串处理和排序?
- 如何为手撕 Kernel 设计边界检查、线程映射、同步和误差验证?
公开来源
- AIInfraGuide 面试宝典目录:页面标注收录 65+ 家公司、181+ 场 AI Infra 面经,本文抽取其中百度、阿里巴巴、字节跳动、腾讯、快手、小米、蚂蚁、美团、华为、英伟达、寒武纪等条目。
- AIInfraGuide GitHub 仓库:各条目原始 Markdown 与题目分类。
- AI Infra 工程师面经(305 题版):作为主题交叉核对,覆盖 PyTorch、CUDA、编译器、并行训练、推理、量化、服务化、调度和系统基础。
资料边界:面经是候选人公开自述或开源整理,不是公司官方题库;来源页面日期与实际面试日期可能不同,复习时应结合岗位和面试轮次判断优先级。