AI 推理工程师 · 零基础完整学习路线

目标:从零基础到能胜任大厂/AI公司推理工程师岗位
预计周期:8-12个月(全职学习)
核心能力:CUDA编程 + 推理框架 + 大模型优化部署


目录


阶段总览

月份    1    2    3    4    5    6    7    8    9    10   11   12
       ├─ 编程基础 ─┤
                  ├─ 深度学习 ──┤
                  ├── CUDA编程 ──────┤
                              ├─ 推理框架 ──────┤
                                       ├─ 大模型优化 ─────┤
                                                ├─ 项目实战 ┤
                                                         ├─ 求职 ─┤
       ├──────────────── Codeforces 持续刷题 ──────────────────────┤

阶段一:编程基础(第1-2月)

1.1 Python(第1-2周)

Python 是 AI 领域的通用语言,必须熟练。

学习内容:

  • 基础语法:变量、条件、循环、函数
  • 数据结构:list、dict、set、tuple
  • 面向对象:类、继承、魔术方法
  • 常用库:numpy 基础操作、文件读写
  • 虚拟环境:venv / conda 管理依赖

学习资源:

资源 说明
Python官方教程 中文官方教程,权威
廖雪峰Python教程 中文入门经典
NumPy官方Quickstart 数组操作基础

检验标准:

  • 能用 Python 读写文件、处理数据
  • 能用 numpy 做矩阵运算
  • 能用 class 写一个简单的神经网络层

1.2 C/C++(第2-6周)

推理框架底层全是 C++,这是核心语言能力。

学习内容:

C语言基础(第2-3周):
  - 指针、内存管理(malloc/free)
  - 结构体、函数指针
  - 预处理器、头文件

C++ 现代特性(第4-6周):
  - 引用、const、constexpr
  - 类与对象、构造/析构、RAII
  - 智能指针:unique_ptr, shared_ptr
  - 模板基础:函数模板、类模板
  - STL:vector, map, unordered_map, string
  - 移动语义:std::move, 右值引用
  - Lambda 表达式
  - 多线程基础:std::thread, mutex

学习资源:

资源 说明
《C Primer Plus》 C语言入门
《C++ Primer》(第5版) C++圣经,挑重点章节看
cppreference.com 在线参考手册
Cherno C++ Playlist (YouTube) 视频讲解清晰

检验标准:

  • 能手写链表、栈、队列
  • 理解指针和内存管理,不会内存泄漏
  • 能用智能指针管理资源
  • 能用模板写通用函数
  • 能用 STL 容器解决问题

1.3 Linux 基础(第4-5周,穿插学习)

推理部署都在 Linux 环境,必须会用。

学习内容:

  • 基本命令:ls, cd, grep, find, cat, vim/nano
  • 文件权限、用户管理
  • Shell 脚本基础
  • 包管理:apt / conda / pip
  • SSH 远程连接
  • tmux / screen 后台运行

学习资源:

资源 说明
The Missing Semester (MIT) 命令行、Shell、Vim 等
鸟哥的Linux私房菜 中文经典

检验标准:

  • 能在终端完成日常操作
  • 能写简单的 Shell 脚本
  • 能用 SSH 连接远程服务器操作

1.4 Codeforces 刷题(贯穿全程)

目标: 从零开始,8-12个月打到 1800-2000 分

第1-2月目标: 稳定在 1000-1200 分

每日任务:1-2题(800-1200难度)

重点掌握:
  - 暴力枚举
  - 贪心
  - 排序和比较
  - 字符串处理
  - 简单数学

平台:
  - Codeforces: https://codeforces.com
  - 洛谷: https://www.luogu.com.cn(中文题解多)

刷题方法:

  1. 先看题,想5-10分钟没思路就看题解
  2. 看懂题解后自己重新写一遍
  3. 整理错题本,记录解题思路
  4. 每周参加一次 Div2/Div3 比赛

阶段二:深度学习基础(第3-4月)

2.1 数学基础(第3月,穿插学习)

不需要精通,但需要理解核心概念。

线性代数:

必须掌握:
  - 向量、矩阵运算
  - 矩阵乘法的几何意义
  - 转置、逆矩阵
  - 特征值和特征向量(了解)
  - SVD 分解(了解)

资源:
  - 3Blue1Brown《线性代数的本质》(B站有搬运)
  - MIT 18.06 线性代数(Gilbert Strang)

概率论:

必须掌握:
  - 概率、条件概率、贝叶斯公式
  - 常见分布:正态、均匀、伯努利
  - 期望、方差
  - 极大似然估计(MLE)

