ai-infra-interview-305

305 题漫游指南:从 PyTorch 底层到集群调度的一天

文中所有可点击的链接都会跳转到对应面试题的详解。

建议边读边点,像翻地图一样逛完 305 个知识点。

单页浏览:本地 study.html;在线请用 Pages 链接(勿用 Raw)。改 .md 后运行 python build_study_html.py 再提交 study.html


序章:AI Infra 面经 305 题,一夜能摸到哪?

你收到 HR 的消息:面试范围是 AI 基础设施 / 机器学习系统,从框架底层到集群调度都可能问。

「Infra」俩字听起来很广:从你写的 model(x) 背后怎么求导、怎么分到多卡,到推理服务怎么扛 10 万 QPS、K8s 怎么调度 GPU,中间每一环都可能考。

你打开那份 305 题 清单——从 PyTorch Autogradetcd 在 K8s 中的作用,从 DDP 与 FSDPvLLM PagedAttention——密密麻麻,像一张从「单机训练」画到「多租户集群」的长卷。

与其对着题号硬啃,不如换一种玩法:按「一天搞懂 AI Infra」的主线,从框架底层 → 编译器与算子 → 分布式训练 → 显存与通信 → 推理引擎与量化 → 服务化与平台设计 → 语言与网络存储,把 305 题串成一条线。每条线底下都挂着一串可点的链接。

两样配合用,效果更好。祝面试顺利。


一、PyTorch 底层(第 1–15 题)

一天从「你写的代码到底是怎么跑的」开始。PyTorch 底层决定了训练脚本里的每一行 tensor、每一个 backward 在 C++/CUDA 里长什么样。

第 1 题:Autograd 与 torch.autograd.Function第 2 题:Module 的 call 与 forward第 3 题:Dispatch、ATen、c10、torch.library第 4 题:自定义 CUDA 算子在 PyTorch 中调用第 5 题:内存池与显存碎片第 6 题:torch.jit.trace 与 script第 7 题:DataLoader num_workers 与 too many open files第 8 题:DDP 与 FSDP 区别第 9 题:torch.compile 与 TorchDynamo/AOTAutograd/Inductor第 10 题:CUDA kernel 调试与 CUDA_LAUNCH_BLOCKING第 11 题:hook、forward_pre_hook、backward_hook第 12 题:QAT 与 torch.ao.quantization第 13 题:checkpoint 梯度检查点第 14 题:AMP 与 GradScaler第 15 题:torch.profiler 与 nvprof

返回本模块目录


二、TensorFlow 与 XLA(第 16–20 题)

除了 PyTorch,TF 栈在工业界仍大量存在。XLA 把计算图编译成更高效的 kernel,tf.function 和 PyTorch 的 JIT 设计理念不同;SavedModel、TF Serving 的 batching 也是常考点。

第 16 题:XLA 优化场景与 jit_compile第 17 题:tf.function 与 torch.jit 差异第 18 题:XLA HLO IR 与编译日志第 19 题:SavedModel 与 TorchScript第 20 题:TF Serving batching

返回本模块目录


三、自定义算子开发(第 21–30 题)

从「用框架」到「写 kernel」:CUDA / Triton / CUTLASS、memory coalescing、bank conflict、occupancy、warp divergence、Nsight、以及 vLLM 的 PagedAttention 如何应对动态 shape。

第 21 题:CUDA vector add 绑定到 Python第 22 题:Triton 与 CUDA 区别第 23 题:融合算子 layernorm+residual+activation第 24 题:CUTLASS 何时用第 25 题:memory coalescing、bank conflict、occupancy第 26 题:Nsight Compute 与 metrics第 27 题:register 与 occupancy 平衡第 28 题:warp divergence第 29 题:动态 shape 与 PagedAttention第 30 题:算子融合收益评估

返回本模块目录


四、编译器优化(第 31–45 题)

TVM、MLIR、TorchInductor、ONNX、TensorRT:loop tiling、unrolling、vectorization、PTQ/QAT 在编译器中的处理、稀疏与 pass manager、control flow 的 tracing 与 symbolic execution。

第 31 题:TVM Ansor 与 MetaSchedule第 32 题:MLIR dialect、operation、pass第 33 题:TorchInductor 到 Triton第 34 题:ONNX Runtime 图优化第 35 题:TensorRT plugin 与 dynamic shape第 36 题:loop tiling、unrolling、vectorization第 37 题:PTQ 与 QAT 在编译器第 38 题:稀疏与 2:4 structured sparsity第 39 题:pass manager top-down vs bottom-up第 40 题:新硬件后端编译器支持第 41 题:TVM vs MLIR vs TorchDynamo第 42 题:AOT vs JIT第 43 题:编译时间与缓存第 44 题:operator decomposing 与 fusion 边界第 45 题:control flow tracing vs symbolic

