推理框架负责人 — 学习路线 (inference-framework-learning-path)

推理框架负责人 --- 学习路线

目标:6个月从AI Infra深入到推理框架核心


为什么嵌入式工程师最适合做推理优化

推理优化本质是在GPU上做嵌入式开发

嵌入式 推理框架 思维映射
MCU寄存器编程 CUDA寄存器/共享内存 手写PTX=手写汇编
DMA传输优化 显存拷贝/异步传输 数据搬运的延迟隐藏
中断延迟 ≤ 10μs 推理延迟 ≤ 50ms 时延敏感系统
静态内存池 KV-cache预分配 显存预算管理
FOC PWM死区补偿 Kernel launch overlap 流水线气泡消除
Bootloader 模型加载/热更新 二进制加载+校验

6个月学习计划

Phase 1:CUDA 基础(Month 1-2)

目标:写出比cuBLAS快的自定义kernel

周次 主题 内容 检验
W1 GPU体系结构 SM/Warp/线程束/内存层次/occupancy 能画出A100 SM架构图
W2 CUDA编程模型 grid/block/thread、shared memory、bank conflict 矩阵乘法 > cuBLAS 80%性能
W3 CUDA内存优化 合并访问/向量化加载/异步拷贝 GEMM kernel手写优化
W4 CUDA Stream 多流并发/cuBLAS多流/cuBLAS+custom混合 两个kernel并行执行

核心项目:手写 GEMM kernel

复制代码
基线: cuBLAS cublasSgemm (120 TFLOPS on A100)
Week 2: naive GEMM  → 2 TFLOPS
Week 3: tiling + smem → 20 TFLOPS
Week 4: double buffer + async copy → 40 TFLOPS
目标: 达到cuBLAS 50%+ 性能

关键资源

  • 《CUDA C++ Programming Guide》前5章
  • github.com/NVIDIA/cutlass --- 生产级GEMM模板库
  • Simon Boehm的"How to Optimize a CUDA Matmul Kernel"博客

Phase 2:推理引擎原理(Month 3-4)

目标:理解vLLM/TensorRT-LLM的每一行关键代码

周次 主题 内容 产出
W5-6 vLLM深度解剖 PagedAttention/KV-cache管理/调度器/前缀缓存 vLLM源码分析系列笔记
W7 量化原理 GPTQ/AWQ/FP8/INT4、act-order/group-size 手写一个INT8量化kernel
W8 FlashAttention 分块计算/softmax rescaling/反向传播 手写FlashAttention forward

vLLM精读清单(优先级从高到低):

复制代码
1. vllm/worker/model_runner.py        ← 模型加载+推理循环
2. vllm/core/block_manager.py         ← KV-cache块管理(PagedAttention核心)
3. vllm/core/scheduler.py             ← 请求调度器
4. vllm/attention/backends/flash_attn.py ← FlashAttention集成
5. vllm/model_executor/layers/fused_moe/ ← MoE kernel (DeepSeek相关)

核心项目:手写 PagedAttention

复制代码
输入: Q tensor, 分页的KV-cache块表
输出: attention output
关键: 不用cuDNN,纯CUDA实现分页注意力
对比: 与vLLM的PagedAttention kernel性能对比

Phase 3:高级优化(Month 5-6)

目标:独立设计和实现推理优化方案

周次 主题 内容 产出
W9-10 投机解码 Medusa/Eagle/自回归投机树搜索 手写投机解码kernel
W11 PD分离 Prefill-Decode分离、micro-batching 实现PD分离调度器
W12 综合实战 自建Mini推理引擎 Mini推理引擎+benchmark

核心项目:Mini Inference Engine

复制代码
Mini Inference Engine (纯C++/CUDA, ~3000行)
├── model_loader     ← safetensors/gguf加载
├── attention        ← PagedAttention + FlashAttention
├── kv_cache         ← 块管理+LRU淘汰
├── sampler          ← top-p/top-k/temperature
├── scheduler        ← continuous batching
├── quantization     ← INT8/FP8量化支持
└── api_server       ← OpenAI兼容HTTP接口