资源:
  - 3Blue1Brown 概率相关视频
  - StatQuest (YouTube/B站) — 用最简单的语言讲统计

微积分:

必须掌握:
  - 导数、偏导数
  - 链式求导法则(反向传播的基础)
  - 梯度的概念

资源:
  - 3Blue1Brown《微积分的本质》

检验标准:

  • 能手算矩阵乘法
  • 理解梯度下降的数学原理
  • 能推导反向传播的链式求导

2.2 深度学习理论(第3-4月)

学习顺序:

第3月:
  1. 神经网络基础
     - 感知机、多层感知机
     - 激活函数:ReLU、Sigmoid、Tanh
     - 损失函数:交叉熵、MSE
     - 反向传播原理
     - 梯度下降及其变体:SGD、Adam

  2. CNN(卷积神经网络)
     - 卷积操作原理
     - 池化层
     - 经典网络:LeNet → AlexNet → VGG → ResNet
     - 重点理解 ResNet 的残差连接

第4月:
  3. RNN / LSTM(了解即可)
     - 序列建模基本概念
     - LSTM 解决了什么问题

  4. Transformer(重中之重)
     - Self-Attention 机制
     - Multi-Head Attention
     - 位置编码(Positional Encoding)
     - Layer Normalization
     - Encoder-Decoder 架构
     - 必须能手写一个简化版 Transformer

  5. 大语言模型(LLM)基础
     - GPT 系列架构(Decoder-Only)
     - LLaMA / Qwen 架构特点
     - 预训练、SFT、RLHF 流程(了解)

学习资源:

资源 说明
吴恩达 Deep Learning Specialization (Coursera) 入门经典,有中文字幕
李宏毅机器学习 中文讲解,深入浅出
3Blue1Brown 神经网络 可视化理解
The Illustrated Transformer Transformer 图文讲解,必读
Andrej Karpathy - Let’s build GPT 从零手写 GPT,强烈推荐
Attention Is All You Need (论文) Transformer 原始论文

检验标准:

  • 能用 PyTorch 手写一个 MLP 做 MNIST 分类
  • 能解释 CNN 卷积操作的计算过程
  • 能手写 Self-Attention 的代码
  • 能解释 Transformer 的完整数据流
  • 理解 GPT 和 LLaMA 的架构区别

2.3 PyTorch 实战(第4月)

学习内容:

基础操作:
  - Tensor 操作:创建、索引、变形、广播
  - 自动求导:autograd 机制
  - Dataset / DataLoader 数据加载
  - nn.Module 写模型
  - 训练循环:forward → loss → backward → step

进阶:
  - 自定义 Dataset
  - 模型保存和加载(state_dict)
  - GPU 训练:.to(device)
  - 混合精度训练:torch.cuda.amp
  - 自定义 autograd Function

实战项目:

项目1:MNIST 手写数字分类(MLP)
项目2:CIFAR-10 图像分类(ResNet)
项目3:手写一个简化版 Transformer 做文本分类

学习资源:

资源 说明
PyTorch官方教程 官方60分钟入门
PyTorch 官方 Examples 官方示例代码
d2l.ai 动手学深度学习 中文,代码+理论结合

检验标准:

  • 能独立写训练代码,不看教程
  • 理解 DataLoader、Dataset 的工作原理
  • 能自定义 loss function 和 layer
  • 能用 GPU 跑通训练

阶段三:CUDA编程(第3-5月)

CUDA 是推理工程师的核心竞争力,也是你与大多数 AI 从业者的差异化所在。
这个阶段和深度学习阶段可以并行。

3.1 GPU 架构理解(第3月前两周)

必须理解的概念:

硬件层面:
  - SM (Streaming Multiprocessor) — 流式多处理器
  - CUDA Core — 基本计算单元
  - Warp — 32个线程一组,GPU调度的最小单位
  - 显存 (Global Memory) vs 共享内存 (Shared Memory)
  - 寄存器 (Register)
  - L1/L2 Cache

编程模型:
  - Grid → Block → Thread 的层次关系
  - Host (CPU) 和 Device (GPU) 的区别
  - 内核函数 (Kernel) 的启动方式
  - <<<grid, block>>> 的含义

学习资源:

资源 说明
CUDA Programming Guide 官方文档,前5章必读
《CUDA by Example》 入门书,代码示例多
CUDA 记忆模型图解 NVIDIA 官方博客

3.2 CUDA 基础编程(第3-4月)

循序渐进的练习清单:

