Skip to content

训练框架 ​

分布式训练与通信 ​

  1. 数据并行、张量并行、流水线并行、序列并行和专家并行分别解决什么问题?
  2. DDP 的梯度同步和 bucket 机制如何工作?
  3. FSDP 与 DeepSpeed ZeRO-1/2/3 的分片对象和通信流程有什么区别?
  4. AllReduce、AllGather、ReduceScatter、Broadcast、AllToAll 的语义是什么?
  5. Ring 和 Tree AllReduce 如何选择?通信量和延迟如何比较?
  6. NCCL 如何利用 NVLink、PCIe、InfiniBand 或 RoCE?
  7. 如何实现通信与计算 overlap?为什么可能出现 NCCL Timeout?
  8. 训练过程中参数、梯度、优化器状态和激活分别占多少显存?
  9. 梯度累积、混合精度、Loss Scaling 和 Activation Checkpointing 如何配合?
  10. Pipeline Parallel 的 bubble 如何估算和降低?
  11. 多机多卡训练如何处理故障、重试、checkpoint 和一致性?

PyTorch、C++ 与运行时 ​

  1. PyTorch Autograd 计算图和反向模式自动微分如何工作?
  2. torch.compile、AOTAutograd、Inductor 和 Triton 的关系是什么?
  3. PyTorch 如何通过 dispatch、operator schema 和 backend 接入自研硬件?
  4. 动态图为什么常转静态图?图优化和 Kernel 优化如何分工?
  5. C++ 虚函数表、对象布局和多态调用是怎样的?
  6. C++ 内存对齐、RAII、移动语义和智能指针在框架中有什么作用?
  7. 静态库与动态库如何选择?符号解析和 ABI 要注意什么?
  8. Python GIL 对 CPU 密集和 I/O 密集任务有什么影响?
  9. 线程、进程、协程如何选择?线程池参数如何设置?
  10. 如何设计 GPU 内存池、workspace、显存碎片和异步回收?

学习、验证、修订,持续构建 AI Infra 知识地图。