返回本模块目录


五、数据并行(第 46–60 题)

多卡同模型:DDP 的 gradient bucketing、find_unused_parametersFSDP 的 sharding、auto_wrap_policyZeRO-1/2/3;梯度累积、SyncBatchNorm、NCCL 排查、torchrun 与 mp.spawn、梯度压缩。

第 46 题:DDP gradient bucketing第 47 题:find_unused_parameters第 48 题:FSDP sharding strategy第 49 题:FSDP auto_wrap_policy第 50 题:ZeRO-1/2/3第 51 题:loss scaling 分布式第 52 题:梯度累积在 DDP 中第 53 题:分布式 sampler第 54 题:SyncBatchNorm第 55 题:分布式 hang 与 NCCL_DEBUG第 56 题:torchrun 与 mp.spawn第 57 题:NCCL_SOCKET_IFNAME、NCCL_IB_DISABLE第 58 题:梯度压缩 fp16/bf16/1bit Adam第 59 题:异步训练 Hogwild第 60 题:自定义分布式优化器

返回本模块目录


六、模型并行与流水线并行(第 61–75 题)

单卡放不下就切模型TP 的 fused attention、Megatron column/row parallelPP 的 bubble、GPipe/PipeDream、1F1B;all-gather、reduce-scatter、micro-batch、3D 并行、序列并行、MoE Expert Parallelism、Zero Bubble、通信 profile。

第 61 题:TP fused attention第 62 题:Megatron column/row parallel第 63 题:PP bubble GPipe vs PipeDream第 64 题:interleaved pipeline 1F1B第 65 题:PP 中 activation checkpointing第 66 题:TP/PP/DP 平衡 175B第 67 题:torch.distributed.pipeline.sync.Pipe第 68 题:all-gather、reduce-scatter第 69 题:micro-batch 与吞吐第 70 题:PP 负载均衡与 recompute第 71 题:3D 并行通信复杂度第 72 题:Sequence Parallelism第 73 题:Expert Parallelism MoE all-to-all第 74 题:Zero Bubble 流水线第 75 题:分布式通信 profile

返回本模块目录


七、显存优化与 Offload(第 76–85 题)

ZeRO-Offload、DeepSpeed-Infinity、checkpoint、empty_cache、显存估算公式、activation compression、CPU-GPU 流水线重叠、多节点显存策略、ROI 评估。

第 76 题:ZeRO-Offload 到 CPU第 77 题:DeepSpeed-Infinity NVMe第 78 题:checkpoint_sequential 与 checkpoint第 79 题:显存碎片分布式第 80 题:empty_cache 副作用第 81 题:大模型显存估算第 82 题:checkpoint 与 activation compression第 83 题:CPU offload 与计算重叠第 84 题:多节点显存策略第 85 题:显存优化 ROI

返回本模块目录


八、通信优化(第 86–95 题)

NCCL Tree/Ring、all-reduce 通信量、NVLink/IB/TCP、NCCL_TOPO_FILE、通信计算重叠、nccl/gloo/mpi、RDMA RoCE/IB、iftop/nicstat、自定义 reduce_op、异构网络。

第 86 题:NCCL Tree 与 Ring第 87 题:all-reduce 通信量第 88 题:NVLink、InfiniBand、TCP第 89 题:NCCL_TOPO_FILE第 90 题:通信计算重叠 double buffering第 91 题:backend nccl/gloo/mpi第 92 题:RDMA RoCE v1/v2/IB第 93 题:网络拥塞诊断 iftop nicstat第 94 题:自定义通信算子 reduce_op第 95 题:异构网络通信

返回本模块目录


九、推理引擎(第 96–115 题)

TensorRT builder/runtime、dynamic shape、pluginONNX Runtime EPvLLM PagedAttention、continuous batching、prefix caching;TensorRT-LLM、FasterTransformer、TGI、llama.cpp 量化、移动端 MNN/TNN、warmup、多 stream、padding/packing、P50/P90/P99、auto-scaling、MPS、精度 debug。