入门级(第3月):
  1. 向量加法 — 理解 grid/block/thread
  2. 向量点积 — 学习 atomicAdd
  3. 矩阵加法 — 二维 grid/block
  4. 矩阵转置 — 理解显存访问模式
  5. 一维卷积 — 学习边界处理

进阶级(第4月):
  6. 矩阵乘法(朴素版) — 理解计算和访存
  7. 矩阵乘法(Shared Memory 优化) — 分块矩阵乘法
  8. Softmax — 归约操作
  9. Layer Normalization — 数值稳定技巧
  10. ReLU / GELU 激活函数

高级(第5月):
  11. 简化版 Self-Attention — Q*K^T 和 Softmax*V
  12. Flash Attention 思路 — 理解 tiling 和重计算
  13. INT8 量化矩阵乘法 — 理解量化推理

每个练习的要求:

// 示例:向量加法
// 文件名:01_vector_add.cu

#include <cuda_runtime.h>
#include <stdio.h>

// Kernel: 每个线程处理一个元素
__global__ void vector_add(float *a, float *b, float *c, int n) {
    int idx = blockIdx.x * blockDim.x + threadIdx.x;
    if (idx < n) {
        c[idx] = a[idx] + b[idx];
    }
}

int main() {
    int n = 1 << 20;  // 100万元素
    size_t bytes = n * sizeof(float);

    // Host 分配内存
    float *h_a = (float*)malloc(bytes);
    float *h_b = (float*)malloc(bytes);
    float *h_c = (float*)malloc(bytes);

    // 初始化
    for (int i = 0; i < n; i++) {
        h_a[i] = 1.0f;
        h_b[i] = 2.0f;
    }

    // Device 分配内存
    float *d_a, *d_b, *d_c;
    cudaMalloc(&d_a, bytes);
    cudaMalloc(&d_b, bytes);
    cudaMalloc(&d_c, bytes);

    // Host → Device
    cudaMemcpy(d_a, h_a, bytes, cudaMemcpyHostToDevice);
    cudaMemcpy(d_b, h_b, bytes, cudaMemcpyHostToDevice);

    // 启动 Kernel
    int blockSize = 256;
    int gridSize = (n + blockSize - 1) / blockSize;
    vector_add<<<gridSize, blockSize>>>(d_a, d_b, d_c, n);

    // Device → Host
    cudaMemcpy(h_c, d_c, bytes, cudaMemcpyDeviceToHost);

    // 验证
    for (int i = 0; i < n; i++) {
        if (h_c[i] != 3.0f) {
            printf("Error at %d: %f\n", i, h_c[i]);
            break;
        }
    }
    printf("Vector add passed!\n");

    // 释放
    cudaFree(d_a); cudaFree(d_b); cudaFree(d_c);
    free(h_a); free(h_b); free(h_c);
    return 0;
}

// 编译:nvcc -o vector_add 01_vector_add.cu
// 运行:./vector_add

学习资源:

资源 说明
《Programming Massively Parallel Processors》 CUDA 编程权威教材
CUDA Samples (GitHub) 官方示例代码
An Even Easier Introduction to CUDA NVIDIA 入门博客
核函数基础系列 (知乎) 中文 CUDA 教程

3.3 CUDA 性能优化(第5月)

优化技巧清单:

内存优化:
  - Coalesced Memory Access(合并访存)
  - Shared Memory 使用和 bank conflict
  - 常量内存 (Constant Memory)
  - 内存拷贝优化:pinned memory

计算优化:
  - Occupancy(占用率)优化
  - Warp 级原语:__shfl_sync, warp reduce
  - 循环展开 (Loop Unrolling)
  - 指令级并行

分析工具:
  - nvprof / Nsight Systems — 性能分析
  - Nsight Compute — kernel 级分析
  - Roofline 模型 — 判断计算瓶颈还是访存瓶颈

Roofline 模型理解:

              ╱ 峰值计算性能
             ╱
            ╱   ← 计算密集区(Compute-bound)
           ╱
          ╱
    ─────╱────── 访存带宽上限
        ╱
       ╱  ← 访存密集区(Memory-bound)
      ╱

算术强度 = FLOPs / Bytes
  - 算术强度 > 峰值比 → Compute-bound → 优化计算
  - 算术强度 < 峰值比 → Memory-bound → 优化访存

检验标准:

  • 能分析一个 kernel 的瓶颈是计算还是访存
  • 能用 Shared Memory 优化矩阵乘法(比朴素版快 5x+)
  • 能用 nvprof/Nsight 做性能分析
  • 理解 bank conflict 和 coalesced access

