
假设你已经掌握解基本的C/python 编程知识,对芯片开发流程有一定经验,对面向对象编程了解,了解一下基本算法。该怎么系统学习深度学习,从入门到AI 芯片架构师?
在这里选择的对象是深度学习,其中以transform为主。人工智能和机器学习这个范围太广了,我们还是以学习目前AI目前发展最好的深度学习为目标。
阶段一:深度学习基础速成(3-4周)
目标:建立直觉,理解神经网络如何工作
| 主题 | 学习重点 | 资源推荐 |
|---|---|---|
| 神经网络基础 | 感知机、激活函数、损失函数、反向传播 | 3Blue1Brown《神经网络》视频(B站/Youtube) |
| CNN架构 | 卷积、池化、ResNet结构 | 动手用PyTorch跑ResNet-50推理(不用训练) |
| PyTorch基础 | Tensor操作、模型加载、前向传播 | 《PyTorch官方教程》快速过一遍 |
| Transformer入门 | 自注意力机制、位置编码、多头注意力 | 必读:论文《Attention Is All You Need》+ 李沐讲解视频 |
关键动作:
# 您需要能读懂并运行这类代码
import torch
from transformers import AutoModel
# 加载预训练模型,观察结构
model = AutoModel.from_pretrained("bert-base-uncased")
print(model) # 看懂每一层的计算量和数据流
# 统计参数量、计算FLOPs
from thop import profile
flops, params = profile(model, inputs=(input_ids,))阶段二:Transformer深度解剖(4-6周)⭐核心
目标:彻底理解大模型的计算特征(对芯片设计至关重要)
2.1 必须掌握的核心概念
| 组件 | 芯片设计意义 | 学习资源 |
|---|---|---|
| Self-Attention | Q×K^T的矩阵乘法、Softmax的数值稳定性 | 手推公式+代码实现 |
| FFN(前馈网络) | 两个大矩阵乘法(计算密集型) | 观察维度变化 |
| LayerNorm/RMSNorm | 内存访问模式、归一化计算 | 与BatchNorm对比 |
| KV Cache | 推理时的内存瓶颈核心 | 理解增量解码 |
| Positional Encoding | RoPE相对位置编码(现代LLM主流) | 关键优化点 |
2.2 大模型架构演进(按时间线)
2017 Transformer(基础)
↓
2018 BERT(Encoder-only,理解任务)
2019 GPT-2(Decoder-only,生成任务)
↓
2020 GPT-3(175B参数,涌现能力)
2022 LLaMA(开源,高效架构)
↓
2023 LLaMA 2、ChatGLM(指令微调)
2024 MoE架构(Mixtral、GPT-4)、Mamba(状态空间)
↓
2025 DeepSeek-V3/R1(MLA注意力、FP8训练)必读论文(按优先级):
- 《Attention Is All You Need》(基础,必读)
- 《LLaMA: Open and Efficient Foundation Language Models》(开源标杆)
- 《DeepSeek-V2: A Strong, Economical, and Efficient Mixture-of-Experts Language Model》(MLA注意力,芯片优化关键)
- 《Efficient Large-Scale Language Model Training on GPU Clusters Using Megatron-LM》(分布式训练,理解通信模式)
2.3 动手实验(关键!)
# 实验1:观察Attention的计算模式
import torch
Q = torch.randn(1, 12, 2048, 64) # (batch, heads, seq_len, head_dim)
K = torch.randn(1, 12, 2048, 64)
# 计算Attention Score
scores = torch.matmul(Q, K.transpose(-2, -1)) / sqrt(64)
# 分析:这是O(n²)的内存和计算!序列长度的平方
# 实验2:KV Cache机制
# 理解为什么推理时Prefill和Decode阶段算力需求不同
# 实验3:用transformers库分析模型结构
from transformers import LlamaConfig
config = LlamaConfig()
print(config) # 看hidden_size, num_attention_heads, intermediate_size阶段三:大模型系统与芯片协同设计(持续深入)
目标:理解大模型在芯片上的运行瓶颈
| 主题 | 为什么重要 | 学习资源 |
|---|---|---|
| 量化(INT8/FP8/INT4) | 降低带宽、提升吞吐 | 论文《LLM.int8()》、《FP8-LM》 |
| 稀疏化/MoE | 专家并行、条件计算 | DeepSeek-MoE、Mixtral论文 |
| 内存墙问题 | KV Cache压缩、PagedAttention | vLLM论文、《Efficient Memory Management》 |
| 并行策略 | 数据并行、张量并行、流水线并行、专家并行 | Megatron-LM、DeepSpeed文档 |
| 算子优化 | FlashAttention、Kernel Fusion | CUDA编程基础、Triton教程 |
关键工具链体验:
# 部署体验,理解推理全流程
pip install vllm transformers accelerate
# 用vLLM部署模型,观察GPU利用率、内存占用、吞吐
vllm serve meta-llama/Llama-2-7b-chat-hf
# 用nvidia-smi观察计算/内存模式
watch -n 1 nvidia-smi阶段四:芯片架构专项(结合您的Verilog/SV背景)
目标:将算法理解转化为硬件设计
| 方向 | 具体技能 | 应用场景 |
|---|---|---|
| AI加速器架构 | 脉动阵列、数据流架构、近存计算 | NPU核心设计 |
| 内存子系统 | HBM控制器设计、片上SRAM优化 | 解决内存墙 |
| 低精度计算 | FP8/INT8/INT4 MAC单元设计 | 提升能效比 |
| 互联网络 | NVLink/PCIe/RDMA协议 | 多卡扩展 |
| 编译器协同 | TVM/MLIR、算子映射 | 软硬件协同优化 |
推荐学习:
书籍:《深度学习推理优化》《AI芯片架构与设计》
开源项目:Rocket Chip、BOOM(RISC-V)、OpenROAD
工业实践:研究NVIDIA H100/B200、Google TPU、华为昇腾的架构设计
阶段五:软件栈全景:从模型到硅片
┌─────────────────────────────────────────┐
│ 应用层:ChatGPT/文心一言/自动驾驶等 │
├─────────────────────────────────────────┤
│ 框架层:PyTorch/TensorFlow/JAX │
│ → 自动微分、计算图构建、动态/静态图 │
├─────────────────────────────────────────┤
│ 运行时:PyTorch Dispatcher/TF XLA │
│ → 算子选择、设备管理、内存池 │
├─────────────────────────────────────────┤
│ 编译优化层:TVM/MLIR/XLA/TensorRT │
│ → 计算图优化、算子融合、内存规划、量化 │
├─────────────────────────────────────────┤
│ 驱动层:CUDA Driver/ROCm/Level Zero │
│ → 上下文管理、内存分配、任务调度 │
├─────────────────────────────────────────┤
│ 硬件抽象层:CUDA Runtime/OpenCL/Vulkan │
│ → Stream管理、Kernel启动、同步机制 │
├─────────────────────────────────────────┤
│ Kernel层:PTX/SASS/LLVM IR/自定义ISA │
│ → 线程网格、共享内存、寄存器分配、指令调度 │
├─────────────────────────────────────────┤
│ 硬件层:您的AI芯片(NPU/TPU/GPU) │
│ → 计算单元、SRAM/DRAM、互联网络、编解码器 │
└─────────────────────────────────────────┘阶段六:编译器和系统
您需要系统学习的六大模块
模块1:深度学习编译器(核心!)
这是算法到硬件的桥梁,也是芯片软件生态的命脉。
| 编译器 | 主导公司/社区 | 关键概念 | 学习资源 |
|---|---|---|---|
| XLA | HLO IR、算子融合、布局优化 | TensorFlow官方文档 | |
| TVM | Apache/陈天奇团队 | Relay IR、Schedule、AutoTVM | TVM官方教程、《深度学习编译器》书籍 |
| MLIR | LLVM/Google | Dialect设计、Lowering、Pass管理 | MLIR官方文档、Toy Tutorial |
| TensorRT | NVIDIA | 图优化、INT8校准、Kernel Auto-tune | NVIDIA开发者文档 |
# 理解:PyTorch模型如何变成芯片能执行的指令?
import torch
import tvm
from tvm import relay
# 1. 捕获PyTorch计算图
model = torch.jit.trace(resnet, input_data) # 转为静态图
# 2. 转为Relay IR(中间表示)
mod, params = relay.frontend.from_pytorch(model, shape_dict)
# 3. 编译优化:算子融合、内存优化、量化
with tvm.transform.PassContext(opt_level=3):
lib = relay.build(mod, target="llvm -mcpu=your_chip")
# 4. 生成目标代码
lib.export_library("deploy.so") # 您的芯片可加载模块2:GPU/AI芯片编程模型(理解Kernel如何写)
| 技术 | 适用平台 | 核心概念 | 学习路径 |
|---|---|---|---|
| CUDA C/C++ | NVIDIA GPU | Thread/Block/Grid、Shared Mem、Warp、Occupancy | 《CUDA C Programming Guide》→ 实践矩阵乘法优化 |
| HIP/ROCm | AMD GPU | 类似CUDA,理解移植层 | ROCm官方文档 |
| OpenCL | 跨平台 | Kernel、Work-item、Buffer对象 | Khronos官方教程 |
| Triton | OpenAI/跨平台 | Python写GPU Kernel、Tile优化 | Triton官方教程(强烈推荐!) |
| 自定义DSL | 自研芯片 | 设计您芯片的编程接口 | 参考TVM/Triton设计 |
// CUDA示例:理解线程层次结构
__global__ void matmul_kernel(float* A, float* B, float* C, int N) {
int row = blockIdx.y * blockDim.y + threadIdx.y; // 块索引+线程索引
int col = blockIdx.x * blockDim.x + threadIdx.x;
// Shared Memory优化(您的芯片SRAM同理)
__shared__ float As[TILE_SIZE][TILE_SIZE];
__shared__ float Bs[TILE_SIZE][TILE_SIZE];
// 计算并写回
if (row < N && col < N) {
C[row * N + col] = sum;
}
}
// 启动配置:理解Occupancy
dim3 block(16, 16); // 每个Block 256线程
dim3 grid((N+15)/16, (N+15)/16); // Grid大小
matmul_kernel<<<grid, block>>>(d_A, d_B, d_C, N);模块3:内存系统与数据流(芯片设计的核心瓶颈)
| 主题 | 为什么关键 | 学习要点 |
|---|---|---|
| HBM/GDDR架构 | 内存墙是AI芯片第一瓶颈 | HBM2e/3e规格、Bank Group、Row Buffer |
| 片上SRAM管理 | 决定MAC利用率 | Scratchpad设计、Bank Conflict、Ping-Pong Buffer |
| 数据流优化 | 减少数据搬运 | Weight Stationary/Output Stationary/Row Stationary |
| DMA与数据传输 | 异步流水线 | 双缓冲、Chaining、优先级管理 |
| 虚拟内存/页表 | 大模型上下文支持 | TLB设计、大页支持、按需分页 |
必读论文:
《DianNao: A Small-Footprint High-Throughput Accelerator for Ubiquitous Machine-Learning》(寒武纪,经典数据流架构)
《Eyeriss: A Spatial Architecture for Energy-Efficient Dataflow for Convolutional Neural Networks》(数据流优化经典)
《FlashAttention: Fast and Memory-Efficient Exact Attention with IO-Awareness》(算法-硬件协同优化标杆)
模块4:分布式系统与通信(大模型训练的核心)
| 技术 | 场景 | 关键概念 |
|---|---|---|
| 数据并行(DP) | 小模型大批量 | All-Reduce梯度同步、Ring-AllReduce |
| 张量并行(TP) | 单层放不下 | 矩阵切分、All-Gather、Reduce-Scatter |
| 流水线并行(PP) | 模型层数多 | 微批次、Bubble优化、1F1B调度 |
| 专家并行(EP) | MoE模型 | All-to-All通信、负载均衡 |
| 序列并行(SP) | 长上下文 | Ring Attention、上下文切分 |
| ZeRO优化 | 显存优化 | 参数/梯度/优化器状态分片 |
通信原语(您的芯片互联需要支持):
Point-to-Point: Send/Recv
Collective:
- Broadcast(广播)
- All-Reduce(梯度聚合)← 最频繁
- All-Gather(参数收集)
- Reduce-Scatter
- All-to-All(MoE专家通信)学习资源:
• NCCL(NVIDIA Collective Communications Library)源码
• DeepSpeed/Megatron-LM框架文档
• 《Efficient Large-Scale Language Model Training on GPU Clusters》
模块5:推理引擎与Serving系统(部署侧)
| 系统 | 特点 | 核心机制 |
|---|---|---|
| vLLM | 高吞吐LLM推理 | PagedAttention(KV Cache分页管理)、Continuous Batching |
| TensorRT-LLM | NVIDIA优化 | 算子融合、FP8、MHA优化、Inflight Batching |
| MLC-LLM | 跨平台部署 | TVM编译、多种后端支持 |
| llama.cpp | 端侧CPU推理 | GGUF量化、NEON/AVX优化 |
| 您的自研框架 | 针对芯片优化 | 设计推理调度器、内存池、Batch策略 |
关键理解:
# PagedAttention核心思想(vLLM)
# 传统:为每个请求预分配最大长度内存 → 浪费严重
# PagedAttention:将KV Cache分块,像OS虚拟内存一样动态分配
# 对芯片设计的启示:
# 1. 需要支持动态内存分配/释放
# 2. 需要高效的Scatter-Gather DMA
# 3. 需要支持变长序列的并行计算模块6:芯片软件生态工具链(您可能需要构建)
作为AI芯片开发者,您可能需要设计或理解:
| 组件 | 功能 | 参考实现 |
|---|---|---|
| Runtime | 设备管理、内存池、Stream调度 | CUDA Runtime、HIP Runtime |
| Driver | 硬件初始化、中断处理、功耗管理 | NVIDIA GPU Driver、ROCr |
| Profiler | 性能分析、瓶颈定位 | Nsight Systems/Compute、rocProf |
| Debugger | Kernel调试、内存检查 | CUDA-GDB、rocGDB |
| Simulator | 指令级/周期级仿真 | gem5、NVSim、自研 |
| Benchmark | 标准化评测 | MLPerf Inference/Training |
最后总结学习路线:
第1个月:建立Transformer直觉
| 周次 | 任务 | 产出 |
|---|---|---|
| W1 | 3Blue1Brown神经网络视频 + PyTorch基础 | 能加载并推理ResNet |
| W2 | 手推Self-Attention公式 + 实现简单Transformer | 理解Q/K/V计算流 |
| W3 | 精读Attention Is All You Need + 李沐讲解 | 能画出完整架构图 |
| W4 | 用HuggingFace加载BERT/GPT-2,分析每层参数 | 输出模型结构分析报告 |
第2个月:深入大模型系统
| 周次 | 任务 | 产出 |
|---|---|---|
| W5-W6 | 精读LLaMA、DeepSeek-V2论文 | 理解现代高效架构 |
| W7 | 学习vLLM/FlashAttention,观察GPU性能特征 | 能分析推理瓶颈 |
| W8 | 研究量化技术(GPTQ/AWQ),理解精度-效率权衡 | 能指导量化硬件设计 |
关键资源汇总
| 类型 | 资源 | 链接/说明 |
|---|---|---|
| 视频 | 李沐《动手学深度学习》 | B站,PyTorch版 |
| 视频 | 李宏毅《机器学习》 | 中文经典,理论扎实 |
| 论文 | Papers With Code | 跟踪最新SOTA |
| 代码 | transformers库源码 | 理解工程实现细节 |
| 工具 | Netron | 可视化模型结构,超有用! |
| 社区 | HuggingFace、arXiv cs.LG/CL | 跟踪最新动态 |
第3个月:AI 芯片架构
书籍:《深度学习推理优化》《AI芯片架构与设计》
开源项目:Rocket Chip、BOOM(RISC-V)、OpenROAD
工业实践:研究NVIDIA H100/B200、Google TPU、华为昇腾的架构设计
第4个月:编译器与IR
| 周 | 任务 | 产出 |
|---|---|---|
| W1 | 学习MLIR Toy Tutorial,理解Dialect概念 | 能定义简单Dialect |
| W2 | 学习TVM Relay,将PyTorch模型编译到LLVM | 跑通端到端编译 |
| W3 | 研究XLA HLO,理解算子融合策略 | 能分析XLA生成的HLO图 |
| W4 | 阅读《TVM: An Automated End-to-End Optimizing Compiler for Deep Learning》 | 理解编译器架构设计 |
第5个月:Kernel编程与优化
| 周 | 任务 | 产出 |
|---|---|---|
| W5 | 学习CUDA编程,实现优化版矩阵乘法(Shared Memory、Tiling) | 达到cuBLAS 80%性能 |
| W6 | 学习Triton,用Python写FlashAttention核心 | 理解Tile优化 |
| W7 | 分析CUTLASS源码(NVIDIA模板库),理解分层抽象 | 能修改模板适配新算子 |
| W8 | 研究您目标芯片的指令集,设计简单Kernel | 在Simulator上跑通 |
第6个月:系统与通信
| 周 | 任务 | 产出 |
|---|---|---|
| W9 | 学习NCCL源码,理解Ring-AllReduce实现 | 能分析通信瓶颈 |
| W10 | 研究DeepSpeed ZeRO-3,理解参数分片 | 能计算通信量 |
| W11 | 学习vLLM架构,理解Serving系统调度 | 能设计推理调度器 |
| W12 | 整合:设计您芯片的端到端软件栈原型 | 文档+代码框架 |
关键资源汇总
| 类型 | 资源 | 说明 |
|---|---|---|
| 书籍 | 《深度学习编译器》 | 国内首部系统介绍 |
| 书籍 | 《Programming Massively Parallel Processors》 | CUDA编程圣经 |
| 课程 | CMU 15-418/618 Parallel Computer Architecture | 理解并行系统 |
| 课程 | Stanford CS217 Hardware Accelerators for Machine Learning | 芯片架构 |
| 开源 | TVM、MLIR、XLA、vLLM、DeepSpeed | 直接读源码 |
| 论文 | MLSys会议论文 | 机器学习系统顶会 |
| 论文 | ISCA/MICRO/HPCA | 计算机体系结构顶会 |
您的终极目标是:让PyTorch模型无缝运行在您设计的芯片上,且性能/能效达到最优
这需要打通:算法语义 → 中间表示 → 硬件指令 → 执行单元 的全链路,而编译器(TVM/MLIR)正是这个桥梁的核心。
评论 (0)