第 96 题:TensorRT builder 与 runtime第 97 题:TensorRT dynamic shape第 98 题:IPluginV2DynamicExt 与 IPluginV2IOExt第 99 题:ONNX Runtime execution provider第 100 题:torch.compile 推理模式第 101 题:vLLM PagedAttention第 102 题:vLLM continuous batching第 103 题:vLLM prefix caching第 104 题:TensorRT-LLM in-flight batching第 105 题:FasterTransformer decoder第 106 题:TGI 架构第 107 题:llama.cpp 量化 Q4_0 Q5_K_M第 108 题:移动端 MNN TNN Paddle Lite第 109 题:warmup 策略第 110 题:多 stream 推理第 111 题:padding 与 packing第 112 题:延迟 P50 P90 P99第 113 题:auto-scaling 策略第 114 题:多模型混部 MPS第 115 题:推理 debug 精度

返回本模块目录


十、量化与压缩(第 116–130 题)

INT8 symmetric/asymmetric、per-tensor/per-channelSmoothQuant、AWQ、GPTQ、OBQGGUF、FP8、H100 Transformer Engine;校准、sensitivity、k-means、BNN、知识蒸馏、剪枝、动态量化、算子融合、混合精度推理。

第 116 题:INT8 symmetric/asymmetric第 117 题:SmoothQuant第 118 题:AWQ第 119 题:GPTQ 与 OBQ第 120 题:GGUF Q4_K_M第 121 题:FP8 与 H100第 122 题:校准数据集第 123 题:精度损失 layer-wise第 124 题:k-means 与非均匀量化第 125 题:二值化网络 BNN第 126 题:知识蒸馏 MiniLLM DistilBERT第 127 题:结构化与非结构化剪枝第 128 题:动态量化与静态量化第 129 题:量化算子融合第 130 题:混合精度推理策略

返回本模块目录


十一、服务化与调度(第 131–145 题)

Triton model ensemble、dynamic batchingA/B testing、K8s GPU Operator、MIG;priority scheduling、preemption、health check、GPU 内存泄漏、hot reload、gRPC vs REST、timeout、多租户 quota、cost optimization、Edge deployment。

第 131 题:Triton model ensemble第 132 题:Triton dynamic batching第 133 题:A/B testing 模型版本第 134 题:K8s GPU Operator第 135 题:MIG 配置第 136 题:priority scheduling第 137 题:长文本 preemption KV swap第 138 题:health check graceful degradation第 139 题:GPU memory 泄漏监控第 140 题:hot reload 零停机第 141 题:gRPC vs REST第 142 题:timeout 部分结果第 143 题:多租户 quota limit request第 144 题:cost optimization Spot第 145 题:Edge 模型加密与兼容

返回本模块目录


十二、训练框架(第 146–160 题)

Megatron、DeepSpeed ZeRO-Infinity/Offload、Colossal-AI Gemini/PatrickStar、FairScale FSDP、Accelerate、limit_all_gathers;checkpoint 格式与 sharded 合并、resume 一致性、data pipeline WebDataset/tfrecord、多模态与 RLHF、MoE all-to-all、长上下文 Ring Attention、elastic training、experiment tracking。

第 146 题:Megatron 与 megatron/core第 147 题:ZeRO-Infinity 与 ZeRO-Offload 入口第 148 题:Colossal-AI Gemini PatrickStar第 149 题:FairScale FSDP第 150 题:Accelerate 分布式第 151 题:limit_all_gathers第 152 题:checkpoint 格式与 sharded 合并第 153 题:resume consistency第 154 题:data pipeline WebDataset tfrecord第 155 题:多模态训练 infra第 156 题:RLHF PPO 分布式第 157 题:MoE Tutel FasterMoE第 158 题:长上下文 Ring Attention第 159 题:fault tolerance elastic第 160 题:W&B MLflow

返回本模块目录


十三、存储与 IO(第 161–170 题)

safetensors vs pytorch.bin、Lustre/GPFS/Alluxio、caching burst buffer、memory mapping lazy loading、异步 checkpoint、nvidia-smi dmon、DALI、sharding、S3/s3fs、parquet/arrow。

第 161 题:safetensors vs pytorch.bin第 162 题:Lustre GPFS Alluxio第 163 题:caching SSD burst buffer第 164 题:权重 memory mapping lazy load第 165 题:多节点 checkpoint 同步第 166 题:数据加载 bottleneck dmon第 167 题:DALI 使用场景第 168 题:sharding 按文件 vs 按样本第 169 题:S3 OSS s3fs第 170 题:metadata parquet arrow

返回本模块目录


十四、集群调度(第 171–180 题)

Slurm sbatch gres、Volcano、gang scheduling、PyTorchJob、resource quota、topology awareness、preemption checkpoint resume、Prometheus Grafana、federated learning、cost accounting、heterogeneous GPU。

