推理框架负责人 — 学习路线 (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

相关推荐
一隅论数智4 天前
给AI一张“业务概念地图“:本体如何从哲学走向企业智能
大数据·人工智能·经验分享·笔记·学习·学习方法·政务
XiHongShi20164 天前
STM32F407 RTC定时器例程,建议保存
stm32·单片机·学习
爱吃苹果的日记本4 天前
离散数学第六课
学习·离散数学
AI职业加油站4 天前
AI智能体应用工程师证书:政策红利下的职业新风口
大数据·运维·人工智能·学习·职场发展
旖旎夜光4 天前
力控面试题 01.01: 判定字符是否唯一(位运算) —— 题解
c++·学习·算法·leetcode·力控
奇思妙想聪明勤奋的小羊4 天前
DeepAgents第5章:子Agent 与上下文隔离—让 Agent学会委派
人工智能·python·学习·语言模型
霍霍的袁4 天前
【C++】map 和 set 的使用 | 从用法到底层
开发语言·c++·学习·visual studio
彧azz4 天前
Linux 环境下 Redis 学习总结:数据类型、持久化、锁、事务、主从与缓存问题
linux·redis·笔记·学习·面试
我爱cope4 天前
【操作系统 | 计算机硬件:CPU、内存与 I/O 如何支撑操作系统?】
学习·操作系统