3.4 Codeforces 进阶(第3-5月目标)

目标: 1400-1600 分

新增重点:
  - 动态规划(背包、区间DP、状态压缩DP)
  - 图论(BFS、DFS、最短路、拓扑排序)
  - 二分查找 / 二分答案
  - 数据结构:优先队列、并查集

每日任务:1-2题(1200-1600难度)
每周参加:至少1次比赛

阶段四:推理框架(第5-7月)

4.1 TensorRT(第5-6月,重点)

TensorRT 是 NVIDIA 的推理优化引擎,推理工程师必须掌握。

学习路线:

第5月:基础
  1. ONNX 基础
     - 什么是 ONNX,为什么需要模型转换
     - PyTorch → ONNX 导出(torch.onnx.export)
     - Netron 可视化模型结构

  2. TensorRT 入门
     - 安装和环境配置
     - trtexec 命令行工具使用
     - ONNX → TensorRT Engine 转换
     - FP32 / FP16 / INT8 精度对比

  3. TensorRT API
     - Builder / Network / Engine / Context
     - 用 C++ API 构建推理 pipeline
     - Dynamic Shape 处理
     - 批处理推理

第6月:进阶
  4. TensorRT 图优化
     - 算子融合(Conv+BN+ReLU → 一个kernel)
     - 常量折叠
     - 层间融合策略
     - 查看优化后的网络结构(Polygraphy)

  5. TensorRT 量化
     - PTQ(训练后量化)流程
     - QAT(量化感知训练)概念
     - Calibration 校准过程
     - INT8 量化精度评估

  6. TensorRT Plugin
     - 为什么需要自定义 Plugin
     - Plugin 接口实现
     - 编写一个自定义算子的 Plugin

实战项目:

项目1:ResNet-50 TensorRT 部署
  - PyTorch → ONNX → TRT Engine
  - 对比 FP32 / FP16 / INT8 精度和速度
  - 写 benchmark 报告

项目2:BERT TensorRT 部署
  - 文本分类任务
  - Dynamic Shape 处理变长输入
  - 量化并评估精度变化

学习资源:

资源 说明
TensorRT Developer Guide 官方文档
TensorRT GitHub Samples 官方示例
TensorRT 量化指南 量化专题
NVIDIA Deep Learning Examples 各模型的 TRT 部署示例

4.2 ONNX Runtime(第6月,了解)

学习内容:
  - ONNX Runtime 架构
  - EP (Execution Provider) 机制
  - 用 ORT 部署 PyTorch 模型
  - 对比 ORT 和 TensorRT 的差异

适用场景:
  - 需要跨平台部署(非 NVIDIA 硬件)
  - 快速部署,不需要极致性能

4.3 模型服务化部署(第7月)

学习内容:

1. Triton Inference Server
   - 模型仓库配置
   - 模型版本管理
   - Dynamic Batching
   - 多模型并发服务
   - 性能监控

2. 自建推理服务
   - gRPC / HTTP API 设计
   - 请求队列和批处理
   - 负载均衡
   - 错误处理和重试

3. 容器化部署
   - Dockerfile 编写(CUDA 基础镜像)
   - Docker Compose 编排
   - K8s 基础概念(了解)

实战:
  - 用 Triton 部署 TRT Engine
  - 用 FastAPI 自建一个简单的推理服务
  - 写 Dockerfile 打包
  - 用 wrk / locust 做压力测试

4.4 Codeforces 进阶(第5-7月目标)

目标: 1600-1800 分

新增重点:
  - 线段树 / 树状数组
  - 高级 DP:数位DP、树形DP
  - 字符串:KMP、哈希
  - 数论:质数筛、快速幂、组合数学
  - 构造题

每日任务:1-2题(1500-1800难度)
每周参加:Div2 比赛,稳定做出 A-D

阶段五:大模型推理优化(第7-9月)

5.1 大模型推理的核心问题

大模型推理 vs 小模型推理的区别:

小模型(ResNet/BERT):
  - 模型小,显存不是瓶颈
  - 可以用大 batch 提升吞吐
  - TensorRT 直接搞定

大模型(LLaMA-7B/13B/70B):
  - 模型太大,一张卡装不下 → 需要多卡并行
  - 自回归生成,每生成一个token都要跑一次前向 → 延迟敏感
  - KV Cache 占大量显存 → 需要显存管理优化
  - 请求长度不一 → 需要动态批处理

5.2 大模型量化(第7月)

量化方法:

基础量化:
  - FP32 → FP16 / BF16(几乎无损,必做)
  - FP16 → INT8(PTQ,有一定精度损失)