第 171 题:Slurm sbatch gres第 172 题:Volcano AI 场景第 173 题:gang scheduling PyTorchJob第 174 题:resource quota priority class第 175 题:GPU topology NVLink第 176 题:preemption checkpoint resume第 177 题:Prometheus Grafana utilization第 178 题:多集群 federated learning第 179 题:cost accounting GPU 小时第 180 题:heterogeneous A100 H100 4090

返回本模块目录


十五、性能分析工具(第 181–195 题)

nvidia-smi dmon/pmon、Nsight Systems timeline、Nsight Compute roofline、PyTorch Profiler memory、record_shapes profile_memory、Chrome Trace、perf eBPF、iperf qperf、fio iostat、dashboard、scaling efficiency、通信 breakdown、aten dispatch、cProfile py-spy、性能回归。

第 181 题:nvidia-smi dmon pmon第 182 题:Nsight Systems timeline gap第 183 题:Nsight Compute roofline第 184 题:PyTorch Profiler memory第 185 题:record_shapes profile_memory第 186 题:Chrome Trace 解读第 187 题:perf eBPF CPU第 188 题:iperf qperf 网络第 189 题:fio iostat 存储第 190 题:端到端监控 dashboard第 191 题:scaling efficiency第 192 题:通信 breakdown第 193 题:aten 算子耗时第 194 题:cProfile py-spy第 195 题:性能回归检测

返回本模块目录


十六、优化技术(第 196–215 题)

FlashAttention IO-aware、FlashAttention-2、xFormers、cuDNN fused attention、融合边界、arithmetic intensity、kernel fusion 手动 vs 编译、CUDA Graph、dynamic shape torch.compile、cudnn.benchmark、pin_memory non_blocking、num_workers、混合精度数值稳定性、effective batch size、LR scaling、LARS LAMB、communication hiding、pipeline bubble 数学、稀疏 attention。

第 196 题:FlashAttention IO-aware第 197 题:FlashAttention-2 改进第 198 题:xFormers memory_efficient_attention第 199 题:cuDNN fused attention第 200 题:融合边界 register pressure第 201 题:带宽 bound vs 计算 bound第 202 题:kernel fusion 手动 vs 编译第 203 题:CUDA Graph make_graphed_callables第 204 题:dynamic shape torch.compile第 205 题:cudnn.benchmark第 206 题:pin_memory non_blocking第 207 题:num_workers 调优第 208 题:DALI GPU decode augment第 209 题:混合精度数值稳定性第 210 题:gradient accumulation effective batch第 211 题:大 batch LR scaling第 212 题:LARS LAMB 大 batch第 213 题:communication hiding第 214 题:pipeline bubble 数学第 215 题:稀疏 attention Sparse Longformer

返回本模块目录


十七、训练平台设计(第 216–235 题)

1000 卡平台组件、job scheduler FIFO/priority/fair、Ceph/JuiceFS/GPFS、镜像 layer registry、InfiniBand RoCE fat-tree、heartbeat watchdog、global shuffle、模型仓库版本血缘、HPO Optuna Ray Tune、multi-tenancy namespace cgroup、defragmentation、dry-run profiling、量化剪枝流水线、cost model、异构 CPU/GPU/TPU、SLA、联邦学习、disaster recovery、CI/CD、observability。

第 216 题:1000 卡平台组件第 217 题:job scheduler 设计第 218 题:Ceph JuiceFS GPFS第 219 题:镜像 layer registry第 220 题:网络 InfiniBand RoCE第 221 题:故障检测恢复第 222 题:global shuffle第 223 题:模型仓库版本血缘第 224 题:HPO Optuna Ray Tune第 225 题:multi-tenancy 隔离第 226 题:defragmentation第 227 题:dry-run profiling第 228 题:量化剪枝流水线第 229 题:cost model第 230 题:异构 CPU GPU TPU第 231 题:SLA job completion第 232 题:联邦学习 infra第 233 题:disaster recovery第 234 题:模型 CI/CD第 235 题:observability

返回本模块目录


十八、推理平台设计(第 236–255 题)

10 万 QPS 设计、HPA VPA KEDA、MPS vs MIG、routing least loaded consistent hashing、CDN for models、A/B canary、streaming SSE、prompt caching、多模态 pipeline、safety guardrails、fine-tuning as a service、spot batching、Core ML TFLite、p99 latency SLO、admission control、ensemble cascade、request tracing、实时离线统一、security、carbon footprint。