对标测试

复制代码
模型: Llama-3-8B on A100
vLLM baseline: 2000 tok/s (throughput)
Mini Engine V1: 1000 tok/s (50% baseline)
Mini Engine V2: 1500 tok/s (75% baseline) ← 及格

能力检查清单

CUDA

  • 手写GEMM达到cuBLAS 50%+ 性能
  • 消除bank conflict、合并全局内存访问
  • 多Stream并行、异步拷贝隐藏延迟
  • 理解Tensor Core编程模型(m16n8k16等)

推理引擎

  • 能画出PagedAttention的内存布局
  • 理解vLLM调度器的3种排队策略(FCFS/Priority/Preempt)
  • 理解Continuous Batching vs Static Batching
  • 知道Prefix Caching如何检测和复用

量化

  • GTPQ/AWQ的数学原理(Hessian-based/activation-aware)
  • FP8 E4M3 vs E5M2的选择依据
  • 量化对attention和FFN的影响差异
  • 手写INT8矩阵乘法kernel

投机解码

  • 理解Medusa Tree Attention的树形掩码
  • 知道投机解码的吞吐-延迟 tradeoff
  • 实现draft model + target model的验证循环

系统

  • 用Nsight Systems分析推理pipeline瓶颈
  • 用Nsight Compute分析单个kernel性能
  • 理解GPU显存碎片问题和解决方案

简历项目清单

🥇 Mini Inference Engine(核心项目)

一个纯C++/CUDA实现的轻量级推理引擎

  • PagedAttention + FlashAttention
  • Continuous Batching
  • OpenAI兼容API
  • 面试价值:直接证明你能胜任推理框架岗位

🥈 手写 GEMM Kernel

从naive到tiling到double buffer的渐进优化

  • 完整benchmark对比cuBLAS
  • Nsight Compute profiling分析
  • 面试价值:CUDA功底的硬通货

🥉 vLLM源码分析系列

公开发表的深度技术文章

  • PagedAttention内存管理
  • 调度器设计
  • 前缀缓存机制
  • 面试价值:证明你的技术品味和表达能力

4️⃣ PD分离调度器原型

实现Prefill-Decode分离的调度策略

  • 延迟敏感度分析
  • 吞吐-延迟Pareto曲线
  • 面试价值:前沿方向,面试官感兴趣的话题

时间表

阶段 月份 重点 每周投入
Phase 1 M1-2 CUDA基础 + GEMM 20h
Phase 2 M3-4 vLLM + 量化 + FlashAttention 20h
Phase 3 M5-6 投机解码 + Mini引擎 25h(冲刺)
总计 6个月 ~520h

相关推荐
rosemary5123 小时前
AI Infra 后端开发工程师 — 学习路线
人工智能·学习
Hua-Jay3 小时前
OpenCV联合C++/Qt 学习笔记(二十五)----监督学习聚类及K均值聚类
c++·笔记·opencv·学习·计算机视觉·聚类
red_redemption3 小时前
自由学习记录(191)
学习
小新同学^O^3 小时前
OpenClaw 数据采集工具新手入门指南
python·学习·openclaw·纯ai文
lzp07913 小时前
基于多模态视觉模型和图文向量模型的工业图像知识库研究与应用(伍)
数据库·学习·neo4j
星恒随风3 小时前
从0开始的操作系统(3)
开发语言·笔记·学习
东风破1374 小时前
DM达梦数据库安全、审计功能学习记录
数据库·学习·oracle·dm达梦数据库
hhcgchpspk4 小时前
Windows API线程学习
c语言·windows·学习·多线程·windows api
~kiss~4 小时前
CrossFlowDG 跨域泛化学习二
学习