大模型专用量化:
  - GPTQ(逐层量化,基于二阶信息)
    - 原理:逐层最小化量化误差
    - 工具:AutoGPTQ
    - 效果:4bit 量化,精度损失小

  - AWQ(激活感知量化)
    - 原理:保护重要权重通道
    - 效果:比 GPTQ 在某些场景更好

  - SmoothQuant(平滑量化)
    - 原理:将激活的量化难度转移到权重
    - 适合 W8A8 场景

  - GGUF(llama.cpp 格式)
    - CPU 推理友好
    - 多种量化级别(Q4_0, Q4_K_M, Q5_K_M...)

实战:

1. 用 AutoGPTQ 量化 LLaMA-7B 为 4bit
2. 用 AWQ 量化同一个模型
3. 对比量化前后的:
   - 模型大小
   - 推理速度(tokens/s)
   - 显存占用
   - 精度评估(用 perplexity 或下游任务)
4. 写一篇量化对比报告

5.3 推理引擎(第7-8月)

vLLM(重点学习)
vLLM 核心技术:
  1. PagedAttention
     - 传统 KV Cache:连续内存分配 → 内存碎片化、浪费
     - PagedAttention:将 KV Cache 分页管理
     - 类似操作系统的虚拟内存分页
     - 效果:显存利用率提升 2-4x

  2. Continuous Batching
     - 传统 Static Batching:等所有请求完成才返回
     - Continuous Batching:请求完成即返回新请求加入
     - 效果:吞吐量提升 2-3x

  3. 调度策略
     - 先来先服务 (FCFS)
     - 最短作业优先 (SJF)

学习方法:
  - 读 vLLM 源码,重点看:
    - vllm/model_executor/ — 模型执行
    - vllm/core/scheduler.py — 调度器
    - vllm/attention/ — Attention 实现
  - 动手部署一个 7B 模型
  - 用 benchmark 脚本测试不同配置的性能
TensorRT-LLM
学习内容:
  - TRT-LLM 架构
  - 模型构建流程
  - In-flight Batching
  - Tensor Parallel 多卡推理
  - KV Cache 管理
  - 对比 vLLM 的差异

实战:
  - 用 TRT-LLM 部署 LLaMA-7B
  - 对比 vLLM 和 TRT-LLM 的性能

5.4 多卡推理(第8月)

并行策略:

1. Tensor Parallel(张量并行)
   - 将一层的权重矩阵切分到多张卡
   - 每层计算需要通信(AllReduce)
   - 适合同一台机器的多卡

2. Pipeline Parallel(流水线并行)
   - 将模型不同层放在不同卡上
   - 像流水线一样处理不同 micro-batch
   - 适合跨机器

3. Expert Parallel(专家并行)
   - MoE 模型专用
   - 不同专家放在不同卡上

实战:
  - 用 vLLM 跑 Tensor Parallel 2/4卡推理
  - 理解通信开销和扩展效率

5.5 自定义 CUDA Kernel(第8-9月)

这是拉开差距的关键:

项目:手写一个优化的 Attention Kernel

步骤:
  1. 朴素版 Self-Attention(PyTorch 实现)
  2. 朴素版 CUDA Kernel
  3. Shared Memory 优化
  4. Flash Attention 思路:tiling + online softmax
  5. 对比 PyTorch 原生实现的性能

进阶:
  - 写一个融合的 LayerNorm + Linear kernel
  - 写一个 RoPE 位置编码的 CUDA kernel
  - 写一个 INT8 GEMM kernel

学习资源:

资源 说明
Flash Attention 论文 必读
Flash Attention GitHub 源码参考
CUDA C++ Best Practices Guide 优化最佳实践
Triton (OpenAI) 了解另一种 GPU 编程方式

5.6 Codeforces 进阶(第7-9月目标)

目标: 1800-2000 分

新增重点:
  - 网络流(最大流、最小割)
  - 高级数据结构:平衡树、字典树
  - 计算几何基础
  - 高级数论:扩展欧几里得、中国剩余定理
  - Div1 A-B 稳定 AC

每日任务:1题(1700-2000难度)+ 比赛

阶段六:项目实战(第9-10月)

核心项目(选2-3个做到可以写在简历上)


项目一:大模型量化部署全流程
目标:将一个 7B 参数的大模型量化部署,实现高吞吐推理

技术栈:PyTorch + AutoGPTQ/AWQ + TensorRT-LLM/vLLM + FastAPI