第 236 题:10 万 QPS 推理服务第 237 题:HPA VPA KEDA第 238 题:MPS vs MIG 多模型第 239 题:routing 策略第 240 题:边缘 model caching CDN第 241 题:A/B canary第 242 题:streaming SSE第 243 题:推理结果 caching第 244 题:多模态 pipeline第 245 题:safety guardrails第 246 题:fine-tuning as a service第 247 题:cost optimization第 248 题:on-device Core ML TFLite第 249 题:latency SLO p99第 250 题:admission control第 251 题:ensemble cascade第 252 题:debuggability tracing第 253 题:实时离线统一第 254 题:security 加密认证第 255 题:carbon footprint

返回本模块目录


十九、C++/CUDA 编程(第 256–270 题)

线程安全 memory pool、__shared__ bank conflict、ring buffer CPU-GPU、stream 与 event、thrust transform_reduce、CUTLASS gemm Epilogue、NCCL ring all-reduce、zero-copy cudaHostAlloc、P2P、CUDA Graph 捕获条件、template、RAII、CUDA_CHECK、warp shuffle、cooperative groups。

第 256 题:线程安全 memory pool第 257 题:shared bank conflict第 258 题:ring buffer CPU-GPU第 259 题:stream event 同步第 260 题:thrust transform_reduce第 261 题:CUTLASS gemm Epilogue第 262 题:NCCL ring all-reduce第 263 题:zero-copy cudaHostAlloc第 264 题:P2P cudaDeviceEnablePeerAccess第 265 题:CUDA Graph 捕获条件第 266 题:template metaprogramming第 267 题:RAII unique_ptr deleter第 268 题:CUDA error CUDA_CHECK第 269 题:warp shuffle __shfl_sync第 270 题:cooperative groups grid_group

返回本模块目录


二十、Python 高级(第 271–280 题)

GIL、multiprocessing vs threading、asyncio aiohttp、tracemalloc、Cython vs pybind11、descriptor property、context manager、metaclass abc、import sys.path、pickle cloudpickle dill、cProfile line_profiler。

第 271 题:GIL multiprocessing threading第 272 题:asyncio aiohttp第 273 题:memory profiler tracemalloc第 274 题:Cython pybind11第 275 题:descriptor property第 276 题:context manager第 277 题:metaclass abc第 278 题:import sys.path第 279 题:pickle cloudpickle dill第 280 题:cProfile line_profiler

返回本模块目录


二十一、算法与数据结构(第 281–290 题)

并发 LRU、external sort k-way merge、consistent hashing virtual node、bloom filter 假阳性、skip list、B+ tree、rate limiter token bucket leaky bucket、KMP prefix、shortest path Dijkstra Bellman-Ford、并查集 path compression。

第 281 题:并发 LRU cache第 282 题:external sort k-way第 283 题:consistent hashing第 284 题:bloom filter 假阳性第 285 题:skip list level第 286 题:B+ tree 数据库第 287 题:rate limiter第 288 题:KMP prefix第 289 题:shortest path第 290 题:并查集 path compression

返回本模块目录


二十二、网络(第 291–300 题)

TCP vs RDMA、InfiniBand Verbs ibv_post_send、RoCE ECN PFC、fat-tree dragonfly、NCCL bootstrap transport、jitter、DPDK、RDMA memory registration、SR-IOV virtio、跨 AZ。

第 291 题:TCP 与 RDMA第 292 题:InfiniBand Verbs第 293 题:RoCE v2 ECN PFC第 294 题:fat-tree dragonfly第 295 题:NCCL bootstrap transport第 296 题:jitter 对训练影响第 297 题:DPDK AI 网络第 298 题:RDMA memory registration第 299 题:SR-IOV vs virtio第 300 题:跨 AZ 训练

返回本模块目录


二十三、存储与虚拟化(第 301–305 题)

containerd、cri-o、CNI Calico Cilium、vGPU MIG SR-IOV、CSI 驱动、etcd 作用与调优。 最后一站:容器与集群底座。

第 301 题:containerd cri-o第 302 题:CNI Calico Cilium第 303 题:vGPU MIG SR-IOV第 304 题:CSI 驱动第 305 题:etcd 在 K8s 中作用与调优

返回本模块目录


尾声:305 题都在这条线上

PyTorch Autogradetcd 在 K8s 中的作用,这条漫游把 305 题 按「框架 → 算子/编译 → 分布式 → 显存/通信 → 推理/量化/服务 → 平台 → 语言/算法/网络/虚拟化」串成一条线。每一个可点击的链接都会带你到对应那道题的详解;读到哪、点到哪,像翻地图一样把 AI Infra 走一遍。

祝面试顺利。


本文为「AI Infra 工程师面经(305 题版)」漫游导读,所有链接指向本仓库内对应题目的 Markdown 文章。