步骤:
  1. 用 GPTQ/AWQ 将模型量化为 4bit
  2. 用 vLLM 或 TRT-LLM 部署量化模型
  3. 实现 Continuous Batching 推理服务
  4. 用 FastAPI 包装 HTTP API
  5. 压力测试:不同并发下的吞吐和延迟
  6. 对比不同量化方案的性能

产出:
  - GitHub 代码仓库(README 要写好)
  - 性能报告:吞吐、延迟、显存、精度对比
  - 技术博客:记录完整过程和踩坑经验

GitHub README 应包含:
  - 项目介绍和动机
  - 架构图
  - 快速开始指南
  - Benchmark 数据
  - 技术细节说明

项目二:自定义 CUDA Kernel 优化
目标:手写优化的 Attention / LayerNorm kernel,超过 PyTorch 原生实现

技术栈:CUDA C++ + PyTorch C++ Extension

步骤:
  1. 实现朴素版 CUDA kernel
  2. 用 Nsight Compute 分析瓶颈
  3. 逐步优化:Shared Memory → 合并访存 → Warp 级操作
  4. 封装为 PyTorch 自定义算子
  5. 在实际模型中替换原生算子,测试端到端加速

产出:
  - GitHub 代码仓库
  - 优化过程文档:每一步的性能对比
  - 技术博客:CUDA kernel 优化实战

项目三:端到端推理服务系统
目标:搭建一个完整的模型推理服务,包含监控和自动扩缩

技术栈:Docker + Triton/FastAPI + Prometheus + Grafana

步骤:
  1. 模型转换和优化(TRT Engine)
  2. 推理服务开发(gRPC + HTTP)
  3. 请求队列和批处理
  4. Docker 容器化
  5. 监控指标:QPS、延迟P99、GPU利用率
  6. 压力测试和性能调优

产出:
  - 完整的项目代码
  - Docker Compose 一键部署
  - Grafana 监控面板截图
  - 性能测试报告

项目展示

每个项目的 GitHub 仓库要求:
  ✓ 清晰的 README(英文优先)
  ✓ 代码注释到位
  ✓ 有 benchmark 数据
  ✓ 有架构图或流程图
  ✓ License 文件
  ✓ .gitignore 配置好

技术博客要求:
  ✓ 发布在掘金 / 知乎 / 个人博客
  ✓ 图文并茂,有代码片段
  ✓ 写清楚问题 → 方案 → 结果
  ✓ 有数据对比(表格或图表)

阶段七:求职准备(第10-12月)

7.1 简历优化

简历结构(推荐顺序):

1. 技术技能
   - 语言:C/C++(熟练)、Python(熟练)、CUDA(熟练)
   - 框架:TensorRT、vLLM、PyTorch、ONNX Runtime
   - 工具:Docker、Linux、Git、Nsight Compute
   - 领域:模型量化、推理优化、大模型部署

2. 项目经历(最重要的部分)
   - 每个项目:背景 → 技术方案 → 个人贡献 → 量化成果
   - 示例:
     "使用 GPTQ 将 LLaMA-7B 量化为 4bit,通过 vLLM 部署,
      实现吞吐量 3.2x 提升,显存占用降低 60%,延迟 < 100ms"

3. 竞赛 / 开源贡献(如有)
   - Codeforces Rating: XXXX
   - GitHub 开源项目

4. 教育背景(放在最后)
   - 学校、专业、时间
   - 不需要写 GPA(如果不高的话)

关键原则:
  - 学历放在简历最后
  - 项目和技术放在最前面
  - 用数据说话(提升 X%、降低 Y%、支持 Z QPS)

7.2 面试准备

算法面试
你的 CF 功底在这里发挥巨大作用

重点准备类型:
  - 数组/字符串:滑动窗口、双指针
  - 链表:反转、合并、环检测
  - 树:遍历、LCA、路径和
  - 图:BFS/DFS、最短路、拓扑排序
  - 动态规划:背包、区间、状态压缩
  - 设计题:LRU Cache、线程池

平台:
  - LeetCode Hot 100
  - Codeforces 分类刷题
推理优化面试题
高频问题:

基础概念:
  Q: TensorRT 做了哪些图优化?
  A: 算子融合(Conv+BN+ReLU)、常量折叠、冗余层消除、
     层间融合、Kernel Auto-tuning

  Q: FP16 和 INT8 量化有什么区别?
  A: FP16 几乎无损,INT8 有精度损失但速度更快、
     显存更省。INT8 需要 calibration。

  Q: 什么是算子融合?为什么能加速?
  A: 将多个连续操作合并为一个 kernel,减少显存读写
     次数和 kernel launch 开销。

  Q: PTQ 和 QAT 的区别?
  A: PTQ 训练后量化,快速但精度损失更大;
     QAT 量化感知训练,需要重训但精度更好。

大模型推理:
  Q: KV Cache 是什么?为什么需要?
  A: 自回归生成时,之前 token 的 K/V 不需要重复计算,
     缓存起来避免重复计算。减少计算量但增加显存。

  Q: PagedAttention 解决了什么问题?
  A: 传统 KV Cache 连续分配导致内存碎片和浪费,
     PagedAttention 分页管理,类似 OS 虚拟内存。

  Q: Continuous Batching 和 Static Batching 的区别?
  A: Static 等一个 batch 全部完成;Continuous 请求完成
     即返回,新请求可随时加入,吞吐更高。

  Q: 如何分析模型推理的瓶颈?
  A: 用 Nsight Systems/Compute 分析,看计算利用率
     和显存带宽利用率,用 Roofline 模型判断。

CUDA:
  Q: 什么是 Warp?什么是 Bank Conflict?
  A: Warp 是 GPU 调度最小单位(32线程);Bank Conflict
     是 Shared Memory 访问冲突,会导致序列化。

  Q: 如何优化一个 CUDA Kernel?
  A: 先用 Nsight 找瓶颈 → 计算瓶颈就优化算法减少 FLOPs,
     访存瓶颈就优化内存访问模式(coalesced access、
     Shared Memory)→ 提升 Occupancy。

7.3 求职策略

路径一:AI 创业公司(首选起步)
  - 目标:智谱、月之暗面、MiniMax、DeepSeek、百川、零一万物
  - 优势:对学历相对宽容,技术氛围好,成长快
  - 投递方式:官网 + Boss直聘 + 内推
  - 期望:1-2年经验后跳大厂

路径二:大厂实习转正
  - 目标:字节、阿里、百度、腾讯的 AI 部门
  - 优势:实习学历要求比正式岗宽松
  - 方式:投实习 → 表现好 → 转正
  - 注意:实习期间要主动承担有挑战的任务

路径三:技术影响力 → 内推
  - 持续写技术博客
  - GitHub 项目有 star
  - 在技术社区活跃
  - 自然会有猎头和内推找上门

投递顺序建议:
  1. 先投 AI 创业公司练手(积累面试经验)
  2. 再投大厂实习
  3. 拿到 offer 后再考虑选择

面试时间线:
  - 秋招:8-10月(提前批7月就开始)
  - 春招:2-4月
  - 日常实习:全年
  - 建议:边学边投,不要等"完全准备好"

每日时间分配建议

全职学习(8-10小时/天):

  08:00 - 09:30  Codeforces 刷题(1-2题)
  09:30 - 09:45  休息
  09:45 - 12:00  主线学习(按阶段推进)
  12:00 - 14:00  午饭 + 午休
  14:00 - 17:00  主线学习 / 项目实战
  17:00 - 17:30  休息
  17:30 - 19:00  项目实战 / 代码练习
  19:00 - 20:00  晚饭
  20:00 - 21:30  复习总结 + 整理笔记
  21:30 - 22:00  刷 CF 题解 / 看技术文章

在职学习(3-4小时/天):

  早上  06:30 - 08:00  CF 刷题
  晚上  19:00 - 21:00  主线学习
  晚上  21:00 - 22:00  项目练习
  周末  全天            集中学习和项目

硬件和环境要求

最低要求:
  - NVIDIA GPU:RTX 3060 (12GB) 或以上
  - 内存:16GB+
  - 硬盘:500GB+ SSD
  - 系统:Ubuntu 22.04(推荐双系统或WSL2)

推荐配置:
  - NVIDIA GPU:RTX 4090 (24GB)
  - 内存:32GB+
  - 硬盘:1TB NVMe SSD

如果硬件不够:
  - 使用 Google Colab(免费 T4 GPU)
  - 使用 AutoDL / 恒源云 等 GPU 云平台(便宜)
  - 大模型推理用量化模型(4bit 7B 在 12GB 显存可跑)

软件环境:
  - CUDA Toolkit 12.x
  - cuDNN
  - Python 3.10+
  - PyTorch 2.x
  - TensorRT 8.x / 10.x
  - Docker

学习原则

1. 先跑通再理解
   不要试图一开始就理解所有原理。先用代码跑通,
   看到结果,再回头理解为什么。

2. 项目驱动学习
   不要只看不写。每学一个知识点,都要用代码验证。
   最好的学习方式是做项目时遇到问题再查资料。

3. 不要追求完美
   先完成再完美。一个能跑的项目 > 一个完美的设想。

4. 记录和输出
   写技术博客、做笔记。输出是最好的学习方式。
   同时为未来的简历积累素材。

5. 不要闭门造车
   加入技术社区(GitHub、知乎、Discord)。
   看别人怎么做的,参与讨论,接受反馈。

6. 刷题不要停
   CF 每天至少1题。算法能力是面试的硬门槛。
   不要等到面试前才刷。

7. 边学边投
   不要等"完全准备好"。面试本身就是学习。
   早面试,早知道差距在哪。

推荐资源汇总

书籍

编程基础:
  《C Primer Plus》 — C语言入门
  《C++ Primer》 — C++权威
  《Effective Modern C++》 — C++ 最佳实践

CUDA:
  《CUDA by Example》 — CUDA入门
  《Programming Massively Parallel Processors》 — CUDA进阶

深度学习:
  《Deep Learning》(花书) — 理论参考
  《动手学深度学习》(d2l.ai) — 代码实践

推理优化:
  《深入浅出 CUDA》 — 中文CUDA好书

在线课程

深度学习:
  - 吴恩达 Deep Learning Specialization (Coursera)
  - 李宏毅机器学习 (B站)
  - Stanford CS231n (计算机视觉)
  - Stanford CS224n (NLP)

CUDA:
  - CUDA Programming (Udacity)
  - NVIDIA DLI (Deep Learning Institute)

系统设计:
  - MIT 6.824 (分布式系统)

网站和社区

刷题:
  - Codeforces: https://codeforces.com
  - LeetCode: https://leetcode.cn
  - 洛谷: https://www.luogu.com.cn

技术社区:
  - GitHub: 关注推理优化相关的仓库
  - 知乎: 搜索"推理优化"、"TensorRT"、"CUDA"
  - 掘金: AI工程化相关文章
  - NVIDIA Developer Blog: 官方技术博客

论文追踪:
  - Papers With Code: https://paperswithcode.com
  - arXiv: cs.LG, cs.CL 分区

GitHub 仓库推荐

推理框架:
  - https://github.com/vllm-project/vllm
  - https://github.com/NVIDIA/TensorRT
  - https://github.com/NVIDIA/TensorRT-LLM
  - https://github.com/microsoft/onnxruntime

量化:
  - https://github.com/AutoGPTQ/AutoGPTQ
  - https://github.com/mit-han-lab/llm-awq
  - https://github.com/ggerganov/llama.cpp

CUDA 学习:
  - https://github.com/NVIDIA/cuda-samples
  - https://github.com/Dao-AILab/flash-attention
  - https://github.com/triton-lang/triton

大模型:
  - https://github.com/meta-llama/llama
  - https://github.com/QwenLM/Qwen

路线检查点

每个阶段结束时,用以下检查点自测:

□ 阶段一完成(第2月末):
  - 能用 C++ 写中等复杂度程序
  - 能在 Linux 终端完成日常操作
  - CF Rating ≥ 1000

□ 阶段二完成(第4月末):
  - 能用 PyTorch 训练 CNN/Transformer 模型
  - 理解 Transformer 架构每一层的作用
  - 能手写 Self-Attention
  - CF Rating ≥ 1400

□ 阶段三完成(第5月末):
  - 能写中等复杂度的 CUDA kernel
  - 能用 Shared Memory 优化 kernel
  - 理解 Roofline 模型
  - CF Rating ≥ 1600

□ 阶段四完成(第7月末):
  - 能用 TensorRT 部署模型并做量化
  - 能搭建推理服务(Triton 或自建)
  - 理解图优化和算子融合
  - CF Rating ≥ 1700

□ 阶段五完成(第9月末):
  - 能独立完成大模型量化部署
  - 理解 PagedAttention、Continuous Batching
  - 能写优化的 CUDA kernel(Attention/LayerNorm)
  - CF Rating ≥ 1800

□ 阶段六完成(第10月末):
  - GitHub 上有 2-3 个高质量推理优化项目
  - 有 3-5 篇技术博客
  - CF Rating ≥ 1900

□ 阶段七完成(第12月末):
  - 拿到至少一个 offer
  - CF Rating ≥ 2000

最后的话:这条路不容易,但每一步都是实打实的能力积累。
不要被学历困住思维,用代码和项目证明自己。
坚持 8-12个月,你会成为一个真正稀缺的推理优化工程师。

Logo

免费领 150 小时云算力,进群参与显卡、AI PC 幸运抽奖

